Posted on April 17, 2008 at 12:49 P.M.

What could have more of an impact on visitors of a website than its design? It's the first thing that people notice when they visit the site, and it dictates what they see and how they interact with the site. A bad design can drive visitors away, whereas a good design can bring people back again and again.

It seems that a common misconception is that design is how to make a site "look good". While this is true, to an extent, the design also determines the flow of information from the screen to the user. In the words of Andy Rutledge, "It's not about the design, it's about communicating.". This only underlines the importance of good design.

37signals designs their interfaces first, citing two basic reasons. First, design is lightweight relative to programming. That is, it's much easier to change the position of a navigation bar than to change the data persistence layer of the backend. Second, is that the interface is your product--if the visitor sees and interacts and remembers the interface and its design only, then the design really is the site itself. I'm not sure how much I agree with the former, as I believe that design is becoming more and more heavyweight, but the latter definitely has some merit.

So it's a reasonably well-accepted fact that design is one of the most important aspects of a website, so why don't more people focus on it? I think that the problem is specialization: programmers--preferring to write code and think through the program logic--attempt to muddle their way through creating a user interface, while designers--preferring to perfect the margins, whitespace, and typography--attempt to muddle their way through defining logic of the backend.

Of course, I'm talking about smaller projects of only one or two members. Once they get larger than that, they need to bring a few of "the other" type of people into the mix. That being said, where are the people who are excellent dual designer-developers? Of course people like this exist, but these people are few and far between.

Part of the problem is that both disciplines are ones of constant improvement. As a developer, I know that I will never stop getting better and more experienced in my craft. I will always look at code that I wrote a year ago and cringe. This is part of what makes developing interesting to developers. As I understand it, the same is true with design. This property of both disciplines renders learning the other discipline futile, or at least makes it seem futile (which is a bit of a self-fulfilling prophecy).

Is it possible to become at least conversational in the language of design, when your experience and main interests is developer? That's what I'll be trying to discover in the next few weeks and months. I don't have more than a few hours a week to devote to it, but I've embarked on a bit of "independent study" about design, trying to learn from the best out there about grid-based layouts, color theory, etc.

The encouraging thing is that both designers and developers trend towards being bloggers as well, and that means that there's a wealth of great articles and information out there to learn from. Keep an eye out here for updates on my progress, my successes/frustrations, and other theoretical ramblings about design.


Posted on Dec. 5, 2007 at 9:33 P.M.

I've just relaunched the redesign of this site. Nothing major is different, but one fun thing that I'd like to highlight is the way the blogroll is displayed. I got the idea from Motel de Moka, which has more links to work with than I do.

First, I set up a very simple model:

class BlogRollLink(models.Model):
    name = models.CharField(max_length=128)
    date_added = models.DateTimeField(default=datetime.now)
    url = models.URLField()

But we've got a problem at this point: we can't order this by the number of characters in the name. So we must modify our model to have an integer called name_size, and then override BlogRollLink's save function to fill in that field any time the model is saved. Our final model is below:

class BlogRollLink(models.Model):
    name = models.CharField(max_length=128)
    name_size = models.IntegerField(editable=False)
    date_added = models.DateTimeField(default=datetime.now)
    url = models.URLField()

    def save(self):
        self.name_size = len(self.name)
        super(BlogRollLink, self).save()

    def __unicode__(self):
        return self.name

    def get_absolute_url(self):
        return self.url

    class Admin:
        pass

Now to display this on every page, I've created a context processor named blogroll_processor. It looks like this:

def blogroll_processor(request):
    blogrolls = cache.get('blogrolls', None)
    if blogrolls == None:
        blogrolls = list(BlogRollLink.objects.all().order_by('name_size'))
        cache.set('blogrolls', blogrolls)
    return {'blogrolls' : blogrolls}

And we're done! A nifty "waterfall" of blogs. Let me know what you think about this technique. Is it stupid?



Posted on July 26, 2007 at 10:44 A.M.

I just found a designer! And it's one of those guys that is way too high-profile for my budget, but he's interested in my idea!

WOOHOO!


Posted on July 26, 2007 at 2:40 A.M.

For the past month or so, in my free time I've been working on a potentially very profitable/successful idea. I've had this idea for years, and have waited for someone else to do it, but nobody did. This summer seemed like the perfect time to realize this idea, and to see just how far I could go with it. There have been challenges in writing the back end for it so far, that much is certain, but by far most of my time has been spent looking for a designer.

