<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: benbjohnson</title><link>https://news.ycombinator.com/user?id=benbjohnson</link><description>Hacker News RSS</description><docs>https://hnrss.org/</docs><generator>hnrss v2.1.1</generator><lastBuildDate>Tue, 07 Jul 2026 23:36:48 +0000</lastBuildDate><atom:link href="https://hnrss.org/user?id=benbjohnson" rel="self" type="application/rss+xml"></atom:link><item><title><![CDATA[New comment by benbjohnson in "Litestream Writable VFS"]]></title><description><![CDATA[
<p>If you can have multiple writers to a single database then you'd need to look at something like cr-sqlite[1] that uses CRDT to figure out conflicts. If you're just replicating separate databases then you might be able to replicate each one using Litestream and then use SQLite's ATTACH[2] to connect them together. There is a limit on how many databases you can attach together in a session though.<p>[1]: <a href="https://github.com/vlcn-io/cr-sqlite" rel="nofollow">https://github.com/vlcn-io/cr-sqlite</a><p>[2]: <a href="https://sqlite.org/lang_attach.html" rel="nofollow">https://sqlite.org/lang_attach.html</a></p>
]]></description><pubDate>Wed, 04 Feb 2026 23:43:56 +0000</pubDate><link>https://news.ycombinator.com/item?id=46893581</link><dc:creator>benbjohnson</dc:creator><comments>https://news.ycombinator.com/item?id=46893581</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46893581</guid></item><item><title><![CDATA[New comment by benbjohnson in "Litestream Writable VFS"]]></title><description><![CDATA[
<p>Litestream author here. You can use the built-in file replication. It'll replicate all your database changes to another path on disk. I use it a lot for testing things out:<p><a href="https://litestream.io/guides/file/" rel="nofollow">https://litestream.io/guides/file/</a></p>
]]></description><pubDate>Wed, 04 Feb 2026 23:41:31 +0000</pubDate><link>https://news.ycombinator.com/item?id=46893558</link><dc:creator>benbjohnson</dc:creator><comments>https://news.ycombinator.com/item?id=46893558</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46893558</guid></item><item><title><![CDATA[New comment by benbjohnson in "Litestream Writable VFS"]]></title><description><![CDATA[
<p>Litestream author here. Currently we're handling the "single writer" issue outside of Litestream. We have controls in our internal systems that make it work well. But yes, the lease PR is the direction we're looking at going.<p>I'm not sure you can have readers see something separate than writers. When SQLite promotes a read lock to a write lock under WAL then it checks if any of the data has changed and then fails the transaction if it has.</p>
]]></description><pubDate>Wed, 04 Feb 2026 23:40:12 +0000</pubDate><link>https://news.ycombinator.com/item?id=46893539</link><dc:creator>benbjohnson</dc:creator><comments>https://news.ycombinator.com/item?id=46893539</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46893539</guid></item><item><title><![CDATA[New comment by benbjohnson in "Litestream VFS"]]></title><description><![CDATA[
<p>Author here. It will cache pages in memory right now but it doesn't do disk-based caching currently. That's a good idea though and probably not too difficult to implement. Feel free to post a feature request as a GitHub issue on the project.</p>
]]></description><pubDate>Thu, 11 Dec 2025 22:34:35 +0000</pubDate><link>https://news.ycombinator.com/item?id=46238251</link><dc:creator>benbjohnson</dc:creator><comments>https://news.ycombinator.com/item?id=46238251</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46238251</guid></item><item><title><![CDATA[New comment by benbjohnson in "Litestream VFS"]]></title><description><![CDATA[
<p>The VFS is read only but it will continuously poll for new updates so if you have a writer somewhere else using regular Litestream then it will pick up those updates automatically.</p>
]]></description><pubDate>Thu, 11 Dec 2025 21:15:29 +0000</pubDate><link>https://news.ycombinator.com/item?id=46237275</link><dc:creator>benbjohnson</dc:creator><comments>https://news.ycombinator.com/item?id=46237275</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46237275</guid></item><item><title><![CDATA[New comment by benbjohnson in "Litestream VFS"]]></title><description><![CDATA[
<p>Author here. You can query the state of a table from an hour ago with Litestream VFS. It won't give you versioned tables in the sense that every time you update a row that it writes a new version in a table somewhere though.</p>
]]></description><pubDate>Thu, 11 Dec 2025 20:03:51 +0000</pubDate><link>https://news.ycombinator.com/item?id=46236402</link><dc:creator>benbjohnson</dc:creator><comments>https://news.ycombinator.com/item?id=46236402</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46236402</guid></item><item><title><![CDATA[New comment by benbjohnson in "Litestream VFS"]]></title><description><![CDATA[
<p>Author here. We've done some proof-of-concept work on creating distributed leases using S3. We have some use cases internally where we've considered adding write capabilities to the VFS but we haven't started any work on it yet.</p>
]]></description><pubDate>Thu, 11 Dec 2025 19:59:36 +0000</pubDate><link>https://news.ycombinator.com/item?id=46236349</link><dc:creator>benbjohnson</dc:creator><comments>https://news.ycombinator.com/item?id=46236349</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46236349</guid></item><item><title><![CDATA[New comment by benbjohnson in "Litestream VFS"]]></title><description><![CDATA[
<p>Author here. Litestream VFS will automatically poll for new back up data every second so it keeps itself up to date with any changes made by the original database.<p>You don't need any additional code (Python or otherwise) to use the VFS. It will work on the SQLite CLI as is.</p>
]]></description><pubDate>Thu, 11 Dec 2025 19:57:38 +0000</pubDate><link>https://news.ycombinator.com/item?id=46236329</link><dc:creator>benbjohnson</dc:creator><comments>https://news.ycombinator.com/item?id=46236329</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46236329</guid></item><item><title><![CDATA[New comment by benbjohnson in "Litestream VFS"]]></title><description><![CDATA[
<p>It worked great! Thanks for your work on it.</p>
]]></description><pubDate>Thu, 11 Dec 2025 19:55:34 +0000</pubDate><link>https://news.ycombinator.com/item?id=46236309</link><dc:creator>benbjohnson</dc:creator><comments>https://news.ycombinator.com/item?id=46236309</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46236309</guid></item><item><title><![CDATA[New comment by benbjohnson in "Litestream VFS"]]></title><description><![CDATA[
<p>Author here. The VFS support right now is currently read only so it's useful for something more like a shared cache of data.</p>
]]></description><pubDate>Thu, 11 Dec 2025 18:52:03 +0000</pubDate><link>https://news.ycombinator.com/item?id=46235409</link><dc:creator>benbjohnson</dc:creator><comments>https://news.ycombinator.com/item?id=46235409</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46235409</guid></item><item><title><![CDATA[New comment by benbjohnson in "Litestream VFS"]]></title><description><![CDATA[
<p>Author here. Yes, Litestream v0.5.3 has been released with a new read-only VFS option: <a href="https://github.com/benbjohnson/litestream/releases/tag/v0.5.3" rel="nofollow">https://github.com/benbjohnson/litestream/releases/tag/v0.5....</a></p>
]]></description><pubDate>Thu, 11 Dec 2025 18:51:01 +0000</pubDate><link>https://news.ycombinator.com/item?id=46235393</link><dc:creator>benbjohnson</dc:creator><comments>https://news.ycombinator.com/item?id=46235393</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46235393</guid></item><item><title><![CDATA[New comment by benbjohnson in "Hold Off on Litestream 0.5.0"]]></title><description><![CDATA[
<p>Litestream author here. Yes, that's correct. LTX was the biggest hurdle to get over and was impossible to switch over incrementally. The storage layer change brings a lot of benefits and enables a lot of future work that we're really excited about.<p>Thanks to mtlynch and everyone else who has submitted bug reports. We're squashing issues and working to get everything stable as quickly as possible.</p>
]]></description><pubDate>Tue, 14 Oct 2025 17:47:52 +0000</pubDate><link>https://news.ycombinator.com/item?id=45582791</link><dc:creator>benbjohnson</dc:creator><comments>https://news.ycombinator.com/item?id=45582791</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45582791</guid></item><item><title><![CDATA[New comment by benbjohnson in "Litestream: Revamped"]]></title><description><![CDATA[
<p>The changes are still in progress. The blog post was just about future work that we're working on. However, we don't have plans to do failover with Litestream at the moment.</p>
]]></description><pubDate>Fri, 30 May 2025 16:17:18 +0000</pubDate><link>https://news.ycombinator.com/item?id=44137690</link><dc:creator>benbjohnson</dc:creator><comments>https://news.ycombinator.com/item?id=44137690</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=44137690</guid></item><item><title><![CDATA[New comment by benbjohnson in "Litestream: Revamped"]]></title><description><![CDATA[
<p>Litestream saves WAL segments to a given time granularity. By default, it ships off WAL changes every second so you should be able to restore to any given second in your history (within your retention period).</p>
]]></description><pubDate>Tue, 20 May 2025 22:08:02 +0000</pubDate><link>https://news.ycombinator.com/item?id=44046420</link><dc:creator>benbjohnson</dc:creator><comments>https://news.ycombinator.com/item?id=44046420</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=44046420</guid></item><item><title><![CDATA[New comment by benbjohnson in "Litestream: Revamped"]]></title><description><![CDATA[
<p>Backups & read replicas are the primary use cases. If you're interested in local-first, you can check out projects like cr-sqlite[1].<p>[1]: <a href="https://github.com/vlcn-io/cr-sqlite">https://github.com/vlcn-io/cr-sqlite</a></p>
]]></description><pubDate>Tue, 20 May 2025 22:05:58 +0000</pubDate><link>https://news.ycombinator.com/item?id=44046405</link><dc:creator>benbjohnson</dc:creator><comments>https://news.ycombinator.com/item?id=44046405</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=44046405</guid></item><item><title><![CDATA[New comment by benbjohnson in "Litestream: Revamped"]]></title><description><![CDATA[
<p>We don't support plug-ins at the moment but there's several backends at the moment (S3, Azure Blob Storage, Google Cloud Storage, SFTP, etc)</p>
]]></description><pubDate>Tue, 20 May 2025 22:04:50 +0000</pubDate><link>https://news.ycombinator.com/item?id=44046398</link><dc:creator>benbjohnson</dc:creator><comments>https://news.ycombinator.com/item?id=44046398</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=44046398</guid></item><item><title><![CDATA[New comment by benbjohnson in "A faster way to copy SQLite databases between computers"]]></title><description><![CDATA[
<p>Not all corruption is detectable. You could make a copy during a transaction where only a subset of the transactions saved pages are persisted but all branch & leaf pages are pointed to correctly. That would give you a state of the database that never actually existed and break atomicity.</p>
]]></description><pubDate>Thu, 01 May 2025 17:51:14 +0000</pubDate><link>https://news.ycombinator.com/item?id=43861043</link><dc:creator>benbjohnson</dc:creator><comments>https://news.ycombinator.com/item?id=43861043</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=43861043</guid></item><item><title><![CDATA[New comment by benbjohnson in "Raft: Understandable Distributed Consensus (2014)"]]></title><description><![CDATA[
<p>I haven't read that paper but it seems like it's fixing a different problem of Byzantine fault tolerance. Most consensus systems that are internal for an organization don't have the Byzantine issue so it simplifies the problem.</p>
]]></description><pubDate>Fri, 27 Sep 2024 20:48:28 +0000</pubDate><link>https://news.ycombinator.com/item?id=41675392</link><dc:creator>benbjohnson</dc:creator><comments>https://news.ycombinator.com/item?id=41675392</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=41675392</guid></item><item><title><![CDATA[New comment by benbjohnson in "Raft: Understandable Distributed Consensus (2014)"]]></title><description><![CDATA[
<p>Thanks so much for letting me know! It's always hard to tell when I put something out there if it just gets lost in the ether. I'm glad to hear it helped so many folks.</p>
]]></description><pubDate>Fri, 27 Sep 2024 20:46:38 +0000</pubDate><link>https://news.ycombinator.com/item?id=41675374</link><dc:creator>benbjohnson</dc:creator><comments>https://news.ycombinator.com/item?id=41675374</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=41675374</guid></item><item><title><![CDATA[New comment by benbjohnson in "Raft: Understandable Distributed Consensus (2014)"]]></title><description><![CDATA[
<p>It's all done with d3 and JavaScript. The visualizations aren't deterministic so I ended up writing a shitty Raft implementation in JS. Overall it was a terrible approach because it was so time consuming but I made it work. You can find all the source code in this repo: <a href="https://github.com/benbjohnson/thesecretlivesofdata">https://github.com/benbjohnson/thesecretlivesofdata</a></p>
]]></description><pubDate>Fri, 27 Sep 2024 20:45:41 +0000</pubDate><link>https://news.ycombinator.com/item?id=41675366</link><dc:creator>benbjohnson</dc:creator><comments>https://news.ycombinator.com/item?id=41675366</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=41675366</guid></item></channel></rss>