Thank you, 37signals: iPhone: Context over consistency
I had thought it was pretty odd to toss the icon over there, but it's nice to see some comments about the placement. I'm still hoping that the broad goal for that extra space to the left of the iTunes button is for additional apps, though; perhaps 3rd party apps, perhaps Apple apps... we'll have to see. The SDK rumor still lives on, after all.
I recently got a chance to take a look at Crestock's new beta site. I tend to be the type of guy who likes checking out the latest and greatest, so I figure I'd take a gander.
The previous version of the site (up at this point in time, though will likely get replaced in the near future):
The super hot beta version:
From the front page perspective, things look decent- I'd argue that the new header legitimizes the site a little better than the older version. The old version did a good job at keeping things simple, but at the risk of being a little stripped down to be really professional-grade. It's interesting that in this version they're going for a left-justified layout as opposed to their previous version which was floated in the center. This style of design has been around for awhile- some retailers like Best Buy and a few news sites (CNN at one point?) were fans of the left-justified feel. The barren feel is mitigated on Crestock's new site by a 100% width header, which I think makes some sense.
Upon login, things go a bit downhill though:
While the design is improved by a really well done sidebar, this is a classic case of just cluttering up your page with stuff that really doesn't need to be there. They have a floating div on mouseover that shows your current weather, they display local time, they show a flag of your country. All of those I likely know or have a quick Dashboard widget (or Yahoo widget or what have you) to tell me those- they simply aren't necessary on such a site. This isn't really a Crestock issue as much as a general issue all developers tend to face. It's always cool to add on that extra little feature or fill up more of your page with some new functionality, but you still have to keep your eyes on the prize: does this really help your users? Sometimes less is more-- much more.
The good news is that usability for the major parts of the site are great. Quick sidebar access to my photos I've previously bought, a very clear and clean photo page to display details of the particular image you're viewing, and just a very straight forward process explaining how to use the site. I find it interesting that they're adding a public profile section to the site, like most other sites. digg, for example, added their own social aspect to their profile pages. This is a trend we're probably going to be seeing the next few years. If you already have accounts on your website, you have a lot to gain to just make the switch into public, social aspects, and it's usually not a real pain to add that functionality to your site. (I haven't had a chance to check what Crestock's functionality there is quite yet- at this writing they were working the kinks out of a few lines of code in that particular section of their site).
All in all, not a bad refresh for Crestock. Beyond superficial aspects like design, though, I really wish we could see more projects like this take results public. For example, in my last posting about CD Baby's new design, I mentioned that it would be really cool to see how that impacted conversion rates. Likewise, when a bigger company like Crestock changes their site up, it would be great to get behind the scenes thoughts on how the redesign impacted their bottom line, which aspects turned out to be crucial and which might have surprisingly gone unnoticed. Naturally, there's some trade secrets to guard here, but I think there's some general purpose thoughts that would be interesting to a wide variety of John Q. Developer Public.
Slashdot just had an article with a rather inflammatory post title: Thinking about Rails? Think again. The story was about Derek Sivers and his idea to rewrite PHP-driven CD Baby to Ruby on Rails. Two years later they've dropped Rails and moved back to PHP. He lists his reasons in his posting at O'Reilly.
Naturally, I like Rails a lot, and I've use CD Baby frequently, so I wanted to check out his reasoning. It wasn't very intellectually satisfying. It boiled down to "Rails doesn't work for our existing setup, so PHP rocks". As commenters on /. and the posting have mentioned, this was a clear cut case of not understanding the language or the framework before they jumped into things. If you're trying to maintain backwards compatibility, integration with other existing side apps written in another language, and don't want to move to a new server setup, here's a little hint: you might not want to move languages, regardless of which language it may be. Rewriting your entire system just for the sake of a rewrite or for perceived benefits that you haven't quantified is asking for trouble. Every time I rewrote Good-Tutorials (it's happened twice now) I had distinct goals in mind about what the new language might do for me, how to exploit new aspects of a framework or additional software I install, and so on. Derek might have had something like that in mind, but based on his posting it looks like he just wanted to jump into Rails for the sake of Rails.
Along those same lines... what is going on with cdbaby.com? I know they did a redesign a few weeks ago-- I wanted to include it in a blog post at some point but wanted to give them a chance to update their layout just in case. They tried positioning it as "intentionally bare" and "temporary", but that was a month ago. I'm a huge stickler for simplicity and an eye on usability, but there's a point where it's detrimental to your business. Their current layout looks like their stylesheet isn't getting loaded on the page. I can't see this as being anything but abysmal. You're a huge indy music company and you're likely trying to draw people away from buying mainstream albums from record companies. How can do establish that trust and get people to make that jump by having a site that looks like it was coded in an afternoon? It would be interesting to see what CD Baby's sales and conversion rates are compared to the month prior when it had at least some semblance of a design. Also interesting- those in the comments of that blog posting who seem to like the "design" say it increases usability. The big "but" here is that all of those people posting are regulars to the site- I would bet the response would be different if it were made by someone who's never been there before.
CSS is a funny area. It's almost unique in that no matter which level you're at, there always seems to be something you're learning, some new technique to consider, or some new frustration out there. Every time. When you're first learning, you grapple with the concept of using another file to style your entire site, and then you try to grasp the concept - and validity - of tableless design, then you go for cross-browser compliance, and then you're stuck running into strange cases every now and then.
For example, tonight I was doing a few things I really hadn't done before, and it really makes you think about the limitations of CSS and its future. The layout I was working on tonight was a horizontally centered fluid layout with some left and right margins. I then wanted to have a thick border on the sides, and then give it a subtle shadow on either side of the layout to give it some pop. On top of it all, let's throw in some rounded corners that fit within that thick border up top.
It's difficult to do. Most of the solutions out there relied upon making a large background image to take care of the top and left borders, but that's not really scalable and isn't quite as elegant as I had in mind. For a fluid layout it really doesn't work very well- the alistapart.com rounded corner/border article was more directed towards smaller boxes within the content, not the entire layout itself. In order to get it the way I wanted it, I needed to nest two divs, throw small repeated background images for both to handle the border and shading and bump padding in there so one div doesn't overlap the other. The top curved corners were also challenging- I had to again do two nested divs and sort of squeeze all of that within the top border.
Yes, it's complicated, and, as I'm sure that it's readily evident at this point, it's really confusing to type out and to read (my apologies). But basically, I ended up having to add another couple divs in order to account for a fluid layout with multiple background repeated images. That's just not cool. It's not a logical layout code-wise, and I could see it potentially biting me in the butt later down the line.
So where does this put us with CSS? CSS3 is supposedly going to bring a number of improvements (the shading aspects, from what I've seen, would help me out), but if you try to estimate the time it will take before developers can really utilize that new technology- well, it will be quite some time. Adoption rate is just really hard to deal with in regards to new standards on the web. And then you're sort of in a catch-22: why code for CSS3 standards when no one has browsers to support it yet? Why upgrade your browser if no one's really doing anything groundbreaking with CSS3?
Okay, so it's a dreary outlook, but I'll say it anyway: the future for web design doesn't look to be as exciting as we'd hope. IE7 isn't a glorious gift to mankind from the Microsoft gods- we'll still be bug fixing for the forseeable future, really. The current CSS specs aren't as flexible and rich as we as developers would like to see them. Designing a new site can be a real bitch.
At least the silver lining is that when you're finished up, you can look at your cross-browser layout with pride. And it's also such a joy to look through the CSS gallery sites to see what people can still do, even with all of these limitations we face. There's my little gripe for the night. :)
Software is an interesting thing. It can do so many new things, but it brings a slew of new problems with it, too.
Something that I've been trying to grapple with lately is how to appropriately take an existing web site and push it into new-dom. (In other words, how I'm going to yank Good-Tutorials into something even better than it is now.) In many respects, I wish I didn't have the established base that Good-Tutorials already has. Backwards compatibility isn't just for the traditional software and OS realm; that same problem persists on the web, too. And it's much more difficult to deal with than how I originally thought it might be.
For example, the current issue that I'm dealing with right now is how to handle tutorial authors. Right now, there's no real author registration; authors just submit all of their tutorials under the same name and they can keep a collection of those tutorials through author pages (good-tutorials.com/author/author-name). I really want to start pushing for a user-centric site, where tutorials are tethered to usernames as opposed to just author names. This way you know for sure who submitted the tutorial, and this makes maintenance, support requests, statistics, and any other of the cool ideas I have in the back of my mind a world easier to implement. The problem is backwards compatibility. I have nearly eleven thousand tutorials that aren't set up this way right now. This means I either have to code additional features that let members reclaim old tutorials, figure out some way to do both, or perhaps another few creative solutions.
I lied though. I said that was the problem, but it's not the real problem. The real problem is implementing the solution. If you've been reading my blog, you know that I always try to keep a user-centric focus throughout development. When you're implementing solutions that necessarily have to be cumbersome for your users, you run into some potentially huge difficulties. The last thing I want is to make things overly confusing for users, particularly newer visitors that don't understand the flow of Good-Tutorials yet and are really quite impressionable about process and design on a site. It's important to keep pushing forward, but on the other hand you need to make sure that you're not throwing up hack jobs to score backwards compatibility.
It's rather unfortunate that things have to go this way. Admittedly, it would be nice to just have such a clear vision of the future that you can prepare for every contingency. But you can't. Five and a half years ago it didn't really cross my mind to have any sort of user functionality on Good-Tutorials. Anticipating and adapting to these changes is a slow process, not a sudden one. But it also is the nature of the web to change, and change is good. And in many respects, what matters is how you evolve the product more than how you create it.