Thursday, November 3, 2011

Something is rotten in the state of Denmark

This post is in no way endorsed by Boss Alien, and is entirely my own mini rant.

Boss Alien has had the pleasure over the last six (count em!) months to be developing some really splendiferous products for iOS. Mobile hardware (including phones and tablets) is an obvious growth area in the next decade - if you think that smartphone is cool, just wait until they are that good but cost 50 bucks and everyone else on the planet can afford one. THAT is a market to aim for.

I am a lover of technology, have been for pretty much my entire life. I've mostly been a Windows PC user for the last decade, but before then I followed the path most of my geek generation followed - Spectrums, C64s, the Amiga vs ST wars - all fantastic bits of hardware which had flaws but you could forgive them. And the best part was that the fanboi-ism normally had some sort of counterpoint - you point out a flaw in your friends' device, they implicitly acknowledge it by coming-back-atcha with a flaw in your gear.

iOS requires you to use Macs to do development on (sure, I could hackintosh, but there be dragons). So I've had the "pleasure" of using a Mac Mini and a Macbook Pro at work and at home now pretty much exclusively for the last six months, and for the most part I think they are capable machines with many excellent features, but ...

Oh, but. Where to start. I can list off a litany of absolutely shit design flaws in this hardware, but it seems like any mention of Apple design issues is simply met with a criticism-swallowing black hole - no acknowledgement, no rebuttal - the best I can ever hope for is the occasional sideways "Oh, Timothy" look from my beleaguered colleagues when I go off on a rant.

Here's a few for starters, so you can see where the wrath rises from. My macbook pro has a small divot on the front to let me open the machine, which requires TWO HANDS to use. That divot is so sharp, I have actually cut my wrists on the points before while opening the machine. Yes, that's right - opening the laptop lead to blood.

Then there's the keyboard layout, which has cost me days in retraining my muscle memory, and how it's utterly non-trivial to switch keyboard maps, and how the hash key has moved entirely off the primary key set - great for coding Python.

Then there's all the fun and games using Finder, which is such a badly named utility it's untrue.

That's without even stepping close to the cost/performance curves, or the requirement for extra hardware just to plug in a monitor with DVI, or the hideousness that is iOS development profiles, or ...

Now the point of this post is not to rag on the hardware and ecosystem - but rather to highlight that it is valid and just to rag on the hardware and ecosystem. Apple are good at what they do, but by god they are a long way from perfect. If I read one more post this month anywhere on the internet where the reality distortion kicks in on changes like the Mac App Store sandbox proposals, how Kindle "just isn't quite as Apple-y as Apple" or similar, I'm going to melt down. I'm really getting tired of seeing how otherwise rational people get subsumed into love for these products to the point where all else suddenly becomes a non-viable choice.

I guess I'll look back at this post at some point (when we begin Android development, no doubt) and laugh at myself, but it feels great to get this out.

End of rant!

Sunday, October 16, 2011


I had expected the last couple of months to be pretty hard work, but good lord. Some lessons learned, I think. Good job I still like pizza.

Sunday, August 28, 2011

Eff Eff Ess

To whoever stole the badge off the boot of our car - karma will get you in the end, of that you can be sure.

Thursday, August 4, 2011

Git and Subversion, or There and Back Again.

Around the end of our first month at Boss Alien, we had been using Git for all of our code revision control (including coder art assets and the Unity project contents). While setting things up was fairly painless and managing local commits was fairly painless, we had various issues and problems while trying to use Git to do merges when people pushed and pulled from the Origin (mainline on our primary Git server).
We had attempted to use a few different OSX GUIs for Git, and the only one that we tried that worked to our initial satisfaction was Tower. Unfortunately there was a bug in Tower that made merges give incorrect results. (This bug has since been resolved with a test case that I sent them). Because we couldn't find another decent GUI, we ended up doing things using a commandline, and that really is not the best way to have people using Git. Merge issues continued to crop up whenever we tried to reconcile parallel changes. After an awful lot of messing around in Git configuration files we managed to get a bearable workflow using P4Merge, but it was still a pain in the arse compared to using a GUI.

