CV & Contacts

Alexander Granin

Senior Haskell Architect
Haskell Team Lead
Haskell Consultant
Author of the book Functional Design and Architecture
Speaker, Researcher, Writer
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 to 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:

— 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, organize project documentation, setup efficient development processes, organize 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
  • Famous 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.
    • 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.

Experience

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 (Software Transactional Memory), 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


Work Experience

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

Project: Node

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


Restaumatic

Senior Developer (Haskell, PureScript)
(11/2017 — 08/2018)

Restaurant services development


Juspay

Haskell Architect, Senior Haskell Developer, Haskell Team Lead
(Haskell, PureScript)
(06/2017 — 11/2017, 2019 — present)

Core frameworks development. Financial systems development.

Projects:

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.

2GIS

Senior C++ Developer (C++, Python)
(04/16 — 06/17)

Technologies: C++, XML, STL, Boost, Python


Kaspersky Lab

C++ Developer (C++, C#)
(05/12 — 04/16)

Technologies: C++, XML, STL, Boost, C#, WPF, .NET, SOLID, GRASP, SQL, SQL Server, Regex, Testing, Profiling