HNHacker News
TopNewBestAskShowJobs

pgt

3,659 karma · joined March 5, 2014

Petrus G. Theron

BEng Electrical Engineering w/Comp. Sci (Stellenbosch, 2010). Former CTO of CloudAfrica, weFix.

Making software professionally for 20+ years, ideally with Clojure, Electric Clojure & Datomic. Based in Cape Town, South Africa.

Links:

- EACL is a situated ReBAC Authorization inspired by SpiceDB, built in Clojure & backed by Datomic Pro, Datahike or DataScript: https://github.com/theronic/eacl

- Twitter / X: https://twitter.com/BraaiEngineer

- Top 2% on StackOverflow: https://stackoverflow.com/users/198927/petrus-theron (they hide rankings now)

- Grug's Guide to Sound (I used to sell high-fidelity amplifiers): https://petrustheron.com/posts/2024-12-12-grug-guide-to-sound.html

- ExplainGame: The Party Explanation Game (explaingame.com) (mobile-friendly, built in Electric Clojure)

- BraaiSim: Braai Simulator (braaisim.com) (mobile-only, Electric Clojure)

- Essays: http://petrustheron.com/

- GitHub: https://github.com/theronic

- Wallfly Smart Volume Control — https://wallfly.webflow.io/

- Music: http://theronic.com/

(Old HN account was @FreshCode)

submissionscomments
pgt··on I built non-autoregressive decision models with RL a year ago
Jev will continue to do well because people don't actually want to host their own models. The average customer just want an always-on pay-per-use API that has social proof.
pgt··on Charts built for Chat
This is great, but why did it have to be YAML?
pgt··on Ask HN: What are you working on? (September 2026)
https://github.com/theronic/eacl – EACL: Enterprise Access ControL is a situated ReBAC authorization library inspired by SpiceDB, built in Clojure and backed by Datomic Pro, Datahike, Datalevin or DataScript.

"Situated" here means that permissions are just data that co-exist with your application data. This has several advantages: reduced network latency, strong local consistency and opportunities for real-time view maintenance.

- EACL Performance Demo: https://demo.eacl.dev/ (1M permissioned entities, 3.8M Relationships)

- A toy Google Drive clone (runs in-browser): https://drive.eacl.dev/ (4-minute screen recording here: https://x.com/BraaiEngineer/status/2099284919532896675?s=20)

- Rationale: https://eacl.dev/#rationale

EACL V8 RC was released to Clojars on 12 September 2026: https://clojars.org/dev.eacl/eacl

EACL handles authorization in the Datahike HTTP Server: https://github.com/replikativ/datahike/blob/1ea8972a980e2e3b...

pgt··on Replaceable but Employed: Automation and the Meaning of Work
Does anybody have a link where I don't need to download a PDF and zoom and it's still messed up for reading? I just want HTML, mannn.
pgt··on Gmail to end support for "Send as" for third-party addresses, such as @yahoo.com
This is suicide for Gmail.
pgt··on John C. Lilly on solid state intelligence and the elimination of man (1978)
Most Ketamine users are unaware that even occasional usage causes untreatable ulcerative cystitis, a.k.a. Ketamine Bladder Syndrome. Ketamine thins the urothelium while increasing the collagen to smooth muscle ratio and exacerbating interstitial fibrosis. The syndrome is untreatable and causes serious problems down the line.

So, for anyone thinking of using Ketamine on the regular or even monthly, there is good evidence that EGCG (epigallocatechin gallate) administered 30 minutes before prevents KBS (Ketamine Bladder Syndrome), in rats: https://www.sciencedirect.com/science/article/pii/S187952261...

This promising rat study from 2015 shows that EGCG extracted from green tea has a protective effect on the bladder, reversing ketamine-induced damage to control levels. So if you are taking ketamine for major depression or recreationally, taking EGCG before may prevent long-term bladder damage.

Summary from the study:

# Objective

To investigate the protective effect of green tea epigallocatechin gallate (EGCG) on long-term ketamine-induced ulcerative cystitis (KIC) using a ketamine addiction rat model.

# Materials and methods

Thirty Sprague-Dawley rats were divided into three groups which received saline, ketamine (25 mg/kg/d), or ketamine combined with EGCG (10 μM/kg) for a period of 28 days. In each group, cystometry and a metabolic cage micturition pattern study were performed weekly. Masson's trichrome study was done to evaluate the morphologic changes. Western blot analyses were carried out to examine the expressions of inflammatory protein [transforming growth factor-β (TGF-β)] and fibrosis proteins (fibronectin and type I collagen) in bladder tissues.

# Results

Chronic ketamine treatment resulted in bladder hyperactivity with a significant increase in micturition frequency and a decrease in bladder compliance. These alterations in micturition pattern were accompanied by increases in the expressions of inflammatory and fibrosis markers, TGF-β, fibronectin, and type I collagen after long-term ketamine treatment. Masson's trichrome stain showed that ketamine treatment decreased urothelium thickness while increasing the collagen to smooth muscle ratio and exacerbating interstitial fibrosis. By contrast, simultaneous EGCG and ketamine treatment reversed ketamine-induced damage to almost control levels, showing the protective effect of EGCG.

pgt··on Show HN: Wyzer Programming Language
hmm, I suspect distributed systems can be modelled with a form of probabilistic borrow-checking as long as you have control all the connected systems.
pgt··on “We have information that Moonshot distilled Fable for the development of K3”
It matters because it means that lab could not train that model without distilling another frontier model, and their progress would slow once they get properly cut-off. If I funded that lab, I would want to know that.
pgt··on Incremental – A library for incremental computations
Electric Clojure does incremental rendering that crosses the client/server boundary: http://electric.hyperfiddle.net/

