A pure Clojure implementation of the Webdriver protocol, named after Etaoin Shrdlu — a typing machine that came to life after a mysterious note was produced on it.
Use the Etaoin library to automate a browser, test your frontend behaviour, simulate human actions or whatever you want.
Benefits:
- Selenium-free: no big dependencies, no tons of downloaded jars, etc.
- Lightweight, fast. Simple, easy to understand.
- Compact: just one main namespace with a couple of helpers.
Capabilities:
- Currently supports Chrome, Firefox, Safari, and Edge.
- Can either connect to a remote WebDriver process, or have Etaoin launch one for you.
- Run your unit tests directly from Emacs by pressing C-t t as usual.
- Can imitate human-like behaviour (delays, typos, etc).
Welcome! This site is maintained by the Datomic team as an official place for the community to ask questions, request features, and get their problems solved.
Anyone may view the content on this site, but you must have an account to ask questions, provide answers or vote on questions/answers. Authentication is currently done using your GitHub account. Other authentication providers may be added in the future. When you have logged in, please click your user name in the upper right corner and review your profile. If you wish to receive email notifications, please add an email address.
Questions have both categories and tags. Categories (see right sidebar) are a fixed set of Datomic topics. At least a top level category must be selected when asking a question.
There are two special tags:
- problem - describe a problem or question you have
- request - describe a request for enhancement to Datomic
When problems or requests are logged, Datomic developers will assess and create corresponding internal issues for development.
Users may vote on both questions and answers. Votes can help surface the most helpful answers, and may be used to inform decisions about future releases of Datomic.
In meinem Offenen Brief an Bundeskanzler Friedrich Merz, erschienen am 27. Mai 2026 in der Berliner Zeitung, habe ich sechs konkrete Fehlentscheidungen der deutschen Außenpolitik seit der Wiedervereinigung dargelegt – sechs konkrete Entscheidungen, die von namentlich genannten deutschen Politikern zu bekannten Daten getroffen wurden und Europa an den Rand eines allgemeinen Krieges gebracht haben. Die Berliner Zeitung hat eine Antwort eines Autors unter dem Pseudonym „Tonio Nielsen“ veröffentlicht, der von der Redaktion als „ein Mitarbeiter der Regierung eines europäischen Landes“ identifiziert wurde. Herr Nielsen wirft mir „historische Verzerrungen“, „selektive Geschichtsdarstellung“ und „moralisches und analytisches Versagen“ vor. Er schlussfolgert, dass mein Vorschlag einer „gesteuerten Kapitulation“ gleichkomme.
Seine Antwort verdient eine ernsthafte Auseinandersetzung. Ich möchte daher die sechs Punkte einzeln betrachten. In jedem Fall werde ich darlegen, was ich gesagt habe, was Herr Nielsen erwidert und warum seine Erwiderung nicht stichhaltig ist.
Es gibt Konflikte, die man so lange aus der Ferne betrachtet hat, dass man glaubt, sie zu kennen – bis man merkt, dass man sie nie wirklich verstanden hat.
Einer dieser Konflikte ist der zwischen Israelis und Palästinensern. Er begleitet mich seit Jahrzehnten wie ein Hintergrundrauschen: aktuell wieder laut, meistens leise, aber nie verstummend.
Ich habe ihn immer wieder wahrgenommen – in Schlagzeilen, in Debatten, in Bildern von brennenden Straßen und weinenden Kindern, von Soldaten an Checkpoints und Raketen über Städten. Und doch blieb er für mich bisher seltsam ungreifbar, wie ein Geräusch in der Ferne: hörbar, aber nicht zu sehen.
Vor ein paar Wochen kam aus dem Nachbarort die Frage, wie wir das mit dem Dorfkino machen. Ob ich die Folien vom Kernfrankenfest-Vortrag rüberschicken kann.
Kann ich. Ich pack sie hier dazu. Und schreibe noch eine Kurzfassung mit, damit du nicht erst durch 14 PDF-Seiten klicken musst, bevor du entscheidest, ob das was für deinen Ort ist.
Den Vortrag habe ich am 3. und 4. Mai 2025 beim Kernfrankenfest gehalten, im Foyer der Sporthalle in Neuendettelsau. Damals war das Dorfkino elf Monate alt. Inzwischen ist es zwei Jahre alt, die Zahlen sind größer, das Modell ist noch dasselbe.frank staude
This Clojure style guide recommends best practices so that real-world Clojure programmers can write code that can be maintained by other real-world Clojure programmers. A style guide that reflects real-world usage gets used, and a style guide that holds to an ideal that has been rejected by the people it is supposed to help risks not getting used at all — no matter how good it is.
Clj-kondo performs static analysis on Clojure, ClojureScript and EDN. It informs you about potential errors while you are typing (without executing your program).
Moldable Live Programming for Clojure
Clerk takes a Clojure namespace and turns it into a notebook. Learn more in the Book of Clerk or read our paper.

