Archive for the ‘Geek’ Category
uniti successfully deployed for the Soccer World Cup
I’ve been rather quiet of late – here’s why: Our team at Umoya have been hard at work on supplying our uniti app to the National Disaster Management Centre for 2010.
In September 2009, we starting building Umoya’s next software platform using staffroom (our school management app) as a base. We distilled the framework down to its core, and called it the ChirpFramework (a reference to staffroom’s original name – ChirpSchool). We chose PHP on the front-end so that our developers could rapidly deploy new features, and MySQL on the backend as we understand its performance characteristics in staffroom. In between, we have some bits holding things together.
Since November we’ve been actively developing uniti – our unified collaboration app for business and government. Here’s some more about it:
DISASTER management centres around the country will use software developed for the World Cup to coordinate a multi-disciplinary, multi-sectoral approach to expected xenophobic attacks and their consequences.
The need to manage the risk of disasters during the World Cup prompted the Western Cape Disaster Management Centre to ask Cape Town ICT company, Umoya (www.umoya.net), to devise a web-based platform that has since streamlined emergency communications country-wide.
Known as “uniti”, the software helped more than 350 disaster management workers, including command and control centres, to share real-time information that provided up-to-the minute readiness to deal with any eventuality during the World Cup said Peter Beretta of Umoya.
“The National Disaster Management Centre has procured the program for operations in all provinces, where it is being used by Disaster Management themselves, as well as elements from the police, Red Cross and other government entities,” said Beretta
Jackson Rikhotso, Western Cape provincial deputy director responsible for disaster preparedness, said the “uniti” software “helps us to get accurate information for proper decision making”.
“It contributed to the smooth running of the World Cup,” said Rikhotso.
Hailing Uniti as a “major milestone”, Mlungisi Gongqa from the national Disaster Management Centre in Pretoria said: “For the first time in the history of national disaster management we are able to network with everybody across the country, and improve response time.
“We can report and analyse situations more quickly.”
Gongqa said on Friday: “We are already plugged into Uniti in all the provinces so it will be easy for picking up xenophobic incidents as they arise from municipality to municipality and from province to province.
“We will use Uniti to log in every incident of xenophobia, and will follow up on every one of them, no matter how small.”
Andre Harrison, also of Umoya, said: “Although Uniti was developed for the World Cup, it has legs beyond that. To help the country cope with attacks and their consequences, the system can be developed further to make it more specific for the needs that arise out of the displacement of people. As these events occur, the software is able to develop in synch with what is happening.”
Beretta said Uniti facilitated communication between line functions like police, ambulance and fire services, and was already being used by some district and local municipalities, including the City of Cape Town.
The management of refugee camps was being developed to link all the camps and their managers, who could communicate with each other easily and quickly.
“Camps that have the Uniti software will, because of their integrated communication, be able to register the refugees in and out of camps, keep full biographical details of displaced persons, and provide accreditation details of NGOs, social workers and people working in the camps.
“The software also facilitates the transferring of people between camps. It is able to link family members in different camps. Part of the software is a web presence that allows details of missing persons to be published on the website.
uniti’s core is the thousands of contacts it provides of individuals in all areas able to respond when disaster threatens.
“A centralised address book of all relevant disaster management, police, emergency services, defence force and fire department staff makes it possible to reach the relevant person when necessary,” Beretta said.
“Your data base gives you the name of the relevant individuals, contact details and photographs of each. All you need do is click on ‘call’, and the program dials your landline or cell phone while calling the other person.”
The “uniti” system includes the ability to listen in on or join two-way radio talk groups, voice recording, situation report logs, a forum for text conversations, and a web intranet facility for posting alerts, updates and images. It also plots the recorded incidents using Google Maps.
“It is already being used daily for communication between Disaster Management and emergency services. The program allows everyone to know when and where anything is happening. We get several hundred entries a day from users.
“We have designed it so that it is mobile. You can access it from your cell phone or a laptop and it is rapidly-deployable anywhere because it is a hosted application and only requires access to the internet.”
It takes two hours to train someone to use the system, he said.
I’m speaking at DevDays 2010

