Despite my initial skepticism, I’ve been increasingly using LLM-based coding
assistants to get shit done. No vibe coding, mind you — I am too much of a
control freak for that, but letting the machine do the tedious parts of coding
has been great for me. For personal use, I particularly enjoyed using Claude
Code (enough to shell out for a Pro subscription): I don’t have…
There is some part of me that is drawn to obscure, odd technologies and tools.
It’s kind of irrational, but also very exciting to tinker with. As I was looking
for alternatives to my zsh setup, I couldn’t help but look at some of the more
niche shells, even if it wasn’t very likely that I’ll settle on them. 
 Elvish was one of the options that caught my…
Friendly Interactive Shell (more commonly known as
Fish) is a popular alternative to the more ubiquitous shells like Bash and Zsh. 
 If you’ve been a command line aficionado, you have probably seen fancy command
line prompts that conveniently show you everything you need to know from current
working directory, to VCS status, to outside temperature. Maybe you are…
Last year I spent more hours playing Minecraft than I care to admit. Being an
introvert that I am, I play on a small private server with my partner and a few
friends, and
 Minecraft Realms has
been a great hosting for us, fast, cheap, secure, with backups. The only issue —
it can’t have mods, and eventually we wanted to play with mods. After shopping
around for…
My twitter feed be like: 
 
 Blockchain! NFTs! Distributed governance! Get rich quick! 
 
 We all know NFTs with URLs to someone’s HTTP server are silly 1 . True
cryptopunks store everything in blockchain directly! So how much would it cost
me if I immortalized this blog in the Ethereum blockchain? Think about it! All
my typos and rants immutable and preserved…
… or how to sell Chaos Engineering to your team when everything is already on fire. 
 This post is once again inspired by a discussion in DevZen podcast,
 episode #309 (for russian speakers, I highly
recommend listening this one, lots of 🔥 discussions) and the
 Chaos Engineering 
book. 
 In the podcast, @sum3rman brought up an excellent
point that most teams…
Recently I found my old Eee PC 901 at the bottom of a drawer sitting and
collecting dust. It served me well a decade ago and I still have fond memories
of it, but by modern standard it’s really obsolete as a laptop. With Intel Atom
N270 and 2GB DDR2 RAM at its heart, I’m not sure it’ll win over even Raspberry
Pi 4. Yet it is in a good working condition, and I…
Trigger warning: If you have strong opinions about Ops, DevOps, SRE and
adjacent subjects, read this at your own risk. 
 A bit over 4 years ago I’ve accepted a job offer with the “Site Reliability
Engineer” title, and at the time I had no clue what it really was about. The
recruiter said it was kinda like a normal Software Engineer, but more…
This page is a collection of open source projects and web services I worked on
or which have been notable for me in one way or another. Some of these projects
are still relevant, most of them are obsolete, all of them were done for fun,
not profit (well, not for any significant profit anyway). 
 Please note this isn’t a professional portfolio. Quite in opposite, it’s…
Simplicity is complicated. In the Golang community, this statement is most often
attributed to Rob Pike 
but it turns out a lot of people said something like that. A couple of weeks ago
I encountered this yet again in a debate with a colleague (someone with lots of
experience and whose opinion I respect a lot). Both of us considered ourselves
advocates for simplicity, yet we…
Not so long ago I’ve discovered FSEconomy , an
economy meta-gate for flightsim fans. Despite of somewhat simplistic core
mechanics and unfancy look, it has a very active community and a lot of depth to
it. I’ve spent last couple of weeks reading the manual, watching community
forums and doing some assignments in the game itself. And the more I was
learning the more…
Recently I’ve stumbled upon a code snippet in my C++ code, which I’d call “comment branching”. For example, you are experimenting with two implementations of the same functionality represented by a relatively small pieces of code and you need to switch between them back and forth until you decide which one will end up in final version. 
 Consider following snippet:…
Finally, I’ve completed transition of this blog to GitHub pages, planned over
two years ago. I did the first step — migration to a static site engine
(specifically,
 Acrylamid )
— back in March 2014. And since than I’ve been saying to myself “one day I must
move it to a GitHub as it’s a best free hosting for a static site”. 
 I couldn’t…
In a past few years I’ve been using C++ as my main programming language and during this time I’ve been in constant search for better IDE for it which would run on Linux. I was very happy when Jetbrains released CLion IDE and immediately gave it a try. Though there is a lot to improve yet, I’d say that it has best autocompletion and modern C++ support among C++ IDEs on Linux. The…
В виде исключения этот пост будет на русском, поскольку он касается в первую очередь русскоязычной аудитории. 
 9 мая, День Победы — один из самых главных праздников в странах бывшего СССР. По массовости празднования он может соперничать разве что с Новым Годом. Однако, мне кажется, с течением лет акцент этого праздника становится все более и более неправильным. Он превращается в символ…
