Overview of Language Server Protocol LSP for Clojure development

20 March 2021
clojure-lsp logo

Microsoft Language Server Protocol, LSP, is exactly what the name says it is. Its a (JSON RPC) protocol. Its no more and no less than that. LSP is however a big strategy peace for Mircrosoft to encourage developers to adopt VS Code, which naturally provides support for the LSP protocol. The implementation of tooling that uses LSP is left to companies and communities that develop editor and related tools.

Standards can be an opportunity to focus development work and provide a rich set of tools that are far easier to integrate. There are many examples of where a protocol has provided a huge amount of diversity, such as TCP/IP, DNS, HTTP and HTML protocols that drove the creation of the web we know today. Standard protocols in themselves did not make the web, but allowed developers to build on top of them and create the rich and diverse experience on the web that we see today.

LSP is no different. By itself LSP provides no benefit. However, when adopted as a standard by tooling developers it has the potential to help grow an even richer experience for the whole developer community.

Continue reading →

Brave Clojure redux - part 1 - the REPL

16 February 2021
learning-clojure logo

Brave Clojure redux is series that revisits the code examples and tooling covered in the book: "Clojure for the Brave and the True". The good news is you do not need to be brave or true to read the book or learn Clojure either. It does help if you have some time and motivation though.

Brave Clojure redux uses Clojure CLI tools rather than Leiningen as used in Brave Clojure. Code examples will be used from the book, complemented with additional examples where relevant.

Part 1 covers the Clojure REPL process, a vital part of Clojure development. The basics of building and running a project are also included.

Continue reading →

Clojure CLI tools - To jack-in or connect, that is the question

31 December 2020
clojure-cli logo

To jack-in or connect, that is the question. Whether it is more effective to relying on the editor to auto-inject the required dependencies for every workflow, or assemble your own aliases them include any editor - William "Hacker" Shakespear

A REPL is the central part of Clojure development. For the full workflow, an editor connects to the REPL to evaluate code and show instant results.

The developer can be in control of how the REPL starts, managing libraries and tools used alongside the REPL. Or the editor can automate the process and control how the REPL is started.

Continue reading →

Clojure CLI tools aliases deserve good design too

11 December 2020
clojure-cli logo

Aliases in Clojure CLI tools are an important way to configure how to work with a Clojure project effectively, so they deserve the same attention and clean design applied to source code, test code and other configuration.

practicalli/clojure-deps-edn provides examples of over 50 aliases crafted to use over multiple projects and providing access to a wide range of Clojure CLI community tools.

One way to kill the excellent experience that Clojure CLI tools bring is to write aliases that conflate concepts and are just a catch all for loosely related configuration. Without applying a little thought and design to aliases it just makes more work later on.

Continue reading →

Clojure community - getting help

15 July 2020
clojure logo

A guide to getting help from the Clojure community. There are several ways you can get help so you can use which you find more valuable and rewarding. The most active tools include:

  • ask.clojure.org - official forum with the Clojure maintainers, help shape the development of Clojure
  • Clojurian Slack community - very active community chat for immediate / shot term discussions
  • Clojurians Zulip - active community chat with topic-based threading and full history, strong data science community and archive of most slack channels
  • ClojureVerse - community forum for friendly short to long-term discussions
  • New Clojurians: Ask Anything - simple web based threaded discussions

General website such as redit/clojure are useful ways for the Clojure community to reach out to the more general development community.

Continue reading →