Skip to content

Instantly share code, notes, and snippets.

merlinmann /
Last active January 3, 2024 20:04
Merlin's Wisdom Project (Draft)

Merlin's Wisdom Project

Or: “Everybody likes being given a glass of water.”

By Merlin Mann.

It's only advice for you because it had to be advice for me.

View Makefile.podman-bridge
ARCH ?= arm64
VERSION ?= 20.10
SPIN ?= live-server
vftool ?= ./vftool/build/vftool
DATA ?= ./data
ISO := ubuntu-$(VERSION)-$(SPIN)-$(ARCH).iso
MOUNTPOINT := /Volumes/Ubuntu
CD := $(DATA)/$(ISO)
borkdude / api_diff.clj
Last active September 30, 2021 19:37
Print API breakage warnings
View api_diff.clj
#!/usr/bin/env bash
#_" -*- mode: clojure; -*-"
"exec" "clojure" "-Sdeps" "{:deps {clj-kondo/clj-kondo {:mvn/version \"2020.12.12\"} org.clojure/tools.deps.alpha {:mvn/version \"0.9.857\"} org.slf4j/slf4j-nop {:mvn/version \"1.7.30\"} lambdaisland/deep-diff2 {:mvn/version \"2.0.108\"} juji/editscript {:mvn/version \"0.5.4\"}}}" "-M" "$0" "$@"
;; Example usage:
;; api_diff.clj org.clojure/clojure "1.8.0" "1.10.1" > /tmp/diff.txt
(require '[clj-kondo.core :as clj-kondo])
angerman /
Last active February 1, 2024 11:38
Installing nix on macOS BigSur

The website suggests to use:

sh <(curl -L

For macOS on Intel (x86_64) or Apple Silicon (arm64) based macs, we need to use

sh <(curl -L --darwin-use-unencrypted-nix-store-volume
addyosmani / lcp.js
Last active October 29, 2022 12:13
Largest Contentful Paint - Puppeteer
View lcp.js
const puppeteer = require('puppeteer');
const devices = require('puppeteer/DeviceDescriptors');
const Good3G = {
'offline': false,
'downloadThroughput': 1.5 * 1024 * 1024 / 8,
'uploadThroughput': 750 * 1024 / 8,
'latency': 40
View scratch.clj
(require '[clojure.core.async.impl.protocols :as impl]
'[clojure.core.async.impl.dispatch :as dispatch])
;;=> nil
(extend-type java.util.concurrent.CompletionStage
(take! [this handler]
(.whenCompleteAsync this
pashields /
Last active August 17, 2021 20:01
Some things to read

Why Read?

I find myself reading in two very different modes. In one mode, I'm trying to learn something specific typically to unblock me from another task. I might need to know details about a garbage collector or need to know how to write a small compiler. In other cases I'm getting exposed to something entirely new that I know nothing about (e.g lead scoring or purchasing) and need a crash course. It's hard to make general recommendations for this kind of reading. So much is up to the context of your particular topic.

In another mode, I'm trying to broaden my knowledge more generally. I can illuminate gaps in what I know and challenge biases that rarely get checked. In order for this to work, I have to free myself a bit from solving a particular problem. If my reading is a bit more aimless, I'm more likely to get a broader view.

How to read for a broader view

The biggest mistake I made in my youth was avoiding contradiction and ambiguity. When I read something, I was focused on whether I agreed wit

olivergeorge / Makefile
Last active August 13, 2021 02:06
Devops tools for simple Datomic Ions app
View Makefile
clojure -A:dev -m devops provision
clojure -A:dev -m devops teardown
clojure -A:dev -m devops cloud-on
mfikes /
Last active December 29, 2023 04:52
Clojurists Together Q2 2018 Funding Round - ClojureScript

This page logs work being done under Clojurists Together Q2 2018 Funding Round towards the ClojureScript project. High level progress reports will be published formally with Clojurists Together, but you can follow here if you are interested in low-level details, progress notes, etc.


The concrete themes identified include:

  • Fixing CLJS-2702, which prevents us from upgrading to newer versions of Closure Library.
  • Work on highly voted ClojureScript tickets. Please take some time and vote in this list of tickets in need of patches.
  • Work on issues related to NPM dependency management. (In particular NPM issues in the list above will be given extra emphasis).
mfikes /
Last active May 5, 2018 17:55
CLJS-2702: Accomodate new Closure Library dependency loading strategy

This pages logs work being done on CLJS-2702 under Clojurists Together Q2 2018 Funding. Overall funding round work is being logged here.

This work in particular covers the first bullet:

  • Come up with a way to accommodate a recent change in the Closure Library that currently prevents ClojureScript from upgrading to newer versions of this library.

Work is being done in this branch, and when work is complete, the squashed results will be submitted as a patch.


Evidently, internal changes have been made in Closure Library to accomodate a more sophisticated dependency tracking mechanism. ClosureScript relies on the internal details, and this is why things broke. Fortunately, it appears that—while s