<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: gritzko</title><link>https://news.ycombinator.com/user?id=gritzko</link><description>Hacker News RSS</description><docs>https://hnrss.org/</docs><generator>hnrss v2.1.1</generator><lastBuildDate>Sun, 14 Jun 2026 22:38:50 +0000</lastBuildDate><atom:link href="https://hnrss.org/user?id=gritzko" rel="self" type="application/rss+xml"></atom:link><item><title><![CDATA[New comment by gritzko in "Beagle: Git, URIs and all the dirty words"]]></title><description><![CDATA[
<p>Git vocabulary is workflow-based, i.e. "what we usually do". Unfortunately, the language grew complex and easy to mess up. The problem of NxN interactions: what happens if we do C between A and B?<p>So the idea here is to define <i>actual</i> operations that happen to the tree, formally. Those are a bit more complicated than the vanilla blob/tree/commit model, but still manageable. Six verbs is enough.<p>Overall, it all decomposes cleanly and uniformly. Workflow-based vocabulary becomes unnecessary (and a bit confusing) once you grasp that basic underlying model of orthogonal operations/concerns. Some parts still need work though, e.g. conveying the precise state of the tree (can't steal from git here).</p>
]]></description><pubDate>Sun, 14 Jun 2026 10:51:19 +0000</pubDate><link>https://news.ycombinator.com/item?id=48526018</link><dc:creator>gritzko</dc:creator><comments>https://news.ycombinator.com/item?id=48526018</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48526018</guid></item><item><title><![CDATA[New comment by gritzko in "Beagle: Git, URIs and all the dirty words"]]></title><description><![CDATA[
<p>The most human-friendly thing is probably natural language. If so, it is LLMs who should have an intuition about the REST interface and its URI syntax. I personally would prefer to glance at it, but not to type it repeatedly. Especially, hashes.<p>So, the actual question is how to make this machinery un-screw-up-able. (Author)</p>
]]></description><pubDate>Sun, 14 Jun 2026 09:56:13 +0000</pubDate><link>https://news.ycombinator.com/item?id=48525744</link><dc:creator>gritzko</dc:creator><comments>https://news.ycombinator.com/item?id=48525744</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48525744</guid></item><item><title><![CDATA[AI: Surgeon's Assistant or Commodity on a Meter?]]></title><description><![CDATA[
<p>Article URL: <a href="https://replicated.wiki/blog/stream.html">https://replicated.wiki/blog/stream.html</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=48524534">https://news.ycombinator.com/item?id=48524534</a></p>
<p>Points: 3</p>
<p># Comments: 0</p>
]]></description><pubDate>Sun, 14 Jun 2026 05:46:53 +0000</pubDate><link>https://replicated.wiki/blog/stream.html</link><dc:creator>gritzko</dc:creator><comments>https://news.ycombinator.com/item?id=48524534</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48524534</guid></item><item><title><![CDATA[New comment by gritzko in "A generic dynamic array in C that stores no capacity and needs no struct"]]></title><description><![CDATA[
<p><a href="https://github.com/gritzko/libabc/blob/main/Sx.h" rel="nofollow">https://github.com/gritzko/libabc/blob/main/Sx.h</a><p><a href="https://github.com/gritzko/libabc/blob/main/S.md" rel="nofollow">https://github.com/gritzko/libabc/blob/main/S.md</a><p>ABC uses s[2] for slices, g[3] for gauges, b[4] for (ring) buffers. Also containers on top of those (heaps, hash sets, etc etc)</p>
]]></description><pubDate>Sat, 13 Jun 2026 05:24:15 +0000</pubDate><link>https://news.ycombinator.com/item?id=48513591</link><dc:creator>gritzko</dc:creator><comments>https://news.ycombinator.com/item?id=48513591</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48513591</guid></item><item><title><![CDATA[Beagle: Git, URIs and all the dirty words]]></title><description><![CDATA[
<p>Article URL: <a href="https://replicated.wiki/blog/uris.html">https://replicated.wiki/blog/uris.html</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=48494135">https://news.ycombinator.com/item?id=48494135</a></p>
<p>Points: 28</p>
<p># Comments: 8</p>
]]></description><pubDate>Thu, 11 Jun 2026 18:05:52 +0000</pubDate><link>https://replicated.wiki/blog/uris.html</link><dc:creator>gritzko</dc:creator><comments>https://news.ycombinator.com/item?id=48494135</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48494135</guid></item><item><title><![CDATA[New comment by gritzko in "Grit: Rewriting Git in Rust with agents"]]></title><description><![CDATA[
<p>Nice experiment, but a bit expensive.<p>I work on Beagle, a git-compatible SCM [1]. I use ABC, Abstractionless C [2] dialect with slices, optional range checking, etc. So far, memory safety was the least of my concerns, frankly. Most of the thorny issues would be equally thorny in Rust (e.g. right now: reflog zeroed when VM ran out of disk space; must be some state machine issue or an OS level glitch). Also, forking off a C process (no runtime) is cheap enough that you actually <i>want</i> to do that more.<p>But, those are all technicalities. The key issue I see with the approach: the data structures and algos of git have been fanatically fine tuned for that particular application with those particular usage patterns. By very sophisticated low-level C programmers. So, quite likely, any other app/lib working with that store will always be a suboptimal fit. I would recommend read-only access only, esp for LLM code.<p>Meanwhile, git's underlying data model (blobs/trees/commits) is very simple and very much internet-standard level. Decoupling at that interface is so much easier with so much less issues looming.<p>May look differently from your vantage point though.<p>[1]: <a href="https://github.com/gritzko/beagle" rel="nofollow">https://github.com/gritzko/beagle</a><p>[2]: <a href="https://replicated.wiki/blog/abc" rel="nofollow">https://replicated.wiki/blog/abc</a></p>
]]></description><pubDate>Wed, 10 Jun 2026 05:14:51 +0000</pubDate><link>https://news.ycombinator.com/item?id=48471735</link><dc:creator>gritzko</dc:creator><comments>https://news.ycombinator.com/item?id=48471735</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48471735</guid></item><item><title><![CDATA[New comment by gritzko in "Solar Energy Saves Europeans $135M a Day"]]></title><description><![CDATA[
<p>I always post this <a href="https://www.rte-france.com/en/data-publications/eco2mix/power-generation-energy-source" rel="nofollow">https://www.rte-france.com/en/data-publications/eco2mix/powe...</a></p>
]]></description><pubDate>Tue, 09 Jun 2026 16:03:30 +0000</pubDate><link>https://news.ycombinator.com/item?id=48462876</link><dc:creator>gritzko</dc:creator><comments>https://news.ycombinator.com/item?id=48462876</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48462876</guid></item><item><title><![CDATA[New comment by gritzko in "C extensions, portability, and alternative compilers"]]></title><description><![CDATA[
<p>I live on alpine, in fact.</p>
]]></description><pubDate>Tue, 26 May 2026 07:30:12 +0000</pubDate><link>https://news.ycombinator.com/item?id=48276328</link><dc:creator>gritzko</dc:creator><comments>https://news.ycombinator.com/item?id=48276328</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48276328</guid></item><item><title><![CDATA[New comment by gritzko in "Migrating from Go to Rust"]]></title><description><![CDATA[
<p>That is interesting. I make LLMs write C with the general hope that a simpler language they can manage well. That is not entirely true, though. They reason about C fluently indeed. The problem is, Claude pumps lots of bad C into the codebase if left unattended for 5 min.
So, I need some clean-up passes afterwards to get to some acceptable quality level (both by LLMs and my own eyes). At which point, Claude sees the problem clearly, for some mysterious reason.
Also, I use a C dialect heavly influenced by Go (slices, generics, no smart tricks, virtually no malloc).</p>
]]></description><pubDate>Mon, 25 May 2026 17:16:24 +0000</pubDate><link>https://news.ycombinator.com/item?id=48269210</link><dc:creator>gritzko</dc:creator><comments>https://news.ycombinator.com/item?id=48269210</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48269210</guid></item><item><title><![CDATA[New comment by gritzko in "C extensions, portability, and alternative compilers"]]></title><description><![CDATA[
<p>I think I did not get to that level yet where I trust Claude to create its own VMs. But one day I will.</p>
]]></description><pubDate>Mon, 25 May 2026 16:53:18 +0000</pubDate><link>https://news.ycombinator.com/item?id=48268962</link><dc:creator>gritzko</dc:creator><comments>https://news.ycombinator.com/item?id=48268962</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48268962</guid></item><item><title><![CDATA[New comment by gritzko in "C extensions, portability, and alternative compilers"]]></title><description><![CDATA[
<p>What is the feasible way to test code against the matrix of compilers/oses?</p>
]]></description><pubDate>Mon, 25 May 2026 15:58:14 +0000</pubDate><link>https://news.ycombinator.com/item?id=48268346</link><dc:creator>gritzko</dc:creator><comments>https://news.ycombinator.com/item?id=48268346</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48268346</guid></item><item><title><![CDATA[New comment by gritzko in "Three Years of Abstractionless C"]]></title><description><![CDATA[
<p><a href="https://en.wikipedia.org/wiki/Fundamental_theorem_of_software_engineering" rel="nofollow">https://en.wikipedia.org/wiki/Fundamental_theorem_of_softwar...</a><p>My point, more or less. Of course, a heap is different from append-only array, on higher level. On lower level, these are bit strings. Which is handy, if you can send it over the network with exactly the same function, for example.</p>
]]></description><pubDate>Mon, 25 May 2026 13:24:09 +0000</pubDate><link>https://news.ycombinator.com/item?id=48266559</link><dc:creator>gritzko</dc:creator><comments>https://news.ycombinator.com/item?id=48266559</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48266559</guid></item><item><title><![CDATA[Three Years with Abstractionless C]]></title><description><![CDATA[
<p>Article URL: <a href="https://replicated.wiki/blog/abc">https://replicated.wiki/blog/abc</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=48265422">https://news.ycombinator.com/item?id=48265422</a></p>
<p>Points: 1</p>
<p># Comments: 0</p>
]]></description><pubDate>Mon, 25 May 2026 10:50:52 +0000</pubDate><link>https://replicated.wiki/blog/abc</link><dc:creator>gritzko</dc:creator><comments>https://news.ycombinator.com/item?id=48265422</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48265422</guid></item><item><title><![CDATA[New comment by gritzko in "C constructs that still don't work in C++"]]></title><description><![CDATA[
<p>That is the entire point, yes. Reasoning about layers of completely imaginary entities is what demotivates me about C++ and Rust. Meanwhile, hardware bits are very real (and getting more expensive recently). Having implemented slices and generics in C, now C++ feels like Vietnam flashbacks.<p><a href="https://replicated.wiki/blog/abc" rel="nofollow">https://replicated.wiki/blog/abc</a></p>
]]></description><pubDate>Mon, 25 May 2026 06:04:59 +0000</pubDate><link>https://news.ycombinator.com/item?id=48263882</link><dc:creator>gritzko</dc:creator><comments>https://news.ycombinator.com/item?id=48263882</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48263882</guid></item><item><title><![CDATA[Three Years of Abstractionless C]]></title><description><![CDATA[
<p>Article URL: <a href="https://replicated.wiki/blog/abc">https://replicated.wiki/blog/abc</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=48258182">https://news.ycombinator.com/item?id=48258182</a></p>
<p>Points: 7</p>
<p># Comments: 3</p>
]]></description><pubDate>Sun, 24 May 2026 15:41:46 +0000</pubDate><link>https://replicated.wiki/blog/abc</link><dc:creator>gritzko</dc:creator><comments>https://news.ycombinator.com/item?id=48258182</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48258182</guid></item><item><title><![CDATA[New comment by gritzko in "sp.h: Fixing C by giving it a high quality, ultra portable standard library"]]></title><description><![CDATA[
<p>In this day and age, the value of C standard library is approaching zero. Is is basically an unfirm looping trajectory of CS thought left over 50 years. That amount of code can be recreated pretty quick today. So why bother. Unless it is a syscall or somehow specially treated by the compiler (memcpy etc), there is no special value in it.</p>
]]></description><pubDate>Sun, 24 May 2026 04:32:05 +0000</pubDate><link>https://news.ycombinator.com/item?id=48254387</link><dc:creator>gritzko</dc:creator><comments>https://news.ycombinator.com/item?id=48254387</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48254387</guid></item><item><title><![CDATA[New comment by gritzko in "sp.h: Fixing C by giving it a high quality, ultra portable standard library"]]></title><description><![CDATA[
<p>I use a C dialect with (ptr,ptr) slices and (ptr,ptr,ptr,ptr) buffers. Effectively a different programming language, still uses standard C compiler.<p><a href="https://github.com/gritzko/libabc" rel="nofollow">https://github.com/gritzko/libabc</a><p>In this day and age, the top problem is Claude bringing lots and lots of bad C into the code base. Takes a weekend to clear the week's mess.<p><a href="https://github.com/gritzko/beagle" rel="nofollow">https://github.com/gritzko/beagle</a><p>In a cleared codebase though all the usual C memory bugs are virtually non-existant. When did I see core dump last time? I do not remember. Thus feel no urge to use Zig or Rust.</p>
]]></description><pubDate>Sun, 24 May 2026 04:11:42 +0000</pubDate><link>https://news.ycombinator.com/item?id=48254296</link><dc:creator>gritzko</dc:creator><comments>https://news.ycombinator.com/item?id=48254296</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48254296</guid></item><item><title><![CDATA[New comment by gritzko in "Everything in C is undefined behavior"]]></title><description><![CDATA[
<p>- a metal bar always sinks<p>- unless you are trying to sink it in mercury. then it floats<p>- unless it is an uranium bar<p>- go sink uranium bars in mercury yourself</p>
]]></description><pubDate>Wed, 20 May 2026 11:28:55 +0000</pubDate><link>https://news.ycombinator.com/item?id=48206048</link><dc:creator>gritzko</dc:creator><comments>https://news.ycombinator.com/item?id=48206048</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48206048</guid></item><item><title><![CDATA[New comment by gritzko in "Everything in C is undefined behavior"]]></title><description><![CDATA[
<p>That better be marked "historical". At least, Lemire says:<p>On recent Intel and 64-bit ARM processors, data alignment does not make processing a lot faster. It is a micro-optimization. Data alignment for speed is a myth. // <a href="https://lemire.me/blog/2012/05/31/data-alignment-for-speed-myth-or-reality/" rel="nofollow">https://lemire.me/blog/2012/05/31/data-alignment-for-speed-m...</a><p>(while in the olden days, a program may crash on unaligned access, esp on RISC)</p>
]]></description><pubDate>Wed, 20 May 2026 07:40:35 +0000</pubDate><link>https://news.ycombinator.com/item?id=48204407</link><dc:creator>gritzko</dc:creator><comments>https://news.ycombinator.com/item?id=48204407</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48204407</guid></item><item><title><![CDATA[New comment by gritzko in "Everything in C is undefined behavior"]]></title><description><![CDATA[
<p>C of course is ancient. It remembers the Cambrian explosion of CPU architectures, twelve-bit bytes and everything like that. I wonder if it is possible to codify some pragmatic subset of it that works nicely on currently available CPUs. Cause the author of the piece goes back in time to prove his point (SPARCs and Alphas).</p>
]]></description><pubDate>Wed, 20 May 2026 07:09:59 +0000</pubDate><link>https://news.ycombinator.com/item?id=48204175</link><dc:creator>gritzko</dc:creator><comments>https://news.ycombinator.com/item?id=48204175</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48204175</guid></item></channel></rss>