Defying Classification

by Malcolm Tredinnick

Mon 28 Apr 2008

"A+" For Member Management

Posted at 22:48 +1000

A couple of years ago I joined the CGSociety website — a computer graphics website. Mostly so that I could read and, (very) occasionally post, in their forums. Computer modelling and rendering is very much a hobby for me, but I love to read and learn about it.

Periodically, CGSociety send out an email newsletter. Initially I read it with interest, but it wasn't something I had on my "must read" list and lately I've tended to just delete the notification emails unread (the site emails me when there's a new newsletter available). Today I received an email that said, in effect, they'd noticed I hadn't been reading (clicking through to) the newsletters in a while, so I've been unsubscribed. If I want to resubscribe there's a link available.

This is excellent. I hadn't actually bothered to check if unsubscribing was an option since, like most people, spam is a part of my life and this was just one more unread email amongst hundreds. But the site noticed for me and took a positive action. It saves them an email each time and it saves me from receiving pointless email. There's a small chance I will now forget about the website altogether, although in my case that's unlikely, since I browse it fairly regularly. In my book, CGSociety have just gained a lot of positive karma for proactive and much appreciated membership management. Well done.

Topics: software/graphics

Fri 25 Apr 2008

Did You Email Me Yesterday From New York?

Posted at 18:56 +1000

I'm an idiot.

Somebody in New York City sent me some email in the last 24 hours about something Django related. It was sent only to me, not a mailing list.

To whomever that person was, I read your email, noted that it was something I was interested in and then I seemed to have deleted it. Could you please resend it so I can reply? Or contact me on IM or IRC (see the about page for contact details).

Thanks. One day I'll master the technology. Promise.

Topics: life

Fri 25 Apr 2008

An Interview

Posted at 15:55 +1000

Seems to be my week to be interviewed. Shabda Raaj interviewed me over IM earlier this week about Django and Open Source in general. It's been published at The 42 Topics Blog.

Topics: software/django, software/open source

Tue 22 Apr 2008

Software Internationalisation

Posted at 23:19 +1000

Michael Trier and Brian Rosner released another episode of This Week In Django and I was asked to play the role of guest speaker. The focus was on internalisation in Django (and in general in software).

I realised after we recorded it that I neglected to mention a few things that are probably of note for developers trying to write international software. Consequently, here's a small follow-up with some additional things I thought of last night.

This isn't entirely Django-specific, since most of these techniques apply to software in general.

(Read more...)

Topics: software/django, software/internationalisation

Mon 21 Apr 2008

Blog Redesign

Posted at 18:39 +1000

For quite a while now, I've been wanting to reorganise portions of this blog, and of www.pointy-stick.com in general. Rather than wait until everything's completely perfect, which will be approximately never, I've decided to roll out the bits that are done now and incrementally work towards the final version of Malcolm Blog 2.0 in the coming weeks or months. Thus, here we are.

[Update: It occurs to me, too late, that I've screwed up some file naming and expiry time settings. So one updated stylesheet is still served with the old name and had a one year expiry time. Thus, if the style looks a little off, try forcing your browser to reload all the page components. I'll fix that in the next rollout and try to be less of a bozo next time.]

Slightly different color scheme, different organisation of information, different layout. All new and yet mostly the same. As usual (where "usual" means "two years ago when I last rolled out some code here"), I've made the source code available for download in case you want to see how things are done. Keep in mind that this is still a work in progress, so there are changes to come.

For those who care about design-y features:

  • the CSS is based off the YUI framework for the basic grid system and sizing. I've also put in a bit of effort to baseline-align a lot of stuff (thanks to all the people who've written articles about that over the past year or so) and keep things regularly spaced vertically, but it's not quite perfect. I won't be invited to the cool parties yet, since pages with images and code fragments both drift and there's a mixture of ems and pixels that mess things up on a long page. I'll fix those things one day.
  • The site now works (better, at least) in IE 6.0, with the sidebar being at the side instead of falling off the bottom. No idea what it looks in Safari et al. I'm a Linux user, so I've checked it using Firefox 2 and using IE (running with Wine). That's all.
  • I was unhappy with the amount of space the previous version devoted to metadata — things like dates and categories and permalinks. I don't want to not display that information, but I've put some effort into using the available space more efficiently by floating things around with CSS. For designers, this is possibly second nature; for me, it's closer to really hard work.
  • Not amazingly happy with the colour scheme, but it's the best I've come up with so far. Didn't want to have too many colours and, surprisingly, the thing I found most difficult to style were the hyperlinks. The default blue didn't always work and I was struggling to find a mix between visible and intrusive. That was a lot trickier than I realised.

Topics: meta/blog

Mon 31 Mar 2008

Software Development Motivation

Posted at 20:45 +1000

I've re-read a few books about successful and unsuccessful software and other large projects over the past couple of weeks. Some rambling about the why of this later, but first, a quick summary of what I've read and why those books above others.

