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 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 almost 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 a lot of candidates, leading teams both at Tweag internally and in the context of client projects, being a hive supporter, and being 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 (did a number of client projects, notably related to Bazel).
- 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.
- The ability to work with people with diverse personalities and skill levels.
- Good communicator.
- I speak Russian (native), English (fluent), and French (intermediate).
- 2009–2014—Polzunov Altai State Technical University. Engineer degree in informational technology and measuring engineering.