Consulting

Software engineering and open-source consulting

I help individuals and teams build, debug, modernise, and untangle systems software. My specialties are projects involving Linux, embedded systems, hardware, networking, and open-source infrastructure.

Start a conversation

Systems engineering

Rust, C and C++; Linux/Unix internals; IPC; networking; performance and concurrency.

What this includes
  • Low-level developmentSystems components and libraries in Rust, C, and C++.
  • Linux & Unix internalsProcesses, filesystems, services, permissions, and operating-system interfaces.
  • IPC & networkingLocal and distributed communication, protocol design, and integration.
  • Performance & concurrencyProfiling, contention analysis, memory behaviour, and concurrent design.

Embedded & hardware integration

Linux-connected devices, hardware interfaces, protocols, IoT, firmware, and the awkward boundaries between hardware, software, and firmware.

What this includes
  • Linux-connected devicesHost software, device services, provisioning, and reliable deployment.
  • Hardware interfacesUSB, serial, GPIO, buses, and custom device communication.
  • Firmware integrationDefining and debugging the contract between firmware and host software.
  • Protocols & IoTDevice protocols, networked hardware, telemetry, and control systems.

Open-source development

Feature development, maintenance, architectural work, upstreaming, build/release infrastructure, and getting neglected-but-important software back into shape.

What this includes
  • Feature developmentDesigning, implementing, testing, and documenting new capabilities.
  • MaintenanceTriaging issues, reducing technical debt, and restoring neglected projects.
  • UpstreamingPreparing focused contributions and working effectively with maintainers.
  • Build & release infrastructurePortable builds, continuous integration, packaging, and dependable releases.

Architecture & modernisation

Helping with the “this thing has existed for twelve years and nobody is quite sure how to change it safely” class of problem.

What this includes
  • System archaeologyReconstructing intent, dependencies, and undocumented constraints.
  • Architecture reviewFinding boundaries, risks, bottlenecks, and practical opportunities for change.
  • Migration planningBreaking risky rewrites into staged, testable improvements.
  • Technical debt reductionMaking old systems easier to understand, operate, and extend.

Debugging & investigation

The horrible bugs. Especially the horrible bugs. Race conditions, integration failures, performance problems, and other things where the obvious answer has already failed.

What this includes
  • Race conditionsIntermittent failures, deadlocks, timing problems, and concurrency hazards.
  • Integration failuresProblems spanning processes, platforms, devices, APIs, and ownership boundaries.
  • Performance problemsMeasurement-led investigation of latency, throughput, CPU, and memory use.
  • Root-cause analysisReproducers, instrumentation, evidence, and a clear explanation of what failed.

Reverse engineering

I reverse engineer undocumented software and device interfaces, turning opaque systems into something understandable, documentable, and usable.

What this includes
  • USB devices & proprietary protocolsCapturing, decoding, and documenting device communication and behaviour.
  • Protocol & file-format analysisUnderstanding undocumented network protocols, data formats, and APIs.
  • Binary & software analysisInvestigating undocumented or legacy software to determine how it actually works.
  • Compatible implementationsBuilding replacement clients, libraries, integrations, and interoperability layers.
  • Tooling & documentationProducing practical tools and clear documentation from the results.
  • Behavioural analysisTesting black-box systems and mapping edge cases when source code is unavailable.

My standard consulting rate starts at $100 USD/hour. Reverse engineering work is priced higher, based on the amount of work involved.

I’m also happy to discuss fixed-price projects, retainers, or other arrangements where they make sense. Pricing depends on the scope, duration, and requirements of the engagement.

Have an open-source or public-interest project with a constrained budget? Feel free to ask.

Discuss a project