Sunday, 8 January 2012

Why would I do this?

I've been looking for a new project for a while now but there has always been something getting in the way of me starting it.  This weekend I was supposed to be travelling to the U.S. for a conference with work but then plans changed and I'm not going so I have all this extra time I couldn't have anticipated.  What better excuse do I need to roll up my sleeves and start something.  But what?

Usually I've got loads of ideas hanging around of things I want to do but I set myself one limitation, that it couldn't be related to my daily work.  Initially I was going to learn some Android programming but when I went to grab my shiny Google Nexus S and attach the debugger I found my wonderful girlfriend had "appropriated" it for Angry Birds.  If you've ever tried to get between her and that game when she's in the zone the irony of the name will not be lost on you.  On to another plan.

I've thought in the past about making a visual editor / IDE for xsl files, it's not really related to work but it comes up there so I've been trying to think of something else but it's not working so I start doing a bit of googling around.  The dearth of good xslt 2.0 processors out there gets me thinking about writing one.  I love functional programming so this seems like a good idea to me until I think that we really need an xslt 2.0 processor for a project at work and then I realise, I could write it in a functional language too.  About 10 years ago I wrote an ECMA script interpreter from the spec using the Haskell language so this seems perfectly reasonable to me.

So I have an idea, now I just need to decide on the tools, Haskell isn't very reusable so I'm looking further afield and F# seems like a good contender.  I only know a little bit about it so it will be a good learning opportunity.  Obviously since this decision is based on making the code reusable to other people in the future I wonder about making it compatible with Mono instead of using .Net specific code.  Clearly this is the only sensible choice as I'm a big Linux fan and would prefer to develop on Linux if possible.  Thankfully MonoDevelop does have an addin to work with F#.

Right about now I'm sitting back and realising that the plan I've just put together for myself involves:

  • Creating an XSLT 2.1 processor from the W3C specs, that I don't know
  • Doing it in F#, that I don't know
  • Using MonoDevelop, that I don't know
  • I've just upgraded my Linux partition to Ubuntu 12.04 alpha 1, yes alpha
I must be insane!  This has been said to me before by my work colleagues about some of my designs, thankfully I think I'm still ahead on good ideas instead of bad ones.  While I'm at it why not force myself to use a development methodology I don't normally use?  We recently had a very successful training day at work on Test Driven Development and whilst I've used it before I've never done much of it.  I should probably try to cement those skills from earlier in the week.  I can't make it any harder can it!

At this point I figure I'm a couple of beers short or a six-pack, and the title of this blog comes to me along with the idea to record this farce I'm about to perpetrate on the development community.