Ivan Grishaev's blog
Writing on programming, education, books and negotiations.
Ring JDK Adapter
PG2 release 0.1.18
Last in Clojure
Deed: a fast encoding and decoding library for Clojure
Clojure AntiPatterns: the with-retry macro
PG2 release 0.1.15
PG2 release 0.1.12
PG2 release 0.1.11: HugSQL support
PG2 release 0.1.9: arrays
PG2 release 0.1.6: rich JSON capabilities
PG2 release 0.1.5: Migrations
PG2 release 0.1.4: HoneySQL API and shortcuts
PG2 release 0.1.3: Next.JDBC-compatible API
PG2 release 0.1.2: more performance, benchmarks, part 3
PG2 benchmarks, part 2
PG2 early announce and benchmarks, part 1
Data-Driven Development is a Lie
PG docs, part 8. HoneySQL
Virtuoso: a Clojure wrapper for virtual threads
PG docs, part 7. COPY IN/FROM
PG docs, part 6. SSL
With-http: a Clojure library for testing HTTP
PG docs, part 5. Notifications
PG docs, part 4. Arrays
PG docs, part 3
PG docs, part 2
PG docs, part 1
Анонс второй книги
Avoid code you cannot debug
PG: Postgres-related libraries for Clojure
Clojure + GraalVM framework for AWS Lambda
Эта удивительная Clojure: что на ней разрабатывают, чем она отличается от других языков и подходит ли для входа в программирование
The Mask library for Clojure
The DynamoDB library for Clojure
Clojure Coding Guide
REPL, Cider, Emacs (часть 4/4)
REPL, Cider, Emacs (часть 3/4)
Zippo: additions to the standard clojure.zip package.
REPL, Cider, Emacs (часть 2/4)
REPL, Cider, Emacs (часть 1/4)
Teleward: a CAPTCHA bot for Telegram in Clojure + GraalVM
Use format rather than str
Bogus: a simple GUI debugger for Clojure
The Pact library for Clojure
Meet Soothe: a small Clojure library for better Spec error messages
Книга в ДМК-Пресс
Реляционные базы данных в Clojure
Introducing Farseer: the JSON RPC server, the client and utilities
Clojure Zippers
Configuration in Clojure
Exceptions in Clojure
Systems in Clojure
Базы данных в Clojure (1)
Зипперы в Clojure (часть 8). Заключение
Зипперы в Clojure (часть 7). Обход в ширину. Улучшенный обмен валют
Зипперы в Clojure (часть 6). Виртуальные деревья. Обмен валют
Зипперы в Clojure (часть 5). Редактирование
Зипперы в Clojure (часть 4). Поиск в XML
Зипперы в Clojure (часть 3). XML-зипперы
Зипперы в Clojure (часть 2). Автонавигация
Зипперы в Clojure (часть 1). Азы навигации
Dictionary-like Specs in Clojure
Тесты в Clojure (второй фрагмент)
Тесты в Clojure (фрагмент главы)
Системы в Clojure
Конфигурация
Изменяемость в Clojure
Исключения в Clojure
Clojure.spec
Введение в веб-разработку на Clojure. Часть I
I will never let monads be in a Clojure project
User-Agent parser for Clojure
Clojure extended: Java interop book
Remus: a new RSS/Atom feed parser for Clojure
Зачем нужна Кложа
A hidden message in Cognicast podcasts
Environ variables are not for configuring software
Don't use Leiningen to run shell-scripts
First Clojure stream in English
Thoughts on UI tests
Mozilla makes me crazy
Съездил в Балтимор
Dealing with emoji in Clojure
Clojure in Highload Cup
Conditional Queries in Datomic
In-Memory SQLite Database In Clojure
Conceptual languages
Migration from Postgres to Datomic
On Clojure arguments
Clojure Webinar #1
Рич Хикки
Мультиметоды в Кложе
Мой вклад в clj-http
Книга ClojureScript Unraveled
Кложа. Причины успеха