Converting DTS audio to AAC Posted on 13 July 2009 | Tagged , , , | Comments (4)

I recently invested in this wonderful little device called the WD TV. This fantastic piece of awesome sits in between an external hard drive and a tv, and will pretty much play any video file you chuck at it - with one exception. It doesn't support DTS decoding - it supports DTS pass through, but neither the TV nor the stereo at my flat support DTS decoding either. So I wrote a little python script that re-encodes DTS audio to AAC in MKV files. I've only tested this on Ubuntu, and you need python 3, mkvtools and ffmpeg for it to do its magic. Said script, named "shinyify" is found below. Takes a single argument, being the name of the MKV file.

http://www.andyofniall.net/assets/Uploads/shinyify

E3 Day Zero Thoughts Posted on 2 June 2009 | Tagged , | Comments (1)

Like many good events, the official start of the Electronic Entertainment Expo is merely a formality - the numerous announcements surrounding the games industry start trickling in the build up. The day before the official opening is the real start of E3 - Microsoft, Ubisoft and Electronic Arts had their press conferences today, so there are already a number of large, potentionally industry changing, announcements out there. Below I have listed my thoughts on the one's that hold the most interest to me.

Firstly, the PSP Go rumours that had been going round the net were finally proved true when a leaked edition of Qore confirmed the news early. The PSP Go is a new model of PSP that drops the UMD drive for flash based internal storage (expandable by memory stick) and all digitally delivered content, along with a smaller form factor. To me, this serves two purposes - firstly, moving to all digital content is where we should all be heading. Most people moved from CDs to MP3s a long time ago, and it's about time we did that for games as well. The inconvenience of physical media compared to downloadable games is pretty huge, and the portable space avoids the problems of Internet bandwidth and storage space that restricts the mainstream consoles. It also helps alleviate the huge piracy problem Sony are facing with the PSP. Secondly, the PSP Go is about capturing a more casual market. By doing away with clunky discs and reducing the form factor, you alleviate some of the inconveniences that the core market might be willing to overlook, but the casual won't. The Nintendo DS and the iPhone have shown that there is a huge casual market out there to be won - whether Sony will be able to take a slice of that pie with the PSP Go will be interesting to see.

Monkey Island has long been one of my favourite gaming franchises. From the moment when I stuck in that floppy disk into my Amiga 600, and decided that I wanted to be a pirate, I knew I was in point-and-click adventure heaven. The genre has sadly all but disappeared these days, but Lucas Arts have given us some hopes with two new Monkey Island projects. The first, and by far the more interesting to me, is a special edition of the original Secret of Monkey Island. It looks to be very faithful to the original, with updated graphics and voice overs. Unfortunately for me, the only announced platforms are XBLA and PC - I lack both an Xbox 360 and a PC suitable for gaming, but I will find a way to play this revisited classic. It's worth it, even if it was just purely for the sword fighting insults. The second Monkey Island project is a new five part episodic title in the franchise, entitled 'Tales of Monkey Island. Not quite as excited for this one, as the later Monkey Island games weren't full of full blown awesomeness like the earlier titles, although still quite good. Only announced for PC and Wii (curse you fractured game market!), I will most likely find a way to play this one too.

Just a brief one, Wipeout HD has an announced expansion named 'Fury'. There goes another large portion of my life gone to high speed racing!

That accused count down on Kojima Productions site finally ended, and with it an announcement came at the Microsoft press conference of a new title in the Metal Gear franchise, called Metal Gear Solid Rising. Metal Gear sits with Final Fantasy for me as one of those must-play franchises, and I am absolutely nuts about it. This new title stars Raiden, the effeminate protagonist of Metal Gear Solid 2 that everyone loved to hate on (mostly because of his insufficiency compared to the awesomeness that is Solid Snake), who got a ticket into the cool club in Metal Gear Solid 4 by becoming a bad ass cyborg ninja. Not much more information is available at the moment. It's only been officially announced for the Xbox 360, though with the lack of the word 'exclusive' at the Microsoft press conference, it's pretty safe to bet that it will appear on the PlayStation 3 as well. Metal Gear Solid has been a Sony exclusive for a long time now, it becoming multiplatform, joining Final Fantasy XIII, is telling of how expensive games are to make these days, and the general industry move away from third party platform exclusives.