This caused us to switch to Subversion, as well as the hope that, because Subversion uses a single server model rather than a distributed version model, we would be able to use the File Locking mechanism in Subversion to help us mitigate the issues with "merging" binary assets. Really, you can't merge binary. This leaves you with three choices - pick yours, pick theirs, don't mess with the file in the first place. With a DRCS there is no way to enforce "don't mess with this". With something like Perforce or Accurev, there are mechanisms to allow you to say "I have this file locked, you can't mess with it".
The main binary assets like models and textures will occasionally cause this problem, but it's rare - you're much more likely to have a single contributor modifying these files and conflicts simply don't arise in that change flow. However, some of the key files in a Unity project (scenes, prefabs and a few others) are currently binary files. Apparently this will change in a future revision of Unity, but working with them right now means that either you can't (easily) collaborate within a scene, or you need to very carefully structure your scenes and prefabs so that other people can modify subsets of assets without breaking the subset you're currently working on.
For projects the size of the ones we're working on, this is annoying. It will undoubtedly cause lost work, but it's probably not going to bring the project down. Any larger, though, and you'll most likely end up in a situation where you just can't work because you're contending with other people changing the same binary files.
Once Unity moves to a text (mergeable) representation of these files, the problem will be drastically reduced (although there will still be undoubtedly painful merges, as we saw using Renderware on the Potter games).
So, to get back to the point - we wanted to have Subversion put a lock on a scene file, for example - to say, effectively "Tim's changing this, so you can't". Not elegant, but in theory it should work. Unfortunately, in practice it doesn't work - in Unity, you can quite happily write over the file without any warning, meaning you end up in the same place at the end of the day - you have a local change and a remote change, and one of you just lost their work.
Subversion brings with it another (in this case, pretty much insurmountable) problem when you're working with Unity. the structure of the Subversion repository is held in hidden directories (.svn directories) inside each directory in your repository folder. This is annoying when trying to copy folders around in your project workspace, as you need to be very careful that you don't move or copy the hidden .svn directories. If you do, then the subversion client will give you all sorts of horrible problems, like thinking a directory exists when it doesn't, not allowing you to add a directory it thinks it already has, that sort of thing. This caused us a good few hours of pain, definitely more pain than resolving Git merge issues.
That's something we can work around when using Finder or windows Explorer. It's simply not something we can work around when moving items in the Unity project browser. When you move directories around inside Unity, it also moves the .SVN directories with it, and you've just broken your local working copy. Unpicking these issues is, pretty much always, more effort than simply redoing the work. Today, I've had three cases where I couldn't redo the work, because I'd lost local files after doing updates in Subversion and I had no way of persuading Subversion to put files back or retrieve them from history without totally deleting my local working copy and starting again. This is simply not a viable workflow.

So, primarily for this reason, we're moving back to Git today - it's not perfect and I'm sure we'll see issues with it, but at least you can work inside Unity without breaking the source control with seemingly innocuous activities.

Thursday, July 21, 2011


We have a logo. Next up, business cards, attitude and schmoozing.

Monday, July 11, 2011

Six killer weeks

It'll be six weeks tomorrow since Jason and I started Boss Alien. B&P joined on the first day, and Jay on the second. in that time we've created two deliverables, shifted development to a totally new environment platform and target platform, spent a shedload of cash, moved into new offices, signed a lot of contracts but most of all we've had a fantastically fun and exciting time and as of today we're officially in business - we're not just doing stuff, we're getting paid for it.

If you had told me that we could be in this position in less than two months, I've have told you that you were obviously criminally insane and no, you couldn't have any of my money. How wrong I would have been.

Next month - the story of how we trashed the most promising business opportunity ever ;) (Or not, hopefully!)

Huge *HUGE* thanks go out to the boys involved, and also to the girls involved - without the support network this would simply not have happened and without the hard work, effort, trust and involvement we'd have nothing more than a promise and a lot of hot air. My missus and Jason's missus both stood up and said this was ok, which has to have been one of the scariest things for them to do, even though it hasn't seemed like that.

Phew. if we can keep this pace up for a year, we'll be halfway to the moon.

Friday, July 8, 2011

End of an era

I haven't watch the feed yet, but the last shuttle is now up in space. I have a horrible feeling, a dread really, that unless some private citizens or companies pull out all the stops, we're about to stagnate and move into one of those hideous futures where 200 years from now we're stewing in our own soup, 20 billion humans on the planet wasting the resources by fighting over them.

I'd prefer the future where we're shuttling around from bases orbiting the planets, taking in the sights of Jupiter and Mars, living in the asteroids. Sign me up for that one, please.

Proper kisses

So very, very cute. And a bit sloppy.

Sunday, June 19, 2011

EC2 and ejabberd

After attempting various flavours of setup, I finally managed to spin up an EC2 instance and get ejabberd working on it this evening.

Things to note:
* use the 64-bit recommended micro AMI. (ami-45cefa31 : it's CentOs, but you'll manage).
* download the latest ejabberd in binary form from