I’ve never really mentioned this on the Internet, but I’m podcast-addicted kind of person. At the moment I have about 20 different podcasts in my subscription list and I enjoy them very much. Actually, it turned out that listening to podcasts does two important things: 
 
 You don’t fall completely bored while doing some monotonic work like house cleaning or dish washing.…
Today I’m going to announce a pet project, which I’ve been working on for a last
few month. It happened so that it’s live for more than two years and it’s the
third major release, but I never announced it on my blog. Now I have to fix
this. 
 Meet: Google Cache Browser . 
 The idea behind this project is pretty simple: when viewing Google’s…
Месяц назад я всерьез
 задумался о переходе на английский для ведения
этого блога. Проведенный опрос показал, что большая часть моих читателей не
выступает против этого шага, так что этот пост будет последним на русском языке. 
 Еще раз перечислю причины перехода: 
 
 Я пишу в основном на технические темы, часто — довольно узкие. На английском
мои посты будут найдены и…
Пришло время завершить цикл постов о переезде этого блога на статический движок.
Я уже успел рассказать о переносе самих постов и о
манипуляциях со структурой адресов. Последняя оставшаяся не освещенной тема —
перенос комментариев. За 6 лет существования блога их накопилось немало, и было
бы обидно от них отказаться. 
 Так как
 Acrylamid 
— полностью статический движок,…
И так, допустим, тяжкая доля загнала вас на кривенькую дорожку спамера-мошенника, выманивающего банковские данные у ничего не подозревающих граждан. В этом посте я научу вас, как составлять убедительные письма, основываясь на антипримере, который я вчера обнаружил в своем почтовом ящике: 
 
 Прежде чем приступить к разбору замечу, что такой концентрации бреда на единицу текста с тех пор,…
В последнее время меня все чаще посещает мысль о смене языка блога на английский. Впрочем, прежде чем принимать решение, я считаю правильным узнать мнение моей нынешней аудитории. 
 У меня, пожалуй, три причины для смены языка: 
 
 Большая часть постов у меня так или иначе связана с решением тех или иных технических задач. Будучи изложенным на английском, решение смогут найти и…
Продолжу рассказ о приключениях, связанных с уходом с Drupal на Acrylamid. Как и обещал, на этот раз речь пойдет о смене структуры адресов страниц моего блога. 
 Напомню еще раз о задачах, которые я перед собой поставил: 
 
 Сделать более-менее вменяемые URL постов. Например, транслитерированный кошмар вроде…
Я уже довольно давно являюсь слушателем Радио-Т и, хотя частенько не разделяю мнения ведущих, нахожу шоу довольно интересным. Однако, в выпуске Radio-T от 8 марта было два эпизода, которые меня слегка покоробили. Первый — фирменный троллинг от Umputun’a на тему ненужности сисадминов. Впрочем, я склонен считать, что у него с логикой все в порядке, и этот пассаж является всего лишь любимой,…
В этой заметке я постараюсь рассказать о процессе переноса постов из старого
блога на Drupal в новый на Acrylamid. 
 Прежде всего надо отдать ему должное — он из коробки неплохо
 умеет импортировать контент 
из произвольных движков через RSS или дамп в формате Wordpress. В простых
случаях этого более, чем достаточно, но мне нужно было нечто большее. 
 Задачу перед собой я…
Вчера я пообещал рассказать о разных технических нюансах, возникших в процессе
переезда на новый движок. Разумнее всего, мне кажется, будет начать с краткого
описания нового движка и причин, по которым я на нем остановился. Ну и, заодно,
чем был плох Drupal. 
 И так, технических причин, побудивших меня отказаться от Drupal, которым я
 пользовался последние 5 лет, было три:…
С последнего поста 
в этом блоге минуло чуть больше года, да и тот я был скорее вынужден написать
под влиянием обстоятельств. Причин для столь затяжного молчания было несколько. 
 
 Во-первых, реальный мир требовал невероятное количество моего внимания, в моей
жизни поменялось очень многое: я сменил работу, переехал, многое переосмыслил,
слетал в Лондон на научную…
Два с половиной года назад я представил два скрипта: Google Cache Dumper и Bing
Cache Dumper. Как нетрудно догадать по названию, их задача состояла в
вытаскивании страниц заданного сайта из кэша соответствующего поисковика. 
 Оба скрипта я поставил на продажу по цене в $2 и $1 соответственно, и до сих пор