The last announcement that piqued my interest was Microsoft's 'Project Natal'. In a nutshell, this is Microsoft's answer to the Wiimote. Traditional controllers scary away the casual market with their I-have-to-push-what-button-whereness. The Wii has proven, with some clever controls and clever marketing, that if you can provide an interface that is easy and engaging the casual crowd will flock. Wanting that market, Microsoft have revealed their answer - basically an EyeToy, but with a lot more impressive tech behind it. In many ways, the best controller is no controller, so all input is done by body movements picked up by the camera, and voice commands. Whether or not this will be successful will depend on a few things - firstly, whether the tech is as impressive as Microsoft are claiming it is. Secondly, it is up to the developers to come up with clever uses for this new technology. You only have to take a look at some of the early games using the PlayStation sixaxis controls to see that it's very easy to fall flat on your face when dealing with new control systems (I'm looking at you Lair). Thirdly, it'll need a good marketing campaign. Nintendo already had a strong presence in the casual market with the DS when the Wii came out, and followed it up with a strong marketing campaign to promote their slightly silly name to the masses who were yet to be taken in by gaming. I'm doubtful whether Microsoft, with it's reputation of stiff corporate-ness and core gaming market target, will be able to replicate this. Maybe I'll be suprised.

That's me for pre-E3 thoughts. Day one is tomorrow, and I'm hoping for some cool announcements from Sony (my choice of console for this generation was a PlayStation 3). おやすみなさい!

The Wave is Upon Us Posted on 2 June 2009 | Tagged , , | Comments (3)

おさしぶりです! It's been a long time since I've used this thing, and I figured it was about time to get the ol' blogging wheels a spinning. Heck, my traffic is actually increasing, due to some mystery of search engines and lucky posts. As I am at a loss as to what information I could possibly bequeath upon the blogosphere that isn't out there already, I've decided to make this much more of a personal outlet - who knows, surely someone out there will find this useful interesting entertaining.

Today, after hearing a bit of buzz about this "Google Wave" thing, but completely failing at finding any coherent information about what it actually is, I watched the hour and something talk on it. And gee, this thing might actually take off!

Before explaining what Google Wave is, let me first describe the problem (at least for me) that it solves. Right now, I have a multitude of options when it comes to communicating with friends, family, colleagues, clients and assorted others. Instant messaging being the first and most immediate option, it's normally a good first option. I check if the person I want to message is online on one of a multitude of different systems - right now I'm signed into ICQ, MSN, XMPP, Facebook chat, AIM, and during working hours I'm on Skype. If they're online - great, send them a message. If they're not, well I can leave them an offline message - maybe. That depends on the service I'm using. A lot of people don't sign in to IM very often, so perhaps it's best to send an email. So, load up my email client of choice (Evolution, if you're interested), write a message, and off it goes. Email gets confusing quickly though - it has no real support for threading, and as soon as you add multiple people into the conversation, all hell breaks lose. This happens surprisingly often, usually with large threads about what and who and where lunch is with a ragtag group of friends and friend's friends. Already you can see how the wide variety of options of online communication, each with it's own different restrictions and short comings, and I haven't even touched on my use of Facebook and Twitter.

Google Wave aims to consolidate all these different forms of communication into a single method - it calls these communications 'waves'. In it's simplest form, a wave is a real time forum thread. You type, and anyone who is part of the conversation can see you typing. You can reply to what other people have said, invite new people to the wave, insert images etc. Pretty much all standard stuff, albeit more real time and slick than what you're used to. It's what's layered on top of this that makes it interesting. Firstly, users can edit what other people have written - of course this is annotated with who edited it to prevent confusion. This allows a wave to act as a forum for collaborative editing, and comes complete with a timeline allowing you to see who edited what when. Then there's the extensible architecture, which allows you to embed a wave anywhere, and embed pretty much anything you want in a wave. Examples of extensions went from as simple as a spell checker (a very good one I might add), to an application for organising who is and isn't coming to an event (my lunch email issue is solved!), and a chess game (okay, not the most useful example, but fun!).

My explanation barely scrapes the surface of how cool Google Wave is due to my suckiness at explaining things, so if you have a spare hour or so, check out the video. An hour might sound like a long time, but there's just so many cool features to show.

Here's why I think Google Wave will succeed:

  • It solves a real problem. Google didn't just make this because they could, it solves a real pain point.
  • It has the backing of Google. There are very few companies who have the resources and influence to push something like this through, but Google is definitely one of them. It's exemplary public image will help here too.
  • It's an open standard and federated. Google were clever enough to see that if they wanted this to be a success, they couldn't run a dictatorship.
  • It's open source. You can set up a wave server using the same software Google runs. There's no point having an open standard if it's too hard to implement (see Office Open XML).
  • It's extensible. By allowing other developers to extend the protocol, it opens up a world of possibilities. See Facebook (I'm talking about the handful of useful apps here, not the hundreds of useless quizzes and werewolf wars.)

