Archive for the ‘Design’ category

Dreaming in Code

December 30th, 2007

I just picked up Dreaming in Code from the library yesterday (or was it Friday evening?) and I’m about a third of the way through it.  I saw it at digitalguru.com when I was there a couple weeks ago, but didn’t know what it was about.  Then I read a review in the latest “strategy and business” magazine (thanks Mark!) and it sounded great.  I popped in to the library to see what they had, and lo and behold it was there!  We’re in a very small community – the very idea that such a tech-oriented book would be in their ‘new releases’ section just baffled me slightly.

Anyway, it’s a great book so far.  What’s more interesting to me is that I know some people at OSAF, the organization chronicled in the book.  Both the people I know there started very late, and I’m not sure will even be mentioned in the book.  Still, it’s been a very interesting read so far, and makes me feel old.  Already, this OSAF project is ‘historical material’, and it’s only from 2002 and beyond.  I still remember the hype when it (‘Chandler’) was first announced, and have watched the project struggle along on and off over the years, trying out the software every so often.  To read about what motivated the decisions behind the final product is just fascinating beyond words.  At least for me.  :)

Latest podcast up

November 26th, 2007

I put up a new webdevradio podcast last week, day after Thanksgiving (or was it the day before?  I forget now).  Anyway, I’ve turned on the comments – apparently there was a bug that was stopping it from working – and am inviting more feedback and audio comments from listeners.  The podcast is short this time (15 minutes) but I specifically invite comments on two topics.  I get a lot of questions on these two, so I opened up the floor instead of just spouting off.

1.  For someone just getting in to web development, what should they study/focus on?  LAMP?  Java?  .NET?  Rails?  Flash?  What would you recommend and why?

2.  What are some good resources for learning advanced PHP, and more specifically good PHP OO practices?

There’ve been a few good responses already at http://www.webdevradio.com, but more are always appreciated, either text or audio (just upload an mp3 file!)

Thanks!

CSS blues

November 25th, 2007

So I’m back to the CSS blues I encounter every time I try to follow the ‘web standards’ crowd. I’ve got a relatively straightforward problem which is solved with using tables to arrange images, but seems utterly broken trying to use tableless CSS. Perhaps someone here will set me straight.

I am displaying search results – thumbnail images and text. Putting each set of data in a div tag with a class that has a float:left in it allows me to just keep rendering the image/text combos, and the browser will wrap the data accordingly. Except that the float:left behaviour will float the data to the left not to the ‘beginning’ of where the first element started, but only as far left as it needs to to determine it’s ‘hit’ something. Hard to explain in English, but the screenshot below should give an idea. The two items on the bottom row should be flush left, but they’re not. The first result image has text which is a bit more than the rest on that row, so it ‘blocks’ the 7th result item from floating any further left.

  moc_screen1.png

Searching around for the answer has yielded nothing that matches my requirements:

1. I want to be able to change the size of the items and data being displayed without having to know in advance how many will fit on a row.

Well, that’s really about it. To be fair, even in a table situation, you have to know how many you’ll be displaying, then close and reopen a TR tag. Given the supposed ‘superior’ nature of CSS, I’d have figured this problem would have been solved. I can also issue a div with a clear:both style after every 6 results, but that’s a hack answer, in my view.

Any better solutions? Google images uses tables to show their results – that should send a message to all those “tableless design at all costs” nuts out there (message being “css still isn’t ready enough to bury tables yet”) but it won’t.

SocialCarolina.org launched

November 20th, 2007

Some area tech guys put together SocialCarolina.org, a site which maps what’s going on across the various social networks in the RTP/RDCH area.  At least, that’s what I think it does, and if it’s not doing that, it should :)   In any event, it’s a slick looking site with some definite potential.  Check it out!

Client input in the web dev process

October 28th, 2007

Clients hire web developers (or their firms) because we are the experts. When I call someone in to fix my air conditioner I don’t let them work for awhile and then tell them they are doing their job wrong and I know the problem is the compressor. They are the expert, not me. When a client tells me the layout is unusable, the typography is wrong, the form isn’t styled properly, or [insert common client complaint here] I simply want to say – “Why don’t you do it?”.

» 5 Reasons it Sucks to be a Web Developer | Get A New Browser

