<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>Sat, 06 Jun 2026 23:34:15 +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 "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><item><title><![CDATA[New comment by wim in "Plain Vanilla Web"]]></title><description><![CDATA[
<p>We're building a collaborative IDE for tasks and notes [1] from scratch without frameworks/dependencies.<p>Not saying frameworks are never the right answer of course, but it's as much a trade-off for complex apps as it is for blogs. Things like performance, bundle size, tooling complexity, easy of debugging and call stack depth, API stability, risk of hitting hard-to-work-around constraints all matter at scale too.<p>[1] <a href="https://thymer.com/" rel="nofollow">https://thymer.com/</a></p>
]]></description><pubDate>Sun, 11 May 2025 20:54:39 +0000</pubDate><link>https://news.ycombinator.com/item?id=43957080</link><dc:creator>wim</dc:creator><comments>https://news.ycombinator.com/item?id=43957080</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=43957080</guid></item><item><title><![CDATA[New comment by wim in "Stop syncing everything"]]></title><description><![CDATA[
<p>Looks impressive! Using the VFS is such a fun "hack" :)<p>We developed our own sync engine for an offline-first IDE for notes/tasks [1] we're building, where the data structure is a tree (or graph actually) to support outlining operations. Conflict resolution is always the challenge, and especially with trees multiple offline players can optimistically commit local changes which would result in an invalid tree state once globally merged.<p>The way we handle this is by rolling back tree inserts when a client comes online and receives other tree insert deltas. From what I understand from the description of SQLSync, the best way to handle this would be to pull in a latest snapshot and then replay. Pulling in a full snapshot sounds rather expensive though. We have some sort of heuristic where we can do this if the number of incoming deltas would be very large, but for most offline syncing we never need it. Just curious how SQLSync defines these snapshots? Sticking with the note-taking example, in our case we can't really have a snapshot of a single "note" because of graph features like transclusions. Does SQLSync have some clever way to avoid having to send all state in order to "reset and replay"?<p>[1] <a href="https://thymer.com" rel="nofollow">https://thymer.com</a></p>
]]></description><pubDate>Wed, 02 Apr 2025 08:57:51 +0000</pubDate><link>https://news.ycombinator.com/item?id=43554841</link><dc:creator>wim</dc:creator><comments>https://news.ycombinator.com/item?id=43554841</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=43554841</guid></item><item><title><![CDATA[New comment by wim in "Sync Engines Are the Future"]]></title><description><![CDATA[
<p>We've built a sync engine from scratch. Our app is a multiplayer "IDE" but for tasks/notes [1], so it's important to have a fast local first/office experience like other editors, and have changes sync in the background.<p>I definitely believe sync engines are the future as they make it so much easier to enable things like no-spinners browsing your data, optimistic rendering, offline use, real-time collaboration and so on.<p>I'm also not entirely convinced yet though that it's possible to get away with something that's not custom-built, or at least large parts of it. There were so many micro decisions and trade-offs going into the engine: what is the granularity of updates (characters, rows?) that we need and how does that affect the performance. Do we need a central server for things like permissions and real-time collaboration? If so do we want just deltas or also state snapshots for speedup. How much versioning do we need, what are implications of that? Is there end-to-end-encryption, how does that affect what the server can do. What kind of data structure is being synced, a simple list/map, or a graph with potential cycles? What kind of conflict resolution business logic do we need, where does that live?<p>It would be cool to have something general purpose so you don’t need to build any of this, but I wonder how much time it will save in practice. Maybe the answer really is to have all kinds of different sync engines to pick from and then you can decide whether it's worth the trade-off not having everything custom-built.<p>[1] <a href="https://thymer.com" rel="nofollow">https://thymer.com</a></p>
]]></description><pubDate>Fri, 21 Mar 2025 11:34:08 +0000</pubDate><link>https://news.ycombinator.com/item?id=43434410</link><dc:creator>wim</dc:creator><comments>https://news.ycombinator.com/item?id=43434410</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=43434410</guid></item><item><title><![CDATA[New comment by wim in "BYD says new fast-charging system could be as quick as filling up a tank"]]></title><description><![CDATA[
<p>The car industry in Germany is being Nokia'd. The iPhone didn't win because the US had central planning.<p>I'm not convinced at all free market economics are holding us back. Rather other parts of the world are leapfrogging us despite not adopting it.<p>It was always obvious EVs would be the future. I remember being at a friend's party in Germany more than a decade ago, talking to some guests who worked in the auto industry. Told them about this new upcoming car company called Tesla and how it would transform the entire transportation sector and eat their lunch. The entire group laughed me out of the room and talked about the amazing research they were doing on "clean diesel" or something, I kid you not.<p>It's simply a combination of innovator's dilemma, complacency and no appetite for risk taking.</p>
]]></description><pubDate>Tue, 18 Mar 2025 10:43:18 +0000</pubDate><link>https://news.ycombinator.com/item?id=43397833</link><dc:creator>wim</dc:creator><comments>https://news.ycombinator.com/item?id=43397833</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=43397833</guid></item><item><title><![CDATA[New comment by wim in "Local-First and Ejectable"]]></title><description><![CDATA[
<p>Yep love CRDTs but I think we are in agreement that it's a matter of trade-offs whether or not to use a backend (beyond a shared fs service). The idea with ejectable is that if you've decided the trade-off of a backend is worth it to enable certain features/UX, then it's a good way to ensure longevity of the entire app for users.</p>
]]></description><pubDate>Mon, 17 Mar 2025 10:28:12 +0000</pubDate><link>https://news.ycombinator.com/item?id=43386892</link><dc:creator>wim</dc:creator><comments>https://news.ycombinator.com/item?id=43386892</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=43386892</guid></item><item><title><![CDATA[New comment by wim in "Local-First and Ejectable"]]></title><description><![CDATA[
<p>Hah yes it took a while, thanks for following! When we started the blog we initially thought of building something very small, but along the way realized that the kind of thing we would really love using ourselves would be a much bigger project. It basically involved building a completely new editor from scratch, sync engine, adding multiplayer and end-to-end-encryption, and so on. It would definitely have been faster to take shortcuts and use many existing libs and frameworks around editors, UI and syncing, but then it wouldn't have been something meaningfully different I think, as you point out there's plenty of options in the space so why take the same approach.<p>We're very much still working on it though and it's finally at the point where it's just some polish, so pretty sure next Q.</p>
]]></description><pubDate>Mon, 17 Mar 2025 02:53:01 +0000</pubDate><link>https://news.ycombinator.com/item?id=43384751</link><dc:creator>wim</dc:creator><comments>https://news.ycombinator.com/item?id=43384751</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=43384751</guid></item></channel></rss>