Monitor your World of Warcraft server, on Twitter

Its no secret that I spend a fair amount of my time in World of Warcraft. My main character, a Human Paladin, is on the US-based realm of Stormscale.
In order to support the 12 million players, Blizzard operates a network of 500+ servers (called Realms) across the globe. From time to time, these realms are taken offline for maintenance or upgrades by the Blizzard Tech staff. This post is about how to track these periods of downtime so that players can easily monitor the status of their realm.
- Start by visiting http://warcraftupdate.net/ – a directory of all the US-based realms.
- Search for your realm, and click on the title once found.
- This will link you to your Realm’s Twitter profile (such as the one for my realm, Stormscale).
- Follow the profile in order to receive updates whenever your realm goes up or down.
For the alliance,
Tim
An interview with me

The Website Team at Umoya tend to interview one of the staff every couple of weeks, this week was my turn.
It is time we took up the mic again and interrogated some of the team here. Today, we decided to pick on: Tim Keller : Lead Developer and general software guru.
[Ed] Tim, you’ve been with a Umoya for a few years now, how did you get to be working here?
[Tim] I got to know Peter through Sunvalley school, he became aware I needed financial assistance to complete my university studies, took a risk and offered to fund me in return for me coming to work at Umoya.
[Ed] Are you Cape Town born and bred?
[Tim] I am indeed. I’ve lived in the same house all my life (until just recently).
[Ed] Ah yes, you’ve just given up bachelorhood I believe – congratulations!
[Ed] I gather your dad is head of Sunvalley Primary, is your mom also a teacher?
[Tim] My family: Teachers, Teachers and more Teachers
[Ed] I sympathise – my siblings were also all teachers.
[Ed] Have you always wanted to be a software developer?
[Tim] No, as a kid I wanted to be a …. wait for it – Teacher! Then of course an Astronaut, Computer Engineer, then Lawyer…. the list goes on.
[Ed] Where did you study?
[Tim] The great UCT!
[Ed] [what is it about UCT students?! Humble as anything.]
[Ed] So was it straight from school to varsity to Umoya?
[Tim] Not quite. I’ve worked as: a teacher, video editor, sound engineer, and web designer.
[Ed] What are some of the things you love
[Tim] My wife (hopeless romantic I know) [Ed: don't worry, you'll get over it], Apple Macs [Ed: terrible fanboy!], photography, formula1, gadgets and (good) music.
[Ed] What do you hate?
[Tim] Hating things.
[Ed] o…k… moving right along…
[Ed] Your role in Umoya?
[Tim] Lead Developer and Systems guy for staffroom. I created staffroom in response to my dad’s frustrations with school admin, and it is now looking like being something that could gain some substantial usage in South African schools. It helped immensely to have Umoya take staffroom under their wing.
[Ed] You’re known in Umoya as…?
[Tim] Pink shirt guy.
[Ed] If you were a wild animal, what would you be?
[Tim] Meerkat (pokes head up every now and then to see the bigger picture)
[Ed] A meerkat in a pink shirt? I’m going to let that one slide right by or the conversation might turn weird!
Comparing two MySQL tables
From time to time, I need to compare MySQL database tables and see what data has been added to the one in the time since I mysqldump’d the first one.
For example: Let’s say I have table_a as my snapshot’d table, and table_b as my newer table which has one or more new rows in it.The query below will return all records that are in table_b, and not in table_a.
SELECT table_b.* FROM table_b
LEFT JOIN table_a ON table_b.id = table_a.id
WHERE table_a.item_id IS NULL
This idea can be extrapolated to comparing the tables of two different databases:
SELECT database_b.sometable.* FROM database_b.sometable
LEFT JOIN database_a.sometable ON database_b.sometable.id = database_a.sometable.id
WHERE database_a.sometable.item_id IS NULL
The you can take those results and use them to INSERT the missing records, should you want to do this.
School kids – want to learn computer programming?
Calling budding programmers, developers and geeks!
Getting Married