$ cd ~
$ mkdir jabber
$ cd jabber
$ wget 
$ gunzip ejabberd-2.1.8-linux-x86_64-installer.bin.gz
$ chmod +x ejabberd-2.1.8-linux-x86_64-installer.bin
$ ./ejabberd-2.1.8-linux-x86-installer.bin

* do everything as ec2-user - don't sudo anywhere.
* check the service is stopped:

$ ~/ejabberd-2.1.8/bin/ejabberdctl status

* ensure you add "localhost", the instance short hostname and the instance full external DNS name to the list of hosts. Search for the "hosts" stanza in the config file.

$ nano ~/ejabberd-2.1.8/conf/ejabberd.cfg
* don't forget to open up ports 22, 5280, 5269 and 5222 on your security group.

If you spot any errors during installation, or ejabberdctl status gives strange results or failures, then something bad has happened - wipe the image and start again.

So after a good few hours of tail-chasing and examining inscrutible Erlang logs, the devious plan of wiping the instance and starting again each time things went south eventually worked! I can now chat using Jabber to my EC2 instance, and our cunning plans move another pace forward. Excellent!

Signs and portents

Gabe has become very communicative over the last few weeks, often initiating conversations now. Granted, his spoken english consists mostly of grunts and vocalisations that only Nic and I would understand - but his repertoire of signs is growing immensely, not only learned but created.

He now uses signs and words for "no", "all gone/finished", "more", "down", "goodbye", "bed/bedtime", "up", "dance", "ukelele" (his own creation), "cheers", "hungry", "play", "bird", "cat", "monkey", "space", "thank-you", "stop" and "dip". he also says "star", "mum mum mum" and occasionally "dad dad dad" but the mu and da syllables are so prevalent I can rarely tell when he actually means me or Nic.

I'm kinda impressed, especially when he's the one who starts a conversation.

Thursday, June 16, 2011

You utter git

What a week for learning new things. I already knew the basics of port forwarding and punching holes in firewalls, and a year or two of occasional linux usage has put me in a great position to set up the infrastructure for our fledgling company.

This week, I have set up a linux server (Ubuntu 11, very nice), Git and Gitolite from scratch (learning a hell of a lot about SSH on the way), got Git working across our network, punched some holes in the firewall, figured out how to make SSH only use RSA keys, and finally got remote access via a dynamic IP mapper through into our office box. As far as I can tell, it's as locked down as possible (arbitrary SSH port, no password access, no VNC access, arbitrary confluence port, no guest logins) but we now have a Wiki and a git repo that we can use from home.

Git is actually very nice to work with, once you accept some of the choices they have made. I know for a fact, though, that not being able to lock binary files exclusively will cause us headaches at some point in the future. We need to structure our Unity projects to mitigate consecutive edits of binary files (like prefabs and scenes). This may be enough of a problem to move us back off Git and over to something like Perforce or Plastic, but I sincerely hope not.

There really is something quite - primal, I guess is the word - about ssh'ing into a box, messing with authorized_keys and coming away with a clone of the git repo on my windows box. It all feels a bit magic.

I think it's going to stand us in excellent stead when we begin setting up ejabberd on an EC2 instance next week. Roll on the crazyness for a few more weeks!

Tuesday, June 7, 2011

Elite spending

Today's "in the hole setting up the company" total is £1337. That has to be good karma right there ;)

Saturday, June 4, 2011

Home Alone

I don't think this is the first time I've watched Gabe alone, but it's certainly been a while. What a wonderful afternoon - beer, burgers, our boys and weather to die for. More of these please!

Thursday, June 2, 2011

That's it, the whole worm is in my belly now

"64-bit editions of Windows Vista or Windows 7 require the iTunes 64-bit installer"

in the smallest font you can imagine, in the fine print at the bottom of the left hand side of the page. Thanks, apple, that's another 5 minutes I'm not getting back.

Half a worm

Oh god, I'd forgotten just how crap iTunes is.

Apple products are not made to be used by people who have anything other than a mac as their desktop machine. I'm sick and tired of trying to work around ridiculous issues and limitations with apple hardware and the iTunes ecosystem as a whole - even on a Mac it's not that bloody good, but on a Win7 machine it's just a complete disaster. I think spending a couple of months with my Nexus S has spoiled me. A mobile device you can drag files on to? oh emm gee. A setup process that says "log in using your gmail account - and done!" ? no, that would be too bloody easy.

