April 4, 2009

Moose and I are in Barcelona for a couple of weeks while I get properly up to speed on the RjDj iPhone code which I haven't really been involved enough with so far, concentrating mainly as I have on the server side of things. We are really digging Barcelona and its lovely relaxed atmosphere, great food, and amazing buildings everywhere. We have even tried to pick up a little local vocabulary. Today we plan on taking a day trip up to Montserrat by cable car.

The social and server side features I've been working on for the last 5 months for Reality Jockey Ltd. along with the rest of the team, are finally online, co-incident with an update of the main app and the albums being made free for a limited time. This is in huge part due to Andie, who really kept us all focussed and moving constantly towards this target. Live site, at last! Feels great.

This is pretty exciting for me as it's the first time a project that I've been a part of has made it onto the Boing Boing network. Offworld post, yay!

In addition to that, RjDj chose to feature a couple of my scenes, which I worked on in my spare time outside company hours: CanOfBeats, and GhostWave, which has propelled them to into the 'most popular' position on the website. They never would have been finished in time if it was't for Frank and Florian's hard work at the last minute, fixing all my horrible bugs and adding nifty features.

My excitement is only tempered by the fact that I wrote a large amount of the server side code, so if it collapses in a heap under the weight of the ogling internet it's probably my fault. It seems to be holding up alright so far though, with most of the heavy content in Amazon's S3 cloud, and liberal use of FastCGI and LightHTTPd. The backend is mostly written in Django + Python if you'd like to know. Python is a king amongst programming languages and it means that I go to work each day looking forward to writing code instead of dreading null pointers, buffer overflows, lack of type flexibility, arcane syntax, and all of the other horrid issues which plague other popular programming languages.

The other huge piece of amazing tech that I should mention and which makes up probably the bulk of the client side code is the free and Open Source (BSD license) Pure Data DSP patching language by Miller S. Puckette. Whilst not a wonderful general purpose programming language, it does one thing and does it superbly. All of the RjDj scenes are actually just Pd patches with a fancy image or two and some custom externals running.

Good times!

March 21, 2009

PodSixNet is a lightweight network layer I've written to make it easy to write multiplayer games in Python. It uses Python's built in asyncore library and the simplejson 3rd party library to asynchronously serialise network events and arbitrary data structures, and deliver them to your high level classes through simple callback methods.

Click here to download it

I wrote this library because I'm forever thinking up multiplayer game designs and then starting, but never finishing, a new multiplayer game library for every multiplayer game idea. In other words, I get bogged down writing low level code and eventually lose interest in my original idea as it proves tricky to implement. I decided to get the multiplayer game library written once and for all so that whenever I get an idea for a multiplayer game, I can now prototype it up rapidly. I'm quite proud of the fact that this library is only a handful of simple classes, and weighs in at just two hundred odd lines of code. This is of course because I built it on top of Python's already cool asynchat (used by Twisted) and simplejson.

Two example apps are included with the source to help you get started. The first one is a simple console based chat program, and the second is a pygame based collaborative whiteboard. For each example start one copy of the respective server, ChatServer.py or WhiteboardServer.py, and then start multiple copies of the client to test.

Would really love to hear about it if you use this in a game!

March 9, 2009

If you are a mutt user like me, and you are running Debian GNU/Linux or even Ubuntu, I highly recommend apt-get installing 'mutt-patched'. One of improvements it brings is a small 'folder list' down the left hand side of your terminal window. You can configure this folder list to monitor subfolders for new mail. This is a boon if you have procmail filters which direct different types of mail (e.g. mailing lists, work mail, etc) into different subfolders. In essence it's gmail-like functionality, or any modern GUI mailer for that matter, but for the console user. I'm excited to be joining the 21st century!

Info on configuring this setup can be found in /usr/share/doc/mutt-patched/examples/sidebar.muttrc

Have fun!

March 3, 2009

Need to settle an argument? Recently, I finished coding up this Rock Paper Scissors game that you can play online against someone else. Have fun.

Rock Paper Scissors

Feb. 18, 2009

GhostWave

Last night I put the finishing touches on an RjDj scene that I've been working on in my spare time called GhostWave. It's a dark algorithmic drum & bass generator which lets you hum the bass lines. If you have the latest version of the RjDj single (free!) installed on your iPhone or iPod Touch, you can simply visit this page from safari on the phone and click the following link with your finger:

GhostWave.rjz

By itself it does very little but make randomly raw semi-melodic noise. Shake it quite hard a few times to start some hi-hats tickering, and then hum a bass line into the mic. To record and loop your hummed bassline, put your finger on the little ghost as you hum your melody in time to the hats. Let go when you're done and the melody should loop. Once you're done, shake it vigorously a few more times to bring in the beat. After listening for a while the beats will fade, but you can bring them back by shaking some more, and you can continue to press the little ghost to record more melody loops.

Let me know what you think.

Have fun!