sobolevn's personal blog

On good software, mediocre software, and bad software. Also rants about management and development processes.


  • Python ParamSpec guide

    December 31, 2021 6 mins read 0 comments

    Newly released feature in PEP612 allows you do a lot of advanced typing things with functions and their signatures

  • Typeclasses in Python

    June 30, 2021 24 mins read 0 comments

    Typeclasses is a new (but familiar) idea of how you can organize behavior around your types

  • Make tests a part of your app

    February 28, 2021 16 mins read 0 comments

    Tests can be generated, tests can be shipped by library authors directly to end-users, tests can be encoded into the body of your app. Let's follow this path!


  • Higher Kinded Types in Python

    October 24, 2020 27 mins read 0 comments

    This post will guide newcomers through the high waters of Higher Kinded Types and explain how they work and how they can be used.

  • How async should have been

    June 7, 2020 16 mins read 0 comments

    Your sync and async code can be identical, but still, can work differently. It is a matter of right abstractions. In this article, I will show how one can write sync code to run async programs in Python.

  • Do not log

    March 11, 2020 12 mins read 0 comments

    A lot of developers consider logging as a silver bullet to fix all things at once. And they don't realize how hard it actually is to work with logging properly.

  • Conditional coverage

    February 25, 2020 7 mins read 0 comments

    Sometimes your code has to take different paths based on the external environment. Make sure that your coverage follows it smoothly.

  • Typed functional Dependency Injection in Python

    February 2, 2020 19 mins read 0 comments

    Dependency injection is a controversial topic. There are known problems, hacks, and even whole methodologies on how to work with DI frameworks. It is not the case when using functional approach: which is simple and explicit.


  • Testing Django Migrations

    October 13, 2019 7 mins read 0 comments

    When migrating schema and data in Django multiple things can go wrong. It is better to test what you are doing in advance.

  • Complexity Waterfall

    October 13, 2019 19 mins read 0 comments

    The thing about complexity is that it comes out of nowhere. One day you start your fairly simple project, the other day you find it in ruins.

  • Testing mypy stubs, plugins, and types

    August 31, 2019 9 mins read 0 comments

    Have you ever wanted to test type reveal in python? In case you do you would probably need pytest-mypy-plugins for that.

  • Typechecking Django and DRF

    August 25, 2019 9 mins read 0 comments

    Types are coming to the Django land! This posts announces TypedDjango organisation and stubs for django and djangorestframework

  • 6 mac apps that fit everyone

    July 19, 2019 2 mins read 0 comments

    You often can see lists of awesome mac apps that you are not going to use or ones that just do not fit you. This one is different. This list contains simple, yet very powerful productivity boosters that totally fits everyone.

  • Really typing Vue

    June 29, 2019 13 mins read 0 comments

    This is not another "setting up" a new project with Vue and TypeScript tutorial. Let's do some deep dive into more complex topics!

  • From Flow to Typescript. Why?

    March 30, 2019 9 mins read 0 comments

    We have moved wemake-vue-template from Flow to TypeScript. Everyone, jump on the hype train!

  • Enforcing Single Responsibility Principle in Python

    March 10, 2019 21 mins read 0 comments

    Single Responsibility Principle (or SRP) is one of the most important concepts in software development. The main idea of this concept is: all pieces of software must have only a single responsibility.

  • Announcing docker-image-size-limit

    March 3, 2019 1 min read 0 comments

    Keep an eye on your docker image size, limit, and prevent it from growing too big.

  • Engineering guide to writing correct User Stories

    February 23, 2019 12 mins read 0 comments

    Agile people are obsessed with writing user stories. And it is a very powerful instrument indeed. But, from my practice, a lot of people are doing it wrong. Let's learn how to do it correctly. Including proper verification and mapping to the source code.

  • Python exceptions considered an anti-pattern

    February 9, 2019 18 mins read 0 comments

    You might be wondering how do exceptions are an anti-pattern and how does this relate to typing at all? Well, let's find out!

  • Simple dependent types in Python

    January 31, 2019 12 mins read 0 comments

    Python typing just got a new shiny feature: Literal types. Let's dive in and get familiar with it.

  • Best engineering practices: how to fix a bug?

    January 21, 2019 9 mins read 0 comments

    The important thing is: how do you respond to the bugs you and other people have created? What do you do to prevent them from happening in the future? How do you even know that this buggy situation even exist?

  • Announcing dotenv-linter

    January 10, 2019 2 mins read 0 comments

    Simple linter for `.env` files. While `.env` files are pretty straight-forward it is required to keep them consistent. This tool offers a wide range of consistency rules and best practices. And it integrates perfectly into any existing workflow.



  • Using better CLIs

    October 9, 2017 4 mins read 0 comments

    Don't stick to the default CLIs, there are better alternatives!

  • Instant +100% command line productivity boost

    August 23, 2017 4 mins read 0 comments

    Brief overview of some awesome command line utilities to increase your productivity and make you a happier developer

  • Creating slugs for Ecto schemas

    July 19, 2017 6 mins read 0 comments

    The term “slug” comes from the world of newspaper production. If you have ever created a simple “Blog” application you have already reinvented it. Let's have a look at how you can use slugs in Elixir apps.

  • Testing Bash applications

    July 8, 2017 9 mins read 0 comments

    Some time ago I was faced with a task of testing a bash script. At first I decided to use Python unit-tests, however, I was reluctant to bring external technologies to the project. Therefore I had to go with the testing framework written in the notorious bash.

  • Is Yarn still a thing?

    June 12, 2017 4 mins read 0 comments

    When npm@5 was just released this question was the first one I have googled. No doubts it comes to mind since new npm version introduced a lot of yarn’s features. In other words: should I still use yarn after installing npm@5?

  • Why changes in Phoenix 1.3 are so important?

    May 14, 2017 14 mins read 0 comments

    Phoenix Framework always has been awesome. But it was never as awesome as the new 1.3 release.

  • Managing Django’s settings

    April 1, 2017 4 mins read 0 comments

    Managing Django’s settings might be tricky. There are severals issues which are encountered by any Django developer along the way.