clojure

Created: Aug 29, 2021Published: Nov 01, 2022Last modified: Apr 05, 2023
No tags
Word count: 28Backlinks: 21

A modern lisp targetting the JVM, JavaScript, Bash, and others.

Focused on simplicity and a culture of pragmatism.

Offers best-in-class repl-driven development tooling for joyful interactive programming.


Backlinks

Cider is an emacs clojure lib gives emacs and clojure the interactive programmy goodness the world deserves.

Everyone's journey through programming languages is different - we all choose different times to start and stop.

One thing I know for sure - the more languages you use in-anger, the easier learning the next one is. I really didn't know anything about my first language or two until I learned the third or fourth.

More details to leave here, but for now, here's a rough outline of my path:

  • Primitive Java in college courses
  • Objective-C and a basic iOS app
  • JavaScript via Codecademy
  • Full stack JavaScript
  • BackboneJS
  • AngularJS
  • NodeJS
  • MongoDB
  • Golang for some microservices
  • Brief Ruby + Rails + ReactJS frontend
  • Full Stack JS with Angular, Koa, RethinkDB
  • Plus a swift iOS consumer
  • Angular2 with TypeScript, Node + GraphQL backend with Typescipt
  • Go microservice framework, data pipeline, GraphQL service
  • Elixir rewrite with same features
  • Elm frontend
  • Switch from Neovim to Emacs (first lisp exposure)
  • Full Haskell rewrite
  • Forced switch to Python backend, opt-in to ClojureScript frontend (Reframe)
  • Bash tooling refactored into Clojure
  • Fennel (Lisp for Lua) in Love2d and AwesomeWM
  • Python (Django) and Python (FastApi, Strawberry)
  • 'modern' React with Typescript (yuck!)
  • GDScript ( Godot )

At the time of writing, my opinions are quite strongly in favor of Clojure for just about everything practical. It does so much in so little code, is extremely flexible and malleable, and is excellent for interactive debugging. Especially with the recent expansion of targets (e.g. Babashka), Clojure can reach everywhere.

I do think my path had something to do with my stability at the end. If folks come into clojure without trying to destructure json in Go, without dealing with python in anger, or without typing yourself into a category theory corner in Haskell, you might need to go chase that first.

I loved Elixir for it's simple and effective standard library and interactivity as well - Clojure just feels like an even better execution of those things.

More to share here! Feel free to ping me if you want to hash any of this out,

I'm game :D

Renders clojure files: evals the code, then serves results and comments!

---

Clerk is about visualization.

A lisp worth investigating and toying with!

My understanding: racket is building blocks for writing your own DSL s.

I'm interesting in getting more experience in more lisps - emacs-lisp and clojure both leveled me up significantly, so racket and common-lisp seem like they'd be worth whatever time I put in.

Godot supports extending the editor at a very low level - this was formerly called godot native, but was renamed to godot extension in Godot 4.

This is what lets people write godot games in other languages, including Rust.

There were some clojure approaches from aways back, but I haven't checked in on them for a while.

Ralphie is a library for useful clojure / babashka apis.

It provides namespaces and functions for integrating with whatever tools I use.

The gist: bash-like scripting and automation libraries via babashka and repl -driven development.

Originally targetted linux cli helpers, but expanded to some osx use-cases as well.

Example namespaces: emacs, tmux, browser, git, spotify, rofi.

A Godot monorepo full of games, addons, and scripts.

A video overview of the components that make up the clawe monorepo.

Relevant April 2023.

I'll post a link here once it exists! For now, if you're reading this, I could stream this any day, so take a look at my schedule or ping me to see when it's going to happen.

A fully-featured tiling window manager on OSX.

Targetted by clawe to bring clojure -y, repl-driven development to OSX.

Often people ask what frameworks clojure offers - the answer is generally suggestions for libraries.

You don't need a framework - frameworks tend to obfuscate language details and "help" you avoid parts of the language that shouldn't exist (read: lock you into a pattern that is hopefully suitably flexible for your needs).

Clojure with a few libraries is already so minimal and flexible that more layers of abstraction are typically not worth it.