I continue to be impressed with Dreaming In Code, which I haven't reviewed here, but a lot of my peer group will have heard of. Initially I thought it was quite a tough read because it is a chronicle of stuff that didn't quite work and I know some of the people involved (and have heard of most of the names). So it's a bit too much of a real life tragedy at times. But Scott Rosenberg does quite a good job of periodically pulling out of the story he is telling about the Open Source Application Foundation (OSAF) and addressing the reader's concerns along those lines. He makes a point of identifying that many people will have been saying "they're doing it all wrong" and "I wouldn't have done that" and making you realise that might not be true and 20/20 hindsight is both easier and of less practical usefulness than foresight. All in all, the book is a chronicle of what happens if you try the ultimate "we'll work it out as we go along" and then aren't tough on yourselves about actually working to a conclusion on the mini-issues. There are software management lessons galore there, both positive and negative. Rosenberg, and particularly the individuals who worked for (in some cases, still work for) OSAF and contributed recollections and quotes for the book, have added something useful to IT history by writing down what happened during the early Chandler years. It's not a happy story, but it's motivating and it is worth knowing.

It's very hard to contrast Dreaming In Code with many other books on that theme, because it is recording something that is happening right now and started only a few years ago (I remember the initial announcement about it). Tracy Kidder's Soul Of The New Machine is close and I read that again over the weekend. The big difference is that Soul Of The New Machine was published after the project was complete and it (the project) was a measured success and easier to measure as a success in the sense that a specified piece of hardware was produced for sale. Open Source software is actively never "done", so unless a project fails to the extent it is abandoned, you can't quite write the story of a piece of Open Source software after the event.

Two more closely aligned books that are opposite sides of the "success" coin and also on the recently read list are Fred Moody's I Sing The Body Electronic and Andy Hertzfeld's Revolution In The Valley. Moody's book covers an ultimately unsuccessful project within Microsoft in the early 1990's to develop a sort of "Encarta for Children" product. Hertzfeld's justifiably lauded book is the story of the creation of the Apple Mac. Although told in different ways and with quite different moods and results, these two books are the stories of products developed within hierarchical, highly managed organisations and that's why I've separated them from Soul Of The New Machine and Dreaming In Code. Yes, the Macintosh guys did some funky stuff and were real hackers to get the thing done, but they still worked largely within the Apple system and got sign-off and rejections at times from the higher-ups (Steve Jobs, in particular). Moody tells a story that could largely be turned into a fortune cookie form as "over management and waterfall planning stifles productivity, kills product", but that hides a lot of the subtlety and skips a number of details.