ClojureScript is a robust, practical, and fast programming language with a set of useful features that together form a simple, coherent, and powerful tool.
Get Started!
ClojureScript is a compiler for Clojure that targets JavaScript. It emits JavaScript code which is compatible with the advanced compilation mode of the Google Closure optimizing compiler.

A blog mostly about Clojure and ClojureScript.
This document defines the grammar for schema data.
incrementally replicate libvirt based virtual machines to remote hosts using dirty bitmaps.
This utility can be used to sync or "replicate" virtual machines to other libvirt hosts. On the first execution, a complete (full) replication will be executed and an dirty bitmap is created. For any following command calls, it will only synchronize incremental changes since the last checkpoint.
Rosetta Code is a programming chrestomathy site. The idea is to present solutions to the same task in as many different languages as possible, to demonstrate how languages are similar and different, and to aid a person with a grounding in one approach to a problem in learning another. Rosetta Code currently has 1,350 tasks, 405 draft tasks, and is aware of 996 languages, though we do not (and cannot) have solutions to every task in every language.
Membrane provides all the tools you need to build a user interface. While all the pieces are built to work together, each piece is optional or can be mixed and matched with other implementations. For example, you could use your favorite UI framework and the other layers to reach another platform. Alternatively, you could provide your own ncurses graphics backend and leverage the ui framework and graphics model.
The three main pieces are:
- A UI framework, membrane.component, that provides state management for GUIs
- A platform agnostic model for graphics and events
- Multiple graphics backends that provide concrete implementations for #2
For membrane to run on a platform, the only requirements are:
- Drawing implementations for graphical primitives like shapes, text, and images
- An event loop that forwards events (eg. mouse clicks, key presses) to membrane and repaints
cljrs is an experimental Clojure dialect targeting the Rust ecosystem. It aims to be a capable Lisp runtime with persistent data structures, a hosted macro system, and native interop — compiled or interpreted, suitable for use as an agentic coding runtime.
Available on crates.io. Early stage; expect rough edges.
- Introduction - clojurust
clojurust is a Rust-hosted dialect of the Clojure programming language. It reads and executes .cljrs and
.cljc source files, provides an interactive REPL, and can AOT-compile programs to standalone native
binaries. - GitHub - csm/clojurust: Clojure and Rust · GitHub
MINIX 3 is a free, open-source, operating system designed to be highly reliable, flexible, and secure. It is based on a tiny microkernel running in kernel mode with the rest of the operating system running as a number of isolated, protected, processes in user mode. It runs on x86 and ARM CPUs, is compatible with NetBSD, and runs thousands of NetBSD packages. Get MINIX 3 now and join our community!
nREPL is a Clojure network REPL that provides a REPL server and client, along with some common APIs of use to IDEs and other tools that may need to evaluate Clojure code in remote environments.
Jack in to Boot, Clj & Leiningen from Vim. Inspired by the feature in CIDER.el.
Depends on vim-dispatch to run commands in background. If you’re using Neovim I can recommend vim-dispatch-neovim
I needed a SV and there were piles of parts ready to be assembled.
A config file format for humans.
TOML aims to be a minimal configuration file format that's easy to read due to obvious semantics. TOML is designed to map unambiguously to a hash table. TOML should be easy to parse into data structures in a wide variety of languages.