I realized almost immediately that my design skills are not adequate to realize my idea in any decent way, so one of the first things that I decided was that I would need to enlist the help of a designer. I have a budget of no more than $1000, so it should be fairly easy to find a decent if not good designer, right? Wrong! I never could have imagined that finding a designer would be so hard!

My first tactic was to email the guy who created inviteshare.com, because I like that design a lot and think he's a budding web designer who just needs to be discovered. He responded, seemingly interested, and as soon as I presented my entire idea he was gone. I'm actually fairly suspicious that he'll try and implement it himself, effectively stealing it from me. But judging from his previous development work, I don't think I have too much to worry about.

My second tactic was to troll at a community for web designers/developers, like sitepoint.com, and look for potential candidates there. One can not appreciate just how many AWFUL designers there are out there, until they visit the critique section of sitepoint. And it's the same for all the designer web forums. For the most part, the good designers don't go there while the bad ones go there to get help from the other bad designers.

My third tactic was to scour blogs of the truly great designers, and look at the comments.

...along with the best agencies:

...and so on and so forth for about 30 of the best of the best designers and agencies.

I would look at who posted comments and go to their websites, but even those people--fans of the best--are way too high-profile for my price range.

Right now, I'm not really sure whether to get some books and try and teach myself the principles of design, or to try and earn some more money, or to simply keep scouring the net for that budding designer that's willing to work for me for a reasonable price.

It'll be extremely interesting to see what ends up happening in the coming months.


Posted on March 9, 2007 at 2:15 A.M.

So I've yet again redesigned the site. This was not a backend redesign, but rather an aesthetic redesign consisting of mostly changing the CSS. The other change that was made was that now I am deploying via subversion checkout. I do my changes on my local copy, and then I commit those changes to subversion, and finally I do a checkout from the server's SVN. This makes it much easier to deploy in general, and I will see how this ease continues into the future.

I'd like to work on all of the project ideas that I've got, but it seems like every time I get a free moment, it gets snapped up by something else. For example, I thought that I would have some time to set up the secret santa site for my family finally, but then I realized that the database backend to this website is going to change a bit in the next few days and if I send everyone links to the secret santa stuff now then they won't be able to access it in the near future. That's why I've got to do the database transition to postgresql during spring break and then I can get the secret santa information sent out.

I'd also like to work on my Django API idea, and I have a rough implementation figured out. But it's not as robust as I'd like it to be before I release it to the public, and I'll actually have to do a little hacking on Django's source itself so that I can serialize some meta-information about models themselves, and not just instances of models which are supported right now.

But unfortunately right now I've got to do some learning of Perl, although in a way that kind of excites me. (Sometimes I just get the itch to try something completely different, and that's happening now for sure.) I'll need to invent some kind of pet project to help learn Perl for the future.

Blah, there's a bunch more personal stuff to write about, and frustrating professional stuff as well, but nobody that reads this (e.g. nobody) wants to hear about my personal stuff nor be frustrated by the professional stuff.

Despite all there, I'm excited for what this summer holds in store for me. No matter what happens, it'll be a new and exciting experience and I cannot wait to see what does end up happening.

Until next time!

Search

 

Recent Links

  • git-issues: A distributed issue tracker built-in to Git.
  • I predicted this back in March--can't believe a solution has surfaced so soon. It makes so much sense to build in an issue tracker to a revision control system. Since you're working with the code, might as well track the issues in the same system and take advantage of the extra metadata. This is really cool (and as a bonus, it's written in Python) so I hope to see it really grow and flourish!

  • How I Work Daily
  • Daily blog by Kevin Fricovsky. In addition to having some really great content, he has started to post audio interviews with people from the Django community. This is a site to keep an eye on in the coming days and months.

  • django-arcade
  • Demo site for django-arcade, an open source reusable Django app to add new flash games to any django-powered site. Looks very cool for easily creating game portals. It also comes from my future employer.

  • Facebook Chat and Scalability (with Erlang)
  • Eugene Letuchy talks about how they they took Facebook Chat from no users to 70 million users, with the help of Erlang.

  • Simon Willison: The Implications of OpenID
  • I somehow missed this presentation when it came out, but it's an absolutely fantastic overview and defense of OpenID by Simon Willison. If you are in any way interested in what OpenID is and what it can offer, you owe it to yourself to check out this presentation.

  • StupidXML
  • Probably the simplest XML library that I've seen for Python. Sometimes you just want to generate some stupid XML, and this is the perfect tool for the job.

  • See the rest of my links...

Pownce

Badges

  • django badge
  • apache badge
  • GeoURL
  • XFN Friendly
  • Valid HTML 4.01 Transitional