Consulting

Contract work from New Zealand

I take contract work in compilers, chip design, legacy modernisation, and the kind of software that nobody else wants to touch.

Already know me? Skip to the practicalities ↓


What I Can Do

Compilers and Toolchains

I build compilers from specifications. JOVIAL from MIL-STD-1589C, Fortran 77 from the ANSI standard, CUDA from the AMD ISA reference. If a spec exists I will read it, and if it does not I will find the closest thing and work from that. From an instruction set reference you get an assembler, a matching disassembler, and a backend that emits real machine code for your part, whether that part is a 1974 mainframe, a modern GPU, or something you taped out last month. I wrote a GPU compiler that takes CUDA, HIP and Triton and targets AMD, NVIDIA, Tenstorrent and plain CPUs, and TTAS, the only standalone assembler for Tenstorrent's Tensix engine. Language servers too, for languages that predate the concept of syntax highlighting.

Chip Design for Hardware That No Longer Exists

If a processor went out of production thirty years ago and your supply chain is running on whatever stock is left in a warehouse, I can take the original specification, implement it in SystemVerilog, synthesise it to open PDK silicon with Takahe, place and route through OpenROAD, and hand you a fabrication-ready layout. The Voyager FDS flight computer fits in 58 gates on SKY130. The Minuteman guidance computer fits in 231. Five of these so far, across four foundry targets, on a pipeline that is open source and vendor independent. Relevant to defence, aerospace, museums, and anyone maintaining systems that depend on chips nobody makes anymore.

Legacy Modernisation

I modernised the SLATEC Common Mathematical Library, a 168,000-line Fortran 77 codebase from the US national laboratories that quietly underpins half of scientific computing. All 8,296 GOTOs eliminated, control flow restructured into modern Fortran 2018, results verified against authentic 1966 IBM FORTRAN G compilers on emulated System/360 hardware, because you cannot verify faithfulness to the original mathematics without testing on the original arithmetic. I have done the same commercially, extracting business logic from spreadsheet macros running critical operations and resurrecting codebases that outlived the people who wrote them. Core contributor to z390, and I built MPB, the package manager for mainframe languages.

Tandem NonStop

I work on NonStop day to day, TACL and COBOL and reading TAL. If you are running NonStop and need tooling that does not exist, a parser, a language server, a migration path, or just someone who can read TAL and tell you what it actually does, that is a conversation worth having. The overlap between people who operate these systems and people who build compilers for them is very small.

One carve-out, stated up front so nobody wastes their time. I have a non-compete with my employer, so I cannot take work with New Zealand payments companies. Every other sector running NonStop, and everywhere outside New Zealand, is open.

Obscure and Undocumented Systems

Burroughs Extended ALGOL on Unisys ClearPath MCP, Tandem TAL and TCF, IBM assembler back to System/360, HAL/S from the Shuttle programme, JOVIAL from the US Air Force, CMS-2 from the US Navy, CORAL 66 from the British military, CHILL from the ITU. I recently wrote a string handling library for Burroughs ALGOL because the Unisys people have been writing their own trim procedures since the 1960s. If your system runs on a language without a Wikipedia article, or the documentation is a photocopied manual from 1974 scanned at an angle, or the only person who understood it retired fifteen years ago, get in touch. I will find the documentation, read it, and build whatever you need, whether that is a parser, a language server, a migration path, or just someone who can tell you what the code actually does. That is genuinely what I enjoy doing the most.


Recent Work

An embedded fintech company needed an algorithm at the core of their product. I built it, and they have since come back to extend it to parse ISO 20022, the standard SWIFT payments are migrating to. That is the pattern I look for, the first piece of work earning the second.

I also contribute to the OCaml compiler's native backend, teaching it to emit the single hardware instructions it currently declines, across five architectures. The OCaml Foundation now sponsors that work, and they approached me about it.


What I'm Not the Right Person For

