Odobo launches…


In 2 days time, I will be marking off the first year with a company I fell in love with and was lucky enough to become part of. It also marks the time around which I stopped blogging regularly, coding in my spare time, and in general, having spare time.

For the past 363 days, I have been living Odobo. I have been part of a niché team of individual talents that have taken an incredible yet ambitious idea, drawn on our experience and skills and left all doubts at the door. I have been part of team that embarked on what has turned out to be more than just a voyage of creating industry-shifting technology.

What is Odobo?

  • Odobo is a company that is challenging the high barriers of entry into the regulated online gambling market.
  • Odobo is a company that is challenging the norms and ‘best practices’ of solving challenges in the online gambling industry.

Odobo is also the place where I have had to solve the biggest technical challenges of my life, grow a team of professionals in the way that I have always wanted to, and foster a culture of creativity, curiosity and hard work where everyone is invited to question current thinking and patterns. More importantly, everyone is challenged to always look for better ways to achieve our goals.

I could tell you what it is that Odobo does, however I know that the Odobo website will be able to convey the message far better than I ever could.

I hope that I will find time to blog a bit more, but there is still a mountain of work to get through and new challenges to discover and conquer. If you think you have what it takes to join the Odobo team, why not visit our recruiting site at http://odobo.recruiterbox.com and see if we have a position that could excite you.

Fedora 17: Switching to KDM as default display manager and some other tips…


Running Fedora 17 with the default Gnome 3 and hate it? Perhaps you’ve figured out how to get KDE to be the default display manager, but just can’t seem to get rid of the Gnome Login Manager? I have some answers for you here.

I installed from the LiveCD which doesn’t give you the option of KDE or Gnome3. It defaults to Gnome3. To make KDE available to you in this situation, you need to install it. The most user-friendly way to do this is the following:

  1. Run Add/Remove Software
  2. Click on Package collections
  3. Scroll down the list until you see ‘KDE Software Compilation’
  4. Select it and Click the apply button
  5. KDE will start installing in the background. Let it finish and log out.
  6. In the Login dialog when entering your password, you should now have a dropdown that allows you to select KDE as the desktop.

If this above worked, you should now be able to enjoy KDE. However, if you’re like me, you may experience a few more issues, so I’m hoping that my pain and learning can help you along quicker.


1. KDE doesn’t save your display settings

I’ve read about all sorts of issues here, but here are the problems that I experienced. I have a dual monitor setup, and after configuring the monitors to not be clones of each other, setting the correct resolution and position, I happily clicked Apply and then Save Configuration. A few hours later, I rebooted my machine, logged back into the system only to find that both my monitors where cloned again. Try as I may, the settings were seemingly not persisting.

If this sounds familiar, then here is a solution that will not only solve the problem AFTER login, but for the login screen as well:


  1. Check that the file ~./kde/share/config/krandrrc exists
  2. Assuming it does, do a cat ~./kde/share/config/krandrrc and look for the line that starts with StartupCommands=
  3. Copy everything after the = sign into the clipboard. In my case, I ended up copying the following:
    xrandr --output DVI-I-1 --pos 1680x0 --mode 1920x1200 --refresh 59.9502\nxrandr --output DVI-I-2 --pos 0x0 --mode 1680x1050 --refresh 59.8833\nxrandr --output DVI-I-1 --primary


  4. Finally, run: rm ~/.config/monitors.xml.

What we want to do now is create a script that executes those ‘Startup Commands’ when X11 starts up. To do this, we need to add a script to X11′s script folder in /etc/X11/xinit/xinitrc.d/. I created a script called displayconfig.sh, but you can call it whatever you want. (I used vim in this process, but you can obviously use any editor you prefer).

  1. Execute: sudo vim /etc/X11/xinit/xinitrc.d/displayconfig.sh
  2. Paste the line you copied out of ~./kde/share/config/krandrrc into this new file.
  3. Save and exit
  4. Run: sudo chmod +x /etc/X11/xinit/xinitrc.d/displayconfig.sh


What will happen on your next reboot is that when X11 starts up, it will execute your new script and configure your display settings immediately. Give it a go now and come back if you want to know how to make KDE the default display manager (even for the login screen)…


2. I have KDE as my display manager, but I’m still using the GDM to login… Help!

Yeah, that was my problem too. I believe it is related to doing an install to hdd from a LiveCD. Everyone else on the forums mentioned that they had the option of selection KDE or Gnome3 during the install so I assume they used a stock standard install disk.

This one is a little trickier because we need to clean up any trace of scripts that cause us to default to GDM, and then create a new file to force us into KDE.

  1. In your home folder, look for any files that match the .Xclients* pattern. I had two of them, namely .Xclients and .Xclients-default.
  2. Delete them or move them into a temporary folder. Just get them out of your user home folder.
  3. While you’re at it, you can delete .xsession-errors* as well. We ain’t gonna be running Gnome3 ever again!
  4. You now need to create the /etc/sysconfig/desktop file. This file is referenced by one of X11′s startup scripts to determine which display manager to use. (If you’re interested in seeing the script, refer to /etc/X11/prefdm).
  5. Make sure that the contents of /etc/sysconfig/desktop is the same as below:
  6. That should be it. Reboot your machine, and your login should now be handled by KDM instead of GDM.



