Command-line tool
GHA
Review pull requests, inspect branches, and prepare GitHub releases from the terminal. GHA gives you readable summaries and offers JSON output for scripts and coding agents.
Principal software engineer
I’ve spent over 20 years in software development, from VB.NET and C# to Python and Ruby on Rails. I build open-source tools through Metcalfe Software and write about reviewing code and working with AI.
Gauteng, South Africa
$ gha prs --limit 10
Pull Requests (2 returned)
#42 Fix login redirect
[open] by alex
#57 Add CSV export
[open] by sam
$ gha review 42
Review readiness:
Mergeable: true
CI: failure
Review threads: none
Recommended next actions:
fix_ci: one or more CI checks have failed
$ gha branches cleanup --base main
Cleanup candidates
Base: main
Rule: branch tip is reachable from the base; no branches are deleted.
Candidates:
fix/empty-state (tip reachable from base)
Excluded:
feature/csv-export (not reachable from base)
When AI got good enough to help me build a whole feature, code and tests included, my world opened up. I could spend more time on system design and architecture, the work I enjoy most and do best. I could bring more ambitious ideas to life.
Command-line tool
Review pull requests, inspect branches, and prepare GitHub releases from the terminal. GHA gives you readable summaries and offers JSON output for scripts and coding agents.
KDE Plasma 6 app
Search the global keyboard shortcuts configured on your KDE Plasma desktop to see which actions they trigger and which keys are assigned.
Upstream contribution
Groma scans source code to build an architecture map that you can edit and keep in Git. I contributed to its Ruby and Rails scanner.
I’ve always considered myself an average coder. Complex algorithms were never my strong suit. Give me a complicated problem, though, and I can usually spot what’s causing it. From there, I break it into smaller pieces and write code that’s efficient and easy to maintain. Keeping it simple is how I’ve made it this far in software.
Becoming a team lead gave me another way to use that skill. I’d break a complicated problem into smaller tickets and write up what each ticket needed to accomplish. The developers could then take it from there.
Principal Software Engineer
Jul 2025 – present
I lead the rewrite of our primary application. I standardised the project on Ruby on Rails and added RuboCop to CI.
Senior Software Engineer → Development Team Lead
May 2022 – Jul 2025
I owned the Rails application used by the collections team and cut the time it took to assign customers to agents from eight hours to five minutes.
Senior Software Engineer → Product Development Manager
May 2016 – Apr 2022
I took over the flagship product as its sole developer, then built and led a team of four senior developers. We improved the product while cutting the number of support issues.
I write about AI-assisted software development, including how I review the code that agents produce.
Get in touch about software engineering or technical leadership roles, my open-source projects, or my writing.