Все записи блога

Пишу о программировании и данных.

20242023202220212020201920182017201620152014

2024

Курс «Многозадачность в Go»

Таймеры в Go 1.23

Полносрезное выражение в Go

Пустой срез vs. nil-срез в Go

Запускаем 100К горутин в Go

Приемчики форматирования в Go

range по функциям в Go

Go Generics

nil-получатель метода в Go

Интерфейсы и nil в Go

Современный SQLite: STRICT-таблицы

Замыкание = гибкость

Метод на значении / указателе в Go

2023

Интерактивная API-документация

Пишем менеджер пакетов

Язык Odin

Реестр и менеджер пакетов для SQLite

Как установить расширение для SQLite

SQLite-песочница с расширениями

Встроенные функции в Go 1.21

Виды JOIN в SQL

Мне не нужен ваш язык запросов

sqlite3 + расширения в Python

Покрывающий индекс в SQL

Больше текстовых функций в SQLite

SQL-рецепт: сравнение с соседями

Base64 и другие кодировки в SQLite

LIMIT и FETCH в SQL

SQL-рецепт: сегментация данных

Выпуск «Подлодки» про SQL

SQL-шпаргалка

SQL-рецепт: ранжирование строк

AI-ассистент для SQLite

ChatGPT-бот на Python

Интерактивные SQL-примеры на JavaScript

Чтение и запись файлов в SQLite

Сводные таблицы в SQLite

Избранные фичи Go 1.20

Регулярные выражения в SQLite

Композиция атомиков в Go

Идемпотентный Close в Go

2022

Пользовательские функции в SQLite

JSON Lines

Многозначительное многоточие в Python

Летающая свинья, или протоколы в Python

Случайные числа и последовательности в Python

Временные таблицы в SQLite

JSON и виртуальные столбцы в SQLite

Компактные объекты в Python

Вычисляемые столбцы в SQLite

Постраничный итератор в Python

Многострочные запросы в консоли SQLite

Закешировать результат вычислений в Python

История команд SQLite

Гибкие типы данных в SQLite

Все расширения для SQLite

2021

Быстрый поиск похожих слов на SQL

Датасет слов английского языка

Скорость алгоритмов и котики

Как устроен список в Python

Табличные выражения SQL

Справочник адресов России

Вы являетесь дизайнеру в страшном сне

SQLite-песочница в браузере

Как хранят данные в браузере

Признать проблему

Почтовые адреса в интерфейсе

Что должно быть в письме о заказе

Дурная кровь

Найти группы похожих объектов с помощью SQL

Критерии хорошего кода

Поэлементно сравнить коллекции в Python

«Отнаследовать» функцию от существующей в Python

Оконные функции SQL: скользящие агрегаты

Второй язык для питониста

Видение, эмпатия, смелость

Оконные функции SQL: агрегация

Оконные функции SQL: смещение

Книга по визуализации данных

Оконные функции SQL: ранжирование

Начни с примера

Зачем нужны оконные функции

Оконные функции SQL

Собираем открытые данные с GitHub Actions

Что нового в SQLite 3.35

Слишком простое решение

Простое против легкого

Кросс-платформенная сборка с GitHub Actions

Медиана вместо среднего

Как сделать нормальный поиск

Как создать таблицу на 1М записей одним запросом

Дизайн интерфейсов для нормальных людей

Более быстрая лошадь

Сила комментария

SQLite для аналитики

Аптайм на статус-странице

2020

Мой личный бойкот

Задачка об итераторе на Python

Python. Грамотно работать с любым диапазоном

Python. Проверить, входит ли элемент в коллекцию

Зачем читать исходники стандартной библиотеки

Python. Прочитать произвольную строку из файла

Python. Отрезать строке голову и хвост

Красавица и чудовище. Обработка ошибок в Go

Как человек решает задачи в интерфейсе

Не законы, а говно

Ссылки на телеграм в вебе

Как сделать классный Python-пакет

Что делает интерфейс простым

Автоматизация задач в Python-проекте

Юлия → Iuliia. Всё о транслитерации

Вахтёр-бухгалтер управляет компанией

2019

Каменный век безопасности

Python. Создать словарь по списку ключей

Python. Пронумеровать элементы коллекции

Быстрый язык ≠ быстрый код