19 December 2009: Tim and Amy get married at Simon’s Town Methodist Church
Our official photographer will be turning in her beautiful images this week, but in the meantime I thought I should get just a couple of pics from the day up! Thanks to our family and friends for capturing some truly special memories for us.
First and foremost, thank you to all our friends and family who joined us on the 19th. Your presence and presents were most appreciated!
Getting married is just about the most exciting, scary, complicated and wonderful event you’ll ever experience. The sheer number of things which need to come together on the day is quite astounding. Invites, guest list, seating plan, dress, suits, flowers, cars, pastor, mariage contract, marriage counseling, traveling friends/family, Honeymoon booking, speeches, lunch/dinner, cake, photographer, videographer, and rings – its all quite something.
As part of my commitment to Project52 – to blog once a week for the next 52 weeks – I’ll slowly be taking apart our Year 2009 and explaining how we were able to put together an amazing wedding without breaking the bank. From Engagement to Honeymoon, Amy and I will share via this category of posts the steps you can take to put together a beautiful wedding experience of your own.
Happy New Year and welcome to 2010.
An Oxymoron’s Guide to PHP on Windows
I had the privilege of speaking at SA Developer Cape Town last night. Twenty-something local geeks turned up to hear about how well the Open Source PHP language runs on Windows IIS, using FastCGI.
For the longest time, the utterance of “PHP” and “Windows” within the same sentence meant the speaker was either temporarily insane, or horribly misguided.
In ‘An Oxymoron’s Guide to PHP on Windows’ you’ll discover just how much the situation has changed in the past 12 months. Thanks to Windows Server, IIS7 and FastCGI, running PHP on Windows finally makes a great deal of sense. It performs admirably and facilitates integration with familiar Microsoft technologies like ASP.net and Silverlight.
Google Go