I, for one, welcome our new Wave overlords.

2D graphics with OpenGL Posted on 28 July 2008 | Tagged , | Comments (6)

Just a quick tech note here - I've been playing round with OpenGL a little bit recently, and managed to figure out how to do some basic 2D graphics with it. Chucking my code here in case it helps anyone - this is just for basic drawing image to the screen.

First things first, you need to create your window and OpenGL context. I use SDL to do most of the hard work for me.

// Initialise SDL & DevIL
SDL_Init(SDL_INIT_VIDEO);
ilInit();
// Enable double buffering
SDL_GL_SetAttribute(SDL_GL_DOUBLEBUFFER, 1);
// Initialise video surface
SDL_SetVideoMode(xRes, yRes, bpp, SDL_OPENGL);
// Set up OpenGL for 2d rendering
gluOrtho2D(0.0, xRes, yRes, 0.0);
// Enable textures
glEnable(GL_TEXTURE_2D);
// Enable blending
glEnable(GL_BLEND);
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);

We use SDL to set up OpenGL for us, being careful to enable double buffering. The gluOrtho2D sets up a 2D coordinate system for us. Here I've made (0,0) the top left of the screen. Then I enabled textures (which we use to draw images) and alpha blending.

Before we can draw an image, we need to load it into a texture. I used the DevIL library to do this, as it is written specifically to work well with OpenGL. It provides some utility functions to do things quicker than I did it here, but I found the textures lost of a lot quality if I used them, so I stuck to the basics.

// Generate DevIL image and make it current context
ILuint image;
ilGenImages(1, &image);
ilBindImage(image);
// Load the image
if(!ilLoadImage(const_cast<char*>(filename.c_str()))) {
   throw runtime_error("Unable to load image " + filename);
}
width = ilGetInteger(IL_IMAGE_WIDTH);
height = ilGetInteger(IL_IMAGE_HEIGHT);
// Copy to OpenGL texture
if(!ilConvertImage(IL_RGBA, IL_UNSIGNED_BYTE)) {
   throw runtime_error("Unable to convert image " + filename + " to display friendly format.");
}
glGenTextures(1, &texture);
glBindTexture(GL_TEXTURE_2D, texture);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); // Use nice (linear) scaling
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); // Use nice (linear) scaling
glTexImage2D(GL_TEXTURE_2D, 0, ilGetInteger(IL_IMAGE_BPP), width, height, 0, ilGetInteger(IL_IMAGE_FORMAT), GL_UNSIGNED_BYTE, ilGetData());
// Free DevIL image since we have it in a texture now
ilDeleteImages(1, &image);

Pretty straight forward - use DevIL to load the image, and then convert the image to a display friendly format and copy it into a texture. The final step is to actually draw the image on the screen. We do this by drawing a four sided polygon and binding the texture to it.

// Bind texture to current context
glBindTexture(GL_TEXTURE_2D, texture);
// Set the alpha
glColor4f(1.0, 1.0, 1.0, alpha);
// Draw texture using a quad
glBegin(GL_POLYGON);
// Top left
glTexCoord2f(0.0, 0.0);
glVertex2i(x, y);
// Top right
glTexCoord2f(1.0, 0.0);
glVertex2i(x + width, y);
// Bottom right
glTexCoord2f(1.0, 1.0);
glVertex2i(x + width, y + height);
// Bottom left
glTexCoord2f(0.0, 1.0);
glVertex2i(x, y + height);
// Finish quad drawing
glEnd();

