Better late than never, I always say. Always. In case you haven’t noticed, I’ve re-designed my site. Entirely re-built it in fact. This has been an exercise in how not to tackle a web project, an exercise in which I utterly flouted all the sensible rules of thumb I stick to on any work project. With no deadline, no budget, and a client (me) who kept throwing in features it’s a wonder the site’s finished. I’m trying hard not to be sick of the whole thing already.
I can’t even remember when I started… was it 18 months ago that I first did some scribbles on scraps of paper? Two years ago? More? It was at least a year ago that I began tinkering with HTML. And it was the end of last summer that I finally finished a handful of HTML pages. Some time late last year I began wrangling Movable Type and brawling with PHP. Although there is, inevitably, a long list of more things to do, I finally made the new site live ten days ago and it’s taken until now to find odd hours here and there to fix bugs and, phew, get this written.
The lesson I should already have learned: For my personal projects I really, really should plan it better and then set aside enough time to get it done. Then treat that time as if it was booked for work, and not take anything else on. Maybe it’s me getting older or more jaded, but these days I no longer want to spend my evenings and weekends staring at code. With money-paying-work coming first, hefty projects like this re-build end up taking way too long, squeezed into spare hours and afternoons here and there.
Anyway, a few things about the site for anyone interested, least techy things first:
I used to have a separate weblog for Notes — notes I’d made on books, talks, etc. I didn’t use it often, and it eventually seemed more confusing than it was worth. So all its entries are now in categories of the main Writing weblog.
You can now post comments on the daily Links weblog entries, if you like.
The new site’s design is an extreme example of my fundamentalist design approach. I’m not sure it’s entirely healthy, and I wouldn’t necessarily inflict it on others, but it’s increasingly the only way I can design things for myself. I keep seeing design as a problem to be solved, which I’m not sure is quite correct. Colour seems entirely arbitrary and so doesn’t help solve the problem. At the moment I feel that background tints, rules and other non-textual features only exist to make design easier and should therefore be avoided by anyone serious. I may be an idiot. I grudgingly allowed a few bullet points onto the site after special negotiations with the Amalgamated Union of Logos, Buttons and Other Graphical Devices.
The site probably looks nicer on a Mac with the font Lucida Grande, rather than on a PC with Trebuchet MS. Italics in either font seem to look a bit ropey unfortunately.
The starting point of the redesign was the pages for individual weblog entries, such as this. The sidebar shows relevant contextual information: any photos I took the same day, what I was reading that day, any links I posted, and what music I listened to most that week. I could have included some kind of “On this day” news headlines from somewhere but that would have overplayed how aware I am of what’s happening in the outside world.
Although I like those individual pages I’m not completely happy with the front page of the site. I haven’t found a good way of combining a few photos, a few links and the occasional long piece of writing. It all looks a bit random and maybe I need to re-think that page entirely.
On the previous site I had lists of what books I’d read and this has now been expanded to include magazines, seeing as I spend more time reading reviews of books than actual books. I spent way too long building a system for me to record the dates I was reading things in painfully excessive detail. I’ll now be able to see exactly when I read anything by David Foster Wallace for example. As if I’ll ever want to.
Similarly, I completely over-engineered a system for fetching lists of music from Last.fm using their data feeds. I’ve ended up with several PHP classes, too many database tables, and yet another over-complicated thing to maintain. Still, the final result looks nice.
I’ve switched TrackBacks off entirely for the weblogs on this site — way more trouble than they’re worth.
I decided to get everything out of Movable Type as quickly as possible, so I’ve done something like this. Every MT template is as generic as possible and simply churns out a PHP array for Smarty to deal with. Much of the work on this project has been making everything generic so the next site (re-)build won’t be such an endless nightmare.
I used PHP 5 for the first time. It doesn’t offer me a whole lot I couldn’t do with PHP 4, but a personal project seemed the best time to get my hands dirty with it, and going back to 4’s less object oriented world will be a pain.
I’m using the phpFlickr class for fetching my photos from Flickr all over the site. Using it was one of the few bits of the whole project that was nice and easy.
I’m now using the RSSWriter script to help generate the combined RSS feed of my writing, links and photos. There seems to be a strange lack of any PHP equivalent to Perl’s XML::RSS module. I hacked a few bits of XML::RSS’s character encoding into RSSWriter to get the results I wanted, and it works, but there seems to be a gap out there (unless I’ve missed something?).
The result of all this is a system that is probably way over-complex, over-specced and possibly a little slow for a site like this, given most of it could be done with static Movable Type-generated pages. Maybe I should do more caching or something. Still, all good fun. Apparently.
So there you go. I’ve probably forgotten something that occurred to me at some point during the past couple of years that I really wanted to tell you. Still, it’s all (mostly) done now, at last.
Comments
Commenting is disabled on posts once they’re 30 days old.
ted at 16 Mar 2006, 5:12pm. Permalink
Wow, this really is minimal. This is more minimal than the early days of html, or at least it feels that way. Where's the color, Phil? Where's...the love? (sob)
Paul Mison at 17 Mar 2006, 2:19pm. Permalink
Just wanted to say how nice the integration of all the externally hosted stuff (delicious links, Flickr photos) back to the parent site is. Too many people have their personal stuff scattered everywhere (I know I do) but this is inspiring me to think about ways to pull it all back together.
I do like the minimal design, too, even if it's probably a step further than I'd go myself.
MacDara at 17 Mar 2006, 10:08pm. Permalink
I have to ask: how did you set up the home page to entwine your different content strands into one in chronological order?
I know Kottke did something similar with his site a while ago, but he admitted hacking MT to do so -- which I'd be wary of doing, even if I knew how he did it, which I don't. So I'm curious as to how you achieved it here.
(Loving the minimalism of the new design, by the way. If Muji sold blogs...)
Phil Gyford at 21 Mar 2006, 10:28pm. Permalink
It's even more complicated than hacking MT I'm afraid...
My two MT weblogs -- the Writing and Links -- generate a PHP file each, containing an array of information about recent entries, sorted by date.
Then I have a PHP script that runs periodically which grabs those arrays and combines them with my recent photos fetched from Flickr. It sorts the whole lot by date and generates another PHP file with all those entries in. It also generates the main content for my 'Photos' page.
(Actually, although those final PHP files could just be the HTML for the relevant pages, they actually contain a serialized array each, which are included on the relevant pages (the Home and Photos pages). This array is the same format as all the arrays MT generates for other index pages, and it's just passed into a Smarty template for rendering like any other of my pages.)
Phil Gyford at 22 Mar 2006, 8:17am. Permalink
It just occurred to me that if you only wanted to combine entries from several weblogs on the same installation of MT, you could just use the MultiBlog plugin.