blog http://www.andyofniall.net/home/ Converting DTS audio to AAC http://www.andyofniall.net/converting-dts-audio-to-aac/ I recently invested in this wonderful little device called the [url=http://www.wdc.com/en/products/products.asp?DriveID=572]WD TV[/url]. 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. [url]http://www.andyofniall.net/assets/Uploads/shinyify[/url] Mon, 13 Jul 2009 03:17:47 -0700 http://www.andyofniall.net/converting-dts-audio-to-aac/ E3 Day Zero Thoughts http://www.andyofniall.net/e3-day-zero-thoughts/ Like many good events, the official start of the [url=http://www.e3expo.com/]Electronic Entertainment Expo[/url] 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. [img]assets/Blog/press-sony-psp-go-1.jpg[/img] 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. [img]assets/Blog/elaine-and-guybrush-on-dock-se.jpg[/img] 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. [img]assets/Blog/wipeouthdfury.jpg[/img] 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! [img]assets/Blog/mgsrising.jpg[/img] 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. [img]assets/Blog/projectnatal.jpg[/img] 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). おやすみなさい! Tue, 02 Jun 2009 05:39:46 -0700 http://www.andyofniall.net/e3-day-zero-thoughts/ The Wave is Upon Us http://www.andyofniall.net/the-wave-is-upon-us/ おさしぶりです! 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 [s]useful[/s] [s]interesting[/s] entertaining. Today, after hearing a bit of buzz about this "[url=http://wave.google.com/]Google Wave[/url]" thing, but completely failing at finding any coherent information about what it actually is, I watched the [url=http://www.youtube.com/watch?v=v_UyVmITiYQ]hour and something talk on it[/url]. 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, [url=http://www.youtube.com/watch?v=v_UyVmITiYQ]check out the video[/url]. 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: [ulist] [*] [b]It solves a real problem.[/b] Google didn't just make this because they could, it solves a real pain point. [*] [b]It has the backing of Google.[/b] 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. [*] [b]It's an open standard and federated.[/b] Google were clever enough to see that if they wanted this to be a success, they couldn't run a dictatorship. [*] [b]It's open source.[/b] 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 [url=http://en.wikipedia.org/wiki/Office_Open_XML]Office Open XML[/url]). [*] [b]It's extensible.[/b] 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.) [/ulist] I, for one, welcome our new Wave overlords. Tue, 02 Jun 2009 04:30:06 -0700 http://www.andyofniall.net/the-wave-is-upon-us/ 2D graphics with OpenGL http://www.andyofniall.net/2d-graphics-with-opengl/ Just a quick tech note here - I've been playing round with [url=http://www.opengl.org]OpenGL[/url] 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 [url=http://www.libsdl.org]SDL[/url] to do most of the hard work for me. [code] // 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); [/code] 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 [url=http://openil.sourceforge.net]DevIL[/url] 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. [code] // 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); [/code] 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. [code] // 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(); [/code] 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. :) [b]Edit:[/b] 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! :) Mon, 28 Jul 2008 02:03:25 -0700 http://www.andyofniall.net/2d-graphics-with-opengl/ Version Control Systems http://www.andyofniall.net/version-control-systems/ For a long while I have been using [url=http://subversion.tigris.org/]subversion[/url] as my main [url=http://en.wikipedia.org/wiki/Revision_control]version control system (VCS)[/url]. This was due to a few factors - firstly it's probably the most popular VCS out there, and secondly since I use it at [url=http://www.silverstripe.com]work[/url] I know it like the back of my hand. While it is most definitely a momentus improvement over [url=http://www.nongnu.org/cvs/]CVS[/url], 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 [url=http://en.wikipedia.org/wiki/Distributed_revision_control]distributed version control systems (DVCS)[/url] 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, [url=http://git.or.cz/]git[/url]. 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 [url=http://www.bitkeeper.com/]BitKeeper[/url] 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 [url=http://www.x.org]X.org[/url] and [url=http://www.rubyonrails.com]Ruby on Rails[/url]. 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 [url=http://www.youtube.com/watch?v=4XpnKHJAok8]"take CVS as an example of what not to do"[/url], 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 - [url=http://www.bazaar-vcs.org/]bazaar[/url]. 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 [url=http://www.canonical.com]Canonical[/url]/[url=http://www.ubuntu.com]Ubuntu[/url] 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! Wed, 23 Jul 2008 01:35:10 -0700 http://www.andyofniall.net/version-control-systems/ On the soul of the machine http://www.andyofniall.net/on-the-soul-of-the-machine/ 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 – [url=http://en.wikipedia.org/wiki/Strong_ai]strong AI versus weak AI[/url], 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? [url=http://ist-socrates.berkeley.edu/~jsearle]John Searle[/url] points out this difference in his thought experiment, the [url=http://en.wikipedia.org/wiki/Chinese_room]Chinese room[/url]. 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. Mon, 25 Feb 2008 01:44:04 -0800 http://www.andyofniall.net/on-the-soul-of-the-machine/ Bumper Update http://www.andyofniall.net/bumper-update/ 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 - [url]http://www.silverstripe.com/assets/rc/silverstripe-v2.2.0-rc1.tar.gz[/url]. 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 [url=http://www.silverstripe.com/blog]SilverStripe blog[/url] 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.. Tue, 13 Nov 2007 20:28:02 -0800 http://www.andyofniall.net/bumper-update/ Never travel naked http://www.andyofniall.net/never-travel-naked/ 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 - [url=http://www.nakedbus.com]nakedbus.com[/url], $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. Tue, 09 Oct 2007 20:27:19 -0700 http://www.andyofniall.net/never-travel-naked/ Paintball is fun http://www.andyofniall.net/paintball-is-fun/ I shot Mina. It was fun! Sun, 16 Sep 2007 03:57:08 -0700 http://www.andyofniall.net/paintball-is-fun/ Do it http://www.andyofniall.net/do-it/ [align=center][url=http://www.packtpub.com/most-promising-open-source-cms-award-final-silverstripe][img]assets/Blog/_resampled/ResizedImage46860-silverstripe-468x60.gif[/img][/url][/align] Mon, 10 Sep 2007 03:59:06 -0700 http://www.andyofniall.net/do-it/ Windows... in a window! http://www.andyofniall.net/windows-in-a-window/ Over the last two days I've been experimenting with [url=http://en.wikipedia.org/wiki/Virtualisation]virtualisation[/url] - running one operating system inside another. The motivation was twofold - firstly Internet Explorer testing at [url=http://www.silverstripe.com]work[/url] is a real pain. I normally have to upload all my changes to a test server, remote desktop into an IE test box and then make any changes via ssh - not particularly productive. The second objective is I have yet to find a way to be able to use the [url=http://www.apple.com/itunes/store/]iTunes store[/url] in Linux! So off on the virtualisation adventure I went. My friend [url=http://www.madman.net.nz]Matt[/url] had managed to get Windows XP running on his work machine on Ubuntu at decent speeds using [url=http://www.vmware.com/]VMware[/url]. While VMware looks very cool, I didn't particularly feel like forking out any money, so I decided to see what the open source options were like. My first stop was [url=http://www.xensource.com]Xen[/url] - it's built into the kernel and sits very close the the hardware, so is supposed to be very fast. Unfortunately for me it sits too close to the hardware - I'd need either a modified version of XP (which while exists isn't actually available to anyone due to licensing restrictions), or for my CPU to support virtualisation. A quick check on wikipedia showed that my CPU was just a few models too late.. gutting :(. Next stop was [url=http://fabrice.bellard.free.fr/qemu/]QEMU[/url]. QEMU is a bit different - it sits on a much higher level, the software doing more work. Unfortunately this meant it was very slow. Recently, though, someone had developed a kernel module that allowed the hardware to do much more of the grunt work; the module is called [url=http://fabrice.bellard.free.fr/qemu/kqemu-doc.html]KQEMU[/url]. I managed to get this all set up (ArchLinux had it all packaged up nicely), however as soon I tried to install XP with KQEMU enabled, I was greeted with a lovely big BSOD. Oh no.. Not willing to give up hope, I ran the installer without the kernel module - this tooking pretty much forever (like hours and hours forever). I don't advise it. After the installation was complete, it booted into Windows... very, very slowly. At that point I shut down the virtual machine. I reenabled KQEMU and rebooted - voila! Windows XP at fairly decent speeds - not native speeds for certain, but it does run faster than a lot of XP machines I've used. And as I plan to only be running a single application, it is more than adequate for my purposes. I have also since found that the problem with the BSOD on install was due to QEMU's less than perfect implementation of ACPI, and that disabling acpi on the commandline would've fixed the issue - doh, wish I had known earlier, would've saved me a lot of time! Lesson learnt - QEMU by itself = horribly slow, QEMU with kQEMU = victory! After letting Windows do it's update thing, I made a backup of my machine - this is where virtualisation comes in handy. I then proceeded to install Internet Explorer 7 on one copy - so I now have an easy way to test both IE6 &amp; IE7. I was slightly scared about trying to set up networking with QEMU, but I was pleasantly suprised - not only could I access the Internet without configuring anything, but my real linux machine was avaiable at 10.0.2.2, so my web server was all ready to go! :) [align=center][img]assets/Blog/_resampled/ResizedImage600375-windowsinawindow.png[/img][/align] My final task was to install iTunes - this ran without a problem. Unfortunately most of the music available on iTunes store is DRM protected, and as I don't plan to boot up a virtual machine every time I want to listen to music, and I have yet to find a way to remove it, I won't be buying any DRM music. Fortunately all EMI music can be bought DRM free (for a slightly higher price, but thus is the price of freedom). While initially I didn't think I listened to a whole lot of EMI music, I discovered that a number of labels with lots of bands I listen to are actually owned by EMI - most importantly [url=http://www.toothandnail.com/]Tooth & Nail[/url] :). So after setting up a iTunes account, I took for a test run and bought [url=http://www.whatismae.com/]Mae[/url]'s [url=http://www.last.fm/music/Mae/The+Everglow+EP]The Everglow EP[/url], which, btw, I highly recommend (well I highly recommend anything by Mae in general). The last piece of the puzzle was figuring out how to transfer my newly purchased music from my virtual machine to my actual machine. First I tried Windows file sharing with [url=http://www.samba.org[/url]Samba</a> - however I had a few problems with authorisation - I don't think I'll ever understand how to configure Samba properly. So I took an easier road - downloaded [url=http://winscp.net/]WinSCP[/url] on my virtual machine, and used ssh to transfer the files. Result - Mae on [url=http://banshee-project.org/]Banshee[/url]! Excellent! [align=center][img]assets/Blog/_resampled/ResizedImage600375-yaymae.png[/img][/align] Thu, 23 Aug 2007 15:30:06 -0700 http://www.andyofniall.net/windows-in-a-window/ Mmm pie... http://www.andyofniall.net/mmm-pie/ Today I discovered a new addition to the dairy down the road - classic [url=http://en.wikipedia.org/wiki/Chicken_Masala]indian[/url] [url=http://en.wikipedia.org/wiki/Rogan_josh]dishes[/url] in tasty pie form! I had a [url=http://en.wikipedia.org/wiki/Butter_chicken]butter chicken[/url] pie - pure genius! :) Mon, 20 Aug 2007 04:17:42 -0700 http://www.andyofniall.net/mmm-pie/ Maybe if you used more than just two fingers... http://www.andyofniall.net/maybe-if-you-used-more-than-just-two-fingers/ I just went to update my computer and I guess I typed the wrong password, which isn't very suprising considering my severe lack of touch-typing</a> skills. What is suprising is that instead of the general 'incorrect password' message (or something to that effect), my computer decided to insult me. Slightly confused, I deliberately got the password wrong a second to see what would happen: [align=center][img]assets/Blog/_resampled/ResizedImage600353-funnysudo.png[/img][/align] It seems that the maintainer of the sudo package on Arch Linux recently decided to enable insults. I personally don't mind - I like my computer having a bit of personality! I'm not sure everyone else would think the same though. Fri, 17 Aug 2007 15:29:06 -0700 http://www.andyofniall.net/maybe-if-you-used-more-than-just-two-fingers/ Energy Lager? http://www.andyofniall.net/energy-lager/ I recently noticed a six pack of these in the fridge: [align=center][img]assets/Blog/_resampled/ResizedImage194533-energylager.jpg[/img][/align] You'll have to excuse the poor photography, but the label asserts that the drink is an 'energy lager'. I'm assuming they belong to my flatmate, but my question is this: what the heck is an energy lager? Beer makes me feel relaxed, if not sleepy.. I don't understand how one could possibly make you feel energetic regardless of the [url=http://en.wikipedia.org/wiki/Caffiene]chemicals[/url] [url=http://en.wikipedia.org/wiki/Guarana]in it[/url], and even if you could, I don't see the appeal... Thu, 16 Aug 2007 04:21:58 -0700 http://www.andyofniall.net/energy-lager/ Oh noes it's Ohloh http://www.andyofniall.net/oh-noes-it-s-ohloh/ I came across an interesting site the other day - [url=http://www.ohloh.net]Ohloh[/url]. It's basically some sort of odd combination of open source software metrics and social networking. While I am generally find most social networking sites fairly annoying, this one intrigues me by introducing something else into the mix. [url=http://ww.last.fm]Last.fm[/url] is another good example of this - [url=http://www.last.fm/user/Andrew_NZ/]I use it[/url] for plenty of [url=http://www.last.fm/music/Thrice]music[/url] [url=http://www.last.fm/music/Relient+K]finding[/url] [url=http://www.last.fm/music/Dustin+Kensrue]goodness.[/url] When I stumbled across the site, I found that I was, in a way, already a part of it. Ohloh had been tracking [url=http://www.ohloh.net/accounts/8115/positions/4710]my commits to SilverStripe[/url] (although only the commits made since the subversion repository was opened), and when I signed up I could claim that svn user as me. It also gives some [url=http://www.ohloh.net/projects/5034]interesting statistics[/url] about SilverStripe - for one it is very well commented; one of my tasks a while back was going through and adding phpDocumentor comments to the code, although the enormity of SilverStripe meant that I didn't particularly get that far, so I can't credit for many of those comments. Maybe later on I'll get a chance to do some more. I also added [url=fields-of-gold]Fields of Gold[/url] and [url=project-frozen-flame]Project Frozen Flame[/url] to Ohloh, and after waiting a day or so for the projects code to be crawled we now have statistics on [url=http://www.ohloh.net/projects/7717]both[/url] the [url=http://www.ohloh.net/projects/7718]projects[/url]. A few [url=http://www.ohloh.net/accounts/8118]other[/url] [url=http://www.ohloh.net/accounts/8122]SilverStripers[/url] also signed up and we gave each other kudos - Ohloh's way of letting you show gratitude to another open source developer. Ohloh also calculates a 'kudo rank' based on the commits you have done and the kudos you have received. I logged on the next day to see not one, but all five of the 'highest kudo gainers' on the front page were SilverStripers (although [url=http://www.elijahlofgren.com]Elijah[/url] is put down as [url=http://www.cmsmadesimple.org]CMSMadeSimple[/url], he is one of our Google Summer of Codestudents, and is working in a private branch that Ohloh can't see). Woohoo! [align=center][img]assets/Blog/_resampled/ResizedImage273291-kudogainers.png[/img][/align] Ohloh is a site I plan to keep an eye on, it's still in it's early days, but it shows promise. Thu, 16 Aug 2007 01:41:06 -0700 http://www.andyofniall.net/oh-noes-it-s-ohloh/ Yay Will! http://www.andyofniall.net/yay-will/ As I'm sure you can see, the site has had a bit of a refresher! I like it a lot more now, the [url=http://www.silverstripe.com/blackcandy/]old theme[/url] was fine, but it was so web 2.0, this one is far more me. :) It was all done by [url=http://www.willr.co.nz]Will[/url] for me, so big ups to him, yay! I also added a [url=people/]people section[/url]. Neat! Sat, 11 Aug 2007 04:31:58 -0700 http://www.andyofniall.net/yay-will/ Best battle strategy ever http://www.andyofniall.net/best-battle-strategy-ever/ [url=http://www.biblegateway.com/passage/?search=Genesis%2034%20;&amp;version=72;]Convince your enemies to circumsize themselves before you fight.[/url] Fri, 10 Aug 2007 04:32:42 -0700 http://www.andyofniall.net/best-battle-strategy-ever/ The great Cookie Time crisis http://www.andyofniall.net/the-great-cookie-time-crisis/ I swear [url=http://www.cookietime.co.nz]Cookie Time[/url]s are getting smaller, but noone believes me! Wed, 08 Aug 2007 04:34:21 -0700 http://www.andyofniall.net/the-great-cookie-time-crisis/ Silverbeet down Lambton Quay http://www.andyofniall.net/silverbeet-down-lambton-quay/ I noticed about a week ago that what appeared to be some form of vegetable planted in the planters down Lambton Quay.. My first thought was that it was rhubarb, but a quick email to the council by my friend [url=http://blog.saepe.net]Mat[/url] revealed that it was rainbow beet, a variation of silverbeet with coloured stalks. We used to grow both in the vegetable garden when I was a kid, which explains my confusion, but the point here is not to point out my severe lack of plant classification skills, but to ask - why would you plant silverbeet in the middle of the city? It's not a particularly attractive plant, the car fumes ruin any chance of it being edible (silverbeet is not the tastiest plant in the world anyway). So, to put my question simply, why?? Wed, 08 Aug 2007 04:33:51 -0700 http://www.andyofniall.net/silverbeet-down-lambton-quay/ Added a photo section http://www.andyofniall.net/added-a-photo-section/ I just added a [url=photos]photo section[/url] to the site, and uploaded some photos from one of [url=http://rose-cottage.bebo.com]Rose Cottage[/url]'s [url=party-at-rose-cottage]spectacular parties[/url]. It uses the recently released SilverStripe [url=http://www.silverstripe.com/modules]gallery module[/url], and while I admit it's a bit bare, it's only on it's first release, so I am expecting it to improve a ton over the next few months. :) Enjoy. Sat, 04 Aug 2007 12:15:16 -0700 http://www.andyofniall.net/added-a-photo-section/