<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: WilcoKruijer</title><link>https://news.ycombinator.com/user?id=WilcoKruijer</link><description>Hacker News RSS</description><docs>https://hnrss.org/</docs><generator>hnrss v2.1.1</generator><lastBuildDate>Sun, 14 Jun 2026 23:45:18 +0000</lastBuildDate><atom:link href="https://hnrss.org/user?id=WilcoKruijer" rel="self" type="application/rss+xml"></atom:link><item><title><![CDATA[New comment by WilcoKruijer in "Don't trust large context windows"]]></title><description><![CDATA[
<p>I built a very small personal extension for Pi [1] that gives me a /last command. It clears the entire session, only retaining the agent's last output message. This allows me to do manual "compaction". Basically I tell the agent something like "state the plan as discussed with references to files that should be edited", and call /last, then tell it to implement.<p>[1] <a href="https://pi.dev/" rel="nofollow">https://pi.dev/</a></p>
]]></description><pubDate>Sun, 14 Jun 2026 09:23:41 +0000</pubDate><link>https://news.ycombinator.com/item?id=48525559</link><dc:creator>WilcoKruijer</dc:creator><comments>https://news.ycombinator.com/item?id=48525559</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48525559</guid></item><item><title><![CDATA[New comment by WilcoKruijer in "Eric Schmidt speech about AI booed during graduation"]]></title><description><![CDATA[
<p>I find this a weird comment. Isn't this the same kind of out of touch? I could write:<p>> Kind of goes to show how out of touch and insular the Hackernews commenter sphere can be. Almost everyone I interact with in reality loves LLMs and their touted trajectory.<p>And it would hold mostly true for me. This goes to show we should all be aware of our respective bubbles.</p>
]]></description><pubDate>Mon, 18 May 2026 12:26:24 +0000</pubDate><link>https://news.ycombinator.com/item?id=48178750</link><dc:creator>WilcoKruijer</dc:creator><comments>https://news.ycombinator.com/item?id=48178750</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48178750</guid></item><item><title><![CDATA[New comment by WilcoKruijer in "Ask HN: What are you working on (non-AI)?"]]></title><description><![CDATA[
<p>I'm working on a toolkit for building "full-stack" libraries. I.e. libraries that bundle frontend hooks, backend routes, and a database schema into a single package.<p>On top of this I built a library for email that listens to Resend webhooks and stores the email (with thread information) directly in the user’s database. This is a more complete package than what Resend themselves could provide with their backend-only library.<p><a href="https://github.com/rejot-dev/fragno" rel="nofollow">https://github.com/rejot-dev/fragno</a>
<a href="https://fragno.dev/fragments/resend" rel="nofollow">https://fragno.dev/fragments/resend</a></p>
]]></description><pubDate>Wed, 13 May 2026 21:18:30 +0000</pubDate><link>https://news.ycombinator.com/item?id=48127734</link><dc:creator>WilcoKruijer</dc:creator><comments>https://news.ycombinator.com/item?id=48127734</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48127734</guid></item><item><title><![CDATA[New comment by WilcoKruijer in "Idempotency is easy until the second request is different"]]></title><description><![CDATA[
<p>I really hate the POST verb for RESTish APIs because it cannot be idempotent without implementing an idempotency layer. Other verbs are naturally idempotent. Has anyone tried foregoing POST routes entirely? Theoretically you can let the client generate an ID and have it request a PUT route to create new entities. This would give you a tiny amount of extra complexity on the client, but make the server simpler as a trade-off.</p>
]]></description><pubDate>Sun, 10 May 2026 11:02:56 +0000</pubDate><link>https://news.ycombinator.com/item?id=48082834</link><dc:creator>WilcoKruijer</dc:creator><comments>https://news.ycombinator.com/item?id=48082834</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48082834</guid></item><item><title><![CDATA[New comment by WilcoKruijer in "From Supabase to Clerk to Better Auth"]]></title><description><![CDATA[
<p>You could almost call the comparison between Clerk and Better Auth unfair. One is a service and one is a library, apples to oranges. Any third-party service integrated into a stack is a liability, libraries as well, but to a lesser degree. It’s about time for more services to be replaced by libraries. Better Auth really shows how to do that imo, it’s a library that integrates on the frontend, backend, and database. This is why it’s so good.</p>
]]></description><pubDate>Wed, 06 May 2026 18:58:00 +0000</pubDate><link>https://news.ycombinator.com/item?id=48040171</link><dc:creator>WilcoKruijer</dc:creator><comments>https://news.ycombinator.com/item?id=48040171</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48040171</guid></item><item><title><![CDATA[New comment by WilcoKruijer in "All elementary functions from a single binary operator"]]></title><description><![CDATA[
<p>From the paper:<p>> Everyone learns many mathematical operations in school: fractions, roots, logarithms, and trigonometric functions (+, −, ×, /, sqrt, sin, cos, log, …), each with its own rules and a dedicated button on a scientific calculator. Higher mathematics reveals that many of these are redundant: for example, trigonometric ones reduce to the complex exponential. How far can this reduction go? We show that it goes all the way: a single operation, eml(x, y), replaces every one of them. A calculator with just two buttons, EML and the digit 1, can compute everything a full scientific calculator does. This is not a mere mathematical trick. Because one repeatable element suffices, mathematical expressions become uniform circuits, much like electronics built from identical transistors, opening new ways to encoding, evaluating, and discovering formulas across scientific computing.</p>
]]></description><pubDate>Mon, 13 Apr 2026 10:03:38 +0000</pubDate><link>https://news.ycombinator.com/item?id=47749930</link><dc:creator>WilcoKruijer</dc:creator><comments>https://news.ycombinator.com/item?id=47749930</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47749930</guid></item><item><title><![CDATA[New comment by WilcoKruijer in "S3 Files"]]></title><description><![CDATA[
<p>Mounting S3 buckets seemed like a great way to make stateless applications stateful for a while, which sounds appealing, especially for agent-like workloads. Handling conflicts like this means you really have to approach the mounted bucket as separate stateful thing. Seems like a mismatch to me.</p>
]]></description><pubDate>Wed, 08 Apr 2026 07:56:17 +0000</pubDate><link>https://news.ycombinator.com/item?id=47686853</link><dc:creator>WilcoKruijer</dc:creator><comments>https://news.ycombinator.com/item?id=47686853</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47686853</guid></item><item><title><![CDATA[New comment by WilcoKruijer in "Dropping Cloudflare for Bunny.net"]]></title><description><![CDATA[
<p>They have Durable Objects which should be enough for most use cases (it’s SQLite with no limitations). Have you tried that?</p>
]]></description><pubDate>Tue, 07 Apr 2026 15:01:13 +0000</pubDate><link>https://news.ycombinator.com/item?id=47676481</link><dc:creator>WilcoKruijer</dc:creator><comments>https://news.ycombinator.com/item?id=47676481</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47676481</guid></item><item><title><![CDATA[New comment by WilcoKruijer in "Can AI agents build real Stripe integrations? We built a benchmark to find out"]]></title><description><![CDATA[
<p>I've seen that agents can build real, working, Stripe integrations. But not necessarily correct ones. I've seen it do non-idempotent database operations in webhook handlers and also call Stripe APIs as a side-effect in synchronous flows.<p>Agents grind until the integration works in the happy path, but the devil is in the details as always.</p>
]]></description><pubDate>Thu, 05 Mar 2026 09:55:32 +0000</pubDate><link>https://news.ycombinator.com/item?id=47259759</link><dc:creator>WilcoKruijer</dc:creator><comments>https://news.ycombinator.com/item?id=47259759</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47259759</guid></item><item><title><![CDATA[New comment by WilcoKruijer in "Apple Studio Display and Studio Display XDR"]]></title><description><![CDATA[
<p>> Studio Display XDR replaces Pro Display XDR<p>How does a 5k display replace a 6k display? Are they giving up on 6k? Disappointing.</p>
]]></description><pubDate>Tue, 03 Mar 2026 14:51:48 +0000</pubDate><link>https://news.ycombinator.com/item?id=47233252</link><dc:creator>WilcoKruijer</dc:creator><comments>https://news.ycombinator.com/item?id=47233252</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47233252</guid></item><item><title><![CDATA[New comment by WilcoKruijer in "Beyond agentic coding"]]></title><description><![CDATA[
<p>I experimented with a command for atomic commits a while ago. It explicitly instructed the agent to review the diff and group related changes to produce a commit history where every HEAD state would work correctly. I tried to get it to use `git add -p`, but it never seemed to follow those instructions. Might be time for another go at this with a skill.</p>
]]></description><pubDate>Sun, 08 Feb 2026 16:21:11 +0000</pubDate><link>https://news.ycombinator.com/item?id=46935680</link><dc:creator>WilcoKruijer</dc:creator><comments>https://news.ycombinator.com/item?id=46935680</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46935680</guid></item><item><title><![CDATA[New comment by WilcoKruijer in "Beyond agentic coding"]]></title><description><![CDATA[
<p>> You could take an editor session, a diff, or a pull request and automatically split it into a series of more focused commits that are easier for people to review. This is one of the cases where the AI can reduce human review labor<p>I feel this should be a bigger focus than it is. All the AI code review start up are mostly doing “hands off” code review. It’s just an agent reviewing everything.<p>Why not have an agent create a perfect “review plan” for human consumption? Split the review up in parts that can be individually (or independently) reviewed and then fixed by the coding agent. Have a proper ordering in files (GitHub shows files in a commit alphabetically, which is suboptimal), and hide boring details like function implementations that can be easily unit tested.</p>
]]></description><pubDate>Sun, 08 Feb 2026 11:44:53 +0000</pubDate><link>https://news.ycombinator.com/item?id=46933433</link><dc:creator>WilcoKruijer</dc:creator><comments>https://news.ycombinator.com/item?id=46933433</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46933433</guid></item><item><title><![CDATA[New comment by WilcoKruijer in "GPT-5.3-Codex"]]></title><description><![CDATA[
<p>Yes, you’re right for 4.5 and 5.2. Hence they’re focusing on improving the opposite thing and thus are actually converging.</p>
]]></description><pubDate>Thu, 05 Feb 2026 21:11:33 +0000</pubDate><link>https://news.ycombinator.com/item?id=46905385</link><dc:creator>WilcoKruijer</dc:creator><comments>https://news.ycombinator.com/item?id=46905385</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46905385</guid></item><item><title><![CDATA[New comment by WilcoKruijer in "Company as Code"]]></title><description><![CDATA[
<p>The DSL described in this post really resonates with me. I recently worked on a programming language that uses similar structures [0]. It lets the user define entities and their shape (Role, OrganisationalUnit, Person in this post) and entries for those entities. It contains a small scripting API that can be used to derive information from these "facts". Company as code could definitely be implemented on top of this.<p>[0] <a href="https://thalo.rejot.dev/blog/plain-text-knowledge-management">https://thalo.rejot.dev/blog/plain-text-knowledge-management</a></p>
]]></description><pubDate>Thu, 05 Feb 2026 15:02:34 +0000</pubDate><link>https://news.ycombinator.com/item?id=46900384</link><dc:creator>WilcoKruijer</dc:creator><comments>https://news.ycombinator.com/item?id=46900384</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46900384</guid></item><item><title><![CDATA[New comment by WilcoKruijer in "Ask HN: Do you also "hoard" notes/links but struggle to turn them into actions?"]]></title><description><![CDATA[
<p>I’ve recently started using a similar process to what you’re describing. It basically involves writing/speaking to AI in an unstructured manner, and having it extract entries for my knowledge base based on a certain schema. I built a tool to validate the entries to the schema, giving the AI a feedback loop so it can automatically fix/improve the entries. It also supports linking. I use agentic search in both entering and finding knowledge. Links, categories and metadata help the AI tremendously in finding relevant snippets. I go into more detail in this blog post [0].<p>[0] <a href="https://thalo.rejot.dev/blog/plain-text-knowledge-management">https://thalo.rejot.dev/blog/plain-text-knowledge-management</a></p>
]]></description><pubDate>Sat, 31 Jan 2026 08:27:59 +0000</pubDate><link>https://news.ycombinator.com/item?id=46834630</link><dc:creator>WilcoKruijer</dc:creator><comments>https://news.ycombinator.com/item?id=46834630</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46834630</guid></item><item><title><![CDATA[A knowledge management system inspired by plain-text accounting]]></title><description><![CDATA[
<p>Article URL: <a href="https://thalo.rejot.dev/blog/plain-text-knowledge-management">https://thalo.rejot.dev/blog/plain-text-knowledge-management</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=46807154">https://news.ycombinator.com/item?id=46807154</a></p>
<p>Points: 1</p>
<p># Comments: 0</p>
]]></description><pubDate>Thu, 29 Jan 2026 08:04:10 +0000</pubDate><link>https://thalo.rejot.dev/blog/plain-text-knowledge-management</link><dc:creator>WilcoKruijer</dc:creator><comments>https://news.ycombinator.com/item?id=46807154</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46807154</guid></item><item><title><![CDATA[Show HN: Thalo – A "programming" language for structured knowledge]]></title><description><![CDATA[
<p>Hi HN, I've been building Thalo, a plain-text format for structured knowledge. It's designed to be human-readable and version-controlled, while giving tools and AI just enough structure to work with it. It's inspired by plain-text accounting tools such as Beancount.<p>The format is simple: you define your entities (e.g. opinions, book reviews, facts) including type definitions for metadata fields. Then you write entries that the CLI validates against your schema. The value is the feedback loop: LLMs can easily extract information from unstructured text, but they need validation to make the data high quality. Thalo's "compiler" provides these rules.<p>Example:<p><pre><code>  2026-01-08T14:30Z create book-review "Designing Data-Intensive Applications" ^ddia #book 
    rating: "5" 
    author: "Martin Kleppmann"

    # Summary
    The definitive guide to distributed systems and data architecture. Dense but essential.
