I am a software engineer who applies the principles of functional programming to solve real-world problems. I have been working as a consultant in the domain of functional programming, reproducible build systems, and Nix for more than 7 years. My personal projects include high-profile Haskell libraries, tutorials, and a technical blog.
- January 14, 2019–present. Senior software engineer (level assigned: principal consultant) at Tweag, Paris, France. Tweag is a software consultancy built around a number of things: Haskell and FP in general, Nix, Scalable Build systems (think Bazel), and data science to name a few. I have spent 6 years at Tweag and worked with a wide range of clients, consistently getting positive feedback, exploring the industry through working on diverse client projects, and continuously learning. Other than doing many FP and Bazel/Nix-related projects, I have had the experience of shaping the company in various ways (e.g. introducing knowledge sharing sessions, book budget, and other initiatives), interviewing many candidates for engineering positions, leading teams both at Tweag internally and in the context of client projects, being a hive supporter, delivery manager, and a blog editor.
- January 25, 2018–January 11, 2019. Software engineer at Tweag (remote).
- May 4, 2016–May 20, 2017. Tier 2 Haskell developer at Stack Builders (remote).
I have been active in open source for the last 8 years or so. Here are top 3 projects that highlight my work:
- Ormolu—A formatter for Haskell source code.
- Megaparsec—Industrial-strength monadic parser combinator library.
- Req—An HTTP client library.
The full list can be found at https://markkarpov.com/oss.html.
- I have authored a number of tutorials as part of my job and on my own, see https://markkarpov.com/learn-haskell.html.
- Blog posts are available at https://markkarpov.com/posts.html, see e.g. “How to keep a Bazel project hermetic”.
- Nix is one of the main technologies we use at Tweag. I run NixOS as my primary OS and use Nix daily in my work and for personal projects.
- Build systems: correctness, reproducibility, and scalability (I did a number of client projects, notably related to Bazel in the context of large industrial users).
- Strong knowledge of Git.
- DevOps experience (knowledge of some technologies in this area may be rusty).
- AWS and GCP.
- CI: GitHub actions, Travis CI, Circle CI, Buildkite.
- Databases: PostgreSQL, MySQL.
- Linux server.
- Other languages I know: OCaml, C, C++, Common Lisp, Emacs Lisp, Python.
- The experience of leading teams and supporting fellow employees.
- The ability to work with people with diverse personalities and skill levels.
- Good communicator; many years of experience as a consultant in a diverse range of companies.
- I speak Russian (native), English (fluent), and French (intermediate).
- 2009–2014—Polzunov Altai State Technical University. Engineer degree in informational technology and measuring engineering.