HNHacker News
TopNewBestAskShowJobs

thangalin

2,920 karma · joined October 1, 2009

Seeking alpha readers for a near-future hard sci-fi story that combines elements of generally intelligent machines, hunger, agrotech, surveillance, militarized police, virtual reality, hacking, climate change, and anti-establishment.

username @ gmail

submissionscomments
thangalin··on I taught a bucket to speak Git
Similar story. A PHP implementation of the Git protocol for self-hosted repositories:

https://repo.autonoma.ca/repo/treetrek/tree/HEAD/git

thangalin··on Where Did Earth Get Its Oceans? Maybe It Made Them Itself
My Impacts project depicts a scene from the prolonged bombardment, a time when Earth was cratered by asteroids and comets:

* https://impacts.to/downloads/lowres/impacts.pdf#page=9

* https://impacts.to/bibliography.pdf

thangalin··on Fully autonomous drones have killed human soldiers for the first time
How would this work for an identical twin civilian?
thangalin··on πFS
https://cs.stackexchange.com/a/53737/1704

> Matches that occur early enough in π to attain significant compression will not be varied. That is, it isn't possible to use π to compress interesting, real-world data because real-word strings are unlikely to arise early.

thangalin··on Ask HN: What are tools you have made for yourself since the advent of AI?
https://repo.autonoma.ca/repo/treetrek

The wow moment came when it wrote syntax highlighting rules for 40 languages and file formats in ~10 minutes:

https://repo.autonoma.ca/repo/treetrek/tree/HEAD/render/rule...

thangalin··on Gemma 4 QAT models: Optimizing compression for mobile and laptop efficiency
Did you see this?

https://point.free/blog/gemma-4-on-a-2016-xeon/

Xeon, but could be useful for MTP on Mac.

thangalin··on Gemma 4 12B: A unified, encoder-free multimodal model
Yes. I'm using Gemma-4 31B (gemma-4-31B-it-assistant.Q4_K_M.gguf) with llama.cpp to attribute quotations throughout chapters of my sci-fi novel. I started with Qwen3, but couldn't get it to work. Qwen3 TTS Voice Design, on the other hand, is incredible (Qwen3-TTS-12Hz-1.7B-VoiceDesign). I'm using both for an audiobook generator that produces a variety of voices.

Screens:

* https://i.ibb.co/TBBV5nJk/kl-01.png (voice design)

* https://i.ibb.co/nNvvKDyV/kl-02.png (quotation attributions)

thangalin··on On Rendering Diffs
When producing TreeTrek, I went with rudimentary diffs that account for colourblind developers:

https://repo.autonoma.ca/repo/treetrek/commit/3fe9360599ae23...

The diffs rendering library looks amazing: https://diffs.com/

Presumably the red-green issue is a simple CSS update?

thangalin··on I built a Git-tracked book production pipeline
I developed https://keenwrite.com for my hard sci-fi novel. I started with OpenOffice and a spreadsheet and then realized I could combine a character sheet with a Markdown editor. The character sheet became a YAML file with interpolated strings. The editor calls out to ConTeXt for typesetting to PDF. To create an audiobook, the same character sheet identifies the characters for gemma4:31b, which excels at quotation attributions when given a cast of characters and curated list of emotions. Next, I feed the chapters coupled with JSON-formatted attributions, pronunciation guides, and voice descriptions into qwen3 (VoiceDesign, Base, and 32b) to produce an audiobook with a full cast of characters.

Here's some output (to console, not JSON for brevity here) from gemma:

    Unknown (chanting): "Free the food, free the people."
    Unknown (chanting): "Border walls trap us all."
    Chloé Angelos (focused): "Let's see,"
    Yūna Futaba (serious): "The push draws ever nearer,"
    Chloé Angelos (commanding): "Yūna, buzz the CDC,"
    Unknown (formal): "CDC Emergency Operations Centre. What's your emergency?"
    Chloé Angelos (urgent): "Pandora's brew. Populated areas. Releasing soon. Loop in Beale Air Force Base."
I haven't listed all the minor characters, yet, which is why the LLM attributed "unknown" to some quotations.

I'm in the process of containerizing the solution. If interested, email me.

thangalin··on A Markdown-based test suite
Speaking of test suites, LLMs cannot quite curl straight quotes correctly. My Markdown editor uses the following suite:

https://repo.autonoma.ca/repo/keenquotes/tree/HEAD/src/test/...

Am curious whether SOTA LLMs can curl the ambiguous cases.

thangalin··on Why I don’t vibe code
> Why reinvent the wheel?

Dependency-free, performance, FORTRAN, and it would take me more than ten minutes to find and integrate a highlighter that works across all of my code bases.

I searched for PHP-based Git libraries. All of them either invoked "git" using a system call or offered write abilities to the repo. I wanted a pure PHP solution that did not write to any files or invoke executable files (for security purposes). Maybe I didn't search long enough; at some point it becomes faster to tell the LLM what's wanted than to find a solution that fits.

> print("# not a comment")

