February 18, 2022

Practicalli content plans for Spring 2022

practicalli logo - post topic

Much more content is coming in the Spring of 2022, thanks to Clojurists Together funding. To ensure the most useful content is provides, Practicalli would value feedback on the planned topics.

The submitted plan to Clojurists Together is to extend existing guides and code examples, as well as adding new content to the existing Practicalli books. Additional video content will be added across the Practicall Books, updating existing video content where it has become dated.

Videos will be created off-line rather than live broadcasts, to increase the quality of the videos. Practicalli may do some live broadcasts again, however, these will be very experimental and unscripted (possibly subject to Covid brain fog too).

Practicalli is also looking for opportunities to help improve documentation and code examples back to open source projects and has recently contributed to CIDER and Kaocha projects.

Feedback

Discussions are available in the #practicalli channel for both Clojurians Zulip and Clojurians Slack communities. DM's are also welcome if you wish to have a one-to-one discussion.

The Practicalli TODO kanban board manages the work across all Practicalli content

Practicalli GitHub Organisation Kanban board for managing tasks across all content

Each book GitHub repository lists additional ideas as issues for the community to vote on in their respective repositories on the Practicalli GitHub Organisation

Practicalli Clojure

A book for those starting their journey into Clojure, taking the REPL driven development approach. The book covers install and configuration of Clojure CLI, Clojure aware editors and data inspectors. Using those tools to learn Clojure through a series of challenges and small projects. Complementing REPL Driven Development with Test Driven Development

Practicalli Clojure book banner

The plan is to migrate to the tools.build approach and adopt more tools using the -T execution option, both as installed tools and via user level aliases.

Practicalli Clojure Web Services

Covering how to build Server-side web services and APIs from the ground up, aiming for a simple design and clean code. Using tools such as Integrant REPL to support a REPL Driven Development approach.

Practicalli Clojure Web Services book banner

The plan is to update existing guides to show how to build production grade Clojure services. Additional guides will focus on building APIs with Reitit, Integrant and mulog.

One of the commercial projects by Practically in 2021 was a GraphQL API with a web hook to manage authorisation to the data using Reitit and Auth0.com, so many lessons learned from this project will be added.

  • Integrant REPL and Integrant with Aero
  • Structured logging with mulog and configuring common log publishers
  • Building REST API's with Reitit and clojure.spec
  • Authentication & Authorization (with Auth0 service) - especially for API's
  • Deployment enhancements including CLI specific heroku build pack, additional GitHub Action examples and adding Docker configuration including local build from source
  • Building GraphQL API's with lacinia or juxt/grab

Continuous Integration with CircleCI content has already been updated to use the latest Clojure image

If there is time then practicalli will also take a look at JUXT/site and associated projects, with an view to move Practicalli content onto Site if appropriate.

Essential Clojure

One of the most challenging aspects for those new to Clojure is understanding what libraries are available and which are the most appropriate to use. This is often seen in the call for a Clojure framework. However, the existing Clojure community is generally aware that large frameworks cause more challenges for developers than they solve.

To address this need, create a curated guide to the most common tools and libraries to support developers navigate the myriad of options in the Clojureverse. This would be a reference for experienced and new developers to lean on, when they are looking for options to implement their design choices

  • Unit testing & Test runners: clojure.test, humane output, Lambda Island Koacha, Cognitect Labs
  • Repl Terminal UI - Rebel & Socket REPL, Remote REPL approaches
  • REST API Reitit and Clojure.spec
  • App server - jetty, httpkit, manifold / aleph
  • System components lifecycle - Integrant, Mount, Component
  • Logging - mulog
  • Relational db - next.jdbc and postgresql & migration libraries
  • Non-relational stores - XTDB
  • Clojure editor - gitpods for evaluating (Calva, Spacemacs/Doom, Cursive, Conjure, Clover)

Open Source projects are preferred over commercial products, although there may be some honourable mentions to commercial products if they provide significant value and have a freely available development option.

Practicalli plans to reach out to others in the community also working on this issue, such as the Freshcode team and their Clojure Garden project.

Summary

Clojurist Together sponsored work officially starts in April, although there will be much preparation and enhancement to the existing content during February and March. A journal of development will be kept to help the community follow the changes, as was done with previously sponsored work. The journal will also be published on the Practicalli website.

All Practicalli books have been automated using GitHub actions, enhancing the speed of deployment and simplifying pull requests. The GitHub actions also include MegaLinter to minimise spelling errors, broken links and other small issues.

The Clojure CLI user level aliases repository continues to be regularly maintained, with monthly updates to the library versions used. There will also be some changes as part of the move to tools.build approach and deps-new for creating new projects from templates, although these should be fairly seamless.

Practicalli has also been migrating to use LambdaIsland/Kaocha test runner as it has proven to save time locally and in continuous integration workflows. Logging will be migrating to mulog as structured event logs make much more sense and are far more effective for diagnosing issues.

Thank you

practicalli GitHub profile I @practical_li

Tags: practicalli