frontpage.
newsnewestaskshowjobs

Made with ♥ by @iamnishanth

Open Source @Github

fp.

Open in hackernews

Show HN: Honker – Postgres NOTIFY/LISTEN Semantics for SQLite

https://github.com/russellromney/honker
59•russellthehippo•1h ago

Comments

russellthehippo•1h ago
Hey HN, I built this. Honker adds cross-process NOTIFY/LISTEN to SQLite. You get push-style event delivery with single-digit millisecond latency without a damon/broker, using your existing SQLite file. A lot of pretty high-traffic applications are just Framework+SQLite+Litestream on a VPS now, so I wanted to bring a sixer to the "just use SQLite" party.

SQLite doesn't run a server like Postgres, so the trick is moving the polling source from interval queries on a SQLite connection to a lightweight stat(2) on the WAL file. Many small queries are efficient in SQLite (https://www.sqlite.org/np1queryprob.html) so this isn't really a huge upgrade, but the cross-language result is pretty interesting to me - this is language agnostic as all you do is listen to the WAL file and call SQLite functions.

On top of the store/notify primitives, honker ships ephemeral pub/sub (like pg_notify), durable work queues with retries and dead-letter (like pg-boss/Oban), and event streams with per-consumer offsets. All three are rows in your app's existing .db file and can commit atomically with your business write. This is cool because a rollback drops both.

This used to be called litenotify/joblite but I bought honker.dev as a joke for my gf and I realized that every mq/task/worker have silly names: Oban, pg-boss, Huey, RabbitMQ, Celery, Sidekiq, etc. Thus a silly goose got its name.

Honker waddles the same path as these giants and honks into the same void.

Hopefully it's either useful to you or is amusing. Standard alpha software warnings apply.

hk1337•34m ago
I love the name!
arowthway•33m ago
Nice, I had no idea that stat() every 1 ms is so affordable. Aparently it takes less than 1 μs per call on my hardware, so that's less than 0.1% cpu time for polling.
andersmurphy•23m ago
Is the main use case for this for languages that only have access to process based concurrency?

Struggling to see why you would otherwise need this in java/go/clojure/C# your sqlite has a single writer, so you can notify all threads that care about inserts/updates/changes as your application manages the single writer (with a language level concurrent queue) so you know when it's writing and what it has just written. So it always felt simpler/cleaner to get notification semantics that way.

Still fun to see people abuse WAL in creative ways. Cool to see a notify mechanism that works for languages that only have process based concurrency python/JS/TS/ruby. Nice work!

infogulch•19m ago
He mentions Litestream, maybe this also works for litestream read-only replicas which may be in completely different locations?
infogulch•21m ago
Neat idea!

Would it help if subscriber states were also stored? (read position, queue name, filters, etc) Then instead of waking all subscription threads to do their own N=1 SELECT when stat(2) changes, the polling thread could do Events INNER JOIN Subscribers and only wake the subscribers that match.

GangstaAgents•1h ago
Interesting project. Clean idea and nice abstraction layer. Curious how you handle durability and concurrency under load, especially with SQLite as the base.
ArielTM•54m ago
kqueue/FSEvents is tempting here, but Darwin drops same-process notifications. If you've got a publisher and listener in the same process the listener just never fires. Nasty thing to chase. stat polling looks gross but it's the only thing that actually works everywhere.

What happens on WAL checkpoint? When the file shrinks back, does that trigger a wakeup, or does the poller filter size drops?

Retr0id•38m ago
Couldn't you use inotify (and/or some cross-platform wrapper) to watch for WAL changes without polling?

Surveillance vendors caught abusing access to telcos to track people's locations

https://techcrunch.com/2026/04/23/surveillance-vendors-caught-abusing-access-to-telcos-to-track-p...
119•mentalgear•1h ago•31 comments

Show HN: Honker – Postgres NOTIFY/LISTEN Semantics for SQLite

https://github.com/russellromney/honker
59•russellthehippo•1h ago•9 comments

I am building a cloud

https://crawshaw.io/blog/building-a-cloud
581•bumbledraven•8h ago•293 comments

Sneaky spam in conversational replies to blog posts