I’ll update this post as I hit new issues and find solutions to them… Hope these 2 helped in the mean time.




Startup items on the Mac


Ever needed to stop an application from launching on startup? Couldn’t remember all the places that OS X can put these little nuggets of automation?

A colleague of mine put this together and passed it on to me.

Since I have been on this particular merry-go-round before as well, I figured I’d just put it into a blog post in case I (or anyone else) ever needed a reference point:


Groovy quicksort


Very short post.. even my blogging style is aligning itself to the way groovy allows me to write code – i.e. quickly.

Shamelessly copied from Dierk Konig’s excellent book “Groovy in Action’, I bring you the groovy implementation of the quick sort algorithm…

def quicksort(list)
    if ( list.size() < 2 ) 
        return list
    def pivot    = list[list.size().intdiv(2)]
    def left     = list.findAll {item -> item < pivot}
    def middle   = list.findAll {item -> item == pivot}
    def right    = list.findAll {item -> item > pivot}
    return (quicksort(left) + middle + quicksort(right))

(For those not familiar with Groovy, findAll, closures and ranges are standard language features and this algorithm ties these concepts up so nicely…)
I’m quickly falling in love with Groovy… I can’t wait to see whats waiting for me in the Grails framework… (more on this when I have time to post)


RAGE from id Software is short and limited


So I just finished the latest game from one of my favourite development studios, id Software.
It took me just over 10 hours, and that includes ALL the quests, some of the jump bonuses and some of the races.

Yes, the graphics are awesome.
Yes, the character animation are flawless.
Yes, the sound is incredible.
Yes, driving a car around a wasteland blowing up other cars and squishing mutants is satisfying.

However, the reason I play games from id Software is primarily for the multiplayer component. I grew up on Wolfenstein, Doom and spent many years rocket jumping around Quake levels. For this game to only have 2 multiplayer game modes is horrid, and neither of them is a deathmatch with actual weapons, levels etc. Its a car racing/driving deathmatch. The other mode is a co-op mode that takes you through a kind of slaughter house fest. Yay. I’m sure its fun, but for some reason, I find it way more satisfying to kill my friends on the virtual battlefield. If I want to co-op, I’ll play a AAA MMO for a real sense of accomplishment.

This game in its current form is just an epic fail. As a developer, I can appreciate the amount of time it must have taken to write the engine behind it… but were the content/game designers sleeping for 3 of the 5 years?

The worst part is that once you finish the game, you can’t go back into a ‘free play’ mode to explore and do instances, finish races etc.

I’m hoping Skyrim will be better…

A pre-alpha screenshot of my swarm in the game.

Sometimes, you just have to go with it…


A few weeks ago, I was chatting to Spencer (the designer of the MindHunters game I’m working on) about the cocos2d-x framework and how I would like to port Lumi over to the framework to allow Android users to be able to experience the game. The beauty of the framework is that it is an almost direct port to C++ from the original cocos2d-iphone framework which Lumi was built on, and since all of the game logic had been written in C++, all I needed to do was rewrite the Presentation Layer code to sit on top of cocos2d-x.


The Deck Builder UI

MindHunters – Deck building


Today I’m going to tell you about the Deck Building feature in MindHunters.

As with any trading card game, the meta-game of deck building is vital, and is a direct reflection of a player’s intended strategy. It is likely that most players will spend a fair amount of time building one or more decks, and it is important that the interface is slick, pleasant, intuitive and most importantly, functional.


Go go SFML!!

Picking a library…


Progress is being made on MindHunters (the Trading Card Game I’m working on). In fact, progress has been really good.

Effects are working on the server, and the game is much more playable (and enjoyable) via the testbed client. Its time to move onto developing the actual game client. This is where I am, and where I’ve been since last week Friday. Well, actually, last Friday I was wondering which framework I should use (if any) for developing the client. My choices were:

  • SDL
  • SFML
  • Cinder
  • Qt
  • Write my own OpenGL framework (not really an option)


Progress on MindHunters


Tonight I finished the first functionally complete version of my Card and Effect designer for MindHunters. To say I’m happy with the result is an understatement. With this tool, I’ll be able to import updated versions of the card library and effects database quickly whenever they are sent to me and in the meanwhile focus on integrating effect resolution into the game.

Once the effects are integrated and working, I’ll have to move into serious development on the game client. Still aiming for early alpha near the end of the year.

MindHunters development


Lately I’ve been working on a new game that a friend of mine has designed. Its been grinding along quite nicely, and I’m really looking forward to getting to an alpha stage where we can open this up to a few people to help play.

Anyway, if you’re interested in following the overall development blog of the game, head over to http://mindhunters.icarus7.net

Go to Top