I came across this post today (via wayne-sutton.com, an area blogger). The point above (#4) really hit home, and yet I have conflicting views on it. Primarily, the comparison to an AC repairman, while not necessarily wrong, is limiting. In some cases, when doing web dev work, you’re mostly working on mechanical stuff, and the comparison is apt.

However, when doing other work – the front-facing stuff, that’s generally when clients will throw in more feedback. At that point, the AC repairman analogy breaks down. You’re now more analogous to an architect, or interior designer, or maybe even just a cleaner. The input – “change these colors, move this around, etc.” is valid. They’re telling you how to do your job because that’s what they’re paying you to do.

I’ve had very few clients debate the finer points of natural vs artificial primary keys. I’ve had plenty chime in with ideas about the functionality they’d like to have, either backend or frontend.

I’m going to tag this as ‘refreshthetriangle’ and perhaps our local Refresh group (“Refresh the Triangle!”) may throw their 2 cents in…

Blogged with Flock

Tags: , ,

Refresh The Triangle first meeting

October 25th, 2007

I just got back from our new Refresh* meeting (“Refresh The Triangle”) – http://refreshthetriangle.org/. This was held at Viget Labs, and they were the initial organizers. We had a stab at a Refresh group a year ago, but it didn’t get off the ground. There were something like 30 people at tonight’s meeting, which was great. The always insightful Jackson Fox presented “Building User-Centered Web Apps in a Crunch”, with some good ideas on how to do user testing without breaking the bank or the project deadlines. Thanks Jackson!

Also, I got a chance to demo my new MatchOrClash site to Peyton Crump, Viget’s Director of Interactive Design, and he had some great ideas and feedback. If any of you readers are interested in playing with the demo, email me and I’ll send you a full URL to take a look at the work in progress.

* The Refresh idea is explained in more detail at their main site, which is also a directory of other Refresh meetings around the world.

Do you ever cut corners?

May 29th, 2007

This is a general question, but possibly aimed at the PHP crowd more because it’s often easier to cut corners when doing development than in other languages.
“Cutting corners” can mean almost anything from skipping unit tests to skipping documentation to lax variable names to almost anything that you know isn’t optimal but you skip for one reason or another. What corners do you ever cut, and what are your reasons?

My own corners tend to be unit tests. Some projects I write them before (rare), some projects I write them after (rare as well) and some projects I don’t use them (majority). There are two primary excuses I use but they both come down to time. For example, at work, the primary project I’m maintaining is un-unit-testable (is that the proper way to write that?). The time it takes to refactor even small portions which any new code I’d write touches is often beyond the time allocated for the thwork. I did make some headway last year in refactoring some sections of the code to make some of the core libraries testable, but I was pulled off that work for another project. Basically, in that case, it boils down to the notion that the company itself doesn’t value testing as much as getting code out on o the floor in to production, nevermind the notion that future changes become that much more difficult and we end up with less confidence in the production code. It’s been a slow evolution to this point, and it’s like we’re the frog in boiling water – the water’s come to the boil only gradually.

I had this idea some time ago that the ‘strongly typed’ platforms such as Java and .NET made unit-testing a breeze, but my view now is that regardless of the language, the notion of having components testable is something that needs to be designed in from the ground up. Java and .NET seem to make refactoring existing code in to testable code much easier, though (“Refactor! Pro!” was simply amazing when I saw a demo).

So, if you ever cut corners on your projects, what do you cut and why?

New project launch – looking for feedback

May 28th, 2007

I’ve just opened up MatchOrClash.com, a ‘hot-or-not’-style voting site for fashion pairings.  Right now I’ve only got a small subset of shoes and handbags from Amazon.com, but will look to grow that tomore types of clothing in the near future.   As it stands right now the project is very early stages – functional, but not really ready for primetime yet.  I’m looking for testers to hit the site and give me some feedback – any broken functionality, suggestions/ideas for improvements, etc.   Also, my sterling design skills are reaching a limit.  If you’re a good graphic designer or know someone who is who’d like to help develop a stronger visual identity, please drop me a line.

Social network mashup v2.0

May 23rd, 2007

Friend Joe Stump recently (as in today, I think) launched correlate.us, a feed aggregator which brings together your personal feeds from delicious, twitter, flickr and digg.  I believe more feed streams will be forthcoming, but for now it’s hitting some of the larger players.  In a nutshell, it’s a way to see not only tagged items from a particular site (like you can with delicious) but also items with the same tags from other networks.  On delicious, I can see what items are tagged with ‘beatles’, but I can’t see items tagged ‘beatles’ from flickr at the same time, nor can I see what items a particular user has tagged across multiple networks.  It’s a very interesting (yet seemingly obvious) mashup, and I’m looking forward to seeing what comes of this project.  Good luck Joe!

Test driven development

May 1st, 2007

I got to meet Dr Laurie Williams this evening at the Agile RTP group. I’m not sure I can get her slides, or link to them, but if I can, I will. She presented quite a lot of empirical evidence regarding the benefits of test driven development. Lots of good questions about some of the practical aspects of implementing TDD in a group. Tony from Mediclick was asking questions which brought up the differences between ‘acceptance’ tests (for the end user or client) and ‘unit’ tests (for the developers).

She presented a few studies which demonstrated higher ‘quality’ code resulting from the TDD/”test-first” approach over other approaches. “What defines higher quality?” was an instant question, and rightly so. Less cyclomatic complexity and higher test coverage were some of the quality metrics used in that particular study.

One of the themes she hammered home early is that TDD is largely a design practice, not a testing practice. Forcing you to test up front will have a marked impact on the design of the code. It’s something I’m certainly aware of, as I suspect most people are. Putting it in to practice is another matter, and one I’ve recently failed on. I’m in the middle of a decidedly short mini-project, and even now, only 2 weeks in to it, wish I’d started with a TDD approach. The bigger issue I’d have had with that is having test data which accurately reflects how the system is used. Extracting a small portion of the data is possible, and I’ve been meaning to do it for a while now, but other “more important” projects seem to get in the way.

The take away from Ms. Williams’ presentation is that TDD brings increased quality with no long-term productivity impact. What I didn’t hear addressed – and I don’t normally hear this addressed at TDD talks – is how to you ensure you’re writing correct tests. Writing “enough” tests can be measured with code coverage tools, in most cases, but whether the tests accurately reflect the usage of the system is another question. I suspect this is where “art” vs “science” comes in to play, and the quality of tests is largely a function of the experience of the developer(s).

If you’re doing TDD with Logo, I think you’re supposed to use mock turtles.