Top all-time · #6989
Anders Murphy
Personal blog · andersmurphy.com · on HN as andersmurphyprogrammingdata
Anders Murphy writes anders murphy, a personal blog at andersmurphy.com about programming and data. Since 2021, 11 different Hacker News readers have linked it 27 times, most often “Clojure: Realtime collaborative web apps without ClojureScript”. It is still writing: the last post was on 2026-10-12, and you can follow it by feed.
Too few sampled comments (3) to say how often HN recommends it.?
Why HN links it
HN readers link Anders Murphy's posts on building realtime web apps with Datastar and server-sent events, and on Lisp-1 versus Lisp-2 namespaces. One commenter called the Game of Life post excellent.
Summarised by Claude from a sample of 3 HN comments that link here. Each comment is marked recommending, critical or neutral (citing without judging); how this works.
A blog mostly about Clojure programming
Most-linked posts?
- Clojure: Realtime collaborative web apps without ClojureScript4 people · 5 mentions · first linked 2025-04-08
- 100k TPS over a billion rows: the unreasonable effectiveness of SQLite2 people · 8 mentions · first linked 2025-12-02
- SQLite improving performance with pre-sort2 people · 2 mentions · first linked 2026-06-09
- Clojure: Managing throughput with virtual threads2 people · 2 mentions · first linked 2024-05-06
What Hacker News says?
So I actually do this (use compression to filter out bots) for my one million checkboxes Datastar demo[1]. It relies heavily on streaming the whole user view on every interaction. With brotli over SSE you can easily hit 200:1 compression ratios[2]. The problem is a malicious actor could request the stream uncompressed. As brotli is supported by 98% of browsers I don't push data to clients that don't support brotli c…
Comment linking /2025/04/15/why-you-should-use-brotli-sse.html
on “I use zip bombs to protect my server”Submitted 100k TPS over a billion rows: the unreasonable effectiveness of SQLite as a story · 423 points
HN discussionYou don't need websockets SSE works fine for realtime collaborative apps. Websockets sound great on paper. But, operationally they are a nightmare. I have had the misfortune of having to use them at scale (the author of Datastar had a similar experience). To list some of the challenges: - firewalls and proxies, blocked ports - unlimited connections non multiplexed (so bugs lead to ddos) - load balancing nightmare -…
Comment linking /2025/04/07/clojure-realtime-collaborative-web-apps-without-clojurescript.html
on “You might not need WebSockets”Submitted Clojure: Realtime collaborative web apps without ClojureScript as a story · 172 points
HN discussionOur free shared fly.io was not built to handle hackernews. We are looking into alternatives but in the mean time checkout https://andersmurphy.com/2025/04/07/clojure-realtime-collabo... as it's the same tech but on a slight better machine.
Comment linking /2025/04/07/clojure-realtime-collaborative-web-apps-without-clojurescript.html
on “Datastar: Web Framework for the Future?”Submitted Clojure: Managing throughput with virtual threads as a story · 165 points
HN discussionIt's deliberately naive. But brotli and a tuned compression window over SSE means it gets 150-250:1 compression ratio, combined with Datastar rendering speed and you can get away with it. The reason it's naive is although you can use datastar to drive SVG, a canvas or even a game engine the minute you do people think you are doing magic game dev sorcery and dismiss your demo. I wanted to show that your average crud…
Comment linking /2025/04/07/clojure-realtime-collaborative-web-apps-without-clojurescript.html
on “Datastar: Web Framework for the Future?”Submitted Clojure: SQLite C API with project Panama and Coffi as a story · 10 points
HN discussionYour recent post on using datastar with SSE to power game of life [1] was excellent. Thanks for writing it! [1] https://andersmurphy.com/2025/04/07/clojure-realtime-collabo...
Comment linking /2025/04/07/clojure-realtime-collaborative-web-apps-without-clojurescript.html
on “Mesh: I tried Htmx, then ditched it”Submitted Consider using brotli compression with SSE as a story · 8 points
HN discussionWhen reading "Lisp-2", Most lisp programmers will probably think of the lisp dialects with 2 namespaces, one for value binding, one for function binding. See https://andersmurphy.com/2019/03/08/lisp-1-vs-lisp-2.html Lisp-2 are still alive; emacs lisp is a lisp-2. If you extrapolate hard enough, both Erlang and Elixir are lisp-2.
Comment linking /2019/03/08/lisp-1-vs-lisp-2.html
on “Common Lisp”Submitted The perils of UUID primary keys in SQLite as a story · 4 points
HN discussionGood, question. The simple answer is there already is such a construct on the JVM already: the semaphore. People just forget it exists. I wrote an article about it a while back[1]. 1. Managing throughput with virtual threads (it's in Clojure, but it's using the underlying Java APIs) https://andersmurphy.com/2024/05/06/clojure-managing-through...
Comment linking /2024/05/06/clojure-managing-throughput-with-virtual-threads.html
on “Java Virtual Threads Ate My Memory: A Web Crawler's Tale of Speed vs. Memory”Submitted Clojure: The REPL makes contributing to open source easy as a story · 4 points
HN discussionIs it? Sqlite seems pretty fast. [1] [1] - https://andersmurphy.com/2025/12/02/100000-tps-over-a-billio...
Comment linking /2025/12/02/100000-tps-over-a-billion-rows-the-unreasonable-effectiveness-of-sqlite.html
on “PostgreSQL for Everything”Submitted SQLite improving performance with pre-sort as a story · 3 points
HN discussion:cache_size 1562 :page_size 4096 :journal_mode "WAL" :synchronous "NORMAL" :temp_store "MEMORY" :busy_timeout 5000 (Synchronous FULL in context where it matters) But, it depends on the shape of your data, your indexes, how much of the data you care about is filling up a page. If your distribution is more even you sometimes need more cache than a more Pareto distributed data set etc. Things like not caching prepared…
Comment linking /2025/12/02/100000-tps-over-a-billion-rows-the-unreasonable-effectiveness-of-sqlite.html
on “SQLite is all you need for durable workflows”Submitted Thinking in batches and aggregates with streaming HTML as a story · 2 points
HN discussionThing is SQLite scales better than both those network databases [1] if you're prepared to stick with one big machine (+ a standby). This is even more obvious when you start doing transactions processing an row locks across the network limit you to 1-3k TPS that you cannot scale out of (Pareto distribution is merciless). [1] - https://andersmurphy.com/2025/12/02/100000-tps-over-a-billio...
Comment linking /2025/12/02/100000-tps-over-a-billion-rows-the-unreasonable-effectiveness-of-sqlite.html
on “SQLite is all you need for durable workflows”Submitted Clojure: Synchronous server sent events with virtual threads and channels as a story · 2 points
HN discussionThe thing is sqlite can scale further vertically than most network databases. In some context's like writes and interactive transactions it outright scales further. [1] That's before you even get into sharding sqlite. [1] - https://andersmurphy.com/2025/12/02/100000-tps-over-a-billio...
Comment linking /2025/12/02/100000-tps-over-a-billion-rows-the-unreasonable-effectiveness-of-sqlite.html
on “Many Small Queries Are Efficient in SQLite”Submitted Clojure: Structured Concurrency and Scoped Values as a story · 2 points
HN discussionThe problem is row locks when using interactive transactions over the network and contention. That can absolutely kill your performance with postgres, there's not really anything you can do to get around it (other than avoid interactive transactions). [1] [1] - https://andersmurphy.com/2025/12/02/100000-tps-over-a-billio...
Comment linking /2025/12/02/100000-tps-over-a-billion-rows-the-unreasonable-effectiveness-of-sqlite.html
on “Does Postgres Scale?”Submitted Lockstep to pipeline in almost one line as a story · 1 points
HN discussionSqlite smokes postgres on the same machine even with domain sockets [1]. This is before you get into using multiple sqlite database. What features postgres offers over sqlite in the context of running on a single machine with a monolithic app? Application functions [2] means you can extend it however you need with the same language you use to build your application. It also has a much better backup and replication s…
Comment linking /2025/12/02/100000-tps-over-a-billion-rows-the-unreasonable-effectiveness-of-sqlite.html
on “I run multiple $10K MRR companies on a $20/month tech stack”Submitted SQLite improving performance with pre-sort as a story · 1 points
HN discussionWhats the obsession with concurrent writes? Single writer will outperform MVCC as long as you do dynamic batching (doesn't prevent logical transactions) and all you have to do is manage that writer at the application level. Concurrent writers just thrash your CPU cache. The difference between L1 and L3 can be 100x. So your single writer on a single core can outperform 10-100s of cores. Especially when you start cons…
Comment linking /2025/12/02/100000-tps-over-a-billion-rows-the-unreasonable-effectiveness-of-sqlite.html
on “Frankensqlite a Rust reimplementation of SQLite with concurrent writers”