Software development“Nothing off the shelf does what we need.”

The products on the market almost fit, and the workarounds have become a job of their own. Or the system the last developer built still runs the business, nobody can change it, and everyone’s nervous to touch it.

I write software, from small internal tools up to full web applications: the code that connects one system to the next, software that lets an AI assistant do useful work in your own systems, and software that collects data from equipment in the field. I come to it from years of running servers, networks and security, including five years as infrastructure manager for a global cyber security company, so what I build is designed to run securely and keep running, not just to work on the day it’s shown off.

Software doesn’t need a site visit, so this is the work I do for businesses anywhere in Australia, not only in the Hills.

What I build

Web applications

Browser-based apps for your staff or your customers, that work on a phone as well as at a desk. Sign-in tied to the accounts you already have, an audit trail of who changed what, and updates that install themselves.

Business systems and internal tools

Stock, listings, bookings, jobs, schedules: the system that replaces the spreadsheet and the whiteboard, with details captured automatically wherever they can be, so nobody types them in.

Integrations and APIs

Code that connects systems never designed to talk to each other: accounting, email marketing, e-learning, marketplaces, booking feeds, Microsoft 365 and Windows servers. More on the system integration page.

AI connected to your own systems

Connectors that let an AI assistant look things up and make changes in your wiki, stock list or job system, within limits you set: read-only until you say otherwise, a preview of every change, and a confirmation before anything is deleted. More under practical AI.

Monitoring, data collection and alerts

Software that watches things for you: equipment at a remote site, a supplier’s website, your backups, the link between two offices. It reports in, keeps its data through a dropped connection, and sends an alert when something needs a person.

Software that talks to equipment

Small field devices, sensors, radios and GPS, read directly and streamed to a dashboard or a map in real time. Useful anywhere the thing you need to know about is out on the property, not on a screen.

Taking over software someone else built

The system the last developer left behind. I get it building from source again, review it for security problems, fix what’s unsafe without breaking what people rely on, and write the documentation that was never written.

Tools for IT and infrastructure

Admin consoles, automation and reporting for the systems IT people look after: Windows servers, device setup, patching, backups. The same jobs done the same way every time, with a record of what happened.

How I build it

The parts of software nobody sees are the parts that decide whether it lasts. This is how every job is done, small or large.

Secure from the start

Secrets kept out of the code, sign-in with only the access each person needs, everything a visitor sends checked before it’s used, and a record of who did what. Years of locking down servers and networks shape how the software is written.

Built to run, not just to demo

I plan where it will live, how it’s deployed, how it’s backed up, and what happens when something it depends on goes down. Software that falls over at 2am isn’t finished.

Tested where it matters

Automated tests on the logic that would hurt if it broke, and checks against the real systems it talks to, not only against a mock-up of them.

Careful with real data

A dry run and a preview before anything changes in bulk, a guard in front of anything that can’t be undone, and a backup taken before a migration starts.

Released the same way every time

Every change is built, checked and released by an automated pipeline, so an update is routine rather than an event, and going back to the previous version is a known step.

Written down and yours

A plan before the first line of code, notes as it goes, and documentation at handover. The code lives in a repository you control, written so another developer could pick it up.

What I build with

Chosen for each job, not out of habit. The simplest thing that’s reliable usually wins.

Languages
  • TypeScript
  • JavaScript
  • C#
  • Python
  • PHP
  • PowerShell
  • Bash
  • SQL
  • Kotlin
Applications
  • React
  • Node.js
  • Express
  • ASP.NET Core
  • FastAPI
  • Flask
  • Angular
  • Android (Jetpack Compose)
Data
  • PostgreSQL
  • MySQL
  • MariaDB
  • SQLite
Running it
  • Linux
  • Windows Server
  • Docker
  • Podman
  • nginx
  • Cloudflare
  • GitLab CI
  • GitHub Actions
  • Ansible
Connecting it
  • REST and GraphQL APIs
  • webhooks
  • Microsoft 365
  • PowerShell remoting
  • Model Context Protocol (MCP)
  • OAuth and single sign-on
Out in the field
  • Raspberry Pi
  • software-defined radio
  • GPS
  • serial devices
  • maps (Leaflet, OpenStreetMap)

Open source

Some of what I build is published as open source under Leahy & Co, so you can read the code and see how I work before you hire me.

Leahy & Co on GitHub

How a job usually runs

  1. A free chat about what the software needs to do, and what it’s costing you not to have it.

  2. Where it isn’t clear the job can be done, a short feasibility check first: tested against the real systems involved, with a written go or no-go before you commit to a build.

  3. A written quote for a first version that’s useful on its own, small enough to be in use quickly.

  4. Built in steps you can try as it goes, tested, and released through an automated pipeline.

  5. Handover: the code in a repository you control, the documentation, and notes another developer could follow.

Jobs that touched this

Questions people ask

Wouldn’t an off-the-shelf product do it?

Sometimes, and if one fits I’ll say so before writing any code. Custom software makes sense when your way of working is the point, when the products on the market fight it, or when one would cost more and still not fit.

Can you take over software another developer built?

Yes. I’ll get it building from source, review its security, fix what’s unsafe without breaking what people rely on, and write the documentation that’s missing. Then you decide what happens next, with a clear picture of what you’ve got.

Do you work with businesses outside the Hills?

For software, yes. It doesn’t need a site visit, so I work with businesses anywhere in Australia, by video call, email and a shared repository.

Do you build mobile apps?

When a phone app genuinely beats a web app, yes, for Android. Most of the time a web app that works well on a phone is quicker to build, cheaper to change, and works on iPhones too, so that’s usually where I’d start.

Who owns what you build?

The code and the notes are handed over at the end of the job, in a repository you control.

Where does it run?

Wherever suits the job: on your own server or computers, in a cloud account in your name, or inside Microsoft 365. I’ll recommend the simplest option that’s reliable and secure.

What happens when it needs changing?

Get in touch and I’ll quote the change. Because it’s documented and tested, changes are routine, and another developer could make them too.

Tell me what’s going on

A free chat about the problem, then a written quote before any work starts.