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