их поддерживал. В качестве площадки для продаж по принципу…
Сегодня вечером пришел нежданчик от Last.fm: 
 
 Last.fm вносит ряд изменений в радио, которое ранее было доступно во всем мире. Мы тщательно обдумали эти изменения, и эти изменения не случайны: они были приняты в ответ на на ряд факторов, в разной степени влияющих на наш бизнес в разных странах. 
 До сегодняшнего дня радио было функцией только для подписчиков. Однако начиная с 15 Янв…
Хочу предложить вашему вниманию историю, которая приснилась мне не далее как сегодня под утро. Проснувшись, я первым делом подумал: “ну и к чему вообще мне это приснилось?..”, но потом понял, что этот нехитрый сюжет имеет прямое отношение к нашей отрасли. Строго говоря, это применимо к молодым специалистам практически в любой области, но именно в программировании это цветёт пышным…
Поводом к этому посту стала одна дискуссия об хороших и плохих сторонах открытого софта, в которой мне довелось участвовать. Я являюсь давнишним пользователем Linux, а потому поневоле постоянно имею дело с большим количеством open-source проектов. Более того, так повелось, что большинство инструментов и фреймворков для веб-разработки, которой я занимаюсь, так же является открытым. Поэтому в ходе…
Три раза пытался начать этот пост, и три раза получалась полная ерунда — предыдущий пост был написан пол года назад, и, похоже, навык написания постов на человеческом языке я слегка растерял. Почему я упомянул про “человеческий” язык? Да потому, что за эти пол года мне пришлось написать вагон и маленькую тележку текста на академическом жаргоне, но обо всём по порядку. 
 С одной…
Вступление от переводчика. Я довольно редко по доброй воле берусь за переводы чужих статей, но в этот раз я всё же хочу поделиться с вами небольшой заметкой, написанной Эриком Венделином “ 10 Things you didn’t know about Firebug ”. И хотя я довольно давно пользуюсь FireBug’ом, до прочтения этой заметки я знал лишь о трёх из упомянутых “фитч”. 
 Мне доводилось…
Пост вышел многабукаф, поэтому ленивые могут пропускать части, помеченные как иллюстративные. 
 При разработке хоть сколь-нибудь сложных систем среди прочих всегда возникает проблема обновлений, а именно — миграции данных со старой версии в новую. И все бы ничего, но структуры данных имеют свойство меняться от версии к версии. Для веб-приложений это в первую очередь касается схемы БД, но сюда…
Сегодня у меня немного философское настроение, и по такому случаю я хочу
поделиться кое-каким своим опытом, связанным с фрилансом. В первую очередь, я,
опираясь на свой опыт, попытаюсь описать ещё один способ начала фрилансерской
деятельности. 
 Сам я довольно долго занимался фрилансом, в основном выполняя заказы, связанные
с форумным движком phpBB. В прошедшем времени — потому…
Пользуясь свободным временем на каникулах, я решил проапгрейдить ssd в своем
нетбуке Asus Eee PC 901. Стоявшие там изначально SSD (4+12 Gb в моей
Linux-версии) давно прославились как редкостные тормоза, да и четырех гигабайт
системного раздела под весь необходимый софт мне едва хватало. С другой стороны,
этот нетбук можно было трести, ронять (в разумных пределах, конечно ;-) и…
В предыдущих заметках я уже осветил требования к домашнему серверу и рассказал о подобранной мною железной конфигурации. Теперь я перейду к разговору о софте. 
 Операционная система 
 Специфика домашних серверов такова, что это машина, которая делает абсолютно все: сетевая файлопомойка, DNS, DHCP, маршрутизация, торренты, GIT и еще бог весть что, вопреки всем рекомендациям экспертов по…
8-го октября, на 71-м году жизни скончался Деннис Ритчи (Dennis Ritchie). Об этом стало известно из сообщения его коллеги Роба Пайка. 
 Дэннис Ритчи — один из величайших инженеров современности, создатель вездесущего языка C и один из авторов ОС UNIX. Сложно переоценить влияние этого человека на современную IT-индустрию: его идеи легли в основу подавляющего большинства современных систем, и…
В предыдущем посте я
рассказал о предпосылках, сподвигших меня на реогранизацию домашней сети.
Сегодня речь пойдет о подборе железа для сервера. 
 На всякий случай напомню ключевые требования, которые предъявлялись к серверу: 
 
 Дешевизна железа (бюджет был установлен 5000 руб. ± 1000 руб.). 
 Возможность постепенного наращивания мощности в максимально широких рамках.…
Этим постом я начинаю серию, в которой расскажу о процессе сборки, настройки и
эксплуатации домашнего сервера. 
 Начать же я хочу с изложения предпосылок, которые обусловили выбор железа, софта