Care must be taken here to make sure you draw your points clockwise, to make sure you get a front facing polygon. Texture coordinates are always from (0.0, 0.0) to (1.0, 1.0), regardless of the size of the image.

That's it! Tuck that away behind some abstraction so you don't have to deal with it, and you have nice hardware accelerated 2D drawing. I've been playing round with creating a 2D graphics library/engine with OpenGL, so I'll probably chuck that online in a little while. :)

Edit: Sorry about the lack of spacing in the code - SilverStripe appears to have a bug with line breaks in code blocks with bbcode. I'll fix this at some point - syntax highlighting might also be nice! :)

Version Control Systems Posted on 23 July 2008 | Tagged , | Comments (5)

For a long while I have been using subversion as my main version control system (VCS). This was due to a few factors - firstly it's probably the most popular VCS out there, and secondly since I use it at work I know it like the back of my hand. While it is most definitely a momentus improvement over CVS, it always seemed like a bigger hassle than it needed to be - firstly I start and stop and then pick up little personal coding projects all the time, and its quite an effort to set up a repository. Then there's the question of where to keep it - having it online is definitely useful, but sometimes I want to code without a net connection, particularly on one of my trips back to visit family and friends in Blenheim. That's a three hour ferry trip each way, and the time I am there is spent with only a dialup connection, which is more hassle than it's worth. The other thing that is irritating is occasionally people want to help code something (ok, that doesn't actually happen that often, but it does happen :P). So I have to give them access to subversion, which one is a pain, two it means I have to trust their code since it's committed before I get to do it, and three, maybe, just maybe, more people would send code my way if there wasn't that annoyance (okay, that's probably just wishful thinking). So with distributed version control systems (DVCS) being all the rage these days, I decided to give them a try.

The difference between a distributed VCS and a centralised VCS is really just a matter of different assumptions. A centralised VCS assumes that all developers working on a project at any given point of time will have access to the VCS server, and that all code is stored in a central repository on this server. It also assumes that branches are rare, and that while you might have a development, stable, and a few feature branches lying around, branches are the exception, not the rule. Anyone who has worked on a project with more than a handful of developers knows this is definitely not the case. On the other hand, a distributed system lends itself to a much more flexible system of development - each 'checkout' of a project is it's own branch, and in fact it's own repository. While this initially sounds like it might be a nightmare - that's a lot of branches, DVCS's have very good support for tracking merges and handling conflicts, so it ends up being more hassle free than a centralised system, which generally have very poor support for these things.

When deciding to give a DVCS a go, the first program that popped to mind was, of course, git. Git has generated a decent amount of hype behind it, as it was originally developed by Linus Torvalds, the guy who was the original programmer for the Linux kernel, and still plays a large role in its ongoing development. He wrote git to manage the source of the linux kernel, after a disagreement between the kernel guys and the BitKeeper guys meant the kernel developers' free license for the proprietary BitKeeper system was revoked. Git has also been picked up by few prominent open source projects other than the Linux kernel - notably X.org and Ruby on Rails. So I decided to give git a try for a while and see how I like it.

I spent quite a while reading the documentation on git - it's a complex piece of software. After reading the introductory and basic usage a few times over, I felt I had grasped some of the basics, and so started to use it. The first thing I noticed about git was it is blazing fast - after using subversion for so long, which while not being horribly slow, does feel a little bit sluggish at times. Using a lightning fast application like git reminds you what responsiveness really is - you press enter and the text scrolls faster than you can read it. It is also very easy to set up your own git repository - just run a command in your working directory and git does all the hard work. So while initially everything looked good, after a few weeks I found myself beginning to dislike git. The reason for this is simple - it's written by a kernel developer, for kernel developers, and it shows. While it is blazingly fast, it is also pretty darn unintuitive to use. Part of this I put down to Linus' development of "take CVS as an example of what not to do", which for users coming from a CVS/subversion background is very confusing. The rest of it I just put down to kernel developers being the target market, which don't really have a reputation for being people who concern themselves with such trivial things as user friendliness. Git also tries to force you to do things its way - which is very orientated to how the kernel developers work. Sure, being able to handle having hundreds of developers in some sort of crazy web of trust is useful to a lot of people, but there is very little support for making it easy for old Joe Bloggs (aka me) to handle his little projects, or for a small group of deveopers to work on a project together with little hassle. I'm sure these things are easily possible with git - but with the complexity of git I'll be darned if I can figure out how.

