Testified Documentation

Posted on 29 September 2024 in Articles • Tagged with programming, python, documentation, tests, specification, BDD, collaboration, cucumber • 5 min read

It's hard to sell a software product - whether it's a library, a program, or generally speaking, a system - if it doesn't come with a top-notch manual. And keeping such manual up-to-date is not easy too. Gojko Adzic's ideas of Living Documentation to the rescue, but unfortunately they are still far from being widely adopted.

In this post I propose a different way of making Living Documentation - by testifying its contents. Dive in to find out how!

Testified documentation diagram

Continue reading

The dark patterns of seat selection in Turkish Airlines

Posted on 17 August 2024 in Articles • Tagged with flying, turkish-airlines, dark-patterns • 4 min read

Dark Turkish airlines logo

Turkish Airlines is our first choice when it comes to flying to Azerbaijan from Finland. It’s not the cheapest, but the service is great. You get good food even in economy class, and there is an entertainment system with a broad selection of movies to keep you and the kids busy. The baggage allowance is huge - 30kg for check-in and the standard 8+kg for carry-on, although I’ve never seen them put the carry-on baggage on scales.

So, what’s all the fuss about?


Continue reading

The curious case of denied repository access in Github Actions workflow

Posted on 01 June 2023 in Articles • Tagged with programming, blog, pelican, git, github, actions, ci/cd, access denied • 4 min read

Intro image for the article

While configuring a continuous delivery pipeline for this blog, I encountered unexpected permission denials from GitHub. Was there something wrong with the setup?


Continue reading

Good practices: Software deployment and feature releases

Posted on 03 April 2023 in Articles • Tagged with good practices, software, deployment, release • 2 min read

"Big Bang" software releases are hard on end users and developers. What can we do about it?


Continue reading

Hexagonal architecture and Python - Part III: Persistence, Transactions, Exceptions and The Final Assembly

Posted on 31 December 2022 in Articles • Tagged with architecture, DDD, dependency injection, Django, hexagonal architecture, programming, python • 10 min read

Python logo in a hexagon with Roman III literal

Welcome to the third part of the article series, which cover principles of Hexagonal architecture, Dependency Injection, Domain-Driven Design and applies these all to Python and Django application design.


Continue reading

Hexagonal architecture and Python - Part II: Domain, Application Services, Ports and Adapters

Posted on 18 September 2022 in Articles • Tagged with architecture, DDD, dependency injection, hexagonal architecture, programming, python • 10 min read

Python logo in a hexagon with Roman II literal

Welcome to the second part of the article series, which cover principles of Hexagonal architecture, Dependency Injection, Domain-Driven Design and applies these all to Python and Django application design.


Continue reading

Good practices: Avoiding the use of test inputs in assertions

Posted on 10 November 2021 in Articles • Tagged with good practices, programming, python, testing, unit tests • 2 min read

Figure of eight know / https://freesvg.org/figure-of-eight-knot-vector-illustration / License: Public Domain

It might be very convenient to use the same fixtures in test setup and assertions. This practice though is not as good as it looks like at first glance.


Continue reading

Hexagonal architecture and Python - Part I: Dependency Injection and componential architecture

Posted on 30 October 2021 in Articles • Tagged with architecture, DDD, dependency injection, hexagonal architecture, programming, python • 8 min read

Python logo in a hexagon

Welcome to articles series which cover the principles of Hexagonal architecture, talks of Dependency Injection, and its usage in these to Python and Django application design.


Continue reading

Alarms and dashboards

Posted on 04 June 2021 in Articles • Tagged with rants, alarm, dashboard, DevOps, errors • 2 min read

Ranting about alarms and dashboards


Continue reading

Concrete Settings: a new way to manage configurations in Python projects

Posted on 11 July 2020 in Articles • Tagged with programming, library, python, concrete settings • 5 min read

After two years of developing a hobby project, I am proud to announce Concrete Settings - a new configuration management library for Python projects.

Concrete Settings was born as an effort to improve configuration handling in a huge decade-old Django application with exceedingly bloated settings.py. Remember that settings.py starts …


Continue reading