This page collects my open source libraries and projects. Some of them I maintain, some of them I put here for history purpose only.

Etaoin is a library to automate a browser from code. It implements the Webdriver protocol in pure Clojure. I have been a maintainer of this lib for several years. At the moment, it is maintained by the Clj-commons community.

Remus is an RSS/Atom feed parser based on top of the [Rome Tools][rometools] Java library. It supports HTTP2 and some other features.

PG2 is a client for PostgreSQL database. It doesn’t rely on JDBC abstractions and is written from scratch. The performance is a faster than the Next.jdbc wrapper for Clojure. It supports some of PostgreSQL features that other drivers don’t.

Ring JDK Adapter is a Ring-compatible web server build on top of Java’s jdk.httpserver module. It has no dependencies and thus is great for testing or stubbing local HTTP. Although it’s a bit slower than Jetty, it still can be used in production.

Deed is library to serialize arbitrary Clojure data into binary format, and decode back. Deed is faster than Nippy and doesn’t suffer from some issues that Nippy has. Free from dependencies and provides flexible API like lazy reading or writing.

JSam is a JSON encoder and decoder written from scratch in Java and a thin Clojure layer. Has no dependencies and thus doesn’t suffer from missing Jackson modules or conflicts (which is common when using Cheshire or Jsonista). Not the fastest one but is still pretty good.

Lambda is a number of tools to run Clojure in AWS Lambda service. It provides a middleware that turns AWS messages into Ring maps and back, so your lambda can serve a Ring web application. The documentation describes how to compile and deploy your lambda to AWS.

Whew is library wrapping the Java’s CompletableFuture class and its capabilities. It provides a number of functions and macros to chain futures and organize pipeline based on async computations. Free from dependencies.

Virtuoso is a collection of wrappers on top of Java’s 21 virtual threads. The library ships functions and macros named after their Clojure counterparts but acting by means of virtual threads. Useful for IO-heavy logic.

Teleward is a Telegram captcha bot working in @clojure_ru Telegram community. It implements some of Telegram Bot API from scratch including a small template system. It stores state in the DynamoDB cloud service.

Dynamo DB is a client to the Dynamo DB AWS service. Fast and robust with narrow dependencies. Supports almost every API. The library is also compatible with Yandex YDB (see on Yandex cloud).

Bogus is a simple UI debugger for Clojure. It interrupts execution and renders a window with local variables and a simple REPL. By using this REPL, you evaluate expressions relevant to the current position and state. I use it every day since I made it.

Taggie is a joke library that overrides printing rules for most of Clojure objects. Say, the java.io.File is now rendered as #File "/path/to/file.txt" but not #<java.io.File@7fea5978>. This approach is extremely arguable yet still useful for local setup.

Zippo is a set of additions to the standard clojure.zip module for Zippers. Namely, the library provides functions for better search and iteration, e.g. breadth-first algorithm, specific zippers and so on.

User Agent is a helper to parse HTTP User-Agent header (based on the UADetector Java library). It has got 650.000 of downloads on Clojars (don’t know why).

Farseer is my attempt to build a JSON RPS client and server. It’s split on sub-projects with core functionality, a server, a client and utilities. It follows the official spec and serves multiple commands at once, parallel processing, input and output validation and so on.

Pact is a small library to chain values through a number of handlers. This approach reminds monads in Haskell and how this language manages them: “good” values propagate further, “bad” ones interrupt the pipeline.

Mockery is a tool for mocking functions in tests. Nothing but a wrapper on top of the with-redefs macro but saves lines of code.

Mask is a simple library introducing a Masked type. This type wraps secret values preventing them from leaking though printing or logging. Should be used in configuration when all passwords and tokens are masked.

Spec Dict is my attempt to make a better Clojure spec for maps. This spec is declared like map of key → another spec (like we do it in Malli nowadays).

Toy Parser is demo repository for students learning parsers. It provides a number of basic parsers and two showcases processing prefix and infix notations.