и настроек, о которых будет рассказано далее. 
 Сейчас в квартире любого гика скапливается изрядное количество довольно умных
девайсов, умеющих ходить в интернет, играть музыку и делать…
Поздравляю, коллеги, с профессиональным праздником! 
 Не буду долго перечислять пожелания — всё всем и так понятно :-) Ну а кому все же хочется пожеланий — добро пожаловать на Хабр, по такому случаю там целых два топика: первый и второй . А для тех, кому не лень пошевелить мозгами, там же есть набор праздничных головоломок . Сумеете решить? 
 Возвращаясь к пожеланиям, я пожелаю лишь одно:…
Как я и планировал, я начинаю по-тихоньку публиковать полезные наработки, использованные мною в phpBB Constructor . Сегодня черед, пожалуй, наиболее важной из них — это MODX Library . 
 MODX Library — это библиотека, обеспечивающая автоматическую обработку инструкций по установке модов в формате MODX . Идейно этот формат является развитием патчей со значительно расширенным набором операций,…
Пришло время представить широкой публике проект, над которым я работал все
последнее время. Знакомьтесь,
 phpbbconstructor.com . 
 Вводная 
 phpBB — один из самых лучших open source движков для
создания форумов. На нем работают сотни тысяч конференций, многие из которых
обладают впечатляющей функциональностью. И несмотря на то, что в базовой
комплектации phpBB3…
Немного позже, чем думал (что простительно, ибо дни выдались хлопотные) привожу свои варианты решения упражнения, которое я озвучил в предыдущем посте . Условие повторять не буду, по приведенной ссылке все описано. 
 Решение 1, читерское. 
 В условии было сказано, что надо обрабатывать исключения в методах init(), run() и shutdown(). И хотя это явно не оговаривалось, по логике…
Хочу предложить программирующей части моей аудитории небольшую задачку, что называется, по мотивам реальных событий. Задачка просто на технику программирования, даже не на алгоритмы, к конкретному языку она, в общем-то, не особенно привязана, лишь бы в нем были предусмотрены исключения. 
 Есть корневой класс, условно назовем его ApiDispatcher, который управляет основным потоком исполнения. В…
Практически всем пользователям знакома утилита top, показывающая интерактивный
список процессов, отсортированный по нагрузке на процессор. История этой утилиты
идет от 1984 года, когда Уильям ЛеФевр написал такую утилиту для BSD 4.1. С тех
пор top или его аналог есть практически в каждой UNIX-подобной ОС. 
 Годами доказав свою практичность, top вдохновил многих других программистов…
В прошлой заметке я
сформулировал основные требования к движку блога. Теперь пришло время в общих
чертах разобаться с реализацией. На начальном этапе здесь можно сказать совсем
немного, поэтому пост будет небольшим. 
 Технические требования 
 
 Язык программирования: PHP 5.1+ В принципе, я мог бы себе позволить и
использовать PHP 5.3, мигрировав блог на мою VPS, но я не…
Вот уже чуть больше трех лет этот блог крутится на Drupal, но последнее время в все чаще задумываюсь о том, чтобы отказаться от него в пользу самописного движка. Причина этого желания состоит не в том, что в своей жизни я изобрел мало велосипедов, а в том, что Drupal — слишком мощный движок для моих целей. 
 За эти три года я достаточно много работал с Drupal’ом и могу с чистой совестью…
Этот пост несколько выбивается из общей канвы блога, но я просто не могу промолчать. Что нужно настоящему программисту для счастливой жизни? Думаю, все согласятся, что в этот список точно входят интересная работа, комфорт дома и на рабочем месте и, конечно же, вкусная еда, приготовленная любимой девушкой. Вот о последнем и пойдет речь. 
 Надо сказать, мне жутко повезло, я ухитрился найти самую…
Микро-заметка для себя и для тех, кто столкнется с аналогичной проблемой. 
 Симптоматика 
 При попытке подключиться к удаленному хосту по ssh между установлением соединения и запросом пароля возникает длинная пауза (секунд 15-30). Она может появляться и пропадать в зависимости от того, из какой сети вы подключаетесь, однако никак не корреллирует со скоростью доступа. 
 Решение 
 В…
Ну, если быть честным, то не совсем где угодно, а на любом дистрибутиве линукса. Возможно, так же заработает и на других *NIX системах, хотя я в этом и не уверен: проверить не на чем, а знание матчасти в этом отношении подкачало. 
 И так, наша цель собрать минималистичный bash свежей версии, без зависимостей и не требующий установки, чтобы потом запускать его с флешки или, как в моем случае,…