Monday 25 February 2008

The Blind Assassin

The Blind Assassin
Margaret Atwood

Continuing on my plan to expand the types of books I'm reading: this was from Annabel several years ago. A Booker prize winner, and I've enjoyed some of the others I've read, it's also Canadian and a female author. I just haven't been reading enough female authors recently; though Zadie Smith is one of my favourite authors.

It's an interesting story for a number of reasons. It's structured as a story within a story within a story; it's told backwards and forwards, alternatively; it appears to be centred around a mystery, but really isn't; and, perhaps most interestingly, for a large part of the novel the main character is quite unsympathetic. And though unsympathetic, she still manages to maintain your influence and carry the story.

And stopping for a pause... when I first wrote this review immediately after reading the book over a month ago, I enjoyed the novel but wasn't taken by it. However, it's a novel I haven't stopped thinking about. It just keeps cropping up in my mind over and over again. At the time, I put it down as one of those typical, slightly over-wrought Booker prize winners, but now my opinion is going to have to change.

Slow, deliberate, difficult for not liking the main character, but in the end, memorable and worth it. I will be going back to read more Atwood: and I've found myself browsing her shelf in book stores.

Sunday 24 February 2008

Girl Geek Dinner 0

The first Girl Geek Dinner, Sydney was held on Thursday, at Chinta Ria. For those of you who haven't heard of this: women working in computing/IT get together, have dinner, discuss technical topics and generally network. Damana has been organising this over the last month and a half or so. While the events are intended for women, each woman can escort one man. I was there as Damana's escort, acting in a supporting role. But, I will pause and make very clear here that independently of any personal connections in this particular instance, I fully support this idea. It's a great idea and I'd like to see more of this sort of thing.

So, as a guy at a Girl Geek Dinner, what did I think of it? To be completely honest, it was unusual. There are few enough gatherings of outgoing geeks and when there are the demographics are depressingly predictable. The Girl Geek Dinner was different but not dramatically. The overall mood and atmosphere of the group was what you'd expect from a crowd of people who don't know each other but share an interest. There was a lot of loud, friendly talking. People generally moved around and talked to others they hadn't met. Just like a bunch of strangers socialising.

But there were still differences. Differences that only exhibited on individual scales. Ultimately, this is an issue of gender, oppression and hostile environments. Please bear with me. Try to take this in the spirit that it is intended and above all remember that I am a major proponent of diversity in all its forms in all environments. I don't subscribe to any 'fundamentally different' hypotheses; in my view we're all the largely the same after individual and cultural differences are accounted for.

Onto the differences. Firstly, the women seemed significantly more relaxed in a work-type social setting than I have seen before. There was a lot of very loud talking, joking, laughing; a lot of alcohol was drunk (thanks Google!), the food was enjoyed (thanks ThoughtWorks!) and there were no more moments of self-conscious reflection than you'd expect when there are introverts around. This was particularly noticeable later in the night when some sleazy sales guy from another group tried to attach himself to us. It was a pretty clear reminder of what normally confronts women when they socialise together.

But that's all external observation; me theorising about motivations and feelings in a group to which I do not belong. I can be more certain about my own feelings. Several times, early in the night I mentally gave a start and felt that I had to move seats. I didn't though when I realised where that sense was coming from. I was one guy sitting at a table, laughing and talking with a bunch of women. And in Australia, at least, you just don't do that. I can't be certain where this was coming from. Either, it is not appropriate for a guy to be showing that much attention to a group of women (cf. sleazy sales guy), without also talking to some men occasionally; or, that men would regard other men who spend all night talking only to women poorly. So, was it fear of a negative reaction from men or fear of a negative reaction from women? Because I can say that it was not an inability to relate, not a lack of common interests: once I identified and ignored the feeling, it quickly disappeared, and I had a great night. Either way, this is the sort of thing that needs to be identified and disposed of before the inherent sexism in computing can be fixed.

But, apart form all that serious discussion of gender interaction, I had a great night and it seemed that so did pretty much everyone else. Thank you very much to Damana for organising this, ThoughtWorks for paying for the food and Google for providing the drinks. It was very interesting to get a real chance to talk to women in computing and about computing when I was the minority and I hope these sorts of events can do something to make computing a more balanced, realistic and enjoyable environment. Any geek guys out there, I'd recommend trying to get a date to the next one!

