Design and build new software

We take projects from requirements and architecture through implementation and delivery. Our work includes embedded firmware, microservices, and the interfaces that connect devices, services, and users. We bring experience from scientific and technical software where correctness, performance, and resource constraints matter.

Modernise existing systems

We help teams understand and improve established codebases in C, C++, Python, and Rust. Depending on the project, that can mean targeted refactoring, new features, build system updates, bindings that expose C, C++, or Fortran code to Python, or a staged migration to Rust or modern C++. We identify behaviour that must be preserved and use appropriate tests and measurements to guide changes.

Engineering support

We provide architecture and code reviews, performance investigation, static and dynamic analysis, testing and benchmarking, and development workflow setup. This includes version control, continuous integration, and build systems that help a team maintain its software over time.

AI use is your decision

We use AI tools when clients choose that approach and it fits the project. They can speed up code exploration, drafting, and repetitive changes. Every change still needs human technical judgment, critical review, and appropriate verification. We can also work without AI tools. We agree with each client whether and how AI tools may be used, including how project code and data are handled.

See selected work Discuss a project