Docker: a simple workflow for Clojure

May 15, 2023
docker logo

Docker enables a consistent approach to building and running Clojure projects along with a range of other services locally (database, cache, streams, etc.), The Clojure project is built from source when starting services (a watch feature can rebuild on code changes). Heath checks and conditions are set to ensure dependant services start in the correct order.

Running Docker is relatively fast once image overlays (layers) are cached on their first run, so its a viable approach for local system integration testing and acceptance testing, before pushing changes to a remote Continuous Integration service.

A Docker workflow complements a REPL Driven Development workflow, it does not replace it. The main development effort should be more effective via a REPL connected editor with Docker Compose focused on orchestration of services.

Continue reading →

Docker Compose for Clojure Development

May 7, 2023
docker logo

Docker Compose provides a declarative configuration for orchestrating services locally, providing a simple way to spin up services to try them out or orchestrate a whole system from numerous dependent services.

Compose can build images for Clojure projects and conditionally run based on the health check of other supporting services, e.g. Postgres Database.

Now that Compose is part of docker, more features such as build on change are being added.

Continue reading →

Practicalli future plans

April 24, 2023
practicalli logo

The plan of work for Practicalli during 2023 focuses on improving the developer experience for Clojure curious and experienced developers alike. A slow start to the year has changed into very good pace, especially after updating the tooling and theme for all the Practicalli books. My health is much improved and motivation is very high (although still working on my fitness).

New work will follow the Practicalli REPL Reloaded workflow and will include videos showing how I work, based on my commercial experiences with Clojure. I am also keen to start a regular live broadcast of Hacking Clojure, these will be live and unscripted, allowing for an experimental experience and an opportunity to understand what information would be useful to create in the more polished Practicalli books and videos.

UPDATE: Practicalli was not selected for Clojurists Together for funding this time around, so the planned work will take more time as I look for commercial work.

Continue reading →

Create deps-new templates for Clojure CLI projects

March 30, 2023
clojure-cli logo

Templates are great way to learn how to assemble Clojure libraries into a working project and can save considerable time when creating new projects by providing common configuration, development tools, dependencies and code used by the engineering team.

seancorfield/deps-new provides a simple to understand approach to defining templates. Declarative rules express how file templates are copied to create a new project. Substitution values are passed to {{unique-key}} placeholders in template files creating a specific project each time. Programmatic transformation is also supported for significant customisation, e.g. adding options to templates.

practicalli/project-templates is a new project to provide comprehensive templates to support production level workflows, including Dockerfile configuration, GitHub continuous integration workflows, etc . Read on to see how the first template was built and learn tips to building your own templates.

Continue reading →

Build Emacs from source on Ubuntu Linux

March 11, 2023
emacs logo

Emacs 29 will be the next stable release later in 2023 adding major features: Eglot LSP client, Tree-Sitter language parser and package.el package install from Git repositories. more features to enhance and improved every day use of Emacs.

Building from source is a convenient way to try Emacs features in advance, especially useful for those maintaining or developing new tools on top of Emacs.

Emacs 29 - what to expect - a brief summary of the major features

Continue reading →