Tuesday 19 February 2008

A Burnt-out Case

A Burnt-out Case
Graham Greene

I read this book many, many years ago: way back in year nine English. It was the first of the Greene novels we read, followed by Our Man in Havanna and then The Quiet American. I remember really enjoying the latter two, but just not getting A Burnt-out Case. Thinking back on it now this might have been the first serious piece of literature I read. Wow. I had to get over fantasy at some point.

Of the three, this is the most adult and serious. At the core this story is about how you derive your meaning for life. What happens when instead of just accepting your life, you can't help question. Why you? Do you deserve your successes? Your failures? Your happiness? Your sadness? At some level, it's very easy to know that we don't deserve the bad things that happen. We move on, ignore those and wait for something good. But if you're going to scratch the surface of your life and ask 'What did I do to deserve this?' of the good things that happen, what answer do you get back? Are we set up to accept and enjoy success? Wuerry has scratched and examined; questioned and dug deep at the heart of who he thinks he is, until there was nothing left to scratch. And then he is on a small boat to a leprosarium in the heart of Belgian colonial Africa.

I'm very glad that I've finally re-read this book. Greene remains one of my favourite authors. Every book I read of his seems to be better than the last. Of course that can't be true - but it sure feels like it. Now, as I look through his list of books, there aren't many more that I've heard about that I am yet to read. This makes me sad. I'll be re-reading Our Man in Havanna at some point, and that gives me hope. I'd have never heard of that one if I hadn't already read it. There's no reason not to randomly try others then!

It is a pity that the Nobel Prize committee could never look past Greene's devout Catholicism. Though with Catholic themes and characters, his books are always much more than that. If there is anyone who deserved the Nobel Prize for Literature, it's Graham Greene.

Sunday 17 February 2008

On Reading and Writing

You may have noticed a pattern in my posting over the last few months. There was a lengthy quiet period at the end of last year, followed by many posts so far this year. You may also have noticed that I've been clearing a large backlog of book reviews, but with each separated by a non-book review post.

Well, of course the dry spell was caused by complaints. Apparently I was posting too many book reviews, my blog had become too much of a book-blog. It's funny the effect that complaints and criticism can have. When you have to work out if everything you write is something that someone else will want to read, the effort of making that decision on top of the effort of writing can very quickly become pretty expensive.

It's stupid to complain about this though. That kind of complaint is something everyone has to go through as soon as their output is read. If you want readers, then expect that, and if you're not after readers, then don't publish. Pretty simple. At first I kept writing my reviews without publishing, but that wasn't enough, so they're now back. But it doesn't really work to say I want to publish this and readers be damned. So, a compromise. I'm interspersing my book reviews with other posts, like this one. Stories, photos and good old rants. The backlog of reviews will eventually clear. I'm not sure what will happen then...

But I also wanted this post to be some sort of explanation for why I have continued the book reviews. Originally, I said that I just wanted to keep track of what I'd read and any first impressions. But, I've found that planning to write a review changed the way I read and, for me, in a good way.

I found I was reading books a lot deeper. I was predicting plot twists, noticing intentional coincidences and becoming more involved and aware of the atmosphere the author was trying to create. I also started to notice the techniques the author may have used to achieve this. Turns of phrase, pacing with a description at a well-timed juncture to set the mood. The language they use and how it might affect your impressions. I found that this closer reading managed to significantly increase my enjoyment of a book - even a not particularly good one. I can't promise it's for everyone, but I've got a lot out of it and it will continue.

Everything that appears on this blog is written twice. Well, most things, like longer posts such as this and all my book reviews. The first writing is done in long hand using a fountain pen in a journal of some sort (currently, an unruled, leather wrapped Corban + Blair given to me by a couple of friends.) Then I type the entry out using Emacs and post from MarsEdit. A combination of old and new technology that I like. So why do I have this involved writing process? Why not just type directly into Blogger's text edit field?