The closest thing to Electric (IMO) is SolidJS, but frontend only: https://www.solidjs.com/

pgt··on Clojure 1.13 adds support for checked keys
This is helpful, because practically many functions in the wild have assert-like checks at the top of the function, e.g.

`(if-not key1 (throw (Exception ...))`

...and pre-conditions, e.g. `:pre [condition1 condition2]` do not run when `assert` is off.

pgt··on Africans Are Turning to Starlink
Previously: https://news.ycombinator.com/item?id=40248231

tldr; Starlink doesn't work in South Africa, Elon's home country, because the ANC and its lawfare arm ICASA demands they hand over 30% to the State because of BEE laws.

pgt··on Show HN: Zanagrams
Very cool! Idea: show the definition of the word when you find it, so you can learn new words.

(edit: ah, I see they are shown later)

pgt··on Ask HN: Is there a bad employers (who have a records of not paying) list?
This is such an obvious feature for Glassdoor, but needs verification to avoid abuse.
pgt··on CSSQuake
In case you want to view the menu, press Tab. Click outside menu items to resume game.
pgt··on Show HN: Are You in the Weights?
Only a fool would enter their name in this.
pgt··on Apple Foundation Models
I’m surprised to see the model names hardcoded as an enum (e.g. `.sonnet4_6`), instead of a string with model discovery so that the user can select their preferred model without having to get a new app version through the App Store to support newer models.
pgt··on Pirates, a naval warfare game inspired by Sid Meier's Pirates
How to shoot? I can't figure it out. Perhaps made harder by typing on Colemak.

Edit: OK, spacebar shoots, but it's hard to see the cannons flying due to low contrast. And it shoots in the direction of the enemy.

pgt··on Ask HN: Why is the HN crowd so anti-AI?
AI threatens the programmer identity.
pgt··on I was recently diagnosed with anti-NMDA receptor encephalitis
Ooh, thanks for this. I'm going to try quercetin for my histadine sensitivity in red wine, which causes a skin reaction. I thought it was the sulphites, but after trying older wines (which have fewer sulphites), it made it worse. So I've narrowed it down to histadines. The dilemma here is that wines tend to improve with age, but they contain more histadines.
pgt··on My thoughts after using Clojure for about a month
> "I do wish there were an easier way to move in the ]}]})))}-ness of block ends though."

If he means navigating the AST, there is Parinfer: https://shaunlebron.github.io/parinfer/

Paredit / Parinfer ruined other languages for me. It lets you navigate up/down/in/out of the Clojure AST with keyboard commands and mutate those expressions, e.g. "Split" will split open the current data structure you're in: `(a| b)` =Split=> `(a)| (b)`, where | is caret. Join is the inverse, and it works for all data structures.

pgt··on Trials on veterans suggest ibogaine could provide a new treatment for PTSD
Iocaine powder is a fictional, odorless, and tasteless poison from The Princess Bride.
pgt··on Xs of Y – roguelike that names itself every run. Written in 4kLoC
Not a Rogue-like specialist, it's hard – I haven't made it out of level 1 yet.
pgt··on I’ve banned query strings
If query strings are banned, tracking parameters will simply move to the URL, or use `?t=` & `?h=` if those are whitelisted.
pgt··on The Knight Programming Language
This reminds me of the META [^1] II paper [^2]:

> META II is a domain-specific programming language for writing compilers. It was created in 1963–1964 by Dewey Val Schorre at University of California, Los Angeles (UCLA). META II uses what Schorre called syntax equations.

The interesting part of META II is that it can be defined in itself on one page (refer page 8 of the paper).

[^1] Wikipedia https://en.wikipedia.org/wiki/META_II

[^2] Paper: https://dl.acm.org/doi/epdf/10.1145/800257.808896

pgt··on Official Clojure Documentary page with Video, Shownotes, and Links
Datomic was the reason I switched [^1] to Clojure as my primary language in 2014. It was a gamble, but it paid off in the end.

I maintain that Clojure is the best AI-first language due to the lightning-fast iteration via the nREPL and Clojure's token efficiency.

[^1]: https://petrustheron.com/posts/why-clojure.html

pgt··on Tree Calculus
thx that looks much better, but I'll forget that syntax in the next 3 months. nowadays I am just casual commenter on HN spending points on contrarian views that I know will be downvoted and I know no one else will say it.
pgt··on Google Gemma 4 Runs Natively on iPhone with Full Offline AI Inference
Your device is the ultimate edge. The next frontier would be running models on your wetware.
pgt··on Bouncer: Block "crypto", "rage politics", and more from your X feed using AI
You need to curate your algorithm. Took me 10 years before I started blocking aggressively and now my feed is amazing with 90% bangers. Twitter is by far the best product in this space. Every other platform is 2+ weeks behind. Twitter is where the news breaks.
pgt··on Tree Calculus
@dang, pleaaase can we get proper markdown formatting on HN? I tried adding two spaces after each line, but I don't want paragraphs between code
pgt··on Tree Calculus
The inversion is really cool, e.g.

> f = λa λb concat ["Hello ",a," ",b,"!"] > f "Jane" "Doe" Hello Jane Doe!

then,

> g = f "Admiral" > invert g "Hello Admiral Alice!" Alice

Page 1 of 31Next →