<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: matlin</title><link>https://news.ycombinator.com/user?id=matlin</link><description>Hacker News RSS</description><docs>https://hnrss.org/</docs><generator>hnrss v2.1.1</generator><lastBuildDate>Sun, 12 Apr 2026 14:37:45 +0000</lastBuildDate><atom:link href="https://hnrss.org/user?id=matlin" rel="self" type="application/rss+xml"></atom:link><item><title><![CDATA[New comment by matlin in "Cap'n Web: a new RPC system for browsers and web servers"]]></title><description><![CDATA[
<p>More niche use case but this would be awesome for communicating between contexts in web app (e.g. web worker, iframe, etc)</p>
]]></description><pubDate>Mon, 22 Sep 2025 18:40:40 +0000</pubDate><link>https://news.ycombinator.com/item?id=45337681</link><dc:creator>matlin</dc:creator><comments>https://news.ycombinator.com/item?id=45337681</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45337681</guid></item><item><title><![CDATA[New comment by matlin in "Offline-First with CouchDB and PouchDB in 2025"]]></title><description><![CDATA[
<p>With React Native yes but not yet with Swift. There's been quite a few requests to my surprise through--I figured CloudKit, etc would be sufficient on iOS but I don't have experience there.</p>
]]></description><pubDate>Fri, 02 May 2025 11:49:32 +0000</pubDate><link>https://news.ycombinator.com/item?id=43868520</link><dc:creator>matlin</dc:creator><comments>https://news.ycombinator.com/item?id=43868520</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=43868520</guid></item><item><title><![CDATA[New comment by matlin in "Offline-First with CouchDB and PouchDB in 2025"]]></title><description><![CDATA[
<p>Great catch, fixed!</p>
]]></description><pubDate>Fri, 02 May 2025 11:46:40 +0000</pubDate><link>https://news.ycombinator.com/item?id=43868508</link><dc:creator>matlin</dc:creator><comments>https://news.ycombinator.com/item?id=43868508</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=43868508</guid></item><item><title><![CDATA[New comment by matlin in "Offline-First with CouchDB and PouchDB in 2025"]]></title><description><![CDATA[
<p>PouchDB and CouchDB were what inspired me to build Triplit[1]. The idea of having an identical (or merely similar in the case of Pouch/Couch) query engine accessible on client and server is insanely powerful.<p>The author links to a much longer post on handling conflicts which is worthy of its length because it's not a pleasant experience with this setup.<p>I highly recommend trying a modern setup from one of the many new local first solutions [2]<p>1. <a href="https://triplit.dev">https://triplit.dev</a><p>2. <a href="https://www.localfirst.fm/landscape" rel="nofollow">https://www.localfirst.fm/landscape</a></p>
]]></description><pubDate>Fri, 02 May 2025 02:35:54 +0000</pubDate><link>https://news.ycombinator.com/item?id=43865623</link><dc:creator>matlin</dc:creator><comments>https://news.ycombinator.com/item?id=43865623</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=43865623</guid></item><item><title><![CDATA[A more practical definition of Local First]]></title><description><![CDATA[
<p>Article URL: <a href="https://www.triplit.dev/blog/local-first-definition">https://www.triplit.dev/blog/local-first-definition</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=43772223">https://news.ycombinator.com/item?id=43772223</a></p>
<p>Points: 3</p>
<p># Comments: 0</p>
]]></description><pubDate>Wed, 23 Apr 2025 13:53:01 +0000</pubDate><link>https://www.triplit.dev/blog/local-first-definition</link><dc:creator>matlin</dc:creator><comments>https://news.ycombinator.com/item?id=43772223</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=43772223</guid></item><item><title><![CDATA[Triplit 1.0: The database that's in sync with your front end]]></title><description><![CDATA[
<p>Article URL: <a href="https://www.triplit.dev/blog/triplit-1.0">https://www.triplit.dev/blog/triplit-1.0</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=43727351">https://news.ycombinator.com/item?id=43727351</a></p>
<p>Points: 2</p>
<p># Comments: 0</p>
]]></description><pubDate>Fri, 18 Apr 2025 12:17:07 +0000</pubDate><link>https://www.triplit.dev/blog/triplit-1.0</link><dc:creator>matlin</dc:creator><comments>https://news.ycombinator.com/item?id=43727351</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=43727351</guid></item><item><title><![CDATA[New comment by matlin in "Stop syncing everything"]]></title><description><![CDATA[
<p>My ideal version of this is simple: just define the queries you want (no matter how complex) and the you'll get exactly the data you need to fulfill those queries, no more, no less. And the cherry on top would be to have your queries update automatically with changes both locally and remote in close to real-time.<p>That's basically what we're doing with Triplit (<a href="https://triplit.dev">https://triplit.dev</a>), be it, not with SQL--which is a plus for most developers.</p>
]]></description><pubDate>Wed, 02 Apr 2025 02:28:56 +0000</pubDate><link>https://news.ycombinator.com/item?id=43553179</link><dc:creator>matlin</dc:creator><comments>https://news.ycombinator.com/item?id=43553179</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=43553179</guid></item><item><title><![CDATA[PrimJS JavaScript Engine]]></title><description><![CDATA[
<p>Article URL: <a href="https://github.com/lynx-family/primjs">https://github.com/lynx-family/primjs</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=43262212">https://news.ycombinator.com/item?id=43262212</a></p>
<p>Points: 1</p>
<p># Comments: 0</p>
]]></description><pubDate>Wed, 05 Mar 2025 03:15:01 +0000</pubDate><link>https://github.com/lynx-family/primjs</link><dc:creator>matlin</dc:creator><comments>https://news.ycombinator.com/item?id=43262212</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=43262212</guid></item><item><title><![CDATA[Bubble Watch]]></title><description><![CDATA[
<p>Article URL: <a href="https://www.oaktreecapital.com/insights/memo/on-bubble-watch">https://www.oaktreecapital.com/insights/memo/on-bubble-watch</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=42629793">https://news.ycombinator.com/item?id=42629793</a></p>
<p>Points: 3</p>
<p># Comments: 0</p>
]]></description><pubDate>Wed, 08 Jan 2025 01:13:18 +0000</pubDate><link>https://www.oaktreecapital.com/insights/memo/on-bubble-watch</link><dc:creator>matlin</dc:creator><comments>https://news.ycombinator.com/item?id=42629793</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=42629793</guid></item><item><title><![CDATA[New comment by matlin in "Electric (Postgres sync engine) beta release"]]></title><description><![CDATA[
<p>You should check out Triplit as well, we have React Native support[0] and the best Typescript integration by far<p>0. <a href="https://www.triplit.dev/docs/frameworks/react-native">https://www.triplit.dev/docs/frameworks/react-native</a></p>
]]></description><pubDate>Wed, 11 Dec 2024 16:01:12 +0000</pubDate><link>https://news.ycombinator.com/item?id=42389096</link><dc:creator>matlin</dc:creator><comments>https://news.ycombinator.com/item?id=42389096</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=42389096</guid></item><item><title><![CDATA[New comment by matlin in "Streaming joins are hard"]]></title><description><![CDATA[
<p>We apply incremental, streamable "joins" (relational queries) for real-time syncing between application client and server. I think much of the initial research in this space was around data pipelines but the killer app (no pun intended) is actually in app development</p>
]]></description><pubDate>Fri, 25 Oct 2024 23:30:46 +0000</pubDate><link>https://news.ycombinator.com/item?id=41951015</link><dc:creator>matlin</dc:creator><comments>https://news.ycombinator.com/item?id=41951015</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=41951015</guid></item><item><title><![CDATA[New comment by matlin in "New Architecture is here"]]></title><description><![CDATA[
<p>I've used React Native quite a bit in the past and I gotta say I wish it didn't have to exist at all.<p>It's often times fine on iOS and then incredibly slow on Android. Hermes is very exciting but still requires many polyfills to make simple NPM packages work. I hope one day, the web (and embedding web apps on mobile) makes React Native fully obsolete.</p>
]]></description><pubDate>Thu, 24 Oct 2024 17:58:35 +0000</pubDate><link>https://news.ycombinator.com/item?id=41937867</link><dc:creator>matlin</dc:creator><comments>https://news.ycombinator.com/item?id=41937867</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=41937867</guid></item><item><title><![CDATA[New comment by matlin in "Sqlite3 WebAssembly"]]></title><description><![CDATA[
<p>I've made just this!<p>Docs for it: <a href="https://www.triplit.dev/docs/frameworks/tanstack-router#example-usage">https://www.triplit.dev/docs/frameworks/tanstack-router#exam...</a><p>It by default uses IndexedDB but can also use SQLite but does real time, relational querying and (optionally) syncs with you server.<p>Re: developer ergonomics, this is our primary focus so I don't love to get your feedback on!</p>
]]></description><pubDate>Wed, 16 Oct 2024 01:07:20 +0000</pubDate><link>https://news.ycombinator.com/item?id=41854685</link><dc:creator>matlin</dc:creator><comments>https://news.ycombinator.com/item?id=41854685</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=41854685</guid></item><item><title><![CDATA[New comment by matlin in "A Local-First Case Study"]]></title><description><![CDATA[
<p>A lot of the newer local first systems, like Triplit (biased because I work on it), support partial replication so only the requested/queried data is sent and subscribed to on the client.<p>The other issue of relying on a just the server to build these highly collaborative apps is you can't wait for a roundtrip to the server for each interaction if you want it to feel fast. Sure you can for those <i>rare</i> cases where your user is on a stable Wifi network, on a fast connection, and near their data; however, a lot computing is now on mobile where pings are much much higher than 10ms and on top of that when you have two people collaborating from different regions, someone will be too far away to rely on round trips.<p>Ultimately, you're going to need a client caching component (at least optimistic mutations) so you can either lean into that or try to create a complicated mess where all of your logic needs to be duplicated in the frontend and backend (potentially in different programming languages!).<p>The best approach IMO (again biased to what Triplit does) is to have the same query engine on both client and server so the exact query you use to get data from your central server can also be used to resolve from the clients cache.</p>
]]></description><pubDate>Wed, 02 Oct 2024 15:15:08 +0000</pubDate><link>https://news.ycombinator.com/item?id=41721490</link><dc:creator>matlin</dc:creator><comments>https://news.ycombinator.com/item?id=41721490</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=41721490</guid></item><item><title><![CDATA[New comment by matlin in "A Local-First Case Study"]]></title><description><![CDATA[
<p>You'd probably enjoy Triplit then--especially if you're using Typescript.<p><a href="https://triplit.dev">https://triplit.dev</a></p>
]]></description><pubDate>Tue, 01 Oct 2024 20:47:52 +0000</pubDate><link>https://news.ycombinator.com/item?id=41713961</link><dc:creator>matlin</dc:creator><comments>https://news.ycombinator.com/item?id=41713961</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=41713961</guid></item><item><title><![CDATA[New comment by matlin in "Collaborative text editing with Eg-Walker: Better, faster, smaller"]]></title><description><![CDATA[
<p>Seph (author) also has a reference implementation in Typescript: <a href="https://github.com/josephg/eg-walker-reference">https://github.com/josephg/eg-walker-reference</a><p>I've stated before that I think the main thing holding back collaborative text / sequence CRDTs is integration with a production database.<p>Eg-walker looks interesting because it might lend itself to be integrated into a database because the operations are immutable and only appended. However, to demonstrate the effectiveness of these algorithms library authors (see Yjs, DiamondTypes, etc) build stand-alone data structures (usually specialized search trees) that most databases already provide.<p>Personally, I've been trying to adapt a Piece Table[1] to be collaborative and stored in Triplit[2] which runs on both client and server and already implements logical clocks but I might see how well I can adapt this algorithm instead!<p>1. <a href="https://en.wikipedia.org/wiki/Piece_table" rel="nofollow">https://en.wikipedia.org/wiki/Piece_table</a>
2. <a href="https://github.com/aspen-cloud/triplit">https://github.com/aspen-cloud/triplit</a></p>
]]></description><pubDate>Fri, 27 Sep 2024 14:31:32 +0000</pubDate><link>https://news.ycombinator.com/item?id=41670980</link><dc:creator>matlin</dc:creator><comments>https://news.ycombinator.com/item?id=41670980</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=41670980</guid></item><item><title><![CDATA[Demo of a todos app syncing over a slow network with CRDTs and Triplit]]></title><description><![CDATA[
<p>Article URL: <a href="https://demo.triplit.dev/">https://demo.triplit.dev/</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=41524598">https://news.ycombinator.com/item?id=41524598</a></p>
<p>Points: 4</p>
<p># Comments: 0</p>
]]></description><pubDate>Thu, 12 Sep 2024 19:30:54 +0000</pubDate><link>https://demo.triplit.dev/</link><dc:creator>matlin</dc:creator><comments>https://news.ycombinator.com/item?id=41524598</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=41524598</guid></item><item><title><![CDATA[New comment by matlin in "Ladybird Web Browser becomes a non-profit with $1M from GitHub Founder"]]></title><description><![CDATA[
<p>Do you see Ladybird beating the incumbent browsers in any dimension .e.g. performance, usability?, security, etc?<p>Personally, I much prefer developing for the web than native so if there were APIs exclusive to Ladybird it might create a nice virtuous cycle of developers targeting Ladybird to do new things and users using Ladybird to try those new experiences.</p>
]]></description><pubDate>Tue, 02 Jul 2024 20:29:58 +0000</pubDate><link>https://news.ycombinator.com/item?id=40860146</link><dc:creator>matlin</dc:creator><comments>https://news.ycombinator.com/item?id=40860146</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=40860146</guid></item><item><title><![CDATA[The Spectrum of Local First Libraries]]></title><description><![CDATA[
<p>Article URL: <a href="https://tolin.ski/posts/local-first-options">https://tolin.ski/posts/local-first-options</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=40847693">https://news.ycombinator.com/item?id=40847693</a></p>
<p>Points: 3</p>
<p># Comments: 0</p>
]]></description><pubDate>Mon, 01 Jul 2024 16:55:48 +0000</pubDate><link>https://tolin.ski/posts/local-first-options</link><dc:creator>matlin</dc:creator><comments>https://news.ycombinator.com/item?id=40847693</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=40847693</guid></item><item><title><![CDATA[New comment by matlin in "Show HN: Triplit – Open-source syncing database that runs on server and client"]]></title><description><![CDATA[
<p>Glad you've enjoyed using Triplit!<p>on self-hosting: We're cleaning up the docs on self-hosting to make the configuration clearer, thanks for point that out.<p>on querying: Yeah we don't have aggregations yet but it's on our roadmap. Don't want to over promise but I think we can make something awesome here by leverage our incremental querying engine. Like consider a data dashboard that needs to be updated every hour; in a traditional system (postgres, mongo, etc) you would need to rerun the query from scratch each time. Our plan is to create something closer to what Materialize does and just process the <i>new</i> data so it's much more efficient and can just update continuously rather than every hour.<p>re Evolu: I haven't actually gotten a change to try it out but there might be in someone in our Discord[1] that has that could compare/contrast<p>1. <a href="https://triplit.dev/discord">https://triplit.dev/discord</a></p>
]]></description><pubDate>Wed, 26 Jun 2024 15:04:25 +0000</pubDate><link>https://news.ycombinator.com/item?id=40800893</link><dc:creator>matlin</dc:creator><comments>https://news.ycombinator.com/item?id=40800893</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=40800893</guid></item></channel></rss>