Well, there's a couple of reasons. Some apply to everyone, and others apply only to me. Firstly, Blogger's (and all web app) text fields suck. You're just far to exposed too exposed to bugs in too many different pieces of software. If I'm going to write a long post, I want some more confidence that it's going to survive to be published. Secondly, I live inside Emacs and I'm officially Emacs-retarded; I want my reflexive editing keystrokes to do what I expect.

But those are just technical reasons and only apply to the MarsEdit/Emacs parts of my process. Why the long-hand? The fountain pen?

In truth, I don't really know. And to be honest, 'affectation' would be the biggest part of the answer. It's hard to justify a fountain pen and a leather-bound journal any other way.

But, but, but... a blank computer screen has never been a very creatively inspirational sight for me. Even when programming. I just can't start thinking when I'm staring at a blank text window. I need to get away from a computer and into a garden and then I can start to think.

That was without planning or thought. While living in Darwin, when doing any programming I'd figure something out - and then find myself in some part of the garden. I'd got up from the computer and walked around the garden on auto-pilot.

Anyway, a journal and a pen get me away from a computer. And once you've written with a fountain pen, you'll never be able to write with any other pen again. There's just something about the way the ink lays down while the nib glides effortlessly across the page...

But there's also something about the act of writing for me. It's just a great way to crystallise and direct my thinking. Of course it largely comes out as a mess on the first pass. Incoherent sentences, the same word repeated over and over again. The typing it all out again is a fantastic editing process. I can't help but fix up all those little problems. In the end, I enjoy the writing process, much as I enjoy reading. These are things that work for me, with how I want to read and write. Always make sure you do what works for you.

Finally, in all my talk about what I write in my blog you may have noticed that there was no mention of the computer science that used to be a staple of this blog. Well, there are a couple of reasons for that. My new work project is intensely interesting and gives my a lot of scope for thinking about comp. sci. and experimenting with ideas: the sort of thing I used to do here. But the damn, freaky secrecy of my work prevents me from talking about that. There is a slight cracking of the paranoia though, and hopefully at some point I'll be able to write about that here.

Also, hang around on reddit enough and you see a veritable flood of badly written tutorials on the latest programming feature to catch the eye of the blogosphere. I choose not to contribute to that until I have something substantially interesting to all. Surprisingly enough, my lament about protoypes fell into that category. I believe Shrew also will; there will be more about that at some point.

Tuesday 12 February 2008

First Among Sequels

First Among Sequels
Jasper Fforde

The latest Thursday Next novel and again a book for book and story lovers. A brief introduction: Thursday Next is a literary detective in an alternative reality where books are the single most popular form of entertainment. And in this alternative reality the line between the real world and a fictional world inside books is blurry. That probably sounds confusing. I'll try to clear it up: In this work of fiction an alternative reality is presented, in that alternative reality there is a world within works of fiction. The line between the fictional real world and the fictional fictional world is blurred. All clear now? No? Better read the books then, starting with The Eyre Affair; you'll love them if you love books.

This, the fifth book, is quite an independent story; as opposed to the preceding three - really a single story. The break between books has also been good for the world of the story. Fforde seems to have spent a lot of time cementing down how the world works. There is none of the drift and none of the continuity problems that the previous books started to show. And of course, for fans of the series there are plenty of cute little jokes. Fforde must remove dozens of these in draft as he always manages to resist the temptation to turn to gimmicks.

As an aside, once you read this book, go read about The Long Now Foundation the 10,000 Year Clock. Don't worry, I haven't given anything away. In fact, go read those now even if you don't plan on reading the book. The review's nearly over.

If you were a little disappointed by Lost in a Good Book or Well of Lost Plots then cast those fears aside. Thursday's back, and she's back on track.

Saturday 9 February 2008

Apoise

This mega-yacht, Apoise was moored in front of the Park Hyatt at Circular Quay over New Year's; they would have had a pretty good view of the fireworks.

Apoise is 67m long, which just pushes it out of the top 50 yachts in the world; the shortest yacht on that list is 72m. It's impossible to tell who owns Apoise. The owners are listed as some Cayman Island company called Apoise Holding, Pty Ltd. Which tells you nothing.