Python. Cортировать в конце или держать отсортированным?

Python. Быстро найти элемент коллекции

Python. Узнать день недели 40 лет назад

Python. Создать полный дубль коллекции

Копировать у конкурентов

О продуктоводстве

Задачка: айти-вахтёр

Python. Сегодня == сейчас

Python. Обработать заявки с учётом приоритетов

Открытка несовершенным людям

Тарифный план «свяжитесь с нами»

Python. Выбрать топ-k элементов списка

Python. Объединить отсортированные списки в один

Python. Кортеж здорового человека

Python. Из десятичной дроби — в обычную

Python. Хранить последние N объектов

Задачка: «очистить» vs «удалить»

Python. Подвох в функции sum()

Python. Операции со статистикой

Python. Посчитать количество объектов каждого типа

Python. Умолчательные значения настроек

Python. Enum здорового человека

Python. Исходники стандартной библиотеки

2018

Дизайн — это здравый смысл

Чистый код. Единообразие в именах

Python. Шаблонизатор для бедных

Python. Разбить строку на слова с учётом кавычек

Чистый код. Похожие названия методов

Обращение к JavaScript-разработчикам

Python. Кратко напечатать развесистую структуру

Python. Сравнить строки на похожесть

Как стать умнее на порядок

Python. Простое сравнение с шаблоном

Python. Все слова с прописной буквы

Python. Отформатировать текст для консоли

Python. Сделать превьюшку длинного текста

Oh My Py — всё о стандартной библиотеке Python

Тестировщики не должны находить баги

Человек! Докажи, что это ты

​Премиальный и золотой тарифы

Финал «Интерфейсов без шелухи»

Секта свидетелей раздутой конверсии

Уберите капчу при оплате

Как понять рекурсию

О кодах подтверждения

Не надо заканчивать фичи

Математика для программиста

Автокомплит и проверка данных

Задачка: регистрация с фото и паспортом

Пароли в СМС и пушах

Если нет награды, прогресс бесполезен

Прощание с пользователем

Не моя проблема

Обратить необратимое

Регистрация и оплата как необходимое зло

По техническим причинам

Я медленно снимаю твои деньги с карты

2017

Сила частичных решений

Сломается всё

Вредные привычки: mind maps

Днище ИТ-безопасности

Угадайка и неленивый интерфейс

Никто не читает требования

Плохой, плохой магазин

Приём «показать все»

Задачка: приглашение обновить ОС

Продавец-террорист

Пейджинг, ещёкалка и бесконечный скрол

Задачка: бардак в телеграме

Рейтинг как обратная связь

Суперсила дизайнера

Персоны, Jobs-to-Be-Done и здравый смысл

Задачка: Яндекс-музыка и медленный интернет

Задачка: город в интернет-магазине

Урл как интерфейс

Хватит сортировать по алфавиту

Запас доверия

Люблю старые интерфейсы

Человеческого фактора не существует

Купить в 1 клик

Хороший продукт «прокачивает» пользователей

Редактура и голосовой интерфейс московского метро

Главное правило выбора в интерфейсе

Правильные заметки к релизу

Делайте пасхалки

Что-то пошло не так

Программирование без интернета

Тяжелая правда о презентациях

Конспект курильщика

Нелогичный пользователь

Единственная книга о продакт-менеджменте

Баг, не фича

2016

Сделайте себе интересно

Как упростить пользователю жизнь

Как найти программиста: единственный рабочий метод

Надмозги в метро: конечная станция

Горелый и его последний дизайн-линч

Бизнес как игра

Ричард Хипп и SQLite

«Психбольница» Купера 20 лет спустя: цели и сценарии

«Психбольница» Купера 20 лет спустя

Как привести дела в порядок без Дэвида Аллена и СМС

Законы робототехники в интерфейсе

Главный секрет фронтенд-разработки

Пристрелите фичу

Оглянуться вокруг, чтобы не налажать

2015

Бэклогом управляют пользователи

Донат — зло

Как не написать простыню

По техническим причинам

Специалисты, которых никто не любит

2014

Чиним объявление про эскалатор в метро

Миф о сложности Oracle Database

Дольки для Рашми

Геймифицируй это!

Храним состояние в URL

Ваш лучший друг, анонимус