Phil Hagelberg
Programmer known online as technomancy; author of Leiningen, the Clojure build tool, and a maintainer of the Fennel programming language.
Phil Hagelberg did not write this page. ppll compiled it from their own words, each linked to the source. Is this you? · Report a mistake
Latest GitHub
What they believe
-
Replacing a monopolistic platform with a single alternative isn't enough — real resilience requires diversity among competing platforms.
We shouldn't replace Github with one site at all; we need the strength and resilience that only comes with diversity
technomancy.usSaid 25 Apr 2026This on korrents
-
A library that skips certificate verification by default is unsafe and should not be trusted.
However, luasec does not perform any certificate verification by default! This makes its out-of-the-box behavior very unsafe, and I have to recommend against using it for anything.
technomancy.usSaid 8 Apr 2025This on korrents
The bold line is korrents’ wording; the quote is theirs. These 2: what they wrote before what they said aloud, one per source, newest first.
Feed
As its own page →Hiding
8 June
25 April
From one piece in which more paths are charted towards code independence 3 beliefs · technomancy.us
-
Their words
As the software industry is largely driven by trends and fashion, React's "cool factor" led to a mass amnesia regarding how to make normal, well-designed web apps made of HTML with a sprinkling of scripting on top and everything became one big tangled, brittle mass of Javascript that completely keeled over when scripting wasn't available.
-
korrents.com
Dominant companies shape not just their users' choices but the imagination of people actively trying to resist them.Their words
When a company dominates the market, they capture not only their own users but even the imaginations of people actively resisting them.
-
Their words
We shouldn't replace Github with one site at all; we need the strength and resilience that only comes with diversity
8 April 2025
From one piece in which web pages are served but also fetched 2 beliefs · technomancy.us
-
korrents.com
Installing Lua libraries via apt-get tends to produce more stable results than installing via luarocks.Their words
Installing via apt-get instead of luarocks will tend to get you more stable results.
in which web pages are served but also fetchedtechnomancy.us
-
korrents.com
A library that skips certificate verification by default is unsafe and should not be trusted.Their words
However, luasec does not perform any certificate verification by default! This makes its out-of-the-box behavior very unsafe, and I have to recommend against using it for anything.
in which web pages are served but also fetchedtechnomancy.us
31 December 2024
13 September 2024
From one piece in which social media can be put in your own hands 2 beliefs · technomancy.us
-
korrents.com
Mastodon's web client is a heavy React app that breaks without scripting and loads slowly on old hardware.Their words
when you send someone a link to a post, they can't read it without loading the entire Mastodon frontend app into their browser, which will is a monster React codebase that will break if they have scripting disabled and also can take up to 30 seconds on older hardware.
-
Their words
If running a server is hard, fewer people are going to do it, and the power is going to be concentrated in the hands of a technical elite.
31 December 2023
From one piece in which an escape route is discovered 3 beliefs · technomancy.us
-
Their words
In a subtle but very real sense, every Lua function is an anonymous function.
-
Their words
most macros don't actually do anything other than pure transformation of their arguments. It's almost always safe to run them during static analysis, except you don't know for sure
-
korrents.com
Metaprogramming in a language creates fundamental obstacles to static analysis of its code.Their words
Languages with metaprogramming tend to put up fundamental hurdles to static analysis
22 November 2022
From one piece in which legibility comes at a price 2 beliefs · technomancy.us
-
korrents.com
Being easy to find online exposes people, especially those in marginalized groups, to a high risk of targeted abuse.Their words
ask any member of a marginalized group and they'll tell you that being easy to find can have a high cost when it exposes you to targeted abuse.
-
Their words
the real goal was to make their users more legible, primarily for advertising purposes, but also to law enforcement and other authorities.
25 July 2022
From one piece in which the word column has several meanings, none of them architectural 2 beliefs · technomancy.us
-
Their words
Programming, of course, is forgetting, but we need to at least try to be aware of the costs of the abstractions we choose and consider who it is that ends up being forgotten.
-
Their words
In my opinion the root cause of this bug is that when a white american developer sees a terminal they immediately interpret it as this idealized cartesian plane where they can lay out any writing they want in neatly-spaced characters that behave in "predictable" ways (in other words, behave exactly like English).
8 February 2022
-
Their words
But I do want to stress that each of these five approaches are all just trade-offs, and none of them are universally wrong.
12 September 2021
6 September 2021
22 July 2021
22 March 2021
1 October 2020
27 July 2020
17 July 2020
22 May 2020
8 March 2020
22 August 2019
3 January 2019
28 May 2018
Nothing matches.
Beliefs
Korrents What they believe 16 beliefs — each backed by an exact quote.
Each is a — compiled by korrents.com, not by them: the one-line wordings are korrents', the quotes are theirs.
Recent
Replacing a monopolistic platform with a single alternative isn't enough — real resilience requires diversity among competing platforms.
We shouldn't replace Github with one site at all; we need the strength and resilience that only comes with diversity
in which more paths are charted towards code independence Said 25 Apr 2026
Dominant companies shape not just their users' choices but the imagination of people actively trying to resist them.
When a company dominates the market, they capture not only their own users but even the imaginations of people actively resisting them.
in which more paths are charted towards code independence Said 25 Apr 2026
The mass adoption of React and single-page-app architecture across nearly all web apps was driven by trend-following rather than technical fit, producing fragile, scripting-dependent software.
As the software industry is largely driven by trends and fashion, React's "cool factor" led to a mass amnesia regarding how to make normal, well-designed web apps made of HTML with a sprinkling of scripting on top and everything became one big tangled, brittle mass of Javascript that completely keeled over when scripting wasn't available.
in which more paths are charted towards code independence Said 25 Apr 2026
Show 13 more
A library that skips certificate verification by default is unsafe and should not be trusted.
However, luasec does not perform any certificate verification by default! This makes its out-of-the-box behavior very unsafe, and I have to recommend against using it for anything.
in which web pages are served but also fetched Said 8 Apr 2025
Installing Lua libraries via apt-get tends to produce more stable results than installing via luarocks.
Installing via apt-get instead of luarocks will tend to get you more stable results.
in which web pages are served but also fetched Said 8 Apr 2025
Making it hard to self-host concentrates network power in a technical elite.
If running a server is hard, fewer people are going to do it, and the power is going to be concentrated in the hands of a technical elite.
in which social media can be put in your own hands Said 13 Sept 2024
Mastodon's web client is a heavy React app that breaks without scripting and loads slowly on old hardware.
when you send someone a link to a post, they can't read it without loading the entire Mastodon frontend app into their browser, which will is a monster React codebase that will break if they have scripting disabled and also can take up to 30 seconds on older hardware.
in which social media can be put in your own hands Said 13 Sept 2024
Metaprogramming in a language creates fundamental obstacles to static analysis of its code.
Languages with metaprogramming tend to put up fundamental hurdles to static analysis
in which an escape route is discovered Said 31 Dec 2023
Most macros just transform their arguments, so running them during static analysis is usually safe even though it can't be guaranteed.
most macros don't actually do anything other than pure transformation of their arguments. It's almost always safe to run them during static analysis, except you don't know for sure
in which an escape route is discovered Said 31 Dec 2023
Lua functions have no true names, since only the variable or field holding them does, making every Lua function effectively anonymous.
In a subtle but very real sense, every Lua function is an anonymous function.
in which an escape route is discovered Said 31 Dec 2023
Real-name policies on social platforms exist mainly to make users legible for advertising and government surveillance, not user safety.
the real goal was to make their users more legible, primarily for advertising purposes, but also to law enforcement and other authorities.
in which legibility comes at a price Said 22 Nov 2022
Being easy to find online exposes people, especially those in marginalized groups, to a high risk of targeted abuse.
ask any member of a marginalized group and they'll tell you that being easy to find can have a high cost when it exposes you to targeted abuse.
in which legibility comes at a price Said 22 Nov 2022
Software design that assumes text behaves predictably like English reflects the cultural bias of its typically white American developers.
In my opinion the root cause of this bug is that when a white american developer sees a terminal they immediately interpret it as this idealized cartesian plane where they can lay out any writing they want in neatly-spaced characters that behave in "predictable" ways (in other words, behave exactly like English).
in which the word column has several meanings, none of them architectural Said 25 Jul 2022
Because programming requires forgetting, developers should weigh the costs of their abstractions and who those abstractions leave out.
Programming, of course, is forgetting, but we need to at least try to be aware of the costs of the abstractions we choose and consider who it is that ends up being forgotten.
in which the word column has several meanings, none of them architectural Said 25 Jul 2022
No single way of modeling data and methods in code is universally correct; every approach is just a set of trade-offs.
But I do want to stress that each of these five approaches are all just trade-offs, and none of them are universally wrong.
in which five different paths lead to methods Said 8 Feb 2022
Relying on metatables for method lookup tends to produce surprising, unpredictable behavior.
This is a common problem with using metatables; they can lead to surprising, unpredictable behavior.
in which five different paths lead to methods Said 8 Feb 2022
What is a korrent?
A korrent is a belief a person has stated in their own words: one sentence stating the claim, backed by a quote and a source, kept at korrents.com.
Under a name here, the quoted block is what they actually said. The korrent beneath it is the claim those words support, in korrents' wording — tap it to see the record, its source, and who else holds it.
Nobody here wrote their own korrents. They are compiled from public statements, and a person can change their mind, which is recorded too.
Recommends rcmnd
rcmnd What they recommend 9 things — each backed by an exact quote.
Compiled by rcmnd.app, not by them: the quotes are theirs, and each links to the post it was copied from.
Recent
Disliked Skype
I would like a fully-functional web browser inside Emacs, but the biggest pain point in the software I use now is definitely Skype.
usesthis.com 25 Jan 2012
Uses pair.io
I don't pair as much as I used to, but I've started using pair.io, a service for spinning up ephemeral collaborative programming nodes.
usesthis.com 25 Jan 2012
Loved Xmonad
I've also just switched away from stock GNOME to XMonad since I just kept hearing how it's become the canonical implementation of tiling done right. Now I'm wishing I had switched sooner; it makes the classic paradigm just seem so cumbersome in comparison.
usesthis.com 25 Jan 2012
Show 6 more
Liked Debian Squeeze
Debian's installer is less polished, but I appreciate their conservative get-it-right-at-all-costs approach a lot more these days than when I was in college and had a lot of time to mess around with goofed-up packages.
usesthis.com 25 Jan 2012
Uses mpd
Outside the dynamic interactive one-big-process environments I'm a big fan of simple orthogonal tools that work well together, so I use xbindkeys for all my launchers and mpd for my tunes.
usesthis.com 25 Jan 2012
Uses Leiningen
For work I use Leiningen a lot. A lot of people get confused when working with Clojure because Clojure itself is just a library rather than an application, and they expect to interact directly with it.
usesthis.com 25 Jan 2012
their own
Uses Conkeror
There are still a few things that aren't feasible to be implemented in Emacs Lisp yet, but Conkeror lets me maintain the runtime-modifiable paradigm in the browser.
usesthis.com 25 Jan 2012
Loved GNU Emacs
I do as much as I can in GNU Emacs since it pains me to use monolithic software that can't be modified at runtime. Emacs is the closest you can get on a modern OS (except maybe for Smalltalk) to the dream of the fully-dynamic Lisp Machines of the 80s - you can alter nearly any aspect at runtime without recompiling or even restarting.
usesthis.com 25 Jan 2012
Liked ThinkPad X200s
I use a ThinkPad X200s, which is about as light a machine (1.1 kg) as you can get and still have a comfortable full-size keyboard. I prioritize mobility since I work from coffee shops around Seattle about every other day. My laptop has held up really well despite being over 2 years old.
usesthis.com 25 Jan 2012
Where they publish
Site technomancy.us His blog on Lisp, Emacs, Clojure and Fennel.
Recent
- in which more paths are charted towards code independence 25 Apr 2026 As the ninth anniversary approaches of the last project repository I created on Github, it's been so encouraging to see more and more projects migrate away from Microsoft Github. I love seeing the rise of Codeberg, not…
- in which web pages are served but also fetched 8 Apr 2025 I'm not much of a "web programmer". But when I do make web sites, I mostly like to write programs that spit out HTML files, and then put them on my web server. It's simple, fast, and gets the job done for most of the we…
- in which things once suspended are resumed 31 Dec 2024 One common question I get about coding in Fennel is about how to effectively use coroutines. Fennel runs on the Lua runtime, and Lua is famous for having very few features, but having carefully selected just the right f…
Show 8 more
- in which social media can be put in your own hands 13 Sept 2024 I've been on Mastodon since early 2017 and have really enjoyed it. It's been great to see the Fediverse grow as a user-owned network that can function without a corporate overlord calling the shots, exploiting the user…
- in which an escape route is discovered 31 Dec 2023 I was initially something of a skeptic when I first read about the Language Server Protocol. As a huge fan of REPL-based development, I thought it was a step back from the nREPL protocol, which had several years head st…
- in which legibility comes at a price 22 Nov 2022 It's been a weird few weeks for decentralized social media. The collapse of Twitter at the hands of an incompetent billionaire has led to a massive wave of users on the Fediverse1, from under a million to over seven mil…
- in which the word column has several meanings, none of them architectural 25 Jul 2022 Sometimes adding what appears to be the tiniest little feature to a program can lead you down a rabbit hole of edge cases and bugs. This time around it was an innocent-looking question about column numbers in the Fennel…
- in which five different paths lead to methods 8 Feb 2022 I recently made a change in a codebase I've been working on which illustrated an interesting trade-off around modeling in software. The project was Taverner, an IRC server written in Fennel. In particular it had to do w…
- in which not everything is static, but most things are 12 Sept 2021 The Fennel programming language recently celebrated its fifth birthday, and we ran a survey to learn more about the community and what has been working well and what hasn't. Fennel's approach has always been one of simp…
- in which a laptop defies the trends 6 Sept 2021 Over the years I've been a consistent[1] user of Thinkpads; early on because I liked the keyboards, but then later just because I wanted hardware that would last a long time rather than a machine with a soldered-in batt…
- in which there is no such thing as a functional programming language 22 Mar 2021 There is no such thing as a functional programming language. Ahem. Is this thing on? Let me try again. There is no such thing as a functional programming language. All right, now that I've got your attention, let me exp…
Link verified 5 Sept 2026. Recent items update automatically from the channel.
GitHub @technomancy Leiningen, Fennel and Emacs packages.
Recent
- leiningen — Moved to Codeberg; this is a temporary convenience mirror 8 Jun 2026
- mire — Mire is a simple MUD written in Clojure 22 Jul 2021
- slamhound — Slamhound rips your namespace form apart and reconstructs it. 1 Oct 2020
Show 9 more
- lein-licenses — List the license of each of your dependencies. 1 Oct 2020
- robert-hooke — Hooke your Clojure functions! 27 Jul 2020
- orestes — the ultimate yak shave 17 Jul 2020
- syme — Instant collaboration on GitHub projects. 17 Jul 2020
- circleci.el — Show build output from CircleCI builds inside Emacs 22 May 2020
- atreus-firmware — Firmware for the Atreus keyboard 8 Mar 2020
- chortles — Calculate the magnitude of a given laugh 22 Aug 2019
- grenchman — Sorry about the name 3 Jan 2019
- emacs-starter-kit — [ARCHIVED] this is ancient history 28 May 2018
Link verified 5 Sept 2026. Recent items update automatically from the channel.
About the English under a post
Some people here publish in a language other than English. Where they do, this site shows a machine translation beneath the post, in this typeface — the site's own, not theirs.
The post itself is never changed, moved or hidden: what is set in the serif above is exactly what the person published, and it is what to quote them on. A translation can be wrong in ways that matter, especially about tone.
Only the post's own words are translated. A quoted post, a linked article and a belief on korrents.com are left in their original language.