IMG_3063
IMG_3066
IMG_3071

Saturday 2 February 2008

Stardust

Stardust
Neil Gaiman

A very cute, very enjoyable fantasy fairy tale. There really isn't a lot more to it than that: it's simple, plain, well-written escapist fun. Like all of Gaiman's work that I've read (which is nearly all of it) it's very well written, and hell of a lot of fun. Highly recommended.

I was inspired to read this by the movie. It's very similar, the movie was generally pretty faithful. Most of the plot changes were pretty minor: just to streamline and shorten things, largely. The movie expanded the minor characters; they became bigger, more memorable roles. This was probably to attract the big names they got, but wasn't actually a bad thing. Gaiman was very clearly attempting to create a rich supporting cast.

The movie did make one very substantial change. And, with the benefit of reading the book, it was very clearly for the worse; and quite forced. I won't say what that was, except to say the book is better without and the movie would have been equally so.

Friday 1 February 2008

Prototypes and Real Applications

There is an essay, The Art of Lisp & Writing by Richard Gabriel. It's long, but like all of Gabriel's essays it is worth reading if you're interested in exploring alternative views of the act of writing programs.

I am simply not qualified to do justice to Gabriel's central point. Simply note, it was Brooks of The Mythical Man Month, that bible of solid, empirical, meticulous software engineering planning who first drew the connection between the work of programmers and poets.

Instead, there is a minor point in Gabriel's essay that caused me to think about a brief chat in a recent interview. We'd worked our way through the questions, the candidate had done well, there was enough time left to just chat about his work. His two favourite languages were C++ and Python, so we drilled a little there. How had he used them? What did he think of them? Had he tried to combine them together?

Well, it turned out he had. Using boost::python he had exposed some of his C++ classes into Python. This was interesting. Why? It was so he could quickly produce parts of the application; he'd become a fan of this technique. All very well and good, had he tried that approach elsewhere? Unfortunately, no he hadn't. His other use for Python was as a prototyping language. So close. I drilled a bit on this point. Had he made the obvious step from here? Turns out he hadn't. But that did leave me thinking, and Gabriel's essay crystallised this issue in my mind.

Why did he just throw away his Python prototype and rewrite the whole thing in C++? Why didn't he grab a profiler and start replacing the slow Python parts with fast, small chunks of C++?

Developers seem to see an enormous gulf between a prototype and a 'real' application. Something that is appropriate for a prototype must be discarded for the real version. The basis for this act seems to be that a prototype is a quick and dirty hack and can't be trusted to work.

Well, I don't know about you, but I can't help myself: every piece of code I write, I write maintainably and flexibly. And these are issues in prototypes. A prototype is meant to be an exploration, a journey to see how an idea will play out once it's embodied in a program. It is an idea that has not been seen before - this is when it needs to be most flexible. When everyone who sees is thinks of an improvement, when the sight of running program inspires completely new ideas. This happens during the prototyping phase - and if you don't explore these ideas, then what was the point of the prototype at all?

Your prototype needs to be written quickly and then it needs to change quickly. You'll only be able to do that with a maintainable, flexible code base. In short, a well-written code base. You're a proficient software engineer, you know how to do this. You probably do it without even thinking.

And at some level, everyone knows this. That's why prototypes are created in languages like Python. A language that you can write quickly, but also write well, quickly.

So when it comes time to write the 'real' application, when all the decisions have been made and the exploration has stopped, when we know what the program will do, why do we throw away all that very carefully engineered prototype code? It can't be because the code is no good, because that code is better than you believe the 'real' program needs to be.

Most developers would say that it has to be rewritten for performance. But when was the last time you profiled your code? Because if you haven't profiled you simply can't know what your performance is, and more importantly, where the trouble-spots are.

I want to prototype. I want to explore my ideas in a running program. I want to carefully engineer my program and then change it at a moment's notice. And I want to be able to do that all the time, for the entire life of the program. I don't want to kill my program just when it's about to finally get some users.

I want to express my ideas in a language that gives me all that.

Oh, and that application the candidate had been working on? The one that had Python embedded in the real, final version? It was a massively multiplayer 3D game engine.