Articles in English
-
&english @code #haskell % November 24, 2024
Little handy QuasiQuoters
List of very handy QuasiQuoters in Haskell, that makes routine programming tasks easier.
-
&english @shorts #terraform #AWS % November 13, 2024
Self-referential deployment pointers
-
&english @shorts #HLS #haskell #Cabal % November 12, 2024
HLS support for multi-target Cabal projects
-
&english @shorts #ECS #AWS % October 29, 2024
wget and read-only file system don't play well together
-
&english @code #nix % September 19, 2021
Using nix to manage vscode extensions
I’m using vscode for a long time, but only recently appreciated how cool Remote set of extensions is. It allows you to run
vscode-server
on remote host or inside a container while utilizing local UIvscode
window for all operations. -
&english @code #nix % August 5, 2021
Migrating to the nix flakes for macbook setup
For the long time, I’ve been using nix-darwin and home-manager to configure and and keep my laptop configuration up-to-date. Today I had a little bit of spare time and decided to finally migrate towards using nix flakes.
-
&english @code #kotlin #konfig % July 27, 2021
Parsing environment variables in kotlin with konfig
There is a wonderful kotlin library for reading configuration from various sources (environment variables, files, etc.) – konfig. It allows to define your application configuration in a declarative way and even perform some data transformations along the way.
-
&english @projects #haskell #aeson #servant % June 11, 2021
People membership validation in JIRA fields against Active Directory
Current version of JIRA inside Itransition does not allow to validate “whether a person belongs to a certain group” for multi-people fields, only for single-user fields. Coorish – is a small utility to determine ineligible people being specified in JIRA tickets.
-
&english @projects #ruby #fibers #rspec % March 17, 2021
Telegram bot for managing Bitbucket repositories
Gitman is a Telegram chat bot. It helps to manage source code repositories in Itransition Bitbucket server. Instead of creating repositories manually, our HelpDesk operators are using this bot. It sets up all merge hooks, commit message checks, default reviewers policy, other things which is tedious to do by hands.
-
&english @projects #kotlin #konfig % March 13, 2021
JIRA bot to automatically update field values
Personer is a small bot written in Kotlin, which is started by
systemd
timer (thanksnixos
) and performs a read-update cycle over our project cards (custom JIRA issues). It features modern Kotlin’s Flow framework. -
&english @projects #nix #nixops % December 4, 2020
Nixops deployment of all the bots and services
Nitrax (NIX + ITRAnsition, I suck at naming) is my nixops configuration to deploy bots and services.
-
&english @projects #ruby % November 30, 2020
Medicine tele-consulting system
This is a short description of the project I’ve been working in a previous company. I’ll try to mention all technologically interesting aspects of it without revealing any intellectual property, which belongs to the customer.
-
&english @projects #kotlin % November 6, 2020
JIRA bot to trim whitespaces from field values
Trimmer is a small bot, which iterates over JIRA issues and trims whitespaces fields values. Without that, human mistakes on copy-paste operations can make automated JIRA statistics collections harder.
-
&english @projects #haskell #polysemy #aeson #servant % February 7, 2020
Workplace bot for managing Active Directory groups
Here is a facebook bot (we use facebook’s Workplace product as an intranet collaboration point) to manage AD groups. There are number of articles about the creation process.
-
&english @code #ruby #tdd % June 12, 2017
Ruby coding guidelines
-
&english @code #teamcity % February 21, 2017
TeamCity bootstrapping
This repository has born as a solution for the repeating and tedious Continuous Integration servers (TeamCity) installation across the company. It provides a way to quickly bootstrap and run TeamCity, automatically integrated with VCS of choice and setup reporting tool for many languages.
-
&english @code #ruby % December 16, 2015
Keep calm and kill mutants
Mutants, zombies… Yes, there is an inconsistency between the article’s topic and image to attract attention. But I swear to god it is actually the poster hanging on the wall inside my flat.
The topic of this article is mutation testing – a very special methodology among others in the field of testing software quality. It is capable to amaze, make you think you lost your mind and, finally, can bring peace into your programmer’s soul. I know, the definition sounds quite bold and pretentious, but I hope that after reading the rest of the article you’ll be convinced just like I am.
-
&english @code #tdd % September 1, 2015
How to make software products evolve naturally
To stand the test of time, software products must be built with changes in mind.
Continuous Integration (CI) is a methodology of organizing the software development process in which every change of the source code from the shared repository, as well as the behavior of the software system as a whole with the aforementioned changes, are checked for validity.
Article is also available in Russian language.
-
&english @code #ruby % August 24, 2015
How To Leverage Ruby's Functional Programming Capability
Ruby is a multi-paradigm programming language. It fully allows writing old-fashioned procedural code, but also provides many useful constructs and features from the functional world.
The majority of developers come to Ruby from the imperative world. They are used to making many local variables, changing their state and relying on implicit dependencies. Very quickly, it becomes clear that code can be much more expressive, using powerful idioms from functional languages. Ruby isn’t a fully functional language by any means; functions are not first class citizens, evaluation flow is not lazy, pattern matching support is very limited, etc. But still, it is possible to write code in a functional way and garner many benefits as a result.
-
&english @code #tdd % February 6, 2015
How to stop doing TDD and start getting real value from testing
In the field of testing, there are many ideas and movements, some of which have formed into schools. But there is really no universally accepted standard for what testing is and how it should be performed.
The attempts to establish such a standard (such as the infamous ISO 29119) are met with either ice-cold indifference or hell-hot opposition. Why? Well, because professional developers want to be able to choose approaches and tools that fit particular projects, time frames, budgets and business goals, and deep down they know they will continue to do what’s best to perform their duties well.