So feeling a little disillusioned, I started to hear about another DVCS more and more commonly through the tubes of the blogosphere - bazaar. While initially I didn't pay it much attention - in my mind the only reason git was popular was because of the backing of the kernel crew, and the buzz about bazaar all seemed to come from the Canonical/Ubuntu crew, as Canonical sponsor the development, I just brushed it aside as more irrelevant hype. After seeing a few more blog posts of what seemed to be some cool features (a avahi branch sharing plugin in particular), I decided to take a closer look.

The first thing that struck about bazaar was it has a completely different focus than git - git was designed to be fast, but bazaar was designed for usability. That's not that to say that git can't be usable (well, one day ;)), or that bazaar can't be fast, but it is a different mindset. Bazaar is coded in python, which from what I read is less of a concious design decision, but was originally being used for a prototype, when they discovered their prototype was quickly outgrowing the software it was designed to be a test bed for. Being developed in python, the language everybody loves to love, there are a large number of plugins written for it. I think an extensible plugin system is a brilliant idea - it beats the screen scraping and data peeping tools that have historically been used for VCS integration.

Bazaar is a breeze to use, particularly if you've come from a subversion background. All the basic commands are there, and act pretty much as they do in subversion. Bazaar is also very flexible - it lets you choose if you want a centralised repository or not - when you do a 'checkout', whenever you commit a change, the changeset will be pushed to the repository you checked it out from. If instead of doing a checkout, you use the 'branch' command, all your commits are made locally, and can easily be pushed to the repository you got them from (or another repository) whenever you need to. And to answer the speed question - bazaar feels more responsive than subversion, and is more than fast enough for everyday use. It's not the lightning that git is, but it's still a snappy piece of software.

Add to this the wide range of useful plugins, and the ease of setting up a web accessible repository (bazaar can use http, ftp and rsync in lieu of not having bazaar installed on the server), and you have a winning DVCS in my mind. I use the bzr-gtk plugin, which gives some nice gui integration (accessed via commandline, eg to get a nicer gui diff, i use bzr gdiff instead of bzr diff), the avahi plugin to make sharing branches on local network easier, and the svn plugin to let me read from svn repositories (this is mostly just playing around!). All in all, I think I've found the VCS for me!

On the soul of the machine Posted on 25 February 2008 | Tagged , | Comments (5)

Today marked my return to university for my final semester of undergraduate education. I'm taking three papers – Concurrent & Distributed Systems, Introduction to Artificial Intelligence, and Discrete Mathematics. I had my first lecture for each of these, but the one that has proved most interesting thus far (to be fair, 'thus far' is a single lecture), is Artificial Intelligence.

In particular, we were discussing a debate in the field of AI – strong AI versus weak AI, or in layman's terms, whether or not a machine can possess true intelligence, a mind. For starters, it is useful to establish exactly what constitutes a mind, a conciousness, or the soul. The concept of a soul is something that is universal across all human cultures – the part of a person that makes them distinct and separate, the part that thinks, that feels. The question is then whether the soul is a simply the manifestation of the physical make up of the brain, or something separate and non physical. In both cases this raises the question of how do you model such a thing with a machine, and can it even be modelled? Although it seems much more feasible if the soul is a result of the physical happenings in the brain, there is still little understanding of how the brain actually works. Also, if the brain is merely a machine, albeit a complex one, then how is it we have the feeling of choice – that given a set of inputs, we not only rationalise, but we also act on impulse, on feeling. The concept of free will does not fit well with the idea that the mind is a machine, mapping inputs to outputs.

