Skip to content

Instantly share code, notes, and snippets.

Making Tools Developers Actually Use — Michiel Borkent

AI transcript


Well, okay. I'm glad to be here. My name is Michiel Borkent, also known as Borkdude in the Clojure community. The title of my talk is "Making Tools Developers Actually Use," and some of my projects are actually used, so I'm going to mention those. Babashka, Clj-kondo, and Squint—I'll be revisiting those in the talk.

So at some point in time, Nikita Prokopov said on Twitter to Christophe Grand, who we all know, "I love Clojure. Why is Clojure not more popular?" And Christophe said, "My theory: it's really different than popular languages. Each major difference is a barrier to learning and adoption. So with any barrier, it's easy to see the problems in front of you but hard to see the benefits."

hi Jaret, while you are looking at datomic pro scripts - i want to donate the user interview setup scripts we wrote and have been using for a year or two. We also use them in our prod demo environments - CICD pipeline

This repo https://github.com/hyperfiddle/datomic-browser contains three scripts

The value of these scripts is they get a prospective user from zero to working mbrainz instance in about 60 seconds, reliably and while under pressure, preventing a number of common mistakes, typos, issues and hurdles

  • Downloading and extracting datomic
@dustingetz
dustingetz / hyperfiddle-clojure-ns-browser.md
Last active August 19, 2025 16:31
hyperfiddle clojure namespace browser

Clojure namespace browser – Hyperfiddle example app

See source code below.

CleanShot 2025-07-20 at 16 01 40
(ns dustingetz.y2025.gene2
(:require [hyperfiddle.electric3 :as e]
[hyperfiddle.electric-dom3 :as dom]
[missionary.core :as m]))
(e/defn MyTextarea
[v & {:keys [rows cols]
:or {rows 10 cols 50}}]
(dom/textarea (dom/props {:rows rows :cols cols :value v})
; this returns a stream of values
(ns dustingetz.edn-viewer0
(:require [clojure.datafy :refer [datafy]]
[clojure.core.protocols :refer [nav]]
[contrib.data :refer [unqualify]]
[dustingetz.easy-table :refer [TableScroll Load-css]]
[dustingetz.flatten-document :refer [flatten-nested]]
[hyperfiddle.electric3 :as e]
[hyperfiddle.electric3-contrib :refer [Tap]]
[hyperfiddle.electric-dom3 :as dom]
[hyperfiddle.electric-forms0 :refer [Checkbox*]]
(ns hf-docs-site.demos.explorer
(:require [clojure.datafy :refer [datafy]]
[clojure.core.protocols :refer [nav]]
#?(:clj clojure.java.io)
[contrib.data :refer [treelister clamp-left]]
[contrib.str :refer [includes-str?]]
[contrib.datafy-fs #?(:clj :as :cljs :as-alias) fs]
[hyperfiddle.electric3 :as e]
[hyperfiddle.electric-dom3 :as dom]
[hyperfiddle.electric-scroll0 :refer [Scroll-window IndexRing]]
(ns dustingetz.metaobject
"https://github.com/NikolaySuslov/electric-objmodel"
(:require [contrib.assert :refer [check]]
[hyperfiddle.electric3 :as e]
[hyperfiddle.electric-dom3 :as dom]
[hyperfiddle.incseq :as i]))
(e/defn Some [xs] (first (e/as-vec xs)))
(e/defn Vtable-lookup [vtable mname]
@dustingetz
dustingetz / contrib.remark.cljs
Created March 31, 2023 18:27
remark markdown extension (2018)
(ns contrib.ui.remark
(:require
;["@hyperfiddle/remark-generic-extensions/lib/browser.min" :as remark-generic-extensions] ; works in node
[clojure.set]
[clojure.string]
; Refrain from contrib imports so this is more suitable for userland
[goog.object]
[prop-types] ; used as js/propTypes.object
[reagent.core]
;[remark] ; works in node
@dustingetz
dustingetz / electric-references.md
Last active June 5, 2025 13:07
Reference list — Electric Clojure

References — Electric Clojure

Electric Clojure implements a form of arrowized continuous time dataflow programming with extensions for network-transparent function composition.