Don’t sit on the bench, get to DevDays 2010 and score with us! Laduuuuuuma!!!!
It’s here! Microsoft DevDays is the premier developer event of the year and is all about learning, sharing and interacting with one another and having fun! DevDays 2010 brings you the best of current developer technologies, along with a preview of soon-to-be-released Microsoft tools and technologies.
I spoke at DevDays 2009 and had a blast. This year, I’ve been invited back to deliver two new talks:
- Getting started with Silverlight development
Interested in Silverlight development but not sure how to get started? Learn the basics of Silverlight application development – the tools and fundamental concepts behind Silverlight. Find out how to re-use your existing .NET development skills to build exciting new applications. This session will focus on the fundamentals of Silverlight including layout, data binding, data access and styling. - Open Source and Microsoft – Working Together
Microsoft AND Open Source? What?! Come and learn how Microsoft platform works with open source platforms like PHP and Java form the server room and into the cloud. Come and learn how Microsoft is opening up and supporting open source development and technologies.
Find out more, and register at http://www.microsoft.com/southafrica/devdays/default.mspx
Most importantly, entrance is free! Please join us for a wonderful day of learning and networking.
Buzz off, Facebook

In contrast to a week allegations of “internecine warfare among Microsoft’s established divisions and a dysfunctional corporate culture that squashes innovation” comes yet-another-innovative-Google-product, Google Buzz. Google Buzz is Mountain View’s first convincing entry into Social Networking, that isn’t limited to merely an API.
Gina Trappani, posting on Smarterware, says it all: “This ain’t no Orkut.”. Google are very serious about taking down Twitter and Facebook.
Jason Calacanis, posting to his email list this morning, made it clear that he sees this as a major challenge to facebook:
1. Google Buzz 1.0 is better than Facebook after six or seven years.
2. Facebook’s history is one filled with stealing other people’s
innovations and doing them better (i.e. Zuckerberg has stolen every
idea Evan Williams and the Twitter team have released). How ironic now
that Google has out “Facebooked” Facebook. Google3. Google has excellent privacy record and Facebook is a disaster.
Most folks do not trust Zuckerberg and Facebook any more because of
their privacy record (filled with lawsuits) and because they steal
every good idea they see (i.e. Twitter’s innovations and FourSquare’s
checking in).4. Google Buzz auto generates your network–this is MUCH better
process than Facebook’s.5. Google Buzz is way faster than the sluggish Facebook–this is a
HUGE advantage.6. Google Buzz puts relies and updates into your GMAIL as
threads–this is BRILLIANT and a HUGE advantage.
Perhaps Jason is spot on. It certainly does seem that Google has almost everything in place to flip the switch, and take over the Social Networking space.
- Status
Google: Buzz Status and GTalk Status
Facebook: Status - Photos
Google: Picassa,
Facebook: Photos - Videos
Google: YouTube,
Facebook: Videos - Email
Google: Gmail since 2004
Facebook: Project Titan (not yet released) - Instant Messaging
Google: GTalk with XMPP/Jabber
Facebook: Facebook Chat (XMPP just released) - Applications
Google: Not yet.
Facebook: Farmville, and a few others. - Media Sharing
Google: Google Reader, YouTube
Facebook: A mix of rss importing tools, and (possibly) the recently purchased FriendFeed.
The only problem, in the words of the imitable Reinhardt Zündorf, is: “This is lame, now I can’t find out which dog I am (via a five bullet questionnaire) and share it with my facebook friends”.
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
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!
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!
The Macworld Philnote
iLife, iWork, MacBookPro 17-inch, and iTunes is finally DRM-Free!
It was, by all accounts, one of the most anxiously anticipated Apple Keynotes in recent history. Just 24 hours prior, Steve Jobs had finally released a letter to the community detailing the reason for his dreadful weighloss over 2008, and subsequent absense from Macworld.
Opensourcing some stuff
Hey all
It has – yet again – been ages since I’ve posted. Sorry to keep you *all* waiting!
We here at OneWebStudios have had great fun writing a lot of code over the past year, in various languages, and so today I’m pleased to announce that we’re going to start opensourcing certain projects. This won’t happen overnight, nor will it include our major projects (ChirpSchool, etc) but it will include smaller projects that we’d love some help with. If you’re keen to join the OWS family, drop us a comment on this blog post.
In the meantime, watch www.timokeller.net/opensource for news.
Tim