Works correctly?

https://i.ibb.co/chgVkTz4/not-a-comment.png

thangalin··on Why I don’t vibe code
I have the opposite experience:

* https://repo.autonoma.ca/repo/treetrek/tree/HEAD/render/rule... - syntax highlighting for 40 languages and file formats in ~10 minutes

* https://shufflenblues.com/expenses/ - real-time expenses progress updates with payment vendor API in ~30 minutes

* https://repo.autonoma.ca/repo/treetrek/tree/HEAD/git - real-time, cache-free raw Git reader implementation with cloning in ~5 days

* https://repo.autonoma.ca/repo/notanexus - PDFjs integration in ~3 days

However, these are likely not the "hard" problems you've mentioned. I feel like I can architect solutions at a higher-level now, without having to be completely caught up in many technical nuances. I'd rather not learn the extensive PDFjs API, for example, because it would take weeks of effort to understand.

thangalin··on Two computers, one monitor, zero fiddling (2025)
For a run-down of various hardware KVM solutions that can handle high-resolution video at high refresh rates, see:

https://hardwarerecs.stackexchange.com/q/18561/7591

The UGREEN 8K Displayport KVM Switch has been running flawlessly for four months of continuous use.

https://www.amazon.ca/gp/product/B0CFFFHFJT

thangalin··on Project Gutenberg – keeps getting better
Project Gutenberg is a treasure trove, though many technical details defy automatic typesetting of its books. Standard Ebooks takes consistency to an unbelievable level. My post compares various sources of public domain books with an eye on typesetting:

https://dave.autonoma.ca/blog/2020/04/11/project-gutenberg-p...

thangalin··on The Emacsification of Software
* Time trackers

https://repo.autonoma.ca/repo/timeivy

An unfinished spreadsheet-based interface for entering time. Meant for consulting, but never got around to persisting the data. Mostly created it because I couldn't stand all the ways that time trackers force users to enter structured time when there's a cute algorithm to handle just about every way a human might naturally enter time.

https://stackoverflow.com/a/49185071/59087

* Recipe managers

https://repo.autonoma.ca/repo/recipe-fiddle

In the days of LLMs, it would be far easier to categorize ingredients and format them into TeX for publishing as a PDF file. The idea behind this project was to let people essentially copy/paste recipes off the web or scans of handwritten content and autoformat it.

thangalin··on Chasing Chicago's movable bridges (2014)
Canada's largest single-leaf bascule bridge, on Vancouver Island, is a remarkable and stunning piece of engineering.

https://en.wikipedia.org/wiki/Johnson_Street_Bridge

thangalin··on Ask HN: What are you working on? (May 2026)
http://autonoma.ca/calculators/rocket/antimatter/

Given a distance, an allowable time to reach that distance, a payload to send, and an expected exhaust velocity, how would you calculate the time required to convert energy into antimatter fuel and how much antimatter needed to arrive at the destination (starting from the Moon)?

There are a few side calculations, such as the size of the radiator, estimated footprint of the fusion reactor itself, and how much metamaterial is needed. This is to help figure out timelines for a sci-fi novel, so ballpark answers are completely fine.

The calculations yield what appear to be values around the correct order of magnitude. Would be delighted to have insights, comments, and corrections.

thangalin··on How do I deal with memory leaks? (2022)
In raw C, I like to use the "open"/"close" metaphor and when developing, invoke the routes in parallel. For example:

https://repo.autonoma.ca/repo/mandelbrot/blob/HEAD/main.c

When writing:

    fractal.image = image_open( fractal.width, fractal.height );
I will immediately write below it:

    image_close( fractal.image );
This hides memory allocations altogether. As long as the open/close functions are paired up, it gives me confidence that there are no inadvertent memory leaks. Using small functions eases eyeballing the couplings.

For C++, developing a unit test framework based on Catch2 and ASAN that tracks new/delete invocations is rather powerful. You can even set it up to discount false positives from static allocations. When the unit tests exercise the classes, you get memory leak detection for free.

(I don't mind down votes, but at least reply with what you don't like about this approach, and perhaps suggest a newer approach that we can learn from; contribute to the conversation, please.)

thangalin··on RaTeX: KaTeX-compatible LaTeX rendering engine in pure Rust
When developing KeenWrite[1], I opted to support only plain TeX. This is because I wanted math typesetting to work for either LaTeX or ConTeXt[2]. To render TeX in the preview panel, I forked NTS[3] into a highly optimized Java version. The lack of cross-platform event-based UI system is what kept me from writing the entire application in Rust (some ten years ago). Has the Rust ecosystem improved with respect to Markdown processing, event-based UIs, and now TeX support?

[1]: https://keenwrite.com/screenshots.html

[2]: https://wiki.contextgarden.net

[3]: https://ctan.org/tex-archive/systems/nts

thangalin··on Show HN: Explore color palettes inspired by 3000 master painter artworks
Hey ouli, your hello email bounces.

See also: https://amandahinton.com/blog/creating-a-color-palette-from-...