A slightly less philosophical point (although only slightly less), is what it means to comprehend something. Sure, given the word 'tree', a picture of a tree, or a description of a tree, a machine may be able to correctly associate it with a tree – but does the machine truly have comprehension of what a tree actually is? It understands all of these symbols as pointing to the same object, but does it understand what a tree is? Another way to put this is to think of it in language – given the word 'horrifying', a machine could learn about its definition, where it is appropriate it should be used, when it does or doesn't make sense. But is knowing about 'horrifying' the same as knowing 'horrifying'? Can a machine know what it is to be horrified? John Searle points out this difference in his thought experiment, the Chinese room. Although I will probably fail at trying to explain this, and you are better reading it elsewhere, it basically says the following: given a question in Chinese, and a 'program' of sorts in the form of a book written in English, an English speaker like you or me could follow this program and produce the correct answer in Chinese. The point made here is this – although given the input, an 'intelligent' output is given, the Chinese characters are still just nonsensical squiggles to the uninformed. We have returned the correct output, without actually comprehending what either the input or the output actually mean. It is in this way we have exhibited what seems to be intelligence, but without actual comprehension.

For me, the idea of strong AI is something that is unachievable, but like many unachievable goals there is much to be gained in the process of trying. I'm looking forward to my first chance to dabble with AI in these coming months.

Bumper Update Posted on 13 November 2007 | Tagged , , , , | Comments (5)

A beautiful storm is raging outside - the crash of thunder, the brilliant flashes of lightning, the sound of rain on the roof, of wind through the trees. I'm quite the fan of storms, and I thought I would take the opportunity to relax, and mayhap update that blog I've been neglecting for far too long.

Firstly, I've decided to try and learn Japanese. The motivation for this I'm not sure - I guess I've always been kinda interested in the country (it's a prerequisite of being a geek I think..), my good friend Mat knows a bit and offered to help teach, and of course the lovely Emma (or えっちゃん as I fondly call her) is pretty much a Japanese genius, so I've got lots of smart people to help me along. Matt (not to be confused with Mat) has loant me his Japanese textbook; he started an introductory course at University but dropped out pretty early. Progessing alright thus far - I've got most of the hiragana down, and am starting to work my way through memorising the katakana. Learning some basic grammar and vocabluary as well, although I think I'm learning some words in a bit unconvential order, Emma teaches me how to say lots of useful stuff that I haven't got up to in the textbook quite yet.

A few months back I finally decided to do that which most of my peers had done long before me - get my driver's license. After studying up the New Zealand road code, I went in for the test to get my learners license. I passed - just. Seriously, why would I need to know the amount of tread that should be on my tires? Or how far something is allowed to stick forward from a roof rack? Well, I passed, and I guess that's the important thing. Mat took me out for a few lessons (geez I have nice friends!), and um, I wouldn't trust me on the road just yet. Or any time soon. Lanes are for losers. Guess ya gotta start somewhere though, right? The lessons are on hold at the moment - petrol isn't cheap and I'm pretty poor during term time. Now that university is over (yuss), I might try get a few lessons in, Mat willing, although work and life in general has been keeping me pretty busy.

