Skip to content

Instantly share code, notes, and snippets.

@ssrihari
ssrihari / clojure-learning-list.md
Last active November 8, 2025 08:53
An opinionated list of excellent Clojure learning materials

An opinionated list of excellent Clojure learning materials

These resources (articles, books, and videos) are useful when you're starting to learn the language, or when you're learning a specific part of the language. This an opinionated list, no doubt. I've compiled this list from writing and teaching Clojure over the last 10 years.

  • 🔴 Mandatory (for both beginners and intermediates)
  • 🟩 For beginners
  • 🟨 For intermediates

Table of contents

  1. Getting into the language
<%*
// v0.1
/* START OF USER DEFINED SETTINGS */
// template to use
const templateFolder = "templates";
const templateName = "template_anthony.md";
// creating the new file
const newFileFolder = "test/meetings";
const openNewFile = false;
@green-coder
green-coder / html.clj
Last active March 15, 2022 08:28
Cross platform (CLJC) and hackable `html->hiccup` function.
(ns hiccdown.html
(:require [clojure.edn :as edn]
[instaparse.core :as insta :refer [defparser]]))
;; A cross-platform (CLJC) html->hiccup converter for Hiccdown's own needs.
;; For now, only used in the tests.
(defparser html-parser "
nodes = node*
<node> = text | open-close-tags | self-closing-tag
open-close-tags = opening-tag nodes closing-tag
<%*
const openInNewPane = false; //If false, will save link to clipboard
const folderName = `refactor`;
const firstVal = await tp.system.prompt("First thought to add to the new note");
//Client name
const files = await app.vault.getMarkdownFiles();
const links = [];
const finalLinkArr = [];
files.forEach(file => {
@azlen
azlen / bulletpaths.js
Last active September 11, 2025 03:00
All Paths Lead to Roam
/*
* credit to Dhrumil Shah (@wandcrafting) and Robert Haisfield (@RobertHaisfield)
* for the original concept which was part of their RoamGames submission
* and can be found at: https://www.figma.com/file/5shwLdUCHxSaPNEO7pazbe/
*
*/
/* ======= OPTIONS ======== */
/* note: if you change these, reload the page to see the effect */