Software developer. Functional programming enthusiast.
- Birth: 1990
- Education: MSU
- Programming: since 2012
- Location: Tallinn, Republic of Estonia
- Languages: Russian, English
- Citizenship: Russian Federation
- Smoking: negative
- Alcohol: negative
- Family: no
- Religion: atheism
I have been programming since 2012. At the beginning I had some experience of development in imperative languages, but I did well only when I switched to functional languages like Erlang, Elixir and Haskell.
Today my main skill is functional programming and I'm strong expert in BEAM/Erlang VM platform, Erlang and Elixir languages. I have strong understanding of multithreading and interaction between Erlang processes. Of course in commercial development I'm using mainstream frameworks like OTP, Phoenix and Ecto.
Future plans - to become more familiar with static-typed functional languages. If static-typed languages for BEAM/Erlang VM like Alpaca, Gleam or Elchemy will be successful - I will be happy to switch. Also I have a huge interest in Haskell programming language and I'm doing my own personal project using Yesod Web Framework.
1990, Izhevsk, Russian Federation
School 341997-2000, Izhevsk, Russian Federation
School 412000-2007, Izhevsk, Russian Federation
Lomonosov Moscow State University of Fine Chemical Technologies, Faculty of Chemistry2007-2008, Moscow, Russian Federation
Lomonosov Moscow State University, Faculty of Fundamental Physical and Chemical Engineering2008-2012, Moscow, Russian Federation
Institute of Problems of Chemical Physics of RAS
Chemical research and development laboratory.2010-2012, Chernogolovka, Russian Federation
Higher School of Economics - National Research University, Applied Mathematics Faculty2012-2013, Moscow, Russian Federation
Closed joint-stock company IVK
Stack: C++, Lua.2013-2014, Moscow, Russian Federation
Entrepreneur, Founder, Software Developer
Import and retail of high end musical instruments and equipment. Stack: C++, Lua, Python, Erlang, Elixir.2009-2015, Moscow, Russian Federation
Stack: Erlang, Elixir.2014-2017, Moscow, Russian Federation
Department of research and development. Architecture and implementation of a new casino platform. Contribution to open source. Stack: Erlang, Elixir.since 2018, Tallinn, Republic of Estonia
Things I do like
I like functional languages. The concept of immutable data greatly improves code readability and simplifies the development of multithreaded applications.
Strong static types
For most of my career, I've worked with dynamically typed languages like Erlang and Elixir. BEAM Erlang VM, Erlang and Elixir languages, OTP and Phoenix frameworks are great tools to solve any kind of problem in telecommunications area. And I like to work with this toolset. But in my opinion this toolset is not perfect because of dynamic type system. Of course, static analysis tools like Dialyzer improve the situation, but not enough. Some time ago I began to study Haskell language and I really liked it. Safe, readable, predictable, simple source code and the most powerful type system ever. I'm not very experienced in the Haskell language, but I like Haskell and I'm very interested to use it more.
Apple & MacOS
Mac computer is superior and stylish hardware with modern enterprise UNIX software. Just works from the box. Perfect tool.
Personal responsibility distinguishes a professional from a beginner in any field of activity, including software development. If a developer positions himself as a professional - only he is responsible for the code written by him. A professional can work alone on high-level tasks without a layer of managers between him and business side. A professional knows how to solve the problem properly without blurring the responsibilities between team members, management and business. If a professional needs something to solve a problem - he just gets it directly from the right people. The professional does not need external motivation because he always knows what he is doing and why.
I never commit uncovered / untested code. 100% test coverage is standard for my commercial projects. Automated tests greatly simplify future refactoring and other code changes. And of course it's nice to be sure that every line of code was called at least once and worked as expected.
I always write documentation of my projects. It is very important to formulate thoughts in the form of text starting from a technical task. I write technical documentation manually in markdown language and I deal with auto-generated (from source code) documentation as well.
I like the northern nature. And I like the sea. I definitely like the northern European countries Norway, Sweden, Finland, Estonia and I dream about Iceland and Faroe Islands. Canada and the northern border of the United States also look good.
Things I do NOT like
I understand the great importance of imperative languages. I just do not like them. Mutable data and imperative constructions make high-level code more confusing and unobvious (especially in case of multithreading).
Weak dynamic types
Most GNU utilities do not work properly in Windows. Windows does not have normal package manager like apt-get or homebrew. UNIX operating systems are just much better suited for work.
Scrum & bureaucracy
I think it's possible that for some people scrum is working pretty well. But not for me. Scrum process and useless regular meetings make boredom and greatly slow me down. It seems that the scrum is working well when everything is going according to plan and the team is working with high rank professionals, but in reality this never happens.
I just do not like the hot climate, it's physically hard for me.
- Haskell (ML family): advanced
- Yesod Web Framework: advanced
- BEAM/Erlang VM: expert
- Elixir metaprogrmming: expert
- Elixir: expert
- Erlang: expert
- Bash: expert
- GIT: advanced
- SQL: expert
- Twitter Bootstrap: advanced
- Phantomjs Engine: advanced
- Jekyll: advanced
- Reserfy.net (haskell yesod) Modern solution for online reservations (demo)
- Calculus (elixir) Abstract data types with real encapsulation
- Category (elixir) Functors, Monads and Applicatives
- Happeteer (haskell) Puppeteer client library (web-scraping oriented)
- haskell-tools (bash) Utilities for builds and deploys of Haskell programs
- Ps-gol (haskell) Cellular automaton (demo)
- Defnamed (elixir) Compile-time named arguments
- GenEnum (elixir) Compile-time enumerations
- Equalable (elixir) Symmetric equivalence relation for pair of types
- Comparable (elixir) Ordering relation protocol
- Readable (elixir) Generalized Read type class
- ExEnv (elixir) Elixir terms in system env
- BootEnv (elixir) Configurator with static schema
- Meme (elixir) Memoization of function calls
- Elixir-Test (elixir) I am the author of this test task
- itkach.uk (jekyll bootstrap) This static website
- Erlang-Universe Slides about Erlang/OTP/Elixir (demo)
- Other Other open-source projects on my github
- Location: Tallinn, Republic of Estonia
- Email: email@example.com
- Skype: tkachuk.i.m.
- Telegram: +7977 815 5221
- Phone: +372 5811 4271
- Github: https://github.com/timCF?tab=repositories
- Linkedin: https://www.linkedin.com/in/ilja-tkachuk-a59a30aa/
- Bitbucket: https://bitbucket.org/tkachuk-labs/
- Homepage: https://itkach.uk