Java · SQL · Backend systems

Kheagen Haskins

Kheagen Haskins holding a bulldog puppy

Software developer working in Java, SQL and backend systems. I am the only developer at a managed IT services provider, where I designed and built the reporting engine that produces every client's monthly report. Teaching is how I got here. A psychology degree led me into it, and teaching Java led me into building software full time.

Languages
Primary
Java, SQL Server
Working knowledge
HTML, CSS, JavaScript, Rust
Exposure
Python

Experience

  1. IT Anywhere (Pty) Ltd

    Fullstack Developer · to present

    I am the only developer at IT Anywhere, a managed IT services provider. I designed and built its reporting engine and made all 20 of its recorded design decisions. The engine runs in production, covering about 30 clients and roughly 6,000 devices, from laptops and servers to printers and switches.

    • 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 and Excel reports, laying the PDFs out in HTML and CSS.
    • Web. I built the web page that configures each report.

    The company had reported through a vendor's tool until that tool lost support. Its replacement arrived early and reached less than half the data the old reports carried. Building our own engine put the company's data back in its own hands, so it can shape its reports however it wants.

    One half of the engine syncs data from eight systems 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, 6,000 devices, refreshed every 4 hours
    3. Client reports PDF and Excel for about 30 clients, monthly

    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. On one of those migrations I upgraded a client's WordPress site to a current version of PHP and found unfamiliar files and altered settings across it. The site had gone unpatched for a long time and had been compromised, so I cleaned it out before the migration went ahead.

  2. Reddford House Northcliff

    Coding, robotics and IT teacher · to

    From 2021 I taught IEB Information Technology to Grades 10 to 12, a syllabus taught in Java. I wrote a textbook for the course and coached matric students through their final-year projects, which meant explaining design, debugging and program structure to people meeting them for the first time.

    I joined as a coding and robotics teacher for 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.

  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 engine is a set of libraries that its apps call, rather than a framework that calls them. It runs on the standard Java APIs and small, focused libraries, with no Spring and no dependency-injection container, so its modules stay sealed under JPMS and reflection stays out of the runtime.

Dependencies arrive through constructors as interfaces. Tests pass in their own doubles, each app ships as a jlink image with its own bundled runtime, and a stack trace reads straight through from the call to the failure.

  • Java 25
  • Framework-free
  • 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, such as one that counts a project's lines of code, leaving out comments and blank lines.

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 so that I could use it as a tool.

    Each project then led into the next. Procedural noise took me into the maths behind it, the maths took me into writing a small physics engine, and the engine took me into entity component system architecture, where the way data is laid out drives the design.

  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).

Extras

Coding philosophy

How I choose tools, why my systems keep frameworks at arm's length, and how I work with AI.

Hobbies

Outside work I write code for myself, play chess, study mathematics and read computer science.