Location: Durbanville, Cape Town, South Africa
When I'm learning something new each day I'm at my most productive. As long as I have enough challenging work that I don't fall into a comfort zone I'll be happy.
I know my strengths and weaknesses and I'm good at teaching others to deal with tasks I've done too many times and grown bored of. Wouldn't you rather have someone who can hand off work to the juniors and support them instead of leaving your company because they're bored?
I started with computing when I repeatedly broke my father's pentium laptop, after mucking around on friends' 386s, and was told to learn how to fix it or stop using it. I quickly learned how to fix Windows 3.1 and DOS, then I got bored of that and taught myself Q-Basic, moved on to PHP, then to Java, and now I'm adding more to my toolbox each year with new languages, frameworks, and algorithms as they interest me. Python, Lisp, Clojure, Android, Arduino, concurrency, etc.
I did a B.Sc. Computer Science in the computational intelligence stream part-time because I'm passionate about the possibilities of computing. I've grown many products from a basic concept to a profitable level using agile development, so I'm not limited to technical work as I've always been heavily involved in the business side of companies.
Education
BSc Computational Intelligence majoring in Computer Science. Graduated in 2008.
Matriculated with exemption in 2000.
N3 Digital electronics
|
Skill |
Years |
Level (1-5) |
|
Java J2SE (1.1-1.6) |
11 |
5 |
|
Python |
9 |
4 |
|
Shell scripting (Bash) |
11 |
4 |
|
Java EE 5 |
3 |
4 |
|
Web applications (Javascript, various Java web frameworks, JQuery, Scriptaculous, etc.) |
11 |
5 |
|
HTML 4.0/XHTML |
11 |
5 |
|
CSS |
11 |
3 |
|
Servlets |
11 |
5 |
|
App servers (Glassfish, Jetty, Websphere) |
11 |
5 |
|
Agile development |
11 |
5 |
|
Systems analysis |
11 |
5 |
|
Business analysis |
11 |
5 |
|
Software design |
11 |
5 |
|
Software architecture |
11 |
5 |
|
Deployment automation |
11 |
5 |
|
PHP |
4 |
3 |
|
Javascript |
11 |
3 |
|
C++ |
4 |
2 |
|
C |
4 |
2 |
|
C# |
1 |
3 |
|
SQL and DBA (PostgreSQL, MySQL, Sybase, Oracle, SQL Server) |
11 |
5 |
|
Linux sysadmin (Slackware, Debian, Ubuntu, Redhat, SuSE) |
11 |
4 |
|
Mac OS X, Windows XP/7 |
11 |
4 |
|
Eclipse |
9 |
5 |
|
Networking (firewalls, protocols, etc.) |
11 |
3 |
|
Java Swing |
4 |
3 |
|
Version control (CVS, Subversion) |
11 |
4 |
|
Management of support/development teams |
7 |
4 |
|
Refactoring |
11 |
5 |
|
JPos ISO8583 |
1 |
4 |
|
Maven |
1 |
4 |
|
Ant |
11 |
4 |
Fundamo, a Visa company (October 2011 – Current)
Started as a senior developer in Professional Services to be groomed for upcoming software architect role. Developed various components to integrate core Fundamo EE transaction engine product with SMS, ISO8583 (banking), USSD, web channels, and other integration points. Mentored junior developers. Started deployment automation initiative after coding proof of concept in my own time. Refactored legacy code and tutored offshore team to stop code duplication. Created load testing tools and uncovered major concurrency bugs in core products, then helped product development team fix them. After only a day's warning I trained 30 Visa employees in Singapore to understand our product and transaction flows and how to support it. Created designs for offshore teams to code and reviewed finished code.
Super Integrity Technology (April 2003 – October 2011)
Software architect for Stem. Cashout, cashflow, ATM management, stock control, recipe management, task management, franchise management, etc. modules running on a custom-built ERP platform. I gathered the requirements, designed the architecture, wrote the framework, trained other programmers to add modules, built extra components and modules, and managed the initial support and development teams, all using an efficient iterative development methodology based on agile development ideas. Java with a proprietary data layer, Jetty-based servlet event framework, and an XMLC and Javascript presentation layer, all running on Ubuntu servers.
Key achievements:
Maintainable design. Platform is as flexible and maintainable as it was years ago. I always write software I'll want to work in in a few years and constantly refactor to keep it that way.
Fast legacy integration with many accounting, point of sale, EDI, etc. systems thanks to automated analysis, pattern discovery, and visualisation Python tools .
Rapid prototyping on a stable platform thanks to well-designed, re-usable components.
Automated deployment to 90+ Ubuntu servers with fail-safe database upgrades and data migration.
Many deployment options. Multiple stores on one server, single-store per server, different chains on one server with fine-grained permissions, etc.
Managed and developed product from concept to a profitable business by working closely with business-oriented partner.
Projects I've built outside of the Stem platform:
Java/Swing Point of sales system that communicates with Stem using a fail-over SOA (service-oriented architecture). Version 2.0 in C# was written by another lead developer and I've contributed to the project with code and design advice.
Wrote a Python monitoring system to keep track of 90+ servers, with a simple expert system to suggest manual fixes as needed.
Automatic PostgreSQL database schema upgrader in Python.
Automatic software deployment system to update 90+ servers in bash/Python.
Prototype Ruby on Rails company reputation management web application.
Java Play Framework ATM management web application.
Pick ’n Pay Information Systems (April 2002 - March 2003)
Worked on Java/Swing stocktake software for Accounts department
Wrote generic integration pipeline in Python to siphon data off legacy systems into Sybase database.
Worked as project lead for Merchandise department doing administration and development.
Obsidian Systems (Dec 2000 - March 2002):
Developed a Java server-side freight auction application with a PHP web-frontend. The application is designed to facilitate real-time negotiation of freight requirements whether by sea, land or air and to speed up the slow, manual negotiation process currently in use that employs telephones, faxes, and snail mail. Complex workflow handled with custom rule engine.
Developed a server-side PHP application framework as part of a team for use in an online flight booking system which integrated with legacy systems.
Developed a PHP ecommerce site for selling computer software.
Technical review of a multimedia course teaching the PHP programming language
Other small-scale projects (less than a month) included intranet development, consulting, etc.