Google is touting its new Go language as a modern systems programming language which is expressive, concurrent, garbage-collected. Go takes the development speed of working in a dynamic language like Python, and combines it with the performance and safety of a compiled language like C or C++.
In its Go FAQ, Google explains the main motivations behind the project:
No major systems language has emerged in over a decade, but over that time the computing landscape has changed tremendously. There are several trends:
- Computers are enormously quicker but software development is not faster.
- Dependency management is a big part of software development today but the “header files” of languages in the C tradition are antithetical to clean dependency analysis—and fast compilation.
- There is a growing rebellion against cumbersome type systems like those of Java and C++, pushing people towards dynamically typed languages such as Python and JavaScript.
- Some fundamental concepts such as garbage collection and parallel computation are not well supported by popular systems languages.
- The emergence of multicore computers has generated worry and confusion.
Bold words from Google, especially considering the number of new languages which have come and gone over the years. Surely its too risky to put the corporate name behind the project? Not once you hear who’s on the team.
The project is being staffed by some serious Computer Science heavyweights: Robert Griesemer, Rob Pike (Unix Team, Plan 9 OS, UTF-8, Inferno), Ken Thompson (inventor of B – forerunner of C, UTF-8, shepherd Unix and Plan 9), Ian Taylor, Russ Cox, Jini Kim and Adam Langley.
Coming from a C/C++ background during my university days, my first Go experience felt quite nostalgic. I grabbed the source via Mercurial, compiled it in the Terminal, and configured some shell environment variables. What I was left with was a native Go compiler for my x64 architecture (6g) and a Go linker (6l). These are the recommended compilation tools until the GCC-based (gccgo) version catches up.
Installation on Snow Leopard
Before you follow these steps, you should have XTools installed. You should also be running Snow Leopard as your OS. These instructions should also work for 10.5 Leopard, but you may have to use GOARCH=386.
Environment
Go needs a couple of shell/environment parameters to be set prior to installation.
Add the following lines to your ~/.bashrc file:
export GOROOT=\$HOME/Go
export GOOS=darwin
export GOARCH=amd64
export GOBIN=\$HOME/bin
Now use the source command to apply those changes:
source ~/.bashrc
Next we need to add the bin directory for Go, and map it on the system path:
mkdir -p $HOME/bin
echo "$HOME/bin" > go
sudo mv go /etc/paths.d/
eval `/usr/libexec/path_helper -s`
Source Code
The Go team are currently using Mercurial to handle the source code. If you don’t already have it installed, you can install it quickly and easily with the following command:
sudo easy_install mercurial
I encountered an issue whereby UTF-8 was not set as my locale language type. While some will not experience this, I had to force this by adding the following lines to your ~/.profile file:
export LC_ALL=en_US.UTF-8
export LANG=en_US.UTF-8
Adjust according to your locale, if neccesary. Big thanks to ricafeal for this.
This will use the Python easy_install tool to install the mercurial package on your system. Once complete, its time to checkout a copy of the Go source code:
hg clone -r release https://go.googlecode.com/hg/ $GOROOT
This will place a full directory of Go source in the directory defined in ~/.bashrc as $GOROOT
Installation
All the Mac OS X particulars are done and you can follow the standard installation procedure. That includes:
cd $GOROOT/src
./all.bash
If you get a message stating…
--- cd ../test
N known bugs; 0 unexpected bugs
… you should be good to go (oh the puns).
Hello World
package main
import "fmt"
func main() {
fmt.Printf("hello, world\n")
}
To compile:
$ 6g hello.go
$ 6l hello.6
To execute:
$ ./6.out
hello, world
You may also want to check out Jeremy’s great little script which lets you compiler (6g) and ink (6l) in one, well, go.
More Go later this week!
No VoIP for iPhoners without Wifi
It sounds like Dave Gale had a bad day with his iPhone 3G and Vodacom today.
I’m on the road today, between a client site [that's us] in Westlake and the home office when I discover that Vodacom have decided I don’t need to talk to anyone. I call my wife 3 times in a row to hear her repeating “HELLO?” in more and more exasperated tones while I bellow fruitlessly into my headset, then rip the headset out of the phone just in case it is on the fritz, not the network. Nada. No joy.
So I think, no problem, I have Skype and Fring on this pocket rocket-phone, I’ll just call via Skype-Out.
Not so much.
The iPhone SDK restricts apps from using the GSM network to make VoIP calls. The user has to have a Wifi connection via which these VoIP calls can be switched.
Dave continues (with links added by me):
They charge us far more than they should for calls, duck and dive when they’re pressured to reduce prices, and then it appears they block us from making use of VoIP over 3G.
The tragedy is that this should not be a problem for South African iPhoners. It is AT&T/Apple policy that has shaped the App Store’s T&Cs to protect the cellular network’s traditional voice business interests. It is Apple’s monopolistic behaviour that has landed the Cupertino-based powerhouse in hot water of the past.
But there seems to be some light in this iTunnel, according to Engadget Mobile:
AT&T’s restrictive network policies might have been behind some of the more notable iPhone app rejections in the past, but at least one major class of applications just got the green light, as Ma Bell just opened up iPhone VoIP calls over 3G. We can only assume this is the result of the FCC’s renewed push for net neutrality and AT&T’s argument that it’s doesn’t need new regulations to remain open, but — what does this mean for you? Well, Skype on the road, for starters, but we’re guessing a flood of interesting new VoIP apps will hit just as soon as devs can get their apps updated and submitted.
In the meantime, here’s the timk.co.za hacky work-around:
- Get yourself an old phone that has a Wifi chip in it (I use an old Nokia E65 with my iPod Touch when on the move)
- Download and Install JoikuSpot Light – a free symbian app which turns your device into a Wifi Access Point to serve up the phone’s 3G connection.
- Connect to the JoikuSpot from the iPhone’s Wifi Manager.
- Make your Skype/Fring calls
Hope that helps! If it doesn’t, you might be better off with one of these.
Silicon Cape idea – Develophpers Cape Town
I was privileged to get to spend the day with some of the brightest entrepreneurs and founders in Cape Town at the Silicon Cape launch. It was incredible to see how quickly founders Vinny Lingham (of Yola) and Justin Stanford (of 4Di Capital and FireID) have been able to bring their vision of a Silicon Valley in the Cape to light. The event included big hitters like former Mail & Guardian Online GM Matthew Buckland, South African billionaire Johann Rupert, Western Cape Premier Helen Zille, and Dr Ramphela Mamphela.
The essence of the day can be consumed via various news sources, but ultimately three goals were exposed:
- To develop a digital innovation hub
- To give entrepreneurs a kick-start
- To set up a Cape VC fund for start-ups
The main take-away for me was an issue raised by a delegate during the open-floor panel discussion: we have a drastic skills-shortage in the local tech start-up space. While the Silicon Cape may foster a community of entrepreneurship, we can’t do much without high quality, skilled employees. The majority of our bright minds are picking up corporate bursaries after High School, and moving straight into black suit and tie after 4 years at University. If we’re going to have great startups in the Silicon Cape, we need great programmers, sysadmins and techies who are available for employment.
With that in mind, I’m going to kick off a little group around this. I think it should be called “Develophpers Cape Town” – a community for PHP devs, aspiring and experienced. Let’s see if we can get some discussion going in the comments here. What is needed most: training, social geek-out events, hackathons, etc?
It is clear to me, that the Cape is onto something really exciting and potentially powerful. Let’s be a part of it.
Staffroom: Effective School Admin
Hopefully this doesn’t across as an ad – its not. I want to discuss why we bothered building an application to help make teacher’s lives easier. Here goes.
The majority of my life has been spent around teachers. My father is a principal of a local school called Sun Valley Primary and my mother is the remedial teacher. My grandmother, aunt, brother and even fiancé are also teachers. So I’m fairly surrounded by them.
What I love about teachers, is their willingness to search for ways to improve what they do. Gone are the days of grumpy Latin teachers, and angry PE instructors who don’t. Despite the often difficult South African teaching environment, the teachers I get to see on a daily basis are passionate, dynamic and innovative individuals who work tirelessly to give their kids the best education possible.
The problem is that they’re caught in a system which requires inappropriate amounts of “admin” to be completed. There are paper-based assessments, markbooks, schedules, reports and moderations that have to be completed well outside of the standard working day. The tragedy is that, by the end of the term, they’re too worn-out to be effective in their core competency: teaching.
Enter Staffroom from Stage Right.
In late 2006, I visited my father’s school and saw how the teachers were using an arrangement of Excel spreadsheets and Word Documents to file their termly academic reports. The overworked academic heads would prepare these elaborate spreadsheets and give them to teachers on USB flash drives. These flash drives would eventually return a week later for processing.
Very often this “processing” would involve changing the font from Comic Sans 12pt back to Arial 10pt, the text justification from Justified to Left, and the textbox from two centimeters off the page to where it was meant to be. All in all, it was a circus that left staff and teachers disheartened and exhausted.
I knew there had to be better way, and I set about developing a replacement system with the following characteristics:
- No Duplication: Capture information once.
- Access Anywhere: Web-based
- Teacher-friendly: Intuitive software, designed, tested and approved by teachers.
- Security and Access levels.
Three years later, we’ve achieved that and more. Umoya Networks has integrated the software with the rest of its products. We re-branded the service “Staffroom” and launched it at the South African Principals’ Association conference in May 2009. Our operations team is busy rolling out Staffroom to several South African schools, both public and private/independent.
I encourage you to read more about it at http://www.mystaffroom.net
We recognise that we’re not going to change school admin overnight, but if we can make the painful daily tasks of being a teacher less painful, then our country’s teachers are going to be a whole lot happier and able to train tomorrow’s much needed leaders.










