Software Architect, Team Lead
Author of the book Functional Design and Architecture
Speaker, Researcher, Writer
Former C++ Russia Program Committee Member
Senior Haskell Architect, Haskell Team Lead
More than 10 years of experience, wide background. I know how to do things in Haskell. I developed a complete methodology and several notable techniques of Software Design. My Haskell code and ideas work in real production. I created a lot of materials on Software Design in Haskell, including the book, articles, showcase projects, talks.
As a Haskell Consultant I know how to:
— Listen to business and understand its needs and goals;
— Create web services, stateful distributed multithreaded concurrent apps; console apps; GUI and web apps;
— Deal with SQL DBs and NoSQL DBs, how to incorporate these systems into the app;
— Divide the code into layers, separate concerns, define subsystems and services;
— Assess and apply suitable design approaches;
— Make the code satisfying the requirements;
— Make the code of a good quality: testable, maintainable, simple, robust, well-structured;
— Do unit, functional, integration, property-based testing, and how to automate it;
— Not to play with Haskell, not to make overcomplicated or too smart code;
— Achieve goals;
— Lead a project, organise project documentation, setup efficient development processes, do a task management, define coding standards and practices;
— Manage a team of haskellers (from Junior to Senior);
— Promote your company in my public activities and help it to gain a better visibility and reputation.
Hire me, and you’ll also get:
- Experienced PureScript and C++ developer, also know C# and Python
- Well-known speaker with more than 20 talks about Functional Programming in C++, Software Design and Architecture in Haskell, Functional Programming in general
- Community leader and active member able to hire a team of haskellers in a short time
- Author of these notable real world projects, showcases and articles:
- Purescript Presto, a real world framework I built for Juspay. It is a base for Juspay’s main product — a mobile application for instant money transactions and payments. The application has 200M installations in India. The framework is based on my design and ideas I’m describing in the book, articles and talks.
- PureScript Presto.Backend, a real world framework I was working on for Juspay. It has the same design as Presto but intended for backends and web services. It serves the main backend payments API for Juspay and processes 4 millions of transactions per day in India. The framework is based on my design and ideas I’m describing in the book, articles and talks.
- Hierarchical Free Monads: The Most Developed Approach In Haskell, a big and important article about the approach I use to build my frameworks. The article is not only a technical introduction but also a philosophical reflection on Software Engineering in Haskell, and how to make the language more popular among businesses.
- Automatic White-Box Testing with Free Monads, article and showcase project about automatic creation of regression tests by designing a system that records the input, output and side-effects of a business application in production. This system is used in Juspay as a part of the Presto.Backend framework.
- Hydra, a showcase project that demonstrates the principles of Software Design and Architecture in pure Functional Programming. It provides a framework implemented with several different approaches for easy comparison: Final Tagless, Free Monad, Church Encoded Free Monad. This project accompanies the book «Functional Design and Architecture».
- Node, a real world project I built for Enecuum (very fast: 5 months). It’s a full-fledged framework to build network actors and blockchain protocols, console applications, work with KV database and cryptography. It has a lot of features out-of-the-box. It’s well-structured and covered by tests. It has demo apps with rather complex business logic.
- Building network actors with Node framework, a tutorial how to use Node and a short introduction into Hierarchical Free Monads.
Experience: more than 10 years
Languages: Haskell, PureScript, C++, Python, C#.
Specialization: Backend, DSLs, Functional Programming, Object-Oriented Programming, Desktop, Software Design and Architecture, Research, Multithreading and Concurrency, Testing, Databases, Algorithms, Web
Technologies: STM, FRP, Design Patterns, STL, Boost, DSL/eDSL, SOLID, Databases, XML, JSON, SQL, NoSQL, RESTful, .NET, monads, TH, type-level, Free/freer, Effect systems, Unit / Functional / Integration / etc. testing, Regex
Frameworks and systems: WPF, Qt, Node.JS, RabbitMQ, Postgres, SQL Server, RocksDB, Sqlite
Enecuum HK Limited
Haskell Team Lead and Architect
(08/2018 — 12/2018)
Developing of the Enecuum blockchain: design and architecture of the project, research and implementation
Responsibilities: project leading, architecture and design decisions, task management, communications, tasks decomposition, analysis and project documentation, team leading and team management.
Technologies: Haskell, STM (Software Transactional Memory), Design Patterns, eDSLs, SOLID, JSON, NoSQL, TH, type-level, Free/freer, Effect systems, Multithreading and Concurrency, Testing
Senior Developer (Haskell, PureScript)
(11/2017 — 08/2018)
Restaurant services development
Haskell Architect, Senior Haskell Developer, Haskell Team Lead
(06/2017 — 11/2017, 2019 — present)
Core frameworks development. Financial systems development.
— Purescript Presto
— PureScript Presto.Backend
— Haskell framework similar to Presto.Backend
…and other projects
Responsibilities: Project leading, architecture and design decisions, management, task management, communications, tasks decomposition, analysis and project documentation, team leading and team management, code best practices
Technologies: Haskell, Purescript, STM (Software Transactional Memory), Design Patterns, eDSLs, SOLID, JSON, SQL, NoSQL, TH, type-level, Free/freer, Effect systems, Multithreading and Concurrency, Testing, servant, beam, aeson etc.
Senior C++ Developer (C++, Python)
(04/16 — 06/17)
Technologies: C++, XML, STL, Boost, Python
C++ Developer (C++, C#)
(05/12 — 04/16)
Technologies: C++, XML, STL, Boost, C#, WPF, .NET, SOLID, GRASP, SQL, SQL Server, Regex, Testing, Profiling