Resume
- markkarpov92@gmail.com
- https://github.com/mrkkrp
- https://www.linkedin.com/in/mark-karpov-73789914a/
- PDF version of the resume
Summary
I am a software engineer with a focus on functional programming and build systems. My work in Haskell spans more than a decade and has produced widely used, recognized open source projects such as Ormolu and Megaparsec. In parallel, as an expert in Bazel and Nix I have helped many clients ranging from startups to international giants make their builds hermetic, reproducible, and fast.
Professional experience
- 2025–2026. Senior principal scalable builds engineer at Tweag. The later part of my time at Tweag was dedicated to scalable build systems, Bazel in particular. I led about five different engagements, including helping to design a massive Bazel migration for an automotive giant. I was also a manager, at first with 8 reports. Later on, in the period from February to July 2026, I led the Scalable Builds department of Tweag. I devised its strategy and oversaw internal initiatives, delivery, hiring, and client relationships.
- 2023–2025. Principal consultant at Tweag. Most of this period was dedicated to Bazel consulting for a well-known German automotive company. The work first targeted build-time improvements, then moved on to novel, non-trivial integrations between Bazel and CTC++, and later Coverity.
- 2019–2023. Senior software engineer at Tweag in Paris, France, and remote. Haskell and OCaml consulting for clients in fintech, later moving into Bazel.
- 2018–2019. Software engineer at Tweag (remote). Bazel and Haskell consulting.
- 2016–2017. Tier 2 Haskell developer at Stack Builders (remote). Haskell consulting for a number of diverse clients.
Open source
I have been active in open source for over a decade. My most significant contributions to date are in the Haskell ecosystem (the full list is at https://markkarpov.com/oss.html):
- Ormolu—The de-facto standard formatter for Haskell source code.
- Megaparsec—A widely used, industrial-strength monadic parser combinator library.
- Req—An HTTP client library.
Writing
I have done a lot of technical writing, both on my own and for Tweag, where I also served as a blog editor for https://www.tweag.io/blog.
- Much of my recent writing is about Bazel, for example “Integrating Coverity static analysis with Bazel” and “How to keep a Bazel project hermetic”. The full list of posts is at https://markkarpov.com/posts.html.
- I have also authored in-depth tutorials, most notably the Megaparsec tutorial; see https://markkarpov.com/learn-haskell.html for more.
Languages
I speak Russian (native), English (fluent), and French (fluent).
Education
- 2009–2014—Polzunov Altai State Technical University. Engineer degree in informational technology and measuring engineering.