Software developer

Kheagen Haskins

Kheagen Haskins holding a bulldog puppy

I am a self-taught software developer. A psychology degree led me into teaching, and teaching coding led me into software development. Since 2025 I have been the only developer at IT Anywhere.

Languages
  • Java 5/5
  • SQL 5/5
  • HTML and CSS 4/5
  • JavaScript 3/5
  • Rust 3/5
  • Python 1/5

Experience

  1. IT Anywhere (Pty) Ltd

    Fullstack Developer · to present

    IT Anywhere is a managed IT services provider. I built its reporting engine, which gives every client a monthly report on the health and security of their IT.

    One half of the engine syncs data from eight sources into one database. The other half reads that data back out and turns it into configurable reports.

    1. 8 data sources Ticketing, monitoring, backups, security training
    2. 1 database SQL Server, refreshed every 4 hours
    3. Client reports PDF and Excel, every month

    The engine runs in production, and I made all 20 of its recorded design decisions. I designed each layer myself:

    • Database. I designed the schema and administer the SQL Server database.
    • Integrations. I built the API layers that read ticketing and monitoring over REST, security training over GraphQL, backups over JSON-RPC and the data warehouse over JDBC.
    • Domain model. I designed the business objects, which stay stable when the database changes.
    • Reports. I design the PDF reports in HTML and CSS.
    • Web. I built the web page that configures each report.

    Alongside the engine, I am the system administrator for the company's service desk system. I configure its ticket types and workflows, and take on tickets that need a developer, such as website migrations and PHP debugging. During one migration I found a hacked website and cleaned it up.

  2. Reddford House Northcliff

    Coding, robotics and IT teacher · to

    I taught coding and robotics to primary school children, using LEGO Mindstorms EV3 robots and Swift Playgrounds. When Covid moved lessons online, I taught myself web development and taught HTML and CSS to Grade 4s.

    From 2021 I also taught IEB Information Technology to Grades 10 to 12. I taught Java, wrote a textbook for the course, and helped matric students build their final-year projects.

  3. Dynamic Marketing

    Junior sales representative · to

    I sold TomTom GPS devices to shoppers in Makro, a large retail chain, approaching each person cold. The job built my confidence in talking to strangers and persuading them.

Skills

Java

The reporting engine is written in framework-free Java 25, split into modules that expose only their public API.

  • Java 25
  • JPMS modules
  • Records and sealed types
  • Virtual threads
  • JUnit 5
  • Mockito
Data

I wrote the code that generates the engine's SQL and protects it from SQL injection. The data sync loads only new and changed rows, and recovers when a database connection drops.

  • SQL Server
  • Data warehousing
  • JDBC
  • HikariCP
APIs

Each vendor connection keeps to that vendor's rate limits and retries failed calls with growing delays. Login tokens refresh safely while many calls run at once.

  • REST
  • GraphQL
  • JSON-RPC
  • OAuth 2.0
Reports and apps

The engine produces Excel workbooks and PDF reports with charts. Its apps run on Windows as standalone programs that bundle their own Java runtime.

  • OpenHTMLToPDF
  • Apache POI
  • JavaFX
  • Undertow
  • jpackage
Tooling

I write command-line tools in Rust for the jobs around a build that are slow by hand or easy to get wrong. One of them counts a project's lines of code, leaving out comments and blank lines, so the figure describes the code that was written rather than the size of the files.

The others follow the same pattern. They rebuild a test database from the schema files fast enough for the integration tests to call before every run, bring Docker back when Windows sleep leaves it stuck, keep version tags across the source in step, and build every module in dependency order.

Every Maven module takes its dependency versions from one shared bill of materials (BOM). A module's build fails when its test coverage drops below a set minimum, and Checkstyle, PMD and Spotless check the code's style. SQL Server runs in Docker for development and testing.

  • Rust
  • Python
  • Maven
  • JaCoCo
  • Checkstyle
  • PMD
  • Spotless
  • Docker
  • Git

Projects

  • HackMaster

    2024 · View on GitHub

    HackMaster recreates the terminal hacking puzzle from the Fallout 3 and 4 video games. The player picks a password from a screen of words, and each wrong guess reports how many letters are in the right place.

    Its screens update themselves whenever the game state changes, and it comes with a Windows installer.

    • JavaFX
    • MVC
    • Observer pattern

Education

  1. Self-taught programming

    2020 to present · Certificates

    I learnt to program through my teaching, my development work and my own projects. I completed most of Codecademy's Java courses, studied for Oracle's Java OCP exam, and relearnt maths on Brilliant.

    My side projects moved from procedural noise to a small physics engine, and from there to entity component system (ECS) architecture.

  2. Bachelor of Arts

    to

    A three-year BA at Varsity College Sandton (now Emeris), majoring in Psychology and Communication Science.

  3. Matric

    2014

    I earned my National Senior Certificate at Maragon Private Schools (now Crawford Ruimsig).

Hobbies

  • Chess

    I have played since I was young, without ever taking it too seriously. At Reddford House I was the chess coach for every age group, which gave me games against some very talented students. I still play casually with anyone willing to sit down for one.

  • Maths

    Maths interested me only after school, when I took it up again as a toolkit for solving problems. I use the Brilliant app to stay sharp and to learn new ideas, then put them to work in my own projects, especially the ones about computer graphics such as my noise generator.

  • Reading

    Reading is almost the wrong name for this one, because I read to learn rather than for a story. I have read maybe two novels in my life. What I enjoy is gathering information, and as a programmer nearly everything I learn is useful straight away, so reading is part of how I keep growing.

    Currently Introduction to the Theory of Computation by Michael Sipser.