I've had my new gen4 touch, sitting at the screen that politely shows me "connect to iTunes now, sucker" for three feckin hours and I'm still no further forward. I'm assuming that only a clean reinstall of iTunes will fix whatever issue with whatever background service is stopping the device being recognised and zzzZZzz. seriously, zzzZZZzzz. bored of this. waiting for the 4.3GB download of xcode was positively fun compared to this.

All change

So - I've left Black Rock. I have to say I thoroughly enjoyed my time there, what an excellent bunch of people. The last few months were a bit stressful (and tedious in equal measure). I'm going to miss the benefits of working for Disney, but perhaps I'll miss the politics of working for a large business slightly less so.

I'm sad that Gabe won't get more opportunities to visit Disney parks on the silver pass. I'm sure he'll scream blue murder later in life when he realises I've just deprived him of every child's dream. Ho hum.

What next, you might ask? all two of you who read this. And the answer is - my own company! I'm starting up with an old friend, and we're going to be doing cool stuff on mobile devices. Plans are afoot, schedules are being drawn up, stuff is being paid for. It's too early yet to announce our name (unlike some other Black Rock babies) or our project, but I'm super hopeful that we can talk about all this next week.

I'm basically feeling EXCELLENT about this. super woop. It's the scariest thing I've done in forever, and if we fail, there go my life savings and we're back into sell-the-house-to-eat territory - but you know what? we're not gonna fail. We have a small crew of feckin brilliant folks together to get this off the ground, and it's going to kick ass.

Monday, May 2, 2011

my point is floating

This will be, hopefully, the first of a few more technical blog posts. It's grand detailing the minutia of my life but occasionally I need to think through a problem or two, and the results can be interesting.

I'm currently writing an Android app in my spare time. I'll skip the details of what the app does for now, but I'm working with location information (GPS coordinates) and I'm passing around results from the phone to a database.

While converting from numbers to strings (part of the HTTP POST code) it dawned on me that, as previous experience has shown, trying to keep precision in numerical values while they are represented as strings often has issues. I'm writing out a double to a string in Java - that's all good. I can pull that back into the GAE python code as a double - in python, floats are double precision by default. Next question - what precision does the GeoPt GAE datatype honour? the docs simply say "floating point" - is that single precision or double precision? Assuming it's talking about the python type rather than the java type, hopefully it means double precision.

This might sound nit-picky, but given the range of values for longitude (-180.0 through 0 to +180.0) the precision of the number can make the difference between microns and metres in world space.

For single point values, If you're working around the zero line (at the Greenwich royal observatory) then the most precise value is around 2^-127 - a very small number indeed. in decimal, this is equivalent to 10^-38, so given the required precision in decimal degrees , this is so small there's no named SI prefix for it.

If you're on the other side of the world, however, then you're plus or minus 180 degrees, give or take some precision. this gives us a fixed exponent (2^7) and values for the lowest significant bit of the mantissa in the range of 0.000015, give or take - so if you add a single insignificant bit, you're moving your geo point by around 1.5 metres. That's not insignificant.

Doubles add another whole stack of zeros here -it's safe to say you've got at least 10 zeros before your changed value shows up, which is sub-millimetre accuracy - safely inside the tolerance of any real world geo fix, and probably good enough for any spacial positioning work that's trying to correctly locate physical space. So that's good to know!

Friday, April 22, 2011

Fantastic day

Today, while being something of a downer for Jesus with the cross and the nails and all that stuff, was an absolutely glorious day for me, the missus and the bairn. We spent a lovely afternoon up on Devil's Dyke with Jay, Sal and Jack, eating steak, drinking G&Ts and watching the world go by. Gabe ate enough for three babies, certainly considerably more than Jack did. He also met his first real live horse.

It's a long break for me now (and who knows?!) so I'm going to get stuck into the side projects I've had on the cards for months now. Advice abounds.

Friday, April 8, 2011

What a couple of weeks

it's been a mental couple of weeks. Big changes for me personally at work, along with some sun. Bought a Kindle - that's pretty cool. Gabe properly running around now, he's pretty much walking at all times now indoors.

Wednesday, March 23, 2011

Oh Canada

An old friend offered us accomodations in Montreal, and we'd have been crazy to pass the opportunity up, so we came over for a visit. As per usual, I wasn't sure what to expect, other than what we saw on google street view. I had the impression that people would be fairly evenly split between french and english speaking natives in the city, which mostly held out for spoken conversations. The metro system, advertising, signposts on streets, etc were all (or virtually all) in french - which after a day or two wasn't really too hard to work out for the most part. I can pick together halves of most sentences, but not quite everything. It's reinforced my belief that if I ask people to speak slowly, I can mostly understand. I can't converse in the language to save my life, which is unfortunate.

I wish I'd had a decent roaming data plan instead of this (admittedly fantastic while in the UK) O2 PAYG data plan - We had access to complimentary internet but that's no use whatsoever when you're out and about - and that was where we needed it most - for looking up locations on the map, checking train times, translation services, that sort of thing.

One of the big lures of a smart phone is that it's a utility device (at least the way I use mine, anyway). It's effectively an extension of your brain, a streetmap, a location service and more. None of that is available to you if you can't get data into the thing, which is a real shame - with the amount of local storage I've got on the box, I should be able to cache huge amounts of relevant data (like all of the google map data for a location and the surrounding area, or translation dictionaries, that sort of thing). For cloud services like live audio transcription, sure, you'll need a net connection. Next time I'll be more prepared. I certainly didn't expect to be paying close to a pound per text.

As for Montreal itself - well, I think we're still digesting whether we really like it or not. We certaily saw some beautiful things, and some areas of the city were a delight to walk around. Other areas were pretty grim, which I'd expect from any city really but it certainly wasn't what I expected from the ends of the metro lines - in most cities that takes you  far enough out to be in the suburbs - not Montreal.

The important part was seeing some snow - and even better, watching it fall while sitting in a jacuzzi ;)
Definitely an eye opener of a visit.

And like usual, the travel aspect (the portions outside of our direct control, at least) have gone to hell, and we're apparently waiting for a pilot to arrive from Toronto. We're looking at another couple of hours sitting in the bloody airport, listening to other people's music, screaming children, and plagued coughing and sneezing. have I ever told you that I hate people in general, and all humans in particular?

Apart from the nice ones, that is. And maybe the pretty ones. They get a free pass.

Thursday, February 24, 2011

Watching from afar

Nic and I just watched Discovery STS 133 launch on a really short window (2 seconds left). What a fantastic piece of technology, what a fantastic view of the launch and what an amazing process involved to get the bird into space.

I'm totally gutted that we didn't get to see it launch from the causeway - I'll be mounting the tickets and putting them up on the wall somewhere, as that's our only link to how close we came to watching it live.

Good luck to you, Discovery crew.

Saturday, February 19, 2011


LoL has sucked me in, somewhat. Halfway to 30 now, enjoying playing a game competitively again. SC2 just freaks me out too much to play properly competitively - at least with LoL there's other folks to rely on to carry the game.

Gabe is so close to walking properly - he keeps taking a couple of steps then dropping to the floor. What a lazy boy.

Friday, January 28, 2011

It doesn't matter which side you are on ...

If you go around shooting guns or blowing stuff up and you kill innocent people in the process - you're a bad guy.

Thursday, January 27, 2011

minus 50 DKP

Some days I really wonder what the point is.

For most people, it's obviously not what I think it is.

Monday, January 24, 2011

Random mishmash

Interesting times at work, proper chinese style.
Gabe has most definitely learned the "milk" sign - however, when he uses it he means "I want".
He also can't say Tiger yet. He can point, though, and he uses the pointing finger to great effect.

Indie games are really picking up steam right now ...

Wednesday, January 12, 2011

Tuck that in, young man

If anyone had told me 20 years ago that one of life's guilty little pleasures would be tucking my child in to bed, I'd have laughed.

Tuesday, January 11, 2011

One whole week

We've had an entire week of Gabe going down in less than 5 minutes in an evening. A couple of nights he's barely made a peep, and one evening he didn't cry or complain at all. It's a bleedin miracle!

If we can keep this up for the next 15 years, I'll be a happy man.

Saturday, January 1, 2011

A new year

2010 was fantastic for many reasons - a new member of our family, living in our own home for the first time together, and some opportunities at work that let me expand my skillset and horizons. It was also pretty sucky for a few reasons, not least of which was the constant colds and sickness we've all suffered with, especially Gabriel. Not getting to see the shuttle launch despite our best efforts was also a huge downer.

To start off the new year, Gabe has come down with some sort of vomiting/diarrhea bug. Fingers crossed this is the last major sicky he gets this year, it would be lovely to have him hale and hearty for a month or so.

This year could be great, and it could be terribly sucky. I think the impact of the global economy manipulation that all the major governments are colluding in could actually hit this year - keep an eye on the price of gold, if it continues to rise while the stock price rises it's a sign that things may go south very fast. As long as everyone keeps believing in the system it'll all be fine, I guess.

I hope everyone has a great year this year, and the "wanties" doesn't involve us all wanting for the basics of a decent quality of life!