Earlier this year, me and my buddy Hamish decided that we wanted to get a flat together come end of year. We signed up Mat as flatmate number three, and began a flat hunt as university neared its closing for the year. We've looked at quite a few flats, seen a few we liked, loved even, but has thus far been unsuccessful in securing a flat for ourselves. Hamish moved into a friends place when his lease ended, so he has somewhere to stay until we find somewhere. The issue of when we need to find a flat has been further complicated by the moving out of my old flatmate - he moved out last Saturday. He gave me a good few hours notice, but he's going to continue cover rent until I find a place, and then discuss with the landlord about terminating the lease early (it doesn't end til early January). I don't have any Internet access or a phone line at the moment (both were under my old flatmates name), which makes it difficult to continue flat hunting; it's all in Mat's capable hands now. I'm confident that we're gonna find a great flat, and with us three guys it's gonna be the most awesome flat ever - I'm just praying that we find it soon.

I've spent most of my time at work recently preparing the SilverStripe 2.2.0 release - it's gonna be fairly fantastic. We managed to get the first release candidate out today - if you're at all into web development you should definately check it out - http://www.silverstripe.com/assets/rc/silverstripe-v2.2.0-rc1.tar.gz. It is such a gigantic improvement over the 2.1 series that I'm not even gonna bother listing the improvements - lucky Sig is pretty good at that kinda thing, and will be covering them on the SilverStripe blog these next few weeks.

In the world of university, I've finished up for the year. Not sure how well I did on the two papers I did last semester - I didn't work nearly as hard as I should have, so I won't be too suprised if my grades are rather poor. I'm considering changes to a BSc in Computer Science, rather than the BIT in Software Engineering that I'm doing at the moment. There are a few reasons for this - first the BIT has been discontinued, so although I still have the chance to finish my degree, how well it will be recognised I'm not sure. Also, as I'm only studying part time now (work part time and studying full time did not bode well for me) it would take me another two years to finish my current degree. Changing to a BSc means I would be able to finish next year if I picked up a few math papers. I'm fairly over university at this point - I'm sick of doing papers that don't interest me because I have to, and I'm confident that I am ready for the workforce already. As fun as studying for studies sake is, I want to get out there and use what I've learnt, and I feel I'm at the stage when I'm going to learn more useful skills out in the big wide world than I would in a lecture theature. I'm pretty sure I'm going to change degrees, but I am going to wait till the new year before I make my decision.

It is growing late, so I feel I should get some sleep. The rain seems to have subsided, but the thunder and lightning continues to rage - I'm not sure I've heard thunder this loud in a long time, it's literally shaking the house. Sleeping to the sound of rain makes me happy :). Until next time..

Never travel naked Posted on 9 October 2007 | Tagged , , , | Comments (7)

A while back me and my sister discovered that Linkin Park was coming to play in New Zealand. Being long time fans, my sister had sworn years ago that if they came she HAD to go, even if it was a thousand dollars (her words, not mine). I quite wanted to go as well and saw it as a good excuse to have a holiday.

Being students on a budget, we decided to travel on the cheapest option available - nakedbus.com, $18 from Wellington to Auckland. I had traveled on this bus service previously, and while they aren't really buses, more refitted vans, and you tend to get some interesting characters on the service (both travelers and bus drivers), you can't pass up an $18 trip.

This time however, things didn't turn out quite so well. On dragging myself out of bed at a ridiculous hour, travelling through the pouring rain to get to the bus stop in town, the bus had yet to arrive. So we waited.

And it rained.

And we waited.

And it rained some more.

And we waited some more.

There were six of us unexpecting vagabonds. Me and my sister, the emo couple, the van girl, and the loner. Emo couple moved around a bit, trying to find shelter at a stop that had none. Loner, well, he was lonesome. Van girl, although sitting in her van was the warmest of all of us, offered us no shelter. She was also the most impatient. After about fourty minutes of waiting, she grew tired, and came over to converse with us. After careful investigation, we found the bus companies number - 0900 NAKED. I thought it was quite checky of them to have an 0900 toll number in the first place, and it sounds a bit like a pr0n number, but the number itself wouldn't work. It seemed it no longer existed. Upon discovering this, van girl decided to turn in and find alternate transport, and so her van escorted her away.

We had a little more paitence, but not much. It wasn't long after that loner went on his lonesome way. After waiting over an hour, we too decided to give up. We were soaked, cold, shivering and tired. We decided the best course of action would be to head to the train station and seek alternate transport. Emo couple gave us a strange inquiring look as we left, as if we had some idea why the bus wasn't there, but we headed off to the train station. Along the way though, Teresa thought the information centre might be able to help us. A kind girl there booked us seats on the overnight bus (although at four times the price of our original nakedbus ticket).

I am now sitting in my sister's bedroom, trying to dry out all my clothes which got soaked in my bag from the rain. We have attempted several times to lay a complaint at nakedbus' website, however they seem to elude all forms of contact. Their contact form doesn't seem to want to submit - it requires you to fill in the 'optional' booking reference. However even once we fill it in, it still doesn't work, in either IE or FireFox. It doesn't provide any form of email address, only a postal address, in which they promise to respond within a month or so.

Let's just say i won't be travelling naked again.

Paintball is fun Posted on 16 September 2007 | Tagged , | Comments (6)

I shot Mina. It was fun!

Do it Posted on 10 September 2007 | Tagged | Comments (1)