https://shkspr.mobi/blog/2026/04/sneaky-spam-in-conversational-replies-to-blog-posts/
39•ColinWright•1h ago•14 comments

Alberta startup sells no-tech tractors for half price

https://wheelfront.com/this-alberta-startup-sells-no-tech-tractors-for-half-price/
1896•Kaibeezy•21h ago•629 comments

Your hex editor should color-code bytes

https://simonomi.dev/blog/color-code-your-bytes/
221•tobr•2d ago•64 comments

Apple fixes bug that cops used to extract deleted chat messages from iPhones

https://techcrunch.com/2026/04/22/apple-fixes-bug-that-cops-used-to-extract-deleted-chat-messages...
670•cdrnsf•17h ago•169 comments

Writing a C Compiler, in Zig

https://ar-ms.me/thoughts/c-compiler-1-zig/
48•tosh•4h ago•7 comments

Jiga (YC W21) Is Hiring

https://jiga.io/about-us/
1•grmmph•1h ago

We found a stable Firefox identifier linking all your private Tor identities

https://fingerprint.com/blog/firefox-tor-indexeddb-privacy-vulnerability/
785•danpinto•20h ago•232 comments

A Renaissance gambling dispute spawned probability theory

https://www.scientificamerican.com/article/how-a-renaissance-gambling-dispute-spawned-probability...
10•sohkamyung•2d ago•1 comments

The Onion to Take over InfoWars

https://www.nytimes.com/2026/04/20/business/infowars-alex-jones-the-onion.html
283•lxm•2d ago•91 comments

Isopods of the world

https://isopod.site/
53•debesyla•2d ago•19 comments

5x5 Pixel font for tiny screens

https://maurycyz.com/projects/mcufont/
697•zdw•3d ago•141 comments

Work with the Garage Door Up

https://notes.andymatuschak.org/Work_with_the_garage_door_up
19•jxmorris12•1d ago•11 comments

Our newsroom AI policy

https://arstechnica.com/staff/2026/04/our-newsroom-ai-policy/
100•zdw•8h ago•71 comments

Arch Linux Now Has a Bit-for-Bit Reproducible Docker Image

https://antiz.fr/blog/archlinux-now-has-a-reproducible-docker-image/
131•maxloh•11h ago•51 comments

A True Life Hack: What Physical 'Life Force' Turns Biology's Wheels?

https://www.quantamagazine.org/what-physical-life-force-turns-biologys-wheels-20260420/
125•Prof_Sigmund•2d ago•23 comments

Show HN: Built a daily game where you sort historical events chronologically

https://hisorty.app/
22•damiannn•3h ago•27 comments

Email could have been X.400 times better

https://buttondown.com/blog/x400-vs-smtp-email
28•maguay•5h ago•27 comments

Highlights from Git 2.54

https://github.blog/open-source/git/highlights-from-git-2-54/
57•ingve•2d ago•29 comments

Raylib v6.0

https://github.com/raysan5/raylib/releases/tag/6.0
14•rydgel•1h ago•0 comments

Over-editing refers to a model modifying code beyond what is necessary

https://nrehiew.github.io/blog/minimal_editing/
386•pella•19h ago•222 comments

Website streamed live directly from a model

https://flipbook.page/
334•sethbannon•19h ago•89 comments

An amateur historian's favorite books about the Silk Road

https://bookdna.com/best-books/silk-road
41•bwb•2d ago•14 comments

Technical, cognitive, and intent debt

https://martinfowler.com/fragments/2026-04-02.html
286•theorchid•21h ago•76 comments

Ping-pong robot beats top-level human players

https://www.reuters.com/sports/ping-pong-robot-ace-makes-history-by-beating-top-level-human-playe...
140•wslh•22h ago•194 comments

Parallel agents in Zed

https://zed.dev/blog/parallel-agents
247•ajeetdsouza•19h ago•137 comments

Qwen3.6-27B: Flagship-Level Coding in a 27B Dense Model

https://qwen.ai/blog?id=qwen3.6-27b
890•mfiguiere•1d ago•408 comments

Books are not too expensive

https://www.millersbookreview.com/p/no-books-are-not-remotely-too-expensive
76•herbertl•2d ago•88 comments