How I became a programmer

After reading a lot of blog posts about becoming a programmer recently, I've decided to write my own.

It will be a bit different because of two factors:

  • I'm not a Software Engineer, but a Production Engineer/SRE/Admin;
  • I'm from Russia, where CS education is vastly different.

School years

School in Russia is 10 or 11 years and you start at the age of ~7 and ...

more ...

Board games are awesome

I's been awhile since I wrote anything in my blog, mostly because I was moving to Ireland and was busy at my new job at Big Company™.

So as I can't write about all the cool technical things we have there, I'll try to make this blog less tech-savvy and more personal and fun.

As a normal IT person I spend whole working day staring at the ...

more ...

Notes about type systems in popular languages

I've been kind of out of my comfort zone last 3 weeks, and was trying to use as many new languages and technologies as possible.

I've used C++, JavaScript, React, PHP and Hack to name a few, and I've noticed really cool thing - many popular programming languages are moving towards mixing best of static and dynamic typing.

  • C++ (statically typed language) now has auto keyword, specifying that ...
more ...

Python Type Hints are awesome

I really love Julia Evans's blog, she writes with such excitement and enthusiasm about every new bit of technology she learns. For me, this is what makes our job so great - we can learn something new and cool almost every day.

And recently I've felt very excited with some of new abilities Python now have. I'm talking about including of PEP 484, which describes Type Hints, in ...

more ...

Moving from Fish shell to zsh

Date Category IT Tags Fish / Zsh Lang ru

I've been using Fish shell as my daily driver for more than 2 years. I don't want to insult Fish - this awesome shell provided me with wonderful out-of-the-box experience, introduced me to autosuggestions, and required almost no configuration.

But now, after 2 years of heavy usage, I've dropped it in favor of zsh.

The main reason for the switch is simple - Fish shell is not POSIX-compatible. And ...

more ...

Утилита gotests и плагин для Atom

Поскольку последнее время я все больше пишу на Go, мой workflow потихоньку обрастает различными полезными утилитами.

Одним из лучших открытий (после изумительного go-plus для Atom, который превращает Atom в полнофункциональную IDE для Go) стала утилита gotests, которая позволяет генерировать табличные тесты. При этом для нее есть плагины для Sublime Text 3 и Emacs.

Я большой сторонник юнит-тестирования, и потому возможность создавать шаблоны для тестов одной командой меня очень обрадовала.

Выглядит ...

more ...

Все для HAProxy в Atom

Появилась у меня на работе задачка - взять 3 относительно разных конфига HAProxy, ответвившихся когда-то от общего предка, и обратно унифицировать их в один.

Конфиги хорошие, большие - 800 строк каждый.

Приступил я к этой задаче, и сразу оступил - потому что в Atom, которым я пользуюсь для редактирования всего, не было подсветки синтаксиса конфигов HAProxy.

Ну у нас же тут opensource, так что тут же был нагуглен архив с HAProxy.tmbundle, который ...

more ...

Vendoring зависимостей в Go

После недавнего удаления модуля на 11 строк кода из npm, которое сломало всю Node.js инфраструктуру, я по-новому взглянул на то, как в проектах на Go реализованы зависимости от других пакетов.

Изначально, при знакомстве с go я был крайне недоволен отсутствием возможности задавать зависимости от конкретных версий (зависимость указывается только от репозитория, т.е. от master ветки) - ведь апстрим может ломать обратную совместимость, и твой проект просто не соберется. Причем ...

more ...

Проверка образов Docker на уязвимости с Clair

Ни для кого не секрет, что контейнеры (и в частности Docker) не только решают много проблем (configuration drift, scalability, dependency hell), но и привносят новые (в частности, обновление базовых образов).

Я уже давно мониторил IT-мир на предмет появления хорошего инструмента для проверки Docker-образов на наличие известных CVE. До недавнего времени подходящего инструмента не было. Была парочка дистро-специфичных инструментов (например oscap-docker, с которым я помучался и забил), но ничего подходящего ...

more ...

Открыл код db-checker

Недавно я открыл код еще одного инструмента, который уже около года использую на работе - db-checker.

Началось все с необходимости проводить регулярные проверки логической целостности данных в БД. Проще говоря - гонять мониторингом запросы к базе.

Сначала это была часть проекта, который проверял данные на нашем CDN. Проект этот сразу планировался многопоточным, поэтому написан на Go. Затем мухи были отделены от котлет, и проверка базы выделилась в отдельную сущность, но несколько legacy-моментов ...

more ...