Sunday, May 22, 2011

Finally, a new project

I'm finally working on a new personal website.

It will be

I haven't worked on a personal project of any kind in a few years. I haven't had the interest, really, but in the last few weeks something has been nagging at me. I needed to build something because NOT building anything was Driving. Me. Nuts.

So, a new personal website, my little "ME!" on the interwebs.

I'll have my music up there, and some words made into sentences corralled into paragraphs, and some photos, and some other things.

Yesterday morning, after the rolling up of sleeves and the brewing and drinking of coffee, I dove into hand-coding html and css to create a basic prototype of the design I have in mind. The design is minimalist, with at most three fonts (two sans-serif and one serif). Much like in music, where what is between the notes is as important (and sometimes more important) than the collected notes, what's not in space is as important (and sometimes more important) than what is collected in other parts of the space. I'm keeping this in mind as I go.

Back to yesterday: once I had a working prototype of a webpage, I shattered it into several pieces.

Those pieces became the building-blocks for several web pages.

Once I had the pieces of the shattered webpage, I jumped into python and built a little webpage-builder function that consumes shards of  shattered prototype-webpage and produces several new, different, webpages.  This little, and simple, html rendering engine builds the pages for my new website.

Once I turned the webpage-shards into proper webpages, I used a couple of open-source packages to set up a webserver. Using Greenhouse and Feather, I set up a little server in the comfort of my own home. (The future! It is here!)

I made a deliberate and certain decision to eschew the use of a templating engine (Cheetah, Mako, etc). I'm having more fun writing my own rendering functions.  I'm not using a framework because, well, what fun would that be? That and I'm not framing a subdivision of houses, I'm building a little mid-century-modern joint with big windows and Helvetica.

I may use jQuery or some other javascript library, but at the moment have no need for one.

I'm shooting for simple.

I decided against more commonly used http server solutions as I want to work with a newer open-source package and help work out the kinks in whatever way I can.

Yesterday, from 7am through 7pm, was really, exceptionally, fun.

I've been experimenting with fonts with the intention of beautiful web typography. I love typography and clean, minimalist design, and I'm going to see if I can get what's in my imagination out onto the screen.

I'm learning different things than I learn at work, and remembering things I have forgotten I knew. (Or at least I've forgotten that I remembered how to do some of this stuff a few years ago but in the meantime of non-use had forgotten to remember it, or simply forgot it, and now have remembered where I put some of this knowledge).

This project is going to take a while. I have a few pages of content to work through followed by wrestling some css into submission. Not to mention some spit&polish of the http server, the image server, and deciding from where the hell to serve the mp3 files of music.

But since I have an addiction to shipping product, this thing will be live relatively soon.

The most important thing, the thing that is most important, the point that makes the point is: I'm finally, Finally, finally working on a project for the love of working on, and shipping, a project. I want to learn, hands-on,  how servers along the lines of Greenhouse and Eventlet really work, and how something like Feather or Spawning really work. I want to hack at css to make pretty san-serif to happen on my computer screen, even though the problem has been solved 132,619 times already.

So, I'm doing this because not doing it was becoming impossible. Well, and the vanity of my name on a live website that's all about me.

Vanity might have a little to do with this.

Update: At lunch, a friend asked me if I thought I was over-engineering a solution for a very simple project (a static website). Yes, I am! The website is the macguffin , the thing that gives me the reason to go on this journey of coding. I could just set up nginx and serve html and be done with it. But that's not the point to me; the point to me, right now, is rolling up my sleeves and playing with some tech.   Next round, I'll work on something that solves a real problem.  This round, the problem I want to solve is personal, and not technical.