PDF version of the resume
I’m a software engineer specializing in functional programming using strong static type systems, in Haskell in particular. I have worked many years as a full-time consultant helping our clients design and build correct, robust, and maintainable software. Being a consultant allowed me to participate in more projects that a typical software engineer gets to work on. I’ve developed the ability for critical thinking, making wise trade-offs, analyzing and exploiting advantages of various technologies to satisfy needs of business. I also learned how to handle different personalities and collaborate with diverse teams. My personal projects include high-profile Haskell libraries, tutorials, and a technical blog.
- January 14, 2019–present. Senior software engineer at Tweag, Paris, France. Working as a consultant most part of the time, but also building OSS, writing blog posts, doing interviews for new hires, etc.
- January 25, 2018–January 11, 2019. Software engineer at Tweag (remote). Worked as a consultant with a number of clients, helped developing Bazel rules for Haskell.
- May 4, 2016–May 20, 2017. Tier 2 Haskell developer at Stack Builders (remote). Consulting several clients mostly from the US. Agile. Another part of the job was writing tutorials and blog posts to increase visibility of the company.
- Megaparsec—Industrial-strength monadic parser combinator library.
- MMark—Strict markdown processor for writers.
- Req—Easy-to-use, type-safe, expandable, high-level HTTP library.
- Zip—Efficient library for manipulating zip archives.
The full list can be found at https://markkarpov.com/oss.html.
- I’ve authored a number of tutorials as part of my job and on my own, see e.g. “Template Haskell tutorial”, the full list is available at https://markkarpov.com/learn-haskell.html.
- Blog posts are available at https://markkarpov.com/posts.html, see e.g. “Free monad considered harmful”.
- 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.
- Strong knowledge of Git.
- CI: Travis CI, Circle CI, Buildkite.
- Databases: PostgreSQL, MySQL.
- Linux server.
- Bash/Python/Haskell scripting.
- Dependent types, theorem provers: Coq.
- Build systems: make, shake, Bazel.
- Server automation: Ansible.
- Other languages I know: C, C++, Python, Common Lisp, Emacs Lisp.
- I know how to work with people who have different types of personalities and skill levels.
- Flexible and open to criticism. If I’m presented with good arguments, I can change my opinion. It’s not hard for me to admit that I may be wrong.
- Active in discussion, 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.