<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: imor80</title><link>https://news.ycombinator.com/user?id=imor80</link><description>Hacker News RSS</description><docs>https://hnrss.org/</docs><generator>hnrss v2.1.1</generator><lastBuildDate>Tue, 28 Apr 2026 18:21:16 +0000</lastBuildDate><atom:link href="https://hnrss.org/user?id=imor80" rel="self" type="application/rss+xml"></atom:link><item><title><![CDATA[New comment by imor80 in "In Defense of C++"]]></title><description><![CDATA[
<p>There are two levels on which this argument feels weak:<p>* The author is confusing memory safety with other kinds of safety. This is evident from the fact that they say you can write unsafe code in GC languages like python and javascript. unsafe != memory unsafe. Rust only gives you memory safety, it won't magically fix all your bugs.<p>* The slippery slope trick. I've seen this so often, people say because Rust has unsafe keyword it's the same as c/c++. The reason it's not is because in c/c++ you don't have any idea where to look for undefined behaviour. In Rust at least the code points you to look at the unsafe blocks. The difference is of degree which for practial purposes makes a huge difference.</p>
]]></description><pubDate>Wed, 17 Sep 2025 08:09:55 +0000</pubDate><link>https://news.ycombinator.com/item?id=45273179</link><dc:creator>imor80</dc:creator><comments>https://news.ycombinator.com/item?id=45273179</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45273179</guid></item><item><title><![CDATA[New comment by imor80 in "Multigres: Vitess for Postgres"]]></title><description><![CDATA[
<p>Interested to know how it compares with PgDog: <a href="https://pgdog.dev/">https://pgdog.dev/</a></p>
]]></description><pubDate>Tue, 10 Jun 2025 16:04:32 +0000</pubDate><link>https://news.ycombinator.com/item?id=44238452</link><dc:creator>imor80</dc:creator><comments>https://news.ycombinator.com/item?id=44238452</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=44238452</guid></item><item><title><![CDATA[New comment by imor80 in "Distributed Locks with Redis (2014)"]]></title><description><![CDATA[
<p>A lot of what you say is explained in detail in Martin Kleppmann's article[0]. As you said, there's no guarantee about when the lock will expire. The proper solution for this is a fencing token. The idea is similar to how people have used optimistic locking when updating data in a db to avoid two users overwriting other's work.<p>[0]: <a href="https://martin.kleppmann.com/2016/02/08/how-to-do-distributed-locking.html" rel="nofollow">https://martin.kleppmann.com/2016/02/08/how-to-do-distribute...</a></p>
]]></description><pubDate>Thu, 22 Aug 2024 05:54:27 +0000</pubDate><link>https://news.ycombinator.com/item?id=41317242</link><dc:creator>imor80</dc:creator><comments>https://news.ycombinator.com/item?id=41317242</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=41317242</guid></item><item><title><![CDATA[New comment by imor80 in "Show HN: Pg_replicate – Build Postgres replication applications in Rust"]]></title><description><![CDATA[
<p>Not yet, but it is planned for the future. We'd need to pick one of the two options you suggested.</p>
]]></description><pubDate>Sun, 11 Aug 2024 04:12:26 +0000</pubDate><link>https://news.ycombinator.com/item?id=41213926</link><dc:creator>imor80</dc:creator><comments>https://news.ycombinator.com/item?id=41213926</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=41213926</guid></item><item><title><![CDATA[New comment by imor80 in "Show HN: Pg_replicate – Build Postgres replication applications in Rust"]]></title><description><![CDATA[
<p>These days, for writing extensions/FFI pgrx[0] is the best crate.<p>[0] <a href="https://github.com/pgcentralfoundation/pgrx">https://github.com/pgcentralfoundation/pgrx</a></p>
]]></description><pubDate>Sun, 11 Aug 2024 03:31:09 +0000</pubDate><link>https://news.ycombinator.com/item?id=41213810</link><dc:creator>imor80</dc:creator><comments>https://news.ycombinator.com/item?id=41213810</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=41213810</guid></item><item><title><![CDATA[New comment by imor80 in "Show HN: Pg_replicate – Build Postgres replication applications in Rust"]]></title><description><![CDATA[
<p>Please do share your experience using pg_replicate as feedback once you integrate with windmill.</p>
]]></description><pubDate>Sun, 11 Aug 2024 03:23:28 +0000</pubDate><link>https://news.ycombinator.com/item?id=41213794</link><dc:creator>imor80</dc:creator><comments>https://news.ycombinator.com/item?id=41213794</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=41213794</guid></item><item><title><![CDATA[New comment by imor80 in "Show HN: Pg_replicate – Build Postgres replication applications in Rust"]]></title><description><![CDATA[
<p>pg-bifrost looks solid.<p>> Have you thought about / have solved sharding consumption across multiple slots / multi consumers to increase throughput?<p>Not yet, there has been not performance yet, as the project is still quite young.</p>
]]></description><pubDate>Sun, 11 Aug 2024 03:21:48 +0000</pubDate><link>https://news.ycombinator.com/item?id=41213788</link><dc:creator>imor80</dc:creator><comments>https://news.ycombinator.com/item?id=41213788</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=41213788</guid></item><item><title><![CDATA[New comment by imor80 in "Show HN: Pg_replicate – Build Postgres replication applications in Rust"]]></title><description><![CDATA[
<p>Thanks for trying out, I'll update the code and/or the README to fix this.</p>
]]></description><pubDate>Sun, 11 Aug 2024 03:14:03 +0000</pubDate><link>https://news.ycombinator.com/item?id=41213765</link><dc:creator>imor80</dc:creator><comments>https://news.ycombinator.com/item?id=41213765</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=41213765</guid></item><item><title><![CDATA[New comment by imor80 in "Show HN: Pg_replicate – Build Postgres replication applications in Rust"]]></title><description><![CDATA[
<p>Agree, Rust and Postgres and a perfect match. It feels so much more productive to write Postgres tooling in Rust. E.g. we already have extensions like pg_graphql[0], pg_jsonschema[1] and wrappers[2] which use pgrx. We don't have plrust on the platform yet though.<p>Full disclosure: I'm a Rust Engieer at Supabase.<p>[0] <a href="https://github.com/supabase/pg_graphql">https://github.com/supabase/pg_graphql</a>
[1] <a href="https://github.com/supabase/pg_jsonschema">https://github.com/supabase/pg_jsonschema</a>
[2] <a href="https://github.com/supabase/wrappers">https://github.com/supabase/wrappers</a></p>
]]></description><pubDate>Sun, 11 Aug 2024 03:12:06 +0000</pubDate><link>https://news.ycombinator.com/item?id=41213759</link><dc:creator>imor80</dc:creator><comments>https://news.ycombinator.com/item?id=41213759</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=41213759</guid></item><item><title><![CDATA[New comment by imor80 in "Show HN: Pg_replicate – Build Postgres replication applications in Rust"]]></title><description><![CDATA[
<p>Yes, logical replication complements very nicely the normal way of interacting with the database via queries. This inverted flow makes those apps possible which were hard/impossible to build with just queries.</p>
]]></description><pubDate>Sun, 11 Aug 2024 03:04:03 +0000</pubDate><link>https://news.ycombinator.com/item?id=41213741</link><dc:creator>imor80</dc:creator><comments>https://news.ycombinator.com/item?id=41213741</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=41213741</guid></item><item><title><![CDATA[New comment by imor80 in "Show HN: Pg_replicate – Build Postgres replication applications in Rust"]]></title><description><![CDATA[
<p>> I’m curious in your experience how many clients can run pg_replicate at once?<p>I'd expect more clients to put more pressure on the resource usage on the db. But it's not clear whether the relationship between number of clients and resource usage is linear, quadratic or something else since I haven't done benchmarking yet.<p>> The idea of scaling an application by tailing logs from a database sounds very interesting to me, and I’m curious if you’ve explored this at all. There’s of course things like Kafka (and then things like Debezium), but it’s hard to beat direct!<p>It doesn't exist yet, but I was thinking of creating a sink which exposes Postgres WAL via websockets. This way the number of clients might scale much better.</p>
]]></description><pubDate>Sun, 11 Aug 2024 03:01:03 +0000</pubDate><link>https://news.ycombinator.com/item?id=41213731</link><dc:creator>imor80</dc:creator><comments>https://news.ycombinator.com/item?id=41213731</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=41213731</guid></item><item><title><![CDATA[New comment by imor80 in "Show HN: Pg_replicate – Build Postgres replication applications in Rust"]]></title><description><![CDATA[
<p>Hey HN,<p>For the past few months, as part of my job at Supabase, I have been working on pg_replicate. pg_replicate lets you very easily build applications which can copy data (full table copies and cdc) from Postgres to any other data system. Around six months back I was figuring out what can be built by tailing Postgres' WAL. pg_replicate grew organically out of that effort. Many similar tools, like Debezium, exist already which do a great job, but pg_replicate is much simpler and focussed only on Postgres. Rust was used in the project because I am most comfortable with it. pg_replicate abstracts over the Postgres logical replication protocol[0] and lets you work with higher level concepts. There are three main concepts to understand pg_replicate: source, sink and pipeline.<p>1/ A source is a Postgres db from which data is to be copied.
2/ A sink is a data system into which data will be copied.
3/ A pipeline connects a source to a sink.<p>Currently pg_replicate supports BigQuery, DuckDb local file and, MotherDuck as sinks. More sinks will be added in future. To support a new data system, you just need to implement the BatchSink trait (older Sink trait will be deprecated soon).<p>pg_replicate is still under heavy development and is a little thin on documentation. Performance is another area which hasn't received much attention. We are releasing this to get feedback from the community and are still evaluating how (or if) we can integrate it with the Supabase platform. Comments and feedback are welcome.<p>[0] Postgres logical replication protocol: [<a href="https://www.postgresql.org/docs/current/protocol-logical-replication.html](https://www.postgresql.org/docs/current/protocol-logical-replication.html)" rel="nofollow">https://www.postgresql.org/docs/current/protocol-logical-rep...</a>)</p>
]]></description><pubDate>Sat, 10 Aug 2024 15:00:41 +0000</pubDate><link>https://news.ycombinator.com/item?id=41209995</link><dc:creator>imor80</dc:creator><comments>https://news.ycombinator.com/item?id=41209995</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=41209995</guid></item><item><title><![CDATA[Show HN: Pg_replicate – Build Postgres replication applications in Rust]]></title><description><![CDATA[
<p>Article URL: <a href="https://github.com/supabase/pg_replicate">https://github.com/supabase/pg_replicate</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=41209994">https://news.ycombinator.com/item?id=41209994</a></p>
<p>Points: 216</p>
<p># Comments: 28</p>
]]></description><pubDate>Sat, 10 Aug 2024 15:00:41 +0000</pubDate><link>https://github.com/supabase/pg_replicate</link><dc:creator>imor80</dc:creator><comments>https://news.ycombinator.com/item?id=41209994</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=41209994</guid></item><item><title><![CDATA[New comment by imor80 in "Launch HN: Firezone (YC W22) – Zero-trust access platform built on WireGuard"]]></title><description><![CDATA[
<p>I'd have definitely liked if the demo video was at least 1080p.</p>
]]></description><pubDate>Wed, 07 Aug 2024 13:34:54 +0000</pubDate><link>https://news.ycombinator.com/item?id=41181317</link><dc:creator>imor80</dc:creator><comments>https://news.ycombinator.com/item?id=41181317</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=41181317</guid></item><item><title><![CDATA[New comment by imor80 in "Postgres Roles and Privileges"]]></title><description><![CDATA[
<p>A follow along, tutorial style, guide to understanding how roles and privileges work in Postgres.</p>
]]></description><pubDate>Thu, 11 Apr 2024 14:18:30 +0000</pubDate><link>https://news.ycombinator.com/item?id=40002425</link><dc:creator>imor80</dc:creator><comments>https://news.ycombinator.com/item?id=40002425</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=40002425</guid></item><item><title><![CDATA[Postgres Roles and Privileges]]></title><description><![CDATA[
<p>Article URL: <a href="https://supabase.com/blog/postgres-roles-and-privileges">https://supabase.com/blog/postgres-roles-and-privileges</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=40002424">https://news.ycombinator.com/item?id=40002424</a></p>
<p>Points: 12</p>
<p># Comments: 1</p>
]]></description><pubDate>Thu, 11 Apr 2024 14:18:30 +0000</pubDate><link>https://supabase.com/blog/postgres-roles-and-privileges</link><dc:creator>imor80</dc:creator><comments>https://news.ycombinator.com/item?id=40002424</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=40002424</guid></item><item><title><![CDATA[New comment by imor80 in "Rolldown: Rollup compatible bundler written in Rust"]]></title><description><![CDATA[
<p>Copy and Clone traits have different semantics. Copy is only for bitwise (and cheap) copies. Clone is for explicit, potentially expensive copies. Also what entails cloning differs from type to type. String, for example, needs to duplicate the pointed to string buffer in the heap, while Arc only increments a reference count.</p>
]]></description><pubDate>Fri, 08 Mar 2024 15:18:42 +0000</pubDate><link>https://news.ycombinator.com/item?id=39641807</link><dc:creator>imor80</dc:creator><comments>https://news.ycombinator.com/item?id=39641807</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=39641807</guid></item><item><title><![CDATA[New comment by imor80 in "Ask HN: Could you share your personal blog here?"]]></title><description><![CDATA[
<p><a href="https://hashrust.com/" rel="nofollow noreferrer">https://hashrust.com/</a><p>I write about the Rust programming language. I basically write about whatever I learn in Rust. This not only helps cement my understanding of the topic but hopefully helps others as well.</p>
]]></description><pubDate>Wed, 05 Jul 2023 05:45:39 +0000</pubDate><link>https://news.ycombinator.com/item?id=36595958</link><dc:creator>imor80</dc:creator><comments>https://news.ycombinator.com/item?id=36595958</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=36595958</guid></item><item><title><![CDATA[A guide to closures in Rust]]></title><description><![CDATA[
<p>Article URL: <a href="https://hashrust.com/blog/a-guide-to-closures-in-rust/">https://hashrust.com/blog/a-guide-to-closures-in-rust/</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=36054990">https://news.ycombinator.com/item?id=36054990</a></p>
<p>Points: 170</p>
<p># Comments: 99</p>
]]></description><pubDate>Wed, 24 May 2023 07:11:00 +0000</pubDate><link>https://hashrust.com/blog/a-guide-to-closures-in-rust/</link><dc:creator>imor80</dc:creator><comments>https://news.ycombinator.com/item?id=36054990</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=36054990</guid></item><item><title><![CDATA[Creating social sharing images in Rust]]></title><description><![CDATA[
<p>Article URL: <a href="https://hashrust.com/blog/creating-social-sharing-images-in-rust/">https://hashrust.com/blog/creating-social-sharing-images-in-rust/</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=30003901">https://news.ycombinator.com/item?id=30003901</a></p>
<p>Points: 1</p>
<p># Comments: 0</p>
]]></description><pubDate>Thu, 20 Jan 2022 02:58:15 +0000</pubDate><link>https://hashrust.com/blog/creating-social-sharing-images-in-rust/</link><dc:creator>imor80</dc:creator><comments>https://news.ycombinator.com/item?id=30003901</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=30003901</guid></item></channel></rss>