Fundamentals first
I like knowing what happens beneath the abstraction: how a string sits in memory, why a hash table is fast, and what a query costs the database. When something breaks, that knowledge turns guessing into diagnosis.
Open to software developer roles
I build software from first principles. I'm confident in my work because I'm obsessed with fundamentals: how memory, data and algorithms actually behave. I break hard problems down into small, well-named pieces that are easy to reason about, test and change.
01 / Approach
Frameworks and languages change. The ideas underneath them don't. I put my effort into the parts that last, and that's why I can learn any tool a team uses quickly.
I like knowing what happens beneath the abstraction: how a string sits in memory, why a hash table is fast, and what a query costs the database. When something breaks, that knowledge turns guessing into diagnosis.
A good abstraction lets you forget the details safely. I design interfaces that hide complexity rather than leak it, and I avoid abstracting too early, before the problem has shown its real shape.
Every large problem is a set of small ones that haven't been named yet. I break work into pieces that each do one thing, can be tested on their own, and fit back together cleanly.
I've taken client projects from first conversation to a live domain more than ten times. Deploying, maintaining and supporting real software taught me that "done" means working in production for real users.
# A hard problem, broken into small, testable pieces
def launch_client_site(brief):
requirements = clarify(brief) # what problem are we solving?
design = model(requirements) # data, structure, flows
build = implement(design) # one responsibility per unit
verify(build, requirements) # test against the brief
return deploy(build) # live, monitored, maintained
02 / Harvard CS50x
CS50x is Harvard University's introduction to the intellectual enterprises of computer science and the art of programming. It is known around the world for its rigour. Each week has a long lecture followed by a demanding problem set, and you earn the certificate by completing every problem set, passing automated correctness and style checks, and building an original final project.
Representing information in binary, ASCII, Unicode and RGB. Algorithms, pseudocode, functions, conditionals, loops and abstraction, built up from first principles in Scratch.
Types, operators, control flow and the command line. How source code becomes machine code: preprocessing, compiling, assembling and linking. Strings as arrays of characters, command-line arguments, and classic ciphers.
Mario · Credit (Luhn's algorithm) · Readability · Caesar · Substitution
Linear and binary search, then selection, bubble and merge sort. Big O, Ω and Θ notation, and recursion. Choosing an algorithm by what it costs, not by habit.
Sort · Plurality · Runoff · Tideman (graph-based ranked voting)
Pointers, addresses and hexadecimal. Stack vs heap, malloc and free, memory leaks and debugging with Valgrind. File I/O and reading raw bytes.
Volume · Filter (image processing on raw BMP pixels) · Recover (JPEG recovery from a forensic image)
Building linked lists, stacks, queues, binary search trees, hash tables and tries by hand in C, and weighing time against memory for each.
Inheritance · Speller (a fast, memory-safe hash-table spell checker)
Moving to a high-level language and re-solving earlier problems with it. Seeing what abstraction gives you, and what it costs.
Sentimental re-implementations · DNA (STR profile matching)
Relational databases, schema design, primary and foreign keys, joins, indexes, race conditions and SQL injection.
Songs · Movies · Fiftyville (a mystery solved purely in SQL)
The internet, TCP/IP, DNS and HTTP. HTML, CSS and JavaScript, the DOM and events. Then server-side apps in Python with Flask: routing, templates, sessions, cookies and authentication.
Homepage · Trivia · Birthdays · Finance (a full-stack stock-trading web app)
Passwords, hashing, encryption and the ideas behind modern AI. The course ends with a self-directed final project, designed and built from scratch.
03 / Credentials
Harvard University
Computer science fundamentals in C, Python, SQL, HTML, CSS and JavaScript, from memory management and algorithms through to full-stack web development with Flask.
See what it covers →University of Johannesburg, with FNB
Building and running ventures in a digital economy: how a business turns technology into value for customers. It means I understand the commercial reasons behind the software I write, not only the code.
Industry
I run a studio that designs, builds and deploys websites for clients. I've handled every stage myself: requirements, design, development, hosting and ongoing support.
bluemondaystudios.co.za ↗
04 / Work
I founded Blue Monday Studios to build fast, dependable websites for South African businesses. More than ten client sites are now live, each taken from brief to production and kept running after launch.
05 / Toolkit
06 / Contact
I'm looking for software developer roles in Johannesburg, Pretoria, Durban and Cape Town, on-site, hybrid or remote. If your team values people who understand how things work underneath, I'd like to talk.