Lisp on the JVM. Can use all the Java libraries. This is the beginning skeleton of a page of Clojure links.
31/3/2017 13:01 Manipulating the DOM with Clojure using Klipse: “The Klipse plugin is a client-side code evaluator.
This means that inside a web page, you are not limited to manipulate data, but you can also manipulate the DOM.
In this article we will show 4 approaches for manipulating the DOM with Clojure using Klipse”.
2/3/2017 08:18 Clojure Error Message Catalog: “We are experimenting with starting a community driven catalog of common errors. [...] The idea is that people can submit an issue with a particular error, or make a pull request with the error, description and hopefuly one or two solutions to resolve it.”
31/10/2016 18:47 Boot: A system for using Clojure as a scripting laguage.
23/5/2016 10:33 Introducing clojure.spec: “a new core library and support for data and function specifications in Clojure.” And: “Clojure is a dynamic language, and thus far we have relied on documentation or external libraries to explain the use and behavior of functions and libraries. But documentation is difficult to produce [...] Specs are expressive and precise. Including spec in Clojure creates a lingua franca with which we can state how our programs work and how to use them.”
16/5/2016 10:51 A few tips for writing macros in Clojure: “they can be tricky to get right, especially in a legible way. These guidelines will serve beginning and intermediate macro programmers well. Advanced programmers will know when to ignore the guides.”
19/4/2016 13:45 Clojure, The Good Parts: Some opinionated but thoughtful advice on “what a ‘good’ production Clojure app looks like in 2016.” See also the discussion on Hacker News.
13/9/2015 13:50 Sparklines: A clojure program for making the little graphs.
18/8/2015 8:29 Parens of the Dead: “A screencast series of zombie-themed games written with Clojure and ClojureScript.”
7/8/2015 16:11 Neanderthal: Fast Native Matrix and Linear Algebra in Clojure: “Neanderthal implements BLAS algorithms and abstracts most of that complexity for vector and matrix computations away, behind a frendly Clojure API.[...] Optimized GPU engine 500x faster for large matrices than the fastest Java libraries. Handcrafted JNI bindings for machine-optimized ATLAS BLAS, 10x faster than optimized Java libraries on the CPU.”
31/7/2015 14:11 ClojureScript Next: ClojureScript can now compile itself. This means that you can make a web page that allows the user to type in ClojureScript and evaluate it. That, of course, is just the tip of the iceberg of awesomeness.
11/1/2015 13:32 Quil: Clojure drawing library: Interface to Processing. And a recent entry in the growing tradition of exuberantly literary github pages.
Tutorials & Documentation
re-com Demo: “Re-com is a library of ClojureScript UI components, built on top of Reagent.”
A few tips for writing macros in Clojure: “they can be tricky to get right, especially in a legible way. These guidelines will serve beginning and intermediate macro programmers well. Advanced programmers will know when to ignore the guides.”
20 Cool Clojure Functions: “One of my favorite things about Clojure is that there are just so many really neat, useful functions and macros built into the language, and I’m constantly learning about new ones that I didn’t know existed. I thought I would share with you some of my favorites.”
Macros are Hard!: Talk with slides by David McNeil shows how you need to think deeply about what’s going on behind the scenes in order to understand what is happening with macros in Clojure.
A nice, gentle introduction.
Thorough and quite clear survey, from language basics up to GUI desktop and web applications.
Very clear essay on how to write a macro.
Thorough introduction assuming relatively little on the part of the reader.
A busy person’s introduction to Clojure: “Have a few hours spare and fancy getting to know Clojure and ClojureScript?”
Clojure version. The famous adventure game tutorial, adapted for this particular lisp.
Web Application Frameworks
Luminus: “a micro-framework based on a set of lightweight libraries. It aims to provide a robust, scalable, and easy to use platform. With Luminus you can focus on developing your app the way you want without any distractions.”
Pedestal: Build web apps in Clojure: This is the current incarnation of the ClojurescriptOne project. “Built with components that play nice together & can be re-assembled at will.”
ClojureHomePage: “ClojureHomePage is a Compojure based web framework that allows you to write the backend and frontend with Clojure.”
Hoplon: “Write everything in Clojure and ClojureScript, clientside and serverside. Even the page markup is ClojureScript that is evaluated to produce the DOM.” And: “Use a spreadsheet-like dataflow programming environment to manage client state.”
Liberator: “Liberator is a Clojure library that helps you expose your data as resources while automatically complying with all the relevant requirements of the HTTP specification (RFC-2616). Your resources will automatically gain useful HTTP features, such as caching and content negotiation. Liberator was inspired by Erlang’s Webmachine. [...] liberator will enable you to create application according to a REST architecture.”
Hiccup: “Fast library for rendering HTML in Clojure”.
Taking Off the Blindfold: “Om now supports a very useful notion called instrumenting which allows us to peek under the blindfold without changing any of the original code.”
: “Shoreleave is a collection of integrated libraries that focuses on:
Common client-side strategies
It builds upon efforts found in other ClojureScript projects, such as Fetch and ClojureScript:One.”
In version 0.2.2, and I’ve heard good things about it.
webfui: Client-side web framework for ClojureScript with an emphasis on simplifying DOM manipulations. See the movie.
Closp Documentation: “Closp is a leiningen template that generates everything you need to get started with clojure web development.”
Nice tutorial on “Developing and Deploying a Simple Clojure Web Application” using Compojure and Hiccup.
Noire, a “micro-framework;” may be deprecated in favor of Compojure, etc.
The request and response guts that most of the frameworks seem to be based on is called Ring.
Much more than just a web application framework, Immutant is an “Application Platform.”
re-com Demo: “Re-com is a library of ClojureScript UI components, built on top of Reagent.”
ClojureScript Quick Start: David Nolen explains how to set up your workflow. This page has been around for a long time and the author keeps it up to date.
ClojureScript Next: ClojureScript can now compile itself. This means that you can make a web page that allows the user to type in ClojureScript and evaluate it. That, of course, is just the tip of the iceberg of awesomeness.
Parens of the Dead: “A screencast series of zombie-themed games written with Clojure and ClojureScript.”
ClojureScript 101: Clear example from David Nolen showing how to use core.async to process events.
Himera: ClojureScript compiler as web service.
lein-figwheel: “Figwheel builds your ClojureScript code and hot loads it into the browser as you are coding”.
Exploring the Clojurescript REPL: “A beginner-level exploration of a ClojureScript REPL session complete with mistakes of the type made by me so that you might avoid these common pitfalls when starting your own ClojureScript adventures.”
Devcards: When using clojurescript with React or Om, Devcards allows you to see different states of your UI in the browser at the same time.
omchaya: A ClojureScript + Om client for Kandan, which is some kind of chat program. “An example app that’s actually useful.”
Interactive Programming in ClojureScript: A Leiningen plugin (Figwheel) that gets the browser reloading on save, to allow simple interactive programming in ClojureScript. Includes a movie of the author live-coding a flappy bird game.
Functional programming on frontend with React & ClojureScript: “In this blog post I will show advantages of React way of building scalable and well performing web applications with taste of functional programming. In this tutorial we will introduce basics of ClojureScript as well and show how React plays nicely with ClojureScript through one of its wrappers called Reagent. Working app is included as well.”
Modern ClojureScript: “Modern ClojureScript (modern-cljs) is a series of tutorials that guide you in creating and running ClojureScript (CLJS) projects.”
Re-frame: A framework for writing single page applications with clojurescript and Reagent.
cljs-template: One way to learn and get started with clojurescript.
Servant: A Clojurescript Library for Using Web Workers that claims to allow you to write “clean, multithreaded, ClojureScript.”
Rouge in Pedestal: Falling block game using only the data UI. Should be a good example of how to program with Pedestal.
ClojureScript Tutorials: Mimmo Cosenza’s series of tutorials “will guide you in creating, setting up and running simple CLJS projects. The series follows a progressive enhancement of projects themselves.”
An Om Tutorial: A tutorial on the ClojureScript Om framework, optimized for Light Table.
Video of presentation by Clojure’s author is quite persuasive.
“A short demonstration of using the ClojureScript browser-connected REPL to work with the twitterbuzz sample application.” This little movie by Brenton Ashworth is quite cool. He locally connects the ClojureScript REPL to a browser and can type ClojureScript whose side effects appear as browser behaviors.
ClojureScript One is a complete example of an implementation of ClojureScript to create a “single page” application using the same language on the client and the server. This has been superceded by Pedestal.
fireplace.vim: VimClojure is being replaced by this. I’ve been pretty happy with ScreenSend (used with paredit.vim), but this looks like another good way to go. (Previously named “foreplay.vim”.)
Cider: Interactive editing system for Emacs.
Slimv is “a SWANK client for Vim, similarly to SLIME for Emacs [...] Slimv opens the lisp REPL [...] inside a Vim buffer [...] Slimv supports SLIME’s debugger, inspector, profiler, cross reference, arglist, indentation, symbol name completion functions.” Of course this is for any lisp, but I have the impression that’s it’s popular with Clojure.
VimClojure This has been superseded by fireplace.vim. “[O]ne of the most sophisticated editing environments for Clojure. It provides syntax highlighting, indenting and command completion. [...] If requested VimClojure also provides a SLIME like interface to dynamically work with Clojure code. For this to work the included Nailgun server must be running.” I guess this can include the functionality of Slimv.
Rhizome: Graphiv diagrams from Clojure; extracted from the Channels library.
clojure-gnuplot: “clojure-gnuplot is a simple clojure interface to gnuplot. It allows interaction using lispy syntax.” Briefly described in the gnuplot Cookbook.
Incanter is something like R for plotting, statistics, and stuff.
hiphip: A set of macros for “simple, performant array manipulation in Clojure.”
Korma: “Korma is a domain specific language for Clojure that takes the pain out of working with your favorite RDBMS.” It stays close to SQL, but is a nice abstraction.
OJ: “A refreshing Clojure library for talking to your database, heavily influenced by Ring.”
Make using Swing easier with Seesaw.
Chord: “A library designed to bridge the gap between the triad of CLJ/CLJS, web-sockets and core.async [...] Chord only has one function,
chord.client/ws-ch, which takes a web-socket URL and returns a channel. When the connection opens successfully, this channel then returns a two-way channel that you can use to communicate with the web-socket server”.
Channels: “A channel represents a stream of messages. It consists of two parts, a node, which propagates messages downstream, and a queue, which stores messages when there are no downstream nodes.”
Grenchman: A persistent JVM/nREPL that maintains state and allows you to run clojure code without waiting for JVM startup.
Onyx: This is “a masterless, cloud scale, fault tolerant, distributed computation system.”
Clojure core.async Channels: A major new library for Clojure, described by Rich Hickey with his usual conceptual clarity: “Events complect communication and flow of control.” .
Clatrix: A matrix library. “Being implemented as a data type around the native BLAS hooks of jblas gives it speed. Being implemented as a Clojure sequence makes it clever.”
Imagez: Here is an image processing library for Clojure that seems quite simple to use.
Neanderthal: Fast Native Matrix and Linear Algebra in Clojure: “Neanderthal implements BLAS algorithms and abstracts most of that complexity for vector and matrix computations away, behind a frendly Clojure API.[...] Optimized GPU engine 500x faster for large matrices than the fastest Java libraries. Handcrafted JNI bindings for machine-optimized ATLAS BLAS, 10x faster than optimized Java libraries on the CPU.”
IClojure: “An Interactive Clojure repl, inspired by IPython.”
Transducers are fundamental: Ignacio Thayer: “Transducers are being introduced in the next version of clojure. There are a few posts about them already, but I found the notion of transducers more elegant and natural than I have seen described. They simplify a lot of disparate clojure concepts and make it easier to write more performant code without any loss in generality. They are quite beautiful, actually, and I believe the concept is elemental, like function composition.”
Composing Music by Composing Functions: Chris Ford’s wonderful demonstration of building up musical ideas through composing clojure functions, culminating in assembling an approximation to a bit of Bach’s Goldberg Variations. Includes a fascinating psychoacoustic detour.
core.matrix performance: core.matrix is a library for Clojure that allows fast arraywise arithmetic on multidimensional arrays. The performance in these benchmarks is very impressive.
Clojure at a Newspaper: “fundamentally we hadn’t written much code. I raised this sheepishly with the CTO and his response was: ‘that’s how I know it’s the right solution.’ Clojure is the winner here.”
Sparklines: A clojure program for making the little graphs.
Clojure Web Security: Aaron Bedra’s talk about the scary state of security in the current crop of Clojure web applications, and what can be done about it. From the 2014 ClojureWest conference.
An assortment of interesting topics, from beginning to advanced, at Learning Clojure.
lee-phillips.org is a participant in the Amazon Services LLC Associates Program, an affiliate advertising program designed to provide a means for sites to earn advertising fees by advertising and linking to amazon.com.
Quotilizer ... loading ...