<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: maxpert</title><link>https://news.ycombinator.com/user?id=maxpert</link><description>Hacker News RSS</description><docs>https://hnrss.org/</docs><generator>hnrss v2.1.1</generator><lastBuildDate>Tue, 07 Apr 2026 07:46:08 +0000</lastBuildDate><atom:link href="https://hnrss.org/user?id=maxpert" rel="self" type="application/rss+xml"></atom:link><item><title><![CDATA[New comment by maxpert in "MacBook Neo"]]></title><description><![CDATA[
<p>Can't seem to find what is the processor on this thing?</p>
]]></description><pubDate>Wed, 04 Mar 2026 14:39:22 +0000</pubDate><link>https://news.ycombinator.com/item?id=47248055</link><dc:creator>maxpert</dc:creator><comments>https://news.ycombinator.com/item?id=47248055</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47248055</guid></item><item><title><![CDATA[New comment by maxpert in "Ask HN: What are you working on? (February 2026)"]]></title><description><![CDATA[
<p>I am as usual working on Marmot <a href="https://github.com/maxpert/marmot" rel="nofollow">https://github.com/maxpert/marmot</a><p>I've got replicas now working with DML proxy. This essentially means I can now have a cluster of primaries, and then spin up replicas on demand and nodes talking to local host will never see their mutation work pretty transparently from readonly-replicas. While PoC works now the snapshot restore is extremely inefficient IMO yet.</p>
]]></description><pubDate>Sun, 08 Feb 2026 23:01:24 +0000</pubDate><link>https://news.ycombinator.com/item?id=46939504</link><dc:creator>maxpert</dc:creator><comments>https://news.ycombinator.com/item?id=46939504</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46939504</guid></item><item><title><![CDATA[New comment by maxpert in "GPT-5.3-Codex"]]></title><description><![CDATA[
<p>Tell me that you are hurt without telling me that you are hurt this applies to Sam right now</p>
]]></description><pubDate>Thu, 05 Feb 2026 18:42:39 +0000</pubDate><link>https://news.ycombinator.com/item?id=46903201</link><dc:creator>maxpert</dc:creator><comments>https://news.ycombinator.com/item?id=46903201</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46903201</guid></item><item><title><![CDATA[New comment by maxpert in "GPT-5.3-Codex"]]></title><description><![CDATA[
<p>Is this me or Sam is being absolute sore loser he is and trying to steal Opus thunder?</p>
]]></description><pubDate>Thu, 05 Feb 2026 18:31:15 +0000</pubDate><link>https://news.ycombinator.com/item?id=46903023</link><dc:creator>maxpert</dc:creator><comments>https://news.ycombinator.com/item?id=46903023</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46903023</guid></item><item><title><![CDATA[New comment by maxpert in "Notepad++ supply chain attack breakdown"]]></title><description><![CDATA[
<p>LOL I guess the editors using Notepad++ downvoted you :P</p>
]]></description><pubDate>Tue, 03 Feb 2026 23:33:10 +0000</pubDate><link>https://news.ycombinator.com/item?id=46878966</link><dc:creator>maxpert</dc:creator><comments>https://news.ycombinator.com/item?id=46878966</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46878966</guid></item><item><title><![CDATA[New comment by maxpert in "Many Small Queries Are Efficient in SQLite"]]></title><description><![CDATA[
<p>A lot of skepticism in comments. Let me remind them doing N loops over local disk with in memory cached pages is absolutely different compared to doing RT over typical VPS network. Having said that there is no silver bullet for dumb code! So let's not conflate the argument the author is trying to make.</p>
]]></description><pubDate>Sat, 24 Jan 2026 15:45:53 +0000</pubDate><link>https://news.ycombinator.com/item?id=46744527</link><dc:creator>maxpert</dc:creator><comments>https://news.ycombinator.com/item?id=46744527</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46744527</guid></item><item><title><![CDATA[New comment by maxpert in "Show HN: S2-lite, an open source Stream Store"]]></title><description><![CDATA[
<p>Kind of what I've been working on to build tenancy on top of SQLite CDC to make it a simple repayable SQLite for Marmot (<a href="https://github.com/maxpert/marmot" rel="nofollow">https://github.com/maxpert/marmot</a>). I personally think we have a synergy here, would drop by your discord.</p>
]]></description><pubDate>Fri, 23 Jan 2026 15:29:41 +0000</pubDate><link>https://news.ycombinator.com/item?id=46733656</link><dc:creator>maxpert</dc:creator><comments>https://news.ycombinator.com/item?id=46733656</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46733656</guid></item><item><title><![CDATA[New comment by maxpert in "Turso is an in-process SQL database, compatible with SQLite"]]></title><description><![CDATA[
<p>Disclaimer: I am author of Marmot <a href="https://github.com/maxpert/marmot" rel="nofollow">https://github.com/maxpert/marmot</a> so I will sound extremely bias.<p>I have been asked multiple times on why I chose SQLite and not Turso. I've always responded people that I don't trust an open-source project once it's backed by a VC firm. I've moved away from Redis to Val-Key for same reason, and we have seen the Redis train-wreck in slow-mo. I hope at no point in future Turso ever ends up in that state, but chances are pretty high. At this point the "compatible with SQLite" has become a marketing term IMO, we all know how easy it is to break compatibility here or SQLite to break compatibility.</p>
]]></description><pubDate>Fri, 23 Jan 2026 04:22:57 +0000</pubDate><link>https://news.ycombinator.com/item?id=46728386</link><dc:creator>maxpert</dc:creator><comments>https://news.ycombinator.com/item?id=46728386</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46728386</guid></item><item><title><![CDATA[New comment by maxpert in "jQuery 4"]]></title><description><![CDATA[
<p>jQuery is the last time I felt a library doing magic! Nothing has matched the feelings since then.</p>
]]></description><pubDate>Sun, 18 Jan 2026 07:44:47 +0000</pubDate><link>https://news.ycombinator.com/item?id=46665661</link><dc:creator>maxpert</dc:creator><comments>https://news.ycombinator.com/item?id=46665661</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46665661</guid></item><item><title><![CDATA[New comment by maxpert in "Marmot – A distributed SQLite server with MySQL wire compatible interface"]]></title><description><![CDATA[
<p>Yes! Changes are deterministic.</p>
]]></description><pubDate>Sat, 03 Jan 2026 03:55:27 +0000</pubDate><link>https://news.ycombinator.com/item?id=46472640</link><dc:creator>maxpert</dc:creator><comments>https://news.ycombinator.com/item?id=46472640</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46472640</guid></item><item><title><![CDATA[New comment by maxpert in "Marmot – A distributed SQLite server with MySQL wire compatible interface"]]></title><description><![CDATA[
<p>Ok it's a very long discussion but I will try to keep it brief here (more than happy to chat on Marmot Discord if you wanna go deeper). Honestly I've not done head to head comparison, but if you are asking for guestimated comparison:<p>- Marmot can give you better easy DDL and better replication guarantees.<p>- You can control the guarantees around transactions. So if you're doing a quorum based transaction, you are guaranteed that quorum has written those set of rows before returning success. This takes care of those conflicting ID based rows getting overwritten that people would usually ignore. And you should be able to do transactions with proper begin and commit statements.<p>- Disk write amplification is way lower than what you would see in CRDT. This should usually mean that on a commodity hardware you should see better write throughput. As I mentioned on my local benchmarks I'm getting close to 6K insert ops. This was with a cluster of three nodes. So you can effectively multiply it by three and that is like 18k operations per second. I did not set up a full cluster to actually benchmark these. That requires investing more money and time. And I would be honestly frugal over here since I am spending all my $$$ on my AI bill.<p>- Reads as you can see, you can read directly from the SQLite database. So you are only bottlenecked by your disk speed. There are no fancy mergers that happen on CRDT level in the middle. It's written once and you're ready to read.<p>- The hardest part in my opinion that I faced was the auto increment IDs. It is a sad reality but turns out 99% of small to mid-size companies, are using the auto increment for IDs. In all CRDTs, in case of conflict, the LWW (based on one ID or another) happens, and I can guarantee you at some point in time without coordination, if nodes are just emitting those regular incrementing IDs, THEY WILL OVERWRITE each other. That was the exact problem in the first version of Marmot.<p>- SQLite is single writer database. cr-sqlite writes these delta CRDT rows in a table as well, under high write load you are putting too much pressure on WAL, how do I know? I did this in Marmot v0.x and even v2 started with that and eventually I decided to write logs in a SQLite database as well. Turns out at a high throughput even writing or dumping those logs that change logs that I'm gonna discard away is a bad idea. I eventually move to PebbleDB, with mimalloc based unmanaged memory allocator for serialization/deserialization (yes even that caused slowdowns due to GC). It doesn't stop here each row in CRDT entry is for one every column of table (changed column) + it has index for faster lookup. So there that will bog it down further on many many rows. For context I have tested Marmot on gigs of data not megs.<p>I do have couple of ideas on how I can really exploit the CRDT stuff, but I don't think I need it right now. I think most of stuff can be taken care of if I can build and MVCC layer on top.</p>
]]></description><pubDate>Fri, 02 Jan 2026 18:27:26 +0000</pubDate><link>https://news.ycombinator.com/item?id=46467755</link><dc:creator>maxpert</dc:creator><comments>https://news.ycombinator.com/item?id=46467755</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46467755</guid></item><item><title><![CDATA[New comment by maxpert in "Marmot – A distributed SQLite server with MySQL wire compatible interface"]]></title><description><![CDATA[
<p>I see your point. Yes the Debezium path requires more configuration and ochestration, litestream makes it very simple. Would be more than happy to provide this out of box in Marmot if enough users request it (Feel free to open ticket).</p>
]]></description><pubDate>Fri, 02 Jan 2026 17:51:54 +0000</pubDate><link>https://news.ycombinator.com/item?id=46467384</link><dc:creator>maxpert</dc:creator><comments>https://news.ycombinator.com/item?id=46467384</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46467384</guid></item><item><title><![CDATA[New comment by maxpert in "Marmot – A distributed SQLite server with MySQL wire compatible interface"]]></title><description><![CDATA[
<p>Yes explored that path too with CRDTs.<p>- DDL gets really tricky in these cases, that's why you see Corrosion has this weird file based system. 
- cr-sqlite ain't maintained anymore but I did some benchmarks and if I remember correctly it was as slow as 4x-8x depending upon type of your data & load. Storage bloats by 2x-3x, tombstones accumulate pretty fast as well.<p>I mean each mutation on every column looks something like:<p>table, pk, cid, val, col_version, db_version, site_id, cl, seq<p>Overall I dropped the idea after spending month or two on it.</p>
]]></description><pubDate>Fri, 02 Jan 2026 16:06:42 +0000</pubDate><link>https://news.ycombinator.com/item?id=46466155</link><dc:creator>maxpert</dc:creator><comments>https://news.ycombinator.com/item?id=46466155</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46466155</guid></item><item><title><![CDATA[New comment by maxpert in "Marmot – A distributed SQLite server with MySQL wire compatible interface"]]></title><description><![CDATA[
<p>You point out a question that I spent months thinking about. I personally love Postgres, heck I initially even had a version that will talk postgres wire but with SQLite only syntax. But then somebody pointed me out my WordPress demo, and it was obvious to me that I have to support MySQL protocol, it's just a protocol. Underlaying technology will stay independent from what I choose.</p>
]]></description><pubDate>Fri, 02 Jan 2026 13:37:44 +0000</pubDate><link>https://news.ycombinator.com/item?id=46464609</link><dc:creator>maxpert</dc:creator><comments>https://news.ycombinator.com/item?id=46464609</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46464609</guid></item><item><title><![CDATA[New comment by maxpert in "Marmot – A distributed SQLite server with MySQL wire compatible interface"]]></title><description><![CDATA[
<p>Yes you can. I know wordpress has been trying to get SQLite as first class citizen too. But at this point I am tired of waiting for that pipe-dream. But this will let you do it today. Plus Marmot supports debezium so you can have continuous stream to your NAS.</p>
]]></description><pubDate>Fri, 02 Jan 2026 13:24:21 +0000</pubDate><link>https://news.ycombinator.com/item?id=46464477</link><dc:creator>maxpert</dc:creator><comments>https://news.ycombinator.com/item?id=46464477</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46464477</guid></item><item><title><![CDATA[New comment by maxpert in "Marmot – A distributed SQLite server with MySQL wire compatible interface"]]></title><description><![CDATA[
<p>We already support debezium so you can do more than backups :D</p>
]]></description><pubDate>Fri, 02 Jan 2026 13:22:13 +0000</pubDate><link>https://news.ycombinator.com/item?id=46464465</link><dc:creator>maxpert</dc:creator><comments>https://news.ycombinator.com/item?id=46464465</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46464465</guid></item><item><title><![CDATA[New comment by maxpert in "Marmot – A distributed SQLite server with MySQL wire compatible interface"]]></title><description><![CDATA[
<p>Here are some that I can think on top of my head:<p>- Marmot let's you choose consistency level (ONE/QUORUM/FULL) vs MySQL's serializable.<p>- MySQL requires careful setup of replication, conflict avoidance and monitoring. Fencing split brain and failover is manual in many cases. Marmot even right now is easier to spin up, plus it's leaderless. So you can actually just have your client talk to different nodes (maybe in round robin fashion) to do load distribution.<p>- Marmot's eventual consistency + anti-entropy will recover brain-splits with you requiring to do anything. MySQL active active requires manual ops.<p>- Marmot's designed for read-heavy on the edge scenarios. Once I've completed the read-only replica system you can literally bring up or down lambda nodes with Marmot running as sidecar. With replicas being able to select DBs they want (WIP) you should be able to bring up region/org/scenario specific servers with their light weight copies, and writes will be proxied to main server. Applications are virtually unlimited. Since you can directly read SQLite database, think many small vector databases distributed to edge, or regional configurations, or catalogs.</p>
]]></description><pubDate>Fri, 02 Jan 2026 13:21:51 +0000</pubDate><link>https://news.ycombinator.com/item?id=46464463</link><dc:creator>maxpert</dc:creator><comments>https://news.ycombinator.com/item?id=46464463</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46464463</guid></item><item><title><![CDATA[New comment by maxpert in "Marmot – A distributed SQLite server with MySQL wire compatible interface"]]></title><description><![CDATA[
<p>Marmot already supports debezium, so you can do way more than just basic S3 backups. I've noted your suggestions, it's definitely helpful.</p>
]]></description><pubDate>Fri, 02 Jan 2026 12:52:04 +0000</pubDate><link>https://news.ycombinator.com/item?id=46464274</link><dc:creator>maxpert</dc:creator><comments>https://news.ycombinator.com/item?id=46464274</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46464274</guid></item><item><title><![CDATA[New comment by maxpert in "Marmot – A distributed SQLite server with MySQL wire compatible interface"]]></title><description><![CDATA[
<p>Right now I've started off with full replication of every database in cluster. On my roadmap I have:<p>- Ability to launch a replica on selected databases from main cluster.<p>- Ability for replica to only download and replicate changes of select databases (right now all or nothing).<p>- Ability for replica to proxy DML & DDL into write cluster transparently.<p>- Custom set of commands for replicas to download and attach/detach databases on the fly.<p>This will instantly solve 80% of the problems for most of consumption today. I will probably go after on demand page stream and other stuff once core features are done.<p>Not to mention this solves majority use-cases of lambdas. One can have a persistent main cluster, and then lambda's coming up or going down on demand transparently.</p>
]]></description><pubDate>Fri, 02 Jan 2026 04:04:58 +0000</pubDate><link>https://news.ycombinator.com/item?id=46461287</link><dc:creator>maxpert</dc:creator><comments>https://news.ycombinator.com/item?id=46461287</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46461287</guid></item><item><title><![CDATA[New comment by maxpert in "Marmot – A distributed SQLite server with MySQL wire compatible interface"]]></title><description><![CDATA[
<p>Author here! Every time I post my own stuff here it seems to sink, so hopefully this actually reaches some of you.<p>Marmot started as a sidecar project using triggers and polling to replicate changes over NATS. It worked, but I hit a wall pretty fast. Most people really want full ACID compliance and DDL replication across the cluster. I realized the only clean way to do that was to expose SQLite over a standard protocol.<p>While projects like rqlite use REST and others go the page-capture route, I decided to implement the MySQL protocol instead. It just makes the most sense for compatibility.<p>I’ve reached a point where it works with WordPress, which theoretically covers a huge chunk of the web. There are scripts in the repo to deploy a WP cluster running on top of Marmot. Any DB change replicates across the whole cluster, so you can finally scale WordPress out properly.<p>On the performance side, I’m seeing about 6K-7K inserts per second on my local machine with a 3-node quorum. It supports unix-sockets, and you can even have your processes read the SQLite DB file directly while routing writes through the MySQL interface. This gives you a lot of flexibility for read-heavy apps.<p>I know the "AI slop" label gets thrown around a lot lately, but I’ve been running this in production consistently. It’s taken a massive amount of manual hours to get the behavior exactly where it needs to be.</p>
]]></description><pubDate>Fri, 02 Jan 2026 03:51:54 +0000</pubDate><link>https://news.ycombinator.com/item?id=46461221</link><dc:creator>maxpert</dc:creator><comments>https://news.ycombinator.com/item?id=46461221</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46461221</guid></item></channel></rss>