Python 3.6 f-strings rant

Python 3.6 introduced a new way to format strings, called Formatted string literals, or just f-strings. Everyone on the internet seem to be happy about it. I'm definitely not.

For starters, Python 3 already had 3 built-in ways of doing it before. Just think about it... 3 ways to format strings in language that declares simplicity as a goal:

There should be one-- and preferably only one --obvious way …

more ...

Refreshing slow internet experience

I've just returned from a vacation, and I've got quite refreshing experience of using slow internet there.

The thing is, we, as engineers, are used to fast internet, fast development environment, powerful laptops/smartphones, etc.

Unfortunately this is still not the case of a huge part of the world, and it's really important for us to try and walk in their shoes from time to time. And one of my …

more ...

Вопросы от Дениса

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

Привожу письмо полностью (надеюсь, автор не против):

Александр, здравствуйте! Не смог найти вашу электропочту, пишу через форму обратной связи вашего домена на рег.ру :)

С огромным удовольствием читаю твой блог, очень жаль, что больше не обновляешь его.

Помоги, пожалуйста, советом. У меня примерно 12 виртуальных серверов с …

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 compiler should deduce …
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 Python 3.5 …

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 while many people …

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 ...