thangalin··on Days without GitHub incidents
https://repo.autonoma.ca/treetrek

My free, open-source, bare-bones, caching-free, dependency-free, authentication- and authorization-free pure PHP raw Git viewer. I developed it because GitList blew out my shared host's drive space and memory (due to a caching bug) and to consolidate my GitHub, BitBucket, and GitLab repos. There's something rewarding about self-hosting and not being beholden to the whims of third parties.

thangalin··on Ghostty is leaving GitHub
> I truly love GitHub, and I hope they find their way.

I jumped ship as soon as they added MFA. I vibe-coded my own raw Git repository reader to help consolidate my other repos (BitBucket, GitLab), which inevitably started to impose more restrictions (disk space, MFA), as well. It's no GitHub, but works, doesn't cache, and is pure PHP.

https://repo.autonoma.ca/repo/treetrek

thangalin··on Quarkdown – Markdown with Superpowers
> a comparison of all these tools/markup languages

It can take a long time to draft such comparisons; I crafted one for my own Markdown editor, which uses ConTeXt instead of LaTeX:

https://keenwrite.com/blog/2025/09/08/feature-matrix/

Feel free to use it as a starting point for your own research.

thangalin··on Trump fires NSF's oversight board
https://i.ibb.co/qM5xgPZ6/fascism-five-stages.png

The NSF is an independent federal agency that funds roughly a quarter of all basic academic research in the US, laying the groundwork for technologies like the Internet backbone and MRIs. The NSB is its governing body, composed of top scientists who serve staggered six-year terms specifically so no single administration can wipe out the entire board at once. That continuity is designed to insulate scientific priority-setting from political pressure, ensuring American research funding is directed by objective merit rather than political patronage. Dismissing all members simultaneously removes the exact oversight mechanism built to prevent political offices from dictating scientific agendas.

From a political science perspective, this is an institutional move Robert Paxton described in his stages of fascist development. His framework identifies patterns where political actors weaken or bypass independent bodies designed to constrain executive power. In Paxton's fourth stage, the exercising of power, an executive consolidates control by actively dismantling these checks. Centralizing control over scientific governance by firing the board for opposing a budget cut is hollowing out an independent institution; it's a pathway Paxton documented whereby institutional checks are weakened in ways that accumulate over time.

https://election.princeton.edu/wp-content/uploads/2016/12/Pa...

thangalin··on All phones sold in the EU to have replaceable batteries from 2027
> you are fine with it.

Why not ask me my motivations instead of assuming them?

I'm not fine with the range; I bought an EV to stop burning fossil fuels, my 24-year-old RAV4 was on its last leg, and there was a $6K bonus for trade-ins (my RAV4 would have been about $5k in parts).

Plus, the long-term cost savings kick in after about 8 years, which I blogged about at: https://dave.autonoma.ca/blog/2019/08/06/typesetting-markdow...

> Why you have to replace it with longer range?

Because I want to explore the interior of BC, drive across Canada on fewer charges, visit family, go on road trips, etc. Just yesterday I spent 30 minutes trying to charge my Kona. It's a long and boring story, but suffice to say our charging infrastructure here sucks, and is not as simple, quick, or convenient as "tap-to-pay" (with a credit card) at petrol stations.

thangalin··on All phones sold in the EU to have replaceable batteries from 2027
While this is a good step forward, it feels like complaining about the 0.025% of plastic from straws in the ocean while ignoring the 75% of plastic from fishing nets.

I own a 2020 Kona EV. The battery cannot be upgraded. Eventually, I'll have to replace the entire car to get a longer range. BEVs should be mandated to have upgradable batteries and modular interfaces so that the shell can continue to be reused, the batteries (and BMS) upgraded, and old batteries easily recycled.

thangalin··on I wrote to Flock's privacy contact to opt out of their domestic spying program
Sent to Benn Jordan:

https://i.ibb.co/WWWYznHX/flock-future.png

See also a poster from IBM’s German subsidiary, circa 1934. The approximate translation: “See everything with Hollerith punch cards.”

https://www.clevelandjewishnews.com/opinion/op-eds/new-detai...

thangalin··on Seven countries now generate nearly all their electricity from renewables (2024)
> It's dangerous. For millenia.

See https://www.jlab.org/news/releases/jefferson-lab-tapped-lead...

> Partitioning and recycling of uranium, plutonium, and minor actinide content of used nuclear fuel can dramatically reduce this number to around 300 years.

thangalin··on US cities are axing Flock Safety surveillance technology
https://i.ibb.co/rKgkrVy7/flock-future.png
thangalin··on AI coding is gambling
I'm building something from scratch, with no existing code base, and no requirement to integrate with or extend an existing implementation. The only constraint is Git's raw file format. Brownfield, to me, means constraints from existing software. It gets a little fuzzy, but no existing code base was used, no existing architectural constraints were imposed, and I was free to design the implementation from scratch; a greenfield implementation of a legacy protocol.
← PreviousPage 3 of 31Next →