<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: wim</title><link>https://news.ycombinator.com/user?id=wim</link><description>Hacker News RSS</description><docs>https://hnrss.org/</docs><generator>hnrss v2.1.1</generator><lastBuildDate>Wed, 09 Sep 2026 04:35:35 +0000</lastBuildDate><atom:link href="https://hnrss.org/user?id=wim" rel="self" type="application/rss+xml"></atom:link><item><title><![CDATA[New comment by wim in "Air Conditioning Is Not a Luxury, It Is a Necessity"]]></title><description><![CDATA[
<p>And AC can heat too! For example, in some EU countries gas boilers are still a huge thing, even though increasingly archaic. At the same time many of its users denounce AC because of reasons, apparently missing the fact that an AC is an (air-to-air) heat pump. Incredible how Big Boiler somehow convinced people to keep heating their houses by burning gas in these contraptions while ACs could do the job with much higher energy efficiency while also cooling the house in summer (and yes many places with these gas boilers have _hot_ summers these days)!</p>
]]></description><pubDate>Thu, 27 Aug 2026 12:42:37 +0000</pubDate><link>https://news.ycombinator.com/item?id=49463919</link><dc:creator>wim</dc:creator><comments>https://news.ycombinator.com/item?id=49463919</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49463919</guid></item><item><title><![CDATA[New comment by wim in "How Europe is killing makers and micro-entrepreneurs"]]></title><description><![CDATA[
<p>This is par for the course when it comes to EU regulation unfortunately. The EU should really make a choice here: either there can be EU-wide regulation but Member States can't impose their own implementations or overlapping/competing national laws, or regulation should be left to Member States. You can't have both and pretend to be a single market.</p>
]]></description><pubDate>Tue, 25 Aug 2026 09:47:21 +0000</pubDate><link>https://news.ycombinator.com/item?id=49431207</link><dc:creator>wim</dc:creator><comments>https://news.ycombinator.com/item?id=49431207</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49431207</guid></item><item><title><![CDATA[New comment by wim in "Extensible Software in the age of LLMs"]]></title><description><![CDATA[
<p>We're building a collaborative IDE but for notes/tasks as a local-first web app [1], built to be malleable with plugins. In terms of tradeoffs we're taking a middle road I guess: the app is malleable, but plugins stay contained within the web app.<p>Because of end-to-end-encryption and privacy/ownership concerns, we can't run plugin code on a server node somewhere. But for some types of apps, server-side extensions alone also feel too restrictive. An advantage of a malleable app over just one-shotting a completely custom app (and to be clear I think both will be popular!) is that extending and customizing something is often exactly what you want vs starting over, but you can't really do that when you can't do things like deeply customizing the UI. So you can just ask a (local) agent "add me this functionality" and it will likely be possible.<p>It's still sandboxed inside the browser though, so this way you can do things like permissions, allowing admins to restrict who installs team plugins and so on (which is also important for malleable multiplayer apps).<p>[1] <a href="https://thymer.com" rel="nofollow">https://thymer.com</a></p>
]]></description><pubDate>Wed, 19 Aug 2026 19:50:06 +0000</pubDate><link>https://news.ycombinator.com/item?id=49366320</link><dc:creator>wim</dc:creator><comments>https://news.ycombinator.com/item?id=49366320</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49366320</guid></item><item><title><![CDATA[New comment by wim in "Convergence is not enough"]]></title><description><![CDATA[
<p>That's right, they become part of the replay and rejected using the same path, otherwise things like cycles might still happen. Rejected ops do stay part of the log though, so there's always ways to build time travel/version history or conflict UIs on top when needed.</p>
]]></description><pubDate>Mon, 03 Aug 2026 11:34:15 +0000</pubDate><link>https://news.ycombinator.com/item?id=49154379</link><dc:creator>wim</dc:creator><comments>https://news.ycombinator.com/item?id=49154379</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49154379</guid></item><item><title><![CDATA[New comment by wim in "Convergence is not enough"]]></title><description><![CDATA[
<p>We're building a multiplayer IDE [1] but for docs/planning where docs needs to be trees/graphs (to support outlining, refs, transclusions and so on)<p>We can't just merge any type of operation by replaying unconditionally, because that can cause tree cycles for example. Like the linked list certain operations can be valid locally for an offline client, but not globally in the converged order.<p>Our sync engine distinguishes between different types of operations: unconditional operations and guarded operations.<p>Unconditional operations can't violate structural/data-model invariants. For example SetCompleted(task_guid, true). Simple last-writer-wins.<p>Guarded operations can mutate topology, like InsertMove(node_guid, parent_guid, after_guid). These are checked against the current state, not the state when they were created. During replay we first revert optimistic local operations and replay the incoming canonical operations in order. The mutator function for each operation validates the current state before applying it and if it would violate a condition (for example by creating a cycle because another client made another move in the meantime) it is deterministically rejected. In our case we also have an authoritative server so we can also use the same guarded operations for conditions beyond data structure, like permissions, so the AddUser(workspace_guid, user_guid) mutator function can check permissions state first for example.<p>[1] <a href="https://thymer.com" rel="nofollow">https://thymer.com</a></p>
]]></description><pubDate>Mon, 03 Aug 2026 09:03:10 +0000</pubDate><link>https://news.ycombinator.com/item?id=49153102</link><dc:creator>wim</dc:creator><comments>https://news.ycombinator.com/item?id=49153102</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49153102</guid></item><item><title><![CDATA[New comment by wim in "Original Apollo 11 Guidance Computer source code for command and lunar modules"]]></title><description><![CDATA[
<p>This is such an interesting peek into the engineering of these sort of systems with very constrained resources at the time. Like any random file you open contains little pragmatic design decisions like this<p><a href="https://github.com/chrislgarry/Apollo-11/blob/master/Comanche055/LUNAR_AND_SOLAR_EPHEMERIDES_SUBROUTINES.agc" rel="nofollow">https://github.com/chrislgarry/Apollo-11/blob/master/Comanch...</a><p># THE POSITION OF THE MOON IS STORED IN THE COMPUTER IN THE FORM OF
# A NINTH DEGREE POLYNOMIAL APPROXIMATION WHICH IS VALID OVER A 15
# DAY INTERVAL BEGINNING SHORTLY BEFORE LAUNCH.  THEREFORE THE TIME
# INPUT BY THE USER SHOULD FALL WITHIN THIS 15 DAY INTERVAL.<p>Better be back home in 15 days! ;)</p>
]]></description><pubDate>Wed, 22 Jul 2026 10:25:57 +0000</pubDate><link>https://news.ycombinator.com/item?id=49004479</link><dc:creator>wim</dc:creator><comments>https://news.ycombinator.com/item?id=49004479</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49004479</guid></item><item><title><![CDATA[New comment by wim in "Litestream VFS"]]></title><description><![CDATA[
<p>I noticed the new release also includes "directory replication support for multi-tenant databases", great addition as well!</p>
]]></description><pubDate>Thu, 11 Dec 2025 19:23:35 +0000</pubDate><link>https://news.ycombinator.com/item?id=46235938</link><dc:creator>wim</dc:creator><comments>https://news.ycombinator.com/item?id=46235938</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46235938</guid></item><item><title><![CDATA[New comment by wim in "I built a faster Notion in Rust"]]></title><description><![CDATA[
<p>We're building a new multiplayer IDE but for docs/tasks [1]. Local-first, real-time collaborative and end-to-end-encrypted sync. Not open source but self-hostable with a single binary and hackable with plugins (custom properties, views, code, etc).<p>[1] <a href="https://thymer.com" rel="nofollow">https://thymer.com</a></p>
]]></description><pubDate>Mon, 24 Nov 2025 14:47:09 +0000</pubDate><link>https://news.ycombinator.com/item?id=46034715</link><dc:creator>wim</dc:creator><comments>https://news.ycombinator.com/item?id=46034715</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46034715</guid></item><item><title><![CDATA[New comment by wim in "EU funds are flowing into spyware companies and politicians demanding answers"]]></title><description><![CDATA[
<p>It's good they look into this, but if we're talking about spyware, I'd like to see more MEPs urging the Council to oppose ChatControl.<p>If that passes that's not just EU funds being misused but the EU directly mandating spyware on a continental scale!</p>
]]></description><pubDate>Thu, 02 Oct 2025 14:30:10 +0000</pubDate><link>https://news.ycombinator.com/item?id=45450109</link><dc:creator>wim</dc:creator><comments>https://news.ycombinator.com/item?id=45450109</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45450109</guid></item><item><title><![CDATA[New comment by wim in "GDPR meant nothing: chat control ends privacy for the EU [video]"]]></title><description><![CDATA[
<p>Drop the “chat” and just call it “control”. The current proposal is so vague it would cover anything with online sharing/syncing people can sign up for. Any SaaS, any app, any service. Chat, email, file syncing, todo lists, doesn’t matter.</p>
]]></description><pubDate>Sun, 17 Aug 2025 05:50:29 +0000</pubDate><link>https://news.ycombinator.com/item?id=44929205</link><dc:creator>wim</dc:creator><comments>https://news.ycombinator.com/item?id=44929205</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=44929205</guid></item><item><title><![CDATA[New comment by wim in "QNX: The Incredible 1.44M Demo"]]></title><description><![CDATA[
<p>This was such a cool demo back then. There were many systems that could boot from a floppy, of course, but booting into a GUI with TCP/IP stack showing a real internet browser was really something!</p>
]]></description><pubDate>Wed, 13 Aug 2025 08:35:33 +0000</pubDate><link>https://news.ycombinator.com/item?id=44885954</link><dc:creator>wim</dc:creator><comments>https://news.ycombinator.com/item?id=44885954</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=44885954</guid></item><item><title><![CDATA[New comment by wim in "I tried every todo app and ended up with a .txt file"]]></title><description><![CDATA[
<p>Combining the feel of plain text with real structure is also exactly why we're building an "IDE but for tasks/notes" [1].<p>With structured apps (task managers, outliners) you lose the illusion of editing plain text, but plain text alone lacks things like structure, links, dates, and collaboration. We've spent the last few years building an editor completely from scratch to keep the ease of text editing while adding planning and structure.<p>[1] <a href="https://thymer.com" rel="nofollow">https://thymer.com</a></p>
]]></description><pubDate>Mon, 11 Aug 2025 17:33:10 +0000</pubDate><link>https://news.ycombinator.com/item?id=44866984</link><dc:creator>wim</dc:creator><comments>https://news.ycombinator.com/item?id=44866984</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=44866984</guid></item><item><title><![CDATA[New comment by wim in "Linear sent me down a local-first rabbit hole"]]></title><description><![CDATA[
<p>Funny how reasonable performance is now treated as some impossible lost art on the web sometimes.<p>I posted a little clip [1] of development on a multiplayer IDE for tasks/notes (local-first+e2ee), and a lot of people asked if it was native, rust, GPU rendered or similar. But it's just web tech.<p>The only "secret ingredients" here are using plain ES6 (no frameworks/libs), having data local-first with background sync, and using a worker for off-UI-thread tasks. Fast web apps are totally doable on the modern web, and sync engines are a big part of it.<p>[1] <a href="https://x.com/wcools/status/1900188438755733857" rel="nofollow">https://x.com/wcools/status/1900188438755733857</a></p>
]]></description><pubDate>Fri, 08 Aug 2025 13:03:23 +0000</pubDate><link>https://news.ycombinator.com/item?id=44836503</link><dc:creator>wim</dc:creator><comments>https://news.ycombinator.com/item?id=44836503</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=44836503</guid></item><item><title><![CDATA[New comment by wim in "Copyparty – Turn almost any device into a file server"]]></title><description><![CDATA[
<p>This is awesome! The demo is really fun, nostalgic 90s vibes, it even lets me play chiptunes :). Keeping all dependencies optional and just making it a single file is great too!</p>
]]></description><pubDate>Mon, 28 Jul 2025 19:37:59 +0000</pubDate><link>https://news.ycombinator.com/item?id=44714650</link><dc:creator>wim</dc:creator><comments>https://news.ycombinator.com/item?id=44714650</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=44714650</guid></item><item><title><![CDATA[New comment by wim in "Local-first software (2019)"]]></title><description><![CDATA[
<p>A backend can be part of the functionality though, such as for real-time collaboration and syncing. But you can have ownership and longevity guarantees for both the data and the service as long as you can eject [1] from the cloud and switch to self-host or back at any time, which is what we do for our notes/tasks IDE<p>[1] <a href="https://thymer.com/local-first-ejectable" rel="nofollow">https://thymer.com/local-first-ejectable</a></p>
]]></description><pubDate>Sun, 06 Jul 2025 06:39:57 +0000</pubDate><link>https://news.ycombinator.com/item?id=44478379</link><dc:creator>wim</dc:creator><comments>https://news.ycombinator.com/item?id=44478379</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=44478379</guid></item><item><title><![CDATA[New comment by wim in "Knowledge Management in the Age of AI"]]></title><description><![CDATA[
<p>We’re working on a new IDE but for tasks/notes [1] which is end-to-end-encrypted and optionally self-hostable<p>[1] <a href="https://thymer.com" rel="nofollow">https://thymer.com</a></p>
]]></description><pubDate>Sun, 08 Jun 2025 13:28:37 +0000</pubDate><link>https://news.ycombinator.com/item?id=44216880</link><dc:creator>wim</dc:creator><comments>https://news.ycombinator.com/item?id=44216880</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=44216880</guid></item><item><title><![CDATA[New comment by wim in "Litestream: Revamped"]]></title><description><![CDATA[
<p>Very cool! This is so clever and makes deploying it so simple. I just wasn't able to use it yet because we'd have (many) thousands of SQLite DBs to backup. I quickly hacked something together using fanotify + SQLite's Backup API to have some copies at least, but I'm going to try to switch to Litestream if this amount of files would be supported by the wildcard replication.</p>
]]></description><pubDate>Wed, 21 May 2025 17:57:50 +0000</pubDate><link>https://news.ycombinator.com/item?id=44054240</link><dc:creator>wim</dc:creator><comments>https://news.ycombinator.com/item?id=44054240</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=44054240</guid></item><item><title><![CDATA[New comment by wim in "Ditching Obsidian and building my own"]]></title><description><![CDATA[
<p>Depending on the threat model you want to protect against, yes. For example, although a revoked user doesn't have direct access to data anymore, they could technically collude with us to get future encrypted messages and then decrypt them. At the moment rekeying is only possible by exporting a workspace, changing its key (with a command line tool), and then reimporting it.</p>
]]></description><pubDate>Mon, 19 May 2025 18:21:28 +0000</pubDate><link>https://news.ycombinator.com/item?id=44032979</link><dc:creator>wim</dc:creator><comments>https://news.ycombinator.com/item?id=44032979</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=44032979</guid></item><item><title><![CDATA[New comment by wim in "Ditching Obsidian and building my own"]]></title><description><![CDATA[
<p>The workspace data is encrypted with a (symmetric) workspace key. Each user gets hteir own encrypted copy of that key, using the user's public key. By wrapping the data-encryption key for each user the content is only encrypted once but each authorized user can decrypt it.</p>
]]></description><pubDate>Mon, 19 May 2025 14:22:04 +0000</pubDate><link>https://news.ycombinator.com/item?id=44030224</link><dc:creator>wim</dc:creator><comments>https://news.ycombinator.com/item?id=44030224</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=44030224</guid></item><item><title><![CDATA[New comment by wim in "Ditching Obsidian and building my own"]]></title><description><![CDATA[
<p>We're building <a href="https://thymer.com/" rel="nofollow">https://thymer.com/</a> to do this. Real-time collaboration, local-first + end-to-end-encrypted (and optionally self-hosted).</p>
]]></description><pubDate>Mon, 19 May 2025 09:43:29 +0000</pubDate><link>https://news.ycombinator.com/item?id=44028021</link><dc:creator>wim</dc:creator><comments>https://news.ycombinator.com/item?id=44028021</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=44028021</guid></item></channel></rss>