By the way, I prefer I Sing The Body Electronic over G. Pascal Zachary's Showstopper, a story about the creation of Windows NT. Both paint similar pictures of life inside Microsoft, both good and bad. However, Moody's book seems to get in closer with the team involved (admittedly, it's a much smaller team and a smaller product) and since there are less obnoxious people involved in his story, you (or, at least, I) feel more able to relate to the story of the team developing the software. However, that's more possibly a function of my mood than the books themselves. If you want to alternately read about an interesting and awesome piece of computer history and shake your fist at Microsoft's bumbling and arrogance, both I Sing The Body Electronic and ShowStopper! are good reads, if you can find them in print anywhere.

All four of these books, even the two that end with less successful outcomes, provide a lot of food for thought. They also describe a lot of stuff I can identify with concerning motivation, the ebbs and flow of individual people's enthusiasm and that of a team, and the various things that are done to try and change direction. Other books like Scott Berkun's project management book, Christopher Duncan's The Career Programmer or J. Hank Rainwater's Herding Cats — three of my personal references for software development and technical management in commercial situations — cover much of the same territory in more of a reference fashion. Thus they are easier to learn from if you are wanting to apply hindsight to the present, but they aren't nearly as easy to identify with. You think of it more as happening to "other people" and the emotional impact and retention is less. This is both good and bad, of course, since removing the subjective to drill down to the objective points is what makes a good reference and checklist book. But it's not as inspiring.

By contrast, Tom De Marco's The Deadline is entertaining and has some important lessons in amongst the laughs, but it's not nearly realistic enough to empathise with. Again, a good reference. A short read that introduces some interesting techniques and possible results with quite some humour, but not something that helps me sort out what's going on in my own headspace. Still, this was the book that made me remember "it's not the stuff you don't know that hurts you; it's the stuff you think you know that is wrong." When I first read the book some years ago, that stuck with me and a couple of friends I've lent the book to have commented on that portion as well. It's become a bit of a mantra when I'm designing stuff, so I can't say the lesson was lost or the presentation was bad.

Anyway, thus endeth the book review/recommendation section of today's post.

I've been doing all this reading in an attempt to get out of a bit of a funk about writing code and designing things. It's not too serious, but I'm grumpy a lot and missing the feeling of being enthusiastic about stuff and have been spending a lot of time trying to work out why this is the case. Reading about other experiences — and this was why I chose books that were at least somewhat contemporaneous with the single project they were documenting, rather than those that tried to explain broader conclusions for the future — has helped sort out some of this. I want to work on something that matters, something that has a completion point and will be useful. Contributing to projects like Django are still fun, obviously, but that's mostly doing little things to help out others and sometimes I'm not as invested in it as I should be. I think I'm missing the fun of working on something that is hard but realistic and which can be said at some point to be done. I'm also worried that the lack of periodic work with teams is not giving me any outlet for ideas or source of problems. I'm hardly a hermit, but I sometimes miss working closely with other people and succeeding together on something that is non-trivial. Self-education is fun and something I do a lot, but the real world tends to throw up a lot of interesting problems that you don't see in the books.

Okay, some people I know who read this blog will possibly misinterpret or over-emphasise that last paragraph. Please don't. This isn't a whine. I'm writing it down as a record to look back on. It's my problem to solve, I'm addressing it and sometimes my blog is for me. Right at this moment, it's career evaluation time and this is part of that. I don't want anybody to think I've lost faith in Open Source development or am considering cutting back my involvement there. In fact, I'm trying to work out how to be more effective in my participation in that arena. It's one of the fastest moving areas of the industry and periodic reassessment is always worthwhile. That's why I've been refreshing my memory on what's worked and what hasn't in other places. There are a few other posts I want to write based on recent conversations I've had with some other people that essentially come down to "Open Source code seems to be of a significantly higher quality". I don't want to give up that advantage by only writing in a closed room. Hanging code out there for people to see periodically and participating in the feedback cycle keeps me honest and responsible. In addition to other things, I need to pick something to work on that is a little more concrete than merely "do useful stuff". I'm being a bit more active in looking around for ideas lately. The trick is finding a balance between interesting, useful and wanted. The latter sort of work is the type that people pay for and that helps fund work on other stuff on weekends and evenings.

Topics: books, software/design, life

Wed 26 Mar 2008

More Django Queryset Notes

Posted at 21:44 +1100 (edited 23:35)

Following on from some positive feedback to my recent post about writing portions of the ORM layer in Django, I'm encouraged to do another post about one particular implementation detail that took some time to puzzle through.

Sorry, general non-technical readers. This is another heavy Python post. Sorry, technical readers. This is another "how Malcolm thinks" post. It's not pretty. The good news is, there's no SQL in this post.

(Read more...)

Topics: software/design, software/django

Tue 25 Mar 2008

Random Stuff

Posted at 07:16 +1100

In lieu of actual content, a few random bits and pieces from around the web that I've found interesting.

Non-Euclidean Hotels

From Neil Gaiman's blog, discussing a hotel that he previously described as "the geography of which I cannot grasp":

I am used to sensible, Euclidean spaces, in which if you go through enough 90 degree angles you wind up where you started. Try that here and see where it gets you. [...] From the outside it seems almost normal. Then the corridors begin..

How Long Is A (First) Moonwalk?

Until today, I had no idea just how little area Neil Armstrong and Buzz Aldrin covered whilst on the moon. Basically, the size of a football (soccer football) pitch. In fact, the size of one half of a football pitch with a brief excursion down to the opposing team's goal area on one walk by Armstrong.

For those who can summon a mental image of a baseball diamond more easily, there's also a map overlaying the moonwalk on that (linked from the above). They covered most of the infield, stayed out of the way of any base runners and Armstrong made a quick dash to the back fence for a sample.

By the way, if you're not reading Strange Maps at least semi-regularly, you're missing out on a real education.

Untangled

Roy Fielding started blogging about a month ago. Somehow I missed this. Web application writers can thank him for the mind twisting subtleties of RESTful architectural design. From recent posts, it looks like his blog is going to be only slightly easier reading than his PhD thesis, although at least he's including examples now. Seriously, this will be invaluable stuff to read for the things I like to think about.

GET LAMP

Jason Scott writes an interesting blog about documentary making, computer history and general "stuff". I want to write more about some of his stuff in the future. This time, though, it's just to mention that the documentary he's been working on, GET LAMP, now has a trailer out. If you are somebody from about my generation who went through a period of being addicted to Zork and similar text adventures on computers, this looks like a worthwhile investment when it is finished.

Topics: random

Tue 18 Mar 2008

Rusty Explains Good API Design

Posted at 17:47 +1100

Too busy to write any long blog posts at the moment. Far too busy to write shorter ones.

Instead, a quick follow-up to my recent posting about Rusty Russell's API design levels. Rusty has now started with the first in what he promises will be a series about good API design.

I'm taking the hard line on a few API design decisions in Django at the moment for reasons I've learnt from people like this. More about that in a future post. In the meantime, people should learn this stuff.

Topics: software/design, software/django

Thu 13 Mar 2008

Explanation: The Difference Between OpenID and OAuth

Posted at 17:41 +1100

In the past five days or so I've seen three different posts on the web where somebody has either confused OpenID and OAuth or expressed confusion as to how they differ. I'm not going to name names or point to URLs. I'd prefer to try to fix the problem.

Therefore, here's a simple, and hopefully clear and accurate, guide to the purposes of and differences between the two systems. If I had a video camera, I'd act out the sock puppet version for you. But I don't, so you have to read this instead.

(Read more...)

Topics: technology/oauth, technology/openid