Sunday, September 20, 2009

Just Can't Recommend Highly Enough

Today I finished "The Girl Who Played With Fire", translated by Reg Keeland from the swedish book of the same name by Stieg Larsson. It's the sequel to 'The Girl With the Dragon Tattoo" (which is called "Men Who Hate Women" in the original swedish), and I really can't recommend the pair of them highly enough (as you might have guessed from the title of this blog post).

I picked the first book up as the combination of the titular character being described as "an expert computer hacker" and the synopsis on the back cover put me in mind of Neil Stephenson's "Cryptonomicon", not only one of my favourite books but also an outright work of genius, in my opinion. I would describe "Cryptonomicon" as recommended reading if you're the sort of person who breaths oxygen and walks upright, if you work with computers I'd say it verges on being required reading. Since Stephenson lost the plot more recently (in my opinion, that is; I didn't make it more than half way through "Quicksilver" before giving up in pained frustration) there has been a rather large cyber-fiction based hole in my world. "...Dragon Tattoo" seems as though it might be poised to fill it.

In fact it did not. It's a different beast all together. A slow burning and wonderful one, written (and translated) with great skill and care. Both books are very powerful reads, laced with a hatred of misogyny and criticism of a system which doesn't do nearly enough to prevent it. It's also a ripping great yarn of a mystery, full of strong male and female characters. Nominally, the books are the first two parts of a trilogy. In fact Larsson planned ten books and left an unfinished fourth manuscript together with outlines for books five and six when he died. I'm waiting with bated breath for the release of the third book. I just hope it ties things up reasonably well and so won't leave me too curious about the contents of book I'll never be able to read.

Something else I can't recommend highly enough, while I'm on the subject, is this:







I love it when an an apparently shallow and vacant pop star turns out to be really quite absurdly talented...

PS If you're reading this via Facebook and intend to comment, please do so on the actual blog, rather than on Facebook. Thanks :)

Sunday, September 6, 2009

The right kind of holiday

It has been, by my count, at least 18 months since I last had a holiday (aside from one weekend spent in Cardiff). It's getting to the point where I'm starting to feel that I really need a one. But what kind of holiday?

Having stopped to think about it, I've realised that most of the holidays I've taken have been of the package type. With the skiing holidays this isn't so bad, it's possibly even ideal. The rest of the time... not so much. It feels a little too much like being cattle, it feels very lowest common denominator (largely because it is) and you'll tend to spend a lot of time around British Tourists (if you know what I mean). The holidays I remember enjoying most are the other kind. The ad hoc ones. Three stand out:

Something like five years ago my friend Pete was living and working in Barcelona for the summer, staying with a friend he'd met while previously living in Switzerland. My friend Ruth and I made our way out there (slightly haphazardly, in my case) and spend a fantastic week, sleeping on Pete's floor and trying to spend as little money as possible, whilst also trying to see and drink as much as possible. Pete's friend also had a couple of friend's kipping on her floor, and they'd also befriended an Irish fella they'd found in the bar Pete worked in. It was a great time. When I think back on the seriously happy moments in my life, swimming in sea at 1 am on Barcelona beach while holding onto a bottle of white wine in an attempt to cool it down a little... yeah, that ranks pretty high up there.

A couple of years later I (English), together with my friends Mark (Scottish) and John (Irish) made another ad hoc trip, this time to Italy. We flew with Easy Jet, rented a cheap but very comfortable villa in the hills and drove our selves around in a rental Alpha Romeo. We ate some great food food, played some cards, looked at some very pretty cities (and some very pretty girls), and accidently drove up the off ramp of an Italian motorway. I highly recommend it (except for the last one).

Lastly, and most recently, I spent a long weekend in a hostel in Berlin with 7 friends. We saw the sites, ate lots of pig and starch based products, probably drank too much, and wrapped up very, very warm. Only one of our number actually spoke German and he had to go elsewhere for the last night, leaving us to end up in what turned out to be an awesome and Very cheap socialist bar. Though there was an tense few minutes when we were sure what kind of socialist bar it was (it was the good kind).

