Senior Software Engineer - Irmin
Tarides is an international software company with offices in Cambridge (UK), Paris (France) and Chennai (India), founded in 2018 by pioneers of systems and functional programming. We have a worldwide presence with collaborators working remotely from the US, Australia, Canada, India, Japan, and across Europe. We have a solid academic background with connections to the University of Cambridge, Inria, and IIT Madras. Our diverse team of 60+ people performs groundbreaking innovation, feature development, and crucial maintenance of OCaml-based projects.
Some of those projects include the OCaml Platform, a series of crucial tools for OCaml at an industrial scale; MirageOS, an operating system that constructs unikernels for secure, high-performance applications; Irmin, a library for building mergeable, branchable distributed data stores, and the highly complex and award-winning Multicore project which will become part of the mainline OCaml compiler.
Tarides was previously part of the Founder program of Station F in 2018, and was selected for the “Concours d’Innovation i-Lab” organised by the French Ministry of Higher Education, Research, and Innovation in partnership with Bpifrance. Tarides was also recognised during the FIC (International Cybersecurity Forum) 2020 fair, the leading European event on cybersecurity. These awards acknowledge the high quality of the solutions developed by Tarides, and emphasise the interest they have gained from the cybersecurity community.
In 2022, OCaml Labs (a spinout from the University of Cambridge) and Segfault Systems (a spinout from IIT-Madras) both joined Tarides, aligning towards our mission: empowering developers, communities and organisations to adopt OCaml as their primary programming experience by providing training, expertise and development services.
Irmin is an open-source OCaml library for building high-performance distributed data stores. It is based on distributed version-control systems (DVCs), which are extensively used in software development to enable developers to keep track of change provenance and expose modifications in the source code. Irmin applies DVC principles to large scale distributed data, and exposes similar functions to Git (clone, push, pull, branch, rebase). It is highly customizable: users can define their own types for the stored data; use custom storage layers (in memory, on disk, or in a remote Redis database); and define specific dynamic behaviours (e.g. merging strategies, or event-driven workflows based on event notifications).
As part of the OCaml ecosystem, Irmin comes with all the guarantees of the “security-by-design” approach. Moreover, Irmin can offer additional data protection through encryption and specialised data structures that can detect any data tampering. Lastly, an additional layer of security and safety is provided through compatibility with MirageOS, which also makes Irmin portable on a variety of systems, from browsers to embedded devices.
As a team, our mission is to provide a suite of independently-reusable components that form the backbone of portable high-performance database solutions in the OCaml ecosystem. Our current focus is on developing new features for the irmin-pack storage backend for Irmin, which is carefully designed and optimised for high-performance even in very big data deployments. This backend forms the storage subsystem of the Tezos blockchain – the main industrial user of Irmin.
To give a taste of our current work, our high-level goals for this year include:
Developing a garbage collection system for irmin-pack to automatically prune historic data (without impacting the regular performance of the node!);
We are looking for a Senior Software Engineer to take part in the development of Irmin. You will be part of the team who designs, builds and ships Irmin libraries and applications.
Contribute to PR reviews and to the general open-source process of the team.
Grow the adoption of Irmin by increasing its performance and usability. Raise and answer general questions for the community on Slack, Github, and on the OCaml forums.
Interface with the rest of the company and the wider community to work out a consistent architecture for the project and help define its evolution.
Proactively identify problems in the team’s codebases and work to improve those over time.
Continuously learn by proactively documenting themselves (research papers, blog posts, or any appropriate content) and experimenting code.
Mentor junior members of the team (or similar).
(You don't have to fill 100% of the qualifications to apply.)
MSc in Computer Science or equivalent degree/experience.
4+ years of experience as a software engineer working in functional programming languages or equivalent experience.
Good understanding of storage systems (file systems, distributed databases) and hands-on experience of managing databases in production environments.
Experience with building software developed in OCaml, Haskell, Rust or other type-safe languages or willingness to learn.
Good communication skills in English.
Experience communicating with a technical audience and managing relationships with project stakeholders.
Curious and solution-oriented mindset.
Experience of working within multidisciplinary teams.
UK, France, or remote.
What we offer
An opportunity to have an impact in a growing company and change the industry to use safer and better tools.
Nice offices in Paris and Cambridge.
Flexible working hours and the possibility to work remotely.
Very good health insurance for you and your familly, fully covered by Tarides.
Supportive team environment with experienced Technical and Team Leads.
The latest computer equipment of your choosing
If shortlisted, you will have three online interviews starting with a general interview, followed by a technical interview, and finally an interview with the team.
We welcome applications from people of all backgrounds. We strive to create a representative, inclusive and friendly team, because we know that different experiences, perspectives and backgrounds make for a better workplace.
There will be an onboarding process where we want the candidate to work in the Paris office for a couple of months. The process could be made flexible to accommodate personal constraints, but the goal is to spend time in-person with the team which is mostly based in Paris.