Web apps, mobile, front-end, anything where the hard part is the interface. This is not me being precious about it. I genuinely do not know how to do that well, and the people who do are properly good at something I am not.

If what you need is a thing actual humans will use every day, hire a designer and a UI/UX person. It is amazing what they can achieve, and I would only be in the way. I would rather point you at the right person than take your money and hand you something mediocre.


How to Approach Me

I work with clients directly, and I need to know who you are. If you are an intermediary, I need to know who the end client is before anything else happens. That one is not a preference. I do work with governments, and taking a contract for an undisclosed company is a security and conflict-of-interest problem I cannot sign up to.

I am glad to talk through a real problem, look at actual code, or have a technical conversation of whatever depth you like. What I will not do is sit a quiz before I know the scope, the client, and what the work actually is. My published work and the patches merged into several upstream projects are a better competency signal than a timed test, and they are all public.

AI and ML work

I am glad to build ML systems that do a specific, knowable thing. A model that spots patterns in tissue samples, classifies signals, or catches what the eye misses at scale, that is real engineering and I am interested.

What I do not take on is expert-data work, producing training material for a model whose purpose I am not told, usually through an intermediary who cannot name the client. This is not an anti-LLM position, I use them and I have written about exactly where. No judgement on anyone doing that work either. It is simply that I would rather build the model than be the dataset, and I would like to know what the thing I am helping to make is actually for.


How I Work

Primary sources. If there is a specification, I read it. If there is an architecture manual, I implement from it. If the documentation is in a filing cabinet in Kansas, I send an email and wait for the renovations to finish.

I am one person. You talk to me, I do the work. I am selective about what I take on, but what I take on gets my full attention.

On the commercial work I have delivered on time and under budget, and the clients have come back with new scopes. That is the whole of my marketing.

I have a full-time job. I run production systems on Tandem NonStop, which means TACL, COBOL and reading TAL five days a week. So I am not taking your project because I need the money, I am taking it because the problem is worth solving. That means I say no to most things, and what I do say yes to gets finished properly. Selective, not casual.


Practicalities

Availability. My job is a four-on, four-off roster, so there is more time here than a full-time role usually implies. Four days off in every eight, in whole blocks rather than scraps of evening, and predictable enough to plan around. If you need to know whether I have the hours, I do.

Rates. On request. I prefer a fixed price on a scoped deliverable rather than an hourly rate, since it is easier for you to approve and it means you are paying for the thing rather than for the clock.

Provenance. I need to know who the end client is. Discretion is fine, I will sign an NDA and keep quiet about whatever needs keeping quiet, but I do not work for unnamed clients through intermediaries. The environments I work in make that non-negotiable rather than a preference.

Deliverables. Whatever you asked for. If that is a compiler, you get a compiler. If it is a report telling you what forty thousand lines of PL/I actually do, you get the report. There is no standard package.

Ownership. Most likely C99, or whatever language you need it in. You get the source, the toolchain is open, and nothing depends on a proprietary runtime or on me still being around in five years. Being one person should not mean you inherit a black box.

IP. Anything I build for you is yours. It does not appear on my GitHub, it does not turn up in another client's project, and it is not open-sourced unless you have expressly said you want it to be.

LLMs. Your code and your data do not go through a chatbot. The design and the implementation are mine. Where an LLM or an ML model genuinely is the right tool, large-scale data analysis or consolidation being the obvious case, I will use one and tell you exactly where and how. If you would rather I did not, say so and I won't. How I use LLMs.


Charities and Non-Profits

If you work in the charity space and need help, please reach out. I actively volunteer my expertise to a few organisations already. Museums, archives, educational institutions, healthcare charities, community religious organisations, humanitarian organisations. Depending on the ask, I may be able to help for free or at reduced cost.

Those language servers exist partly because syntax highlighting is a human right, even for languages that predate it.


Get in Touch

zanehambly@gmail.com

GitHub