I would like to have more holidays like this. Now, if I could just figure out a good way of setting them up...

BUNAC appeals to me (and I only have two years left to try it, depending on the country), as does farm working my way a cross a (hot) country. Burning Man is also not without it's a appeal...

Tuesday, September 1, 2009

Web Frameworks, Desktop Application and My Newly Melted Brain

Let's get the preliminaries out of the way: Hello, long time no see, how have you been? Etc...

So, whilst writing up my PhD (experiments finally finished!) and working three days a week (going fully full time at the end of September!) I have a fair bit on my plate at the moment. So obviously I've also started cooking up a side project...

I don't want to talk too much about what it actually is (mostly because I don't know how "open" I want it to be yet), but it's definitely going to require a web service. It might also require a fully fledged website (lets call this the spotify model), or it might just use a desktop application which connects to the service when it needs to (lets call this the iTunes model). Then again it might have both, with the desktop application providing some extra functionality which is hard to do over the web or in the browser. I think there's also scope for a mobile application, so lets throw iPhone and (what the hell) Android into the pot as well.

I had a bit of a poke around with some web development frameworks first, since this is probably the bit I know least about.

One of the first solutions I came across was Django, which is based on the python language. It looks good, through I have some issues with its handling of "one to many" relationships. Python is a language I have limited experience with, but it gets a lot of love, and people are putting a lot of work into into making it better. It also has good integration with native libraries. So that's nice. It's also named after Monty Python, which only raises my opinion of it.

I'll essentially skip over TurboGears and Web2Py, two other python based frameworks I did some reading about. Django seems like the best choice out the python based frameworks I've looked at.

Soon afterwards I discovered Grails which is based on the very cool groovy dynamic language. Groovy, as well as being fun to say, is implemented directly on top of Java, by far the language I'm most comfortable with. The are a lot of existing Java libraries, and groovy has perfect integration with them. Groovy and grails have some serious weight behind them, also.

One framework I hadn't really considered was Ruby on Rails, which is in many ways the daddy here. This is mostly because I dismissed Ruby as a language out of hand. It looks mental. For reasons I'll come to in a minute, I've re-evaluated this desision, and will be having a good long look at it. On the one hand it's been around a good long while, so has had the oportunity to become more refined. On the other hand, it was the first of its kind, which means it might also be stuck with some bad early design desicions. It's the original, this might not make it the best. I don't know yet.

In order to build this... thing, I'll need data representation, I'll need algorithms for processing this data, and I'll need ways of displaying it. I'd rather not have to deal with multiple implementations in different languages, particularly with the algorithms.

Problem.

If I want to make desktop applications, python is a possibility. It has good bindings to GTK and QT for linux, and Cocoa for OSX (there's probably also something which will work on windows, and at some point I'll probably have to care about this). Java will work anywhere, but it's quite difficult to make a desktop application with Java which won't look like crap. My priority in this area is going to be OSX, and Java does not measure up here. I had not considered Ruby, until I came across MacRuby, which is a very interesting idea. It's not a bridge or a set of bindings, you see, it sits right on top of the objective-c runtime. All of a sudden, Ruby and Rails are a contender.

In the mobile space, things get shitty. iPhone requires objective-c, Android requires Java. Bugger.

So here's where I am: I think groovy is a better language than python (and probably ruby), and I think grails is a better framework than django (I'll get back to you regarding rails)... but I'm not sure I want Java hanging around my neck when it comes to building a desktop application. I might also need some serious grunt in the algorithm stakes, and I'm not sure I want to do that in a scripting language. Yes, I need to be able to implement it quickly, but I also need it to run quickly. I'm not sure I want to do that in either C or C++. Java would be good for this (and yes, it's plenty fast). Objective-c is an option I haven't discounted.

The search continues... any thoughts?