</code></pre>
(In this example, ^ddia is a stable link identifier that can be used to reference this entry)<p>It's really up to the user how to use it. Some ways I'm using it:<p>- End of day journaling: blurt out thoughts, let AI extract insights, facts.<p>- Organizing my knowledge: using previous "content" I've written (blog posts, websites, my CV) to extract insights.<p>- Processing commits I've made to keep a living record of my work.<p>Because it's all plain-text, it allows you to open your knowledge base in any text editor or in Claude Code to do agentic search and analysis. I hooked up a simple Telegram bot to answer questions.<p>The tooling includes a CLI for validation, an LSP with completions and go-to-definition, a VS Code extension, and a Prettier plugin. There's also a simple scripting API that allows you to loop over entries and use the visitor pattern to traverse your knowledge base or write new rules.<p>I'd love to hear what use cases people come up with. Let me know what you think!<p>- Code (MIT): <a href="https://github.com/rejot-dev/thalo" rel="nofollow">https://github.com/rejot-dev/thalo</a><p>- Landing Page: <a href="https://thalo.rejot.dev">https://thalo.rejot.dev</a></p>
<hr>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=46730382">https://news.ycombinator.com/item?id=46730382</a></p>
<p>Points: 4</p>
<p># Comments: 0</p>
]]></description><pubDate>Fri, 23 Jan 2026 09:29:42 +0000</pubDate><link>https://github.com/rejot-dev/thalo</link><dc:creator>WilcoKruijer</dc:creator><comments>https://news.ycombinator.com/item?id=46730382</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46730382</guid></item><item><title><![CDATA[New comment by WilcoKruijer in "Tree-sitter vs. Language Servers"]]></title><description><![CDATA[
<p>In this context you could say that CST -> AST is a normalization process. A CST might contain whitespace and comments, an AST almost certainly won't.<p>An example: in a CST `1   +   0x1 ` might be represented differently than `1 + 1`, but they could be equivalent in the AST. The same could be true for syntax sugar: `let [x,y] = arr;` and `let x = arr[0]; let y = arr[1];` could be the same after AST normalization.<p>You can see why having just the AST might not be enough for syntax highlighting.<p>As a side project I've been working on a simple programming language, where I use tree-sitter for the CST, but first normalize it to an AST before I do semantic analysis such as verifying references.</p>
]]></description><pubDate>Thu, 22 Jan 2026 18:32:21 +0000</pubDate><link>https://news.ycombinator.com/item?id=46723294</link><dc:creator>WilcoKruijer</dc:creator><comments>https://news.ycombinator.com/item?id=46723294</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46723294</guid></item><item><title><![CDATA[New comment by WilcoKruijer in "EU–INC – A new pan-European legal entity"]]></title><description><![CDATA[
<p>Isn't the notary there to take note of the shadiness of buying in cash and, if shady enough, abolish the transfer?</p>
]]></description><pubDate>Wed, 21 Jan 2026 20:44:43 +0000</pubDate><link>https://news.ycombinator.com/item?id=46711295</link><dc:creator>WilcoKruijer</dc:creator><comments>https://news.ycombinator.com/item?id=46711295</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46711295</guid></item><item><title><![CDATA[FoundationDB's versionstamps should be everywhere]]></title><description><![CDATA[
<p>Article URL: <a href="https://fragno.dev/blog/versionstamps">https://fragno.dev/blog/versionstamps</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=46706808">https://news.ycombinator.com/item?id=46706808</a></p>
<p>Points: 4</p>
<p># Comments: 0</p>
]]></description><pubDate>Wed, 21 Jan 2026 15:14:49 +0000</pubDate><link>https://fragno.dev/blog/versionstamps</link><dc:creator>WilcoKruijer</dc:creator><comments>https://news.ycombinator.com/item?id=46706808</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46706808</guid></item></channel></rss>