<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Hacker News: thangalin</title><link>https://news.ycombinator.com/user?id=thangalin</link><description>Hacker News RSS</description><docs>https://hnrss.org/</docs><generator>hnrss v2.1.1</generator><lastBuildDate>Sat, 13 Jun 2026 02:05:47 +0000</lastBuildDate><atom:link href="https://hnrss.org/user?id=thangalin" rel="self" type="application/rss+xml"></atom:link><item><title><![CDATA[New comment by thangalin in "Where Did Earth Get Its Oceans? Maybe It Made Them Itself"]]></title><description><![CDATA[
<p>My Impacts project depicts a scene from the prolonged bombardment, a time when Earth was cratered by asteroids and comets:<p>* <a href="https://impacts.to/downloads/lowres/impacts.pdf#page=9" rel="nofollow">https://impacts.to/downloads/lowres/impacts.pdf#page=9</a><p>* <a href="https://impacts.to/bibliography.pdf" rel="nofollow">https://impacts.to/bibliography.pdf</a></p>
]]></description><pubDate>Fri, 12 Jun 2026 16:09:41 +0000</pubDate><link>https://news.ycombinator.com/item?id=48505920</link><dc:creator>thangalin</dc:creator><comments>https://news.ycombinator.com/item?id=48505920</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48505920</guid></item><item><title><![CDATA[New comment by thangalin in "Fully autonomous drones have killed human soldiers for the first time"]]></title><description><![CDATA[
<p>How would this work for an identical twin civilian?</p>
]]></description><pubDate>Thu, 11 Jun 2026 21:41:38 +0000</pubDate><link>https://news.ycombinator.com/item?id=48496823</link><dc:creator>thangalin</dc:creator><comments>https://news.ycombinator.com/item?id=48496823</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48496823</guid></item><item><title><![CDATA[New comment by thangalin in "πFS"]]></title><description><![CDATA[
<p><a href="https://cs.stackexchange.com/a/53737/1704" rel="nofollow">https://cs.stackexchange.com/a/53737/1704</a><p>> 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.</p>
]]></description><pubDate>Wed, 10 Jun 2026 20:37:38 +0000</pubDate><link>https://news.ycombinator.com/item?id=48482339</link><dc:creator>thangalin</dc:creator><comments>https://news.ycombinator.com/item?id=48482339</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48482339</guid></item><item><title><![CDATA[New comment by thangalin in "Ask HN: What are tools you have made for yourself since the advent of AI?"]]></title><description><![CDATA[
<p><a href="https://repo.autonoma.ca/repo/treetrek" rel="nofollow">https://repo.autonoma.ca/repo/treetrek</a><p>The wow moment came when it wrote syntax highlighting rules for 40 languages and file formats in ~10 minutes:<p><a href="https://repo.autonoma.ca/repo/treetrek/tree/HEAD/render/rules" rel="nofollow">https://repo.autonoma.ca/repo/treetrek/tree/HEAD/render/rule...</a></p>
]]></description><pubDate>Tue, 09 Jun 2026 02:17:26 +0000</pubDate><link>https://news.ycombinator.com/item?id=48455410</link><dc:creator>thangalin</dc:creator><comments>https://news.ycombinator.com/item?id=48455410</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48455410</guid></item><item><title><![CDATA[New comment by thangalin in "Gemma 4 QAT models: Optimizing compression for mobile and laptop efficiency"]]></title><description><![CDATA[
<p>Did you see this?<p><a href="https://point.free/blog/gemma-4-on-a-2016-xeon/" rel="nofollow">https://point.free/blog/gemma-4-on-a-2016-xeon/</a><p>Xeon, but could be useful for MTP on Mac.</p>
]]></description><pubDate>Fri, 05 Jun 2026 22:06:07 +0000</pubDate><link>https://news.ycombinator.com/item?id=48418970</link><dc:creator>thangalin</dc:creator><comments>https://news.ycombinator.com/item?id=48418970</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48418970</guid></item><item><title><![CDATA[New comment by thangalin in "Gemma 4 12B: A unified, encoder-free multimodal model"]]></title><description><![CDATA[
<p>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.<p>Screens:<p>* <a href="https://i.ibb.co/TBBV5nJk/kl-01.png" rel="nofollow">https://i.ibb.co/TBBV5nJk/kl-01.png</a> (voice design)<p>* <a href="https://i.ibb.co/nNvvKDyV/kl-02.png" rel="nofollow">https://i.ibb.co/nNvvKDyV/kl-02.png</a> (quotation attributions)</p>
]]></description><pubDate>Wed, 03 Jun 2026 22:35:55 +0000</pubDate><link>https://news.ycombinator.com/item?id=48391069</link><dc:creator>thangalin</dc:creator><comments>https://news.ycombinator.com/item?id=48391069</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48391069</guid></item><item><title><![CDATA[New comment by thangalin in "On Rendering Diffs"]]></title><description><![CDATA[
<p>When producing TreeTrek, I went with rudimentary diffs that account for colourblind developers:<p><a href="https://repo.autonoma.ca/repo/treetrek/commit/3fe9360599ae23989b964b5a73ef9b5986ea141b" rel="nofollow">https://repo.autonoma.ca/repo/treetrek/commit/3fe9360599ae23...</a><p>The diffs rendering library looks amazing: <a href="https://diffs.com/" rel="nofollow">https://diffs.com/</a><p>Presumably the red-green issue is a simple CSS update?</p>
]]></description><pubDate>Fri, 29 May 2026 23:54:12 +0000</pubDate><link>https://news.ycombinator.com/item?id=48330877</link><dc:creator>thangalin</dc:creator><comments>https://news.ycombinator.com/item?id=48330877</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48330877</guid></item><item><title><![CDATA[New comment by thangalin in "I built a Git-tracked book production pipeline"]]></title><description><![CDATA[
<p>I developed <a href="https://keenwrite.com" rel="nofollow">https://keenwrite.com</a> 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.<p>Here's some output (to console, not JSON for brevity here) from gemma:<p><pre><code>    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."
</code></pre>
I haven't listed all the minor characters, yet, which is why the LLM attributed "unknown" to some quotations.<p>I'm in the process of containerizing the solution. If interested, email me.</p>
]]></description><pubDate>Wed, 27 May 2026 16:59:31 +0000</pubDate><link>https://news.ycombinator.com/item?id=48297092</link><dc:creator>thangalin</dc:creator><comments>https://news.ycombinator.com/item?id=48297092</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48297092</guid></item><item><title><![CDATA[New comment by thangalin in "A Markdown-based test suite"]]></title><description><![CDATA[
<p>Speaking of test suites, LLMs cannot quite curl straight quotes correctly. My Markdown editor uses the following suite:<p><a href="https://repo.autonoma.ca/repo/keenquotes/tree/HEAD/src/test/resources/com/whitemagicsoftware/keenquotes/texts" rel="nofollow">https://repo.autonoma.ca/repo/keenquotes/tree/HEAD/src/test/...</a><p>Am curious whether SOTA LLMs can curl the ambiguous cases.</p>
]]></description><pubDate>Thu, 21 May 2026 07:02:15 +0000</pubDate><link>https://news.ycombinator.com/item?id=48218907</link><dc:creator>thangalin</dc:creator><comments>https://news.ycombinator.com/item?id=48218907</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48218907</guid></item><item><title><![CDATA[New comment by thangalin in "Why I don’t vibe code"]]></title><description><![CDATA[
<p>> Why reinvent the wheel?<p>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.<p>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.<p>> print("# not a comment")<p>Works correctly?<p><a href="https://i.ibb.co/chgVkTz4/not-a-comment.png" rel="nofollow">https://i.ibb.co/chgVkTz4/not-a-comment.png</a></p>
]]></description><pubDate>Wed, 20 May 2026 18:50:01 +0000</pubDate><link>https://news.ycombinator.com/item?id=48212265</link><dc:creator>thangalin</dc:creator><comments>https://news.ycombinator.com/item?id=48212265</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48212265</guid></item><item><title><![CDATA[New comment by thangalin in "Why I don’t vibe code"]]></title><description><![CDATA[
<p>I have the opposite experience:<p>* <a href="https://repo.autonoma.ca/repo/treetrek/tree/HEAD/render/rules" rel="nofollow">https://repo.autonoma.ca/repo/treetrek/tree/HEAD/render/rule...</a> - syntax highlighting for 40 languages and file formats in ~10 minutes<p>* <a href="https://shufflenblues.com/expenses/" rel="nofollow">https://shufflenblues.com/expenses/</a> - real-time expenses progress updates with payment vendor API in ~30 minutes<p>* <a href="https://repo.autonoma.ca/repo/treetrek/tree/HEAD/git" rel="nofollow">https://repo.autonoma.ca/repo/treetrek/tree/HEAD/git</a> - real-time, cache-free raw Git reader implementation with cloning in ~5 days<p>* <a href="https://repo.autonoma.ca/repo/notanexus" rel="nofollow">https://repo.autonoma.ca/repo/notanexus</a> - PDFjs integration in ~3 days<p>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.</p>
]]></description><pubDate>Wed, 20 May 2026 17:56:47 +0000</pubDate><link>https://news.ycombinator.com/item?id=48211546</link><dc:creator>thangalin</dc:creator><comments>https://news.ycombinator.com/item?id=48211546</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48211546</guid></item><item><title><![CDATA[New comment by thangalin in "Two computers, one monitor, zero fiddling (2025)"]]></title><description><![CDATA[
<p>For a run-down of various hardware KVM solutions that can handle high-resolution video at high refresh rates, see:<p><a href="https://hardwarerecs.stackexchange.com/q/18561/7591" rel="nofollow">https://hardwarerecs.stackexchange.com/q/18561/7591</a><p>The UGREEN 8K Displayport KVM Switch has been running flawlessly for four months of continuous use.<p><a href="https://www.amazon.ca/gp/product/B0CFFFHFJT" rel="nofollow">https://www.amazon.ca/gp/product/B0CFFFHFJT</a></p>
]]></description><pubDate>Tue, 19 May 2026 05:23:48 +0000</pubDate><link>https://news.ycombinator.com/item?id=48189507</link><dc:creator>thangalin</dc:creator><comments>https://news.ycombinator.com/item?id=48189507</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48189507</guid></item><item><title><![CDATA[New comment by thangalin in "Project Gutenberg – keeps getting better"]]></title><description><![CDATA[
<p>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:<p><a href="https://dave.autonoma.ca/blog/2020/04/11/project-gutenberg-projects/" rel="nofollow">https://dave.autonoma.ca/blog/2020/04/11/project-gutenberg-p...</a></p>
]]></description><pubDate>Fri, 15 May 2026 19:26:50 +0000</pubDate><link>https://news.ycombinator.com/item?id=48152770</link><dc:creator>thangalin</dc:creator><comments>https://news.ycombinator.com/item?id=48152770</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48152770</guid></item><item><title><![CDATA[New comment by thangalin in "The Emacsification of Software"]]></title><description><![CDATA[
<p>* Time trackers<p><a href="https://repo.autonoma.ca/repo/timeivy" rel="nofollow">https://repo.autonoma.ca/repo/timeivy</a><p>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.<p><a href="https://stackoverflow.com/a/49185071/59087" rel="nofollow">https://stackoverflow.com/a/49185071/59087</a><p>* Recipe managers<p><a href="https://repo.autonoma.ca/repo/recipe-fiddle" rel="nofollow">https://repo.autonoma.ca/repo/recipe-fiddle</a><p>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.</p>
]]></description><pubDate>Thu, 14 May 2026 07:28:41 +0000</pubDate><link>https://news.ycombinator.com/item?id=48132174</link><dc:creator>thangalin</dc:creator><comments>https://news.ycombinator.com/item?id=48132174</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48132174</guid></item><item><title><![CDATA[New comment by thangalin in "Chasing Chicago's movable bridges (2014)"]]></title><description><![CDATA[
<p>Canada's largest single-leaf bascule bridge, on Vancouver Island, is a remarkable and stunning piece of engineering.<p><a href="https://en.wikipedia.org/wiki/Johnson_Street_Bridge" rel="nofollow">https://en.wikipedia.org/wiki/Johnson_Street_Bridge</a></p>
]]></description><pubDate>Tue, 12 May 2026 15:48:40 +0000</pubDate><link>https://news.ycombinator.com/item?id=48110010</link><dc:creator>thangalin</dc:creator><comments>https://news.ycombinator.com/item?id=48110010</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48110010</guid></item><item><title><![CDATA[New comment by thangalin in "Ask HN: What are you working on? (May 2026)"]]></title><description><![CDATA[
<p><a href="http://autonoma.ca/calculators/rocket/antimatter/" rel="nofollow">http://autonoma.ca/calculators/rocket/antimatter/</a><p>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)?<p>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.<p>The calculations yield what appear to be values around the correct order of magnitude. Would be delighted to have insights, comments, and corrections.</p>
]]></description><pubDate>Sun, 10 May 2026 21:15:21 +0000</pubDate><link>https://news.ycombinator.com/item?id=48088136</link><dc:creator>thangalin</dc:creator><comments>https://news.ycombinator.com/item?id=48088136</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48088136</guid></item><item><title><![CDATA[New comment by thangalin in "How do I deal with memory leaks? (2022)"]]></title><description><![CDATA[
<p>In raw C, I like to use the "open"/"close" metaphor and when developing, invoke the routes in parallel. For example:<p><a href="https://repo.autonoma.ca/repo/mandelbrot/blob/HEAD/main.c" rel="nofollow">https://repo.autonoma.ca/repo/mandelbrot/blob/HEAD/main.c</a><p>When writing:<p><pre><code>    fractal.image = image_open( fractal.width, fractal.height );
</code></pre>
I will immediately write below it:<p><pre><code>    image_close( fractal.image );
</code></pre>
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.<p>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.<p>(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.)</p>
]]></description><pubDate>Fri, 08 May 2026 19:15:45 +0000</pubDate><link>https://news.ycombinator.com/item?id=48067460</link><dc:creator>thangalin</dc:creator><comments>https://news.ycombinator.com/item?id=48067460</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48067460</guid></item><item><title><![CDATA[New comment by thangalin in "RaTeX: KaTeX-compatible LaTeX rendering engine in pure Rust"]]></title><description><![CDATA[
<p>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?<p>[1]: <a href="https://keenwrite.com/screenshots.html" rel="nofollow">https://keenwrite.com/screenshots.html</a><p>[2]: <a href="https://wiki.contextgarden.net" rel="nofollow">https://wiki.contextgarden.net</a><p>[3]: <a href="https://ctan.org/tex-archive/systems/nts" rel="nofollow">https://ctan.org/tex-archive/systems/nts</a></p>
]]></description><pubDate>Thu, 07 May 2026 17:04:25 +0000</pubDate><link>https://news.ycombinator.com/item?id=48051851</link><dc:creator>thangalin</dc:creator><comments>https://news.ycombinator.com/item?id=48051851</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48051851</guid></item><item><title><![CDATA[New comment by thangalin in "Show HN: Explore color palettes inspired by 3000 master painter artworks"]]></title><description><![CDATA[
<p>Hey ouli, your hello email bounces.<p>See also: <a href="https://amandahinton.com/blog/creating-a-color-palette-from-an-image" rel="nofollow">https://amandahinton.com/blog/creating-a-color-palette-from-...</a></p>
]]></description><pubDate>Tue, 05 May 2026 19:21:31 +0000</pubDate><link>https://news.ycombinator.com/item?id=48027234</link><dc:creator>thangalin</dc:creator><comments>https://news.ycombinator.com/item?id=48027234</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48027234</guid></item><item><title><![CDATA[New comment by thangalin in "Days without GitHub incidents"]]></title><description><![CDATA[
<p><a href="https://repo.autonoma.ca/treetrek" rel="nofollow">https://repo.autonoma.ca/treetrek</a><p>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.</p>
]]></description><pubDate>Mon, 04 May 2026 18:49:59 +0000</pubDate><link>https://news.ycombinator.com/item?id=48013162</link><dc:creator>thangalin</dc:creator><comments>https://news.ycombinator.com/item?id=48013162</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48013162</guid></item></channel></rss>