April 14, 2010

Wow, today marks a huge milestone in the life of Infinite8BitPlatformer, thanks to my friend Crispin. He's written some code which adds a line tool to the existing suite of pencil and fill tools, and he created a level with it. This is the very first substantial code submitted from someone else, and the very first user contributed level, and the game isn't even released yet! In case you can't tell, I am super excited.

This was also the first opportunity for me to experience the proof-of-concept of exploring a level someone else created. I must admit that it lived up to my expectations. Running around in the new level, exploring, and finding items was a genuinely enjoyable experience, and one I can't wait to repeat many more times as the game matures and gets further contributions. Good times.

Thanks, Crispin!

PS The game is currently in pre-alpha testing. If you'd like to try it out, drop me an email and I'll send you the link.

April 6, 2010

Only one of the little robots that I designed survived the 3D printing process. This is because of my inexperience in designing for 3d printing. As you can see from the one that worked out, many of the connecting struts were almost too thin to be structurally sound, and this was the case in the other ones I sent off for printing.

Nonetheless there is something deeply profound and kind of humbling about holding this delicate little robot in my hand. I've spent my whole life creating virtual things - computer programs, graphics, music - and now it is possible to use the exact same skills to produce something who's physical structure may well outlast that of my own. Walking through Roman ruins earlier this year I realised that there is something about hard physical matter that is so important. Seeing a marble carving of some guy's face which has outlasted his original face by so many thousands of years really drove it home.

Last year I also read "Matter" by Iain M. Banks and although it didn't grab me as much as some of his previous books, there was an interesting argument about virtuality from one of his characters. The essence of the argument was that we don't inhabit a virtual universe overseen by some creator or creator race because any sufficiently advanced entity or culture would not allow the terrible things that can happen to sentient beings in our universe, to occur. It's sort of a meta-ethical argument saying that we can't be anywhere other than at the top of the stack of turtles, if the ethics of highly evolved intelligences are always consistent.

On a related note, this blog post makes the case that in software development the execution of an idea is much more important than the idea. I have come to believe that this is true in general. Because we now live in this highly populated and deeply connected age, ideas have become cheap. Real things, done things, executed things, are better than virtual things and ideas.

This decade is going to be fascinating because of the increasing protrusion of the virtual into the real and the modification of the real by the virtual. Bring on the self configuring household ornaments built of programmable nanotech, such as a flower which has as many petals as there are emails in your inbox.

Virtual things are ok, but real things are better.

March 26, 2010

Recently on Engadget this little gem slipped past quietly. If you read the about page you will find a fascinating company.

"...legal entity in Hong Kong and main offices in the Shenzhen City (China)..."

"The devices we deal with must be powered by opensource software ( no vendor locks ) and mantain general high quality standards concerning all phases of the production flow."

"We absolutely refuse to work with any company that contribute to destroying our planet, and act unethically or illegally."

"All our staff comes from different countries, like Italy, Canada and Sweden."

Enso

Equally fascinating are the specifications and the competitive price of this gadget. At under $US 200 it's quite irresistable. If the quality turns out to equal that of American sourced devices, I think that this could be the start of a tidal wave of new devices coming out of China and its SARs and satellites.

In previous decades the car companies of the United States were completely decimated by their asian counterparts who started out making cheap copies, and ended up making better cars for less. The gadget makers in the USA (yep, even the big ones) are in for a similar suprise during this decade.

March 25, 2010

Technically it's still yesterday where the server that hosts this blog lives, so I'm not too late to post this. As is traditional on Ada Lovelace day, I am going to write about women in technology who have influenced and inspired me.

First up is somebody I don't know personally, but her hardware hack is so ridiculously awesome that I just have to mention her here. Her name is Jeri Ellsworth, and she is a self-taught chip designer and technology consultant. The hack which excited me so much was to make a regular old floppy disk drive into an audio delay effect. Check out this youtube video. I so have to make one of those! If you read her blog and Wikipedia page you'll notice a large number of other awesome techy things she has done with her time too.

Kay Smoljak is somebody I worked with in my first real programming job. Kay was one of the most productive coders at Perthweb, singlehandedly developing some enormous sites in Coldfusion and putting the rest of us to shame. Now she and her partner Dave run a successful web consultancy business called Clever Starfish, in between rocking out at metal gigs. Because of those guys I got to hear a lot of great metal. I haven't seen Kay and Dave for years, but we should have a beer sometime!

This will probably embarrass the hell out of her, but I also want to name-drop my friend and colleague at RjDj, Andie Nordgren. Despite the presence of the word "manager" in her title, Andie is utterly invaluable, and different from every other manager-type-person, because she has committed actual code into our various project repositories. She knows the correct syntax for a handful of languages, as well as diving into new ones at the drop of a hat, and I've witnessed her banging out SQL statements to extract stats from our database when we were too slow to get a proper frontend working. That's an exceptionally rare and wonderful thing in someone who goes by the title of manager! Finally she's just an all round nice person and I think everybody in the team feels on a level with her, never "managed", although she has saved the team from mutually assured destruction a couple of times by coming up with technical and management solutions which nobody else did. So thanks, Andie, it's really great working with you! P.S. also check out her "soldering is easy" instructional comic.

The last woman in technology who I'd like to mention is my mother. Sally McCormick taught this young whippersnapper how to program on an Apple //e shortly after I learned how to walk and talk, and I've never looked back. I quite literally owe her my entire career and luckily I know she's much too nice to ever ask for it back. After a distinguished career teaching mostly science and mathematics at several different schools around the planet, she now teaches information technology in Western Australia. Often's the time I drop past my parent's place in the evening to find her, head down, snoozing into an Actionscript book or Java manual. Pretty sure she learns by osmosis. Thanks Mum!

March 12, 2010

Staying motivated on your personal side projects is really quite hard! Moose and I have moved closer to the city, so now I have a bit more time and space and have been hacking on Infinite 8-bit Platformer again. Here is a graph of commits-per-month on the project:

Infinite Platformer commits per month to March 2010

I prefer to think of them as "experience points" rather than commits, because making games should be the meta game. :)

I also made a page on the website where you can see the commit log.

I set up a twitter stream for the commits too: http://twitter.com/infinite8bit, and also an identi.ca account if you're that way inclined: http://identi.ca/infinite8bit

You can subscribe to the RSS feed of those commit messages: http://twitter.com/statuses/user_timeline/121975057.rss

click for detail

On my current contract with RjDj I have to work as close to London time as possible, so this means that I have some mornings somewhat free, and I've been spending the hours between 8am and 11am drinking coffee and working on my game.

As you can see, even at the beginning of this month there have been almost as many commits as there were last month, hooray! There are 37 line-items left in the TODO file at the moment. My rule of thumb is about two line-items per working day. If I can work at roughly 3 half-days per week I should have the beta release ready for testers in about three months. That's assuming that the networking library I previously wrote, PodSixNet, is up to the task of linking everyone together into some kind of platformy MMO goodness. If I do a release without the networking stuff it means I can get something in front of people in probably one month. That's a very motivating thought! The important thing is that I don't rush myself though. Slow software development makes better quality software (although implemented software is better than vapourware).

I have found that the best way to stay motivated is never to feel guilty about not working on something. If I don't feel like it I just forget about it and do something else. Eventually if the project is worth it I'll get excited about it and naturally come back to work on it again. Judging by the graph, that seems to be exactly what happens. Some months I leave it entirely (zero commits), but over the long term progress continues because somewhere deep inside I know this project is worth it. One of life's great lessons is that at some point we must always let go of the things we love, and I think this really applies to staying motivated about projects too!

Ok, time to write some more code. :)

Boring stuff

Here is the very small bash shell script which produces the csv file used to generate the graph (unfortunately it skips empty months so you have to add those manually):

#!/bin/sh
bzr log --short --forward | sed -n -e 's/.*\([0-9]\{4\}-[0-9]\{2\}\).*/\1/p' | uniq -c | sed -n -e 's/\ *\(.*\)\ \(.*\)/\2\,\1/p'

Here is a very small bash shell script that I wrote for turning emails into tweets:

!/bin/sh
header="START"
# concatenate all lines (ignore email header)
while read line; do
    if [ "$header" == "" ]; then
        message=`echo $message $line`
    else; header=$line
    fi
done
# post to twitter
wget -O - --user=xxxx --password=xxxx --post-data="status=$message" https://twitter.com/statuses/update.xml

That last line is a handy one-liner for posting to twitter!

To post to identi.ca, change the url to "identi.ca/api/statuses/update.xml".