<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: func25</title><link>https://news.ycombinator.com/user?id=func25</link><description>Hacker News RSS</description><docs>https://hnrss.org/</docs><generator>hnrss v2.1.1</generator><lastBuildDate>Wed, 08 Jul 2026 00:51:27 +0000</lastBuildDate><atom:link href="https://hnrss.org/user?id=func25" rel="self" type="application/rss+xml"></atom:link><item><title><![CDATA[New comment by func25 in "How VictoriaLogs Stores Your Logs in a Columnar Layout"]]></title><description><![CDATA[
<p>Vertically on a single machine, the two are quite similar, both fan work out across all CPU cores.<p>The different is on scaling out.<p>ClickHouse scales by making you describe the cluster yourself. You decide how many shards to split the data into, how many copies (replicas) each shard keeps, which row goes to which shard. The copies are kept in sync by a consensus system ClickHouse Keeper. This is flexible but also more works on operators.<p>VictoriaLogs takes the opposite bet. When logs come in, the inserter just spreads them across all storage nodes on its own, so there is no sharding key for you to design. When a query runs, the selector asks every storage node in parallel and merges the results. There is no consensus system at all. If you want high availability, you run 2 independent clusters and send your logs to both, rather than having the database copy data internally. So this is simpler and less learning curve. See more here <a href="https://victoriametrics.com/blog/victorialogs-architecture-basics/" rel="nofollow">https://victoriametrics.com/blog/victorialogs-architecture-b...</a></p>
]]></description><pubDate>Mon, 29 Jun 2026 00:23:32 +0000</pubDate><link>https://news.ycombinator.com/item?id=48713252</link><dc:creator>func25</dc:creator><comments>https://news.ycombinator.com/item?id=48713252</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48713252</guid></item><item><title><![CDATA[Constructor Best Practices in Rust]]></title><description><![CDATA[
<p>Article URL: <a href="https://blog.cuongle.dev/p/constructor-best-practices-in-rust">https://blog.cuongle.dev/p/constructor-best-practices-in-rust</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=44952648">https://news.ycombinator.com/item?id=44952648</a></p>
<p>Points: 1</p>
<p># Comments: 0</p>
]]></description><pubDate>Tue, 19 Aug 2025 15:23:54 +0000</pubDate><link>https://blog.cuongle.dev/p/constructor-best-practices-in-rust</link><dc:creator>func25</dc:creator><comments>https://news.ycombinator.com/item?id=44952648</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=44952648</guid></item><item><title><![CDATA[VictoriaLogs Practical Ingestion Guide for Message, Time and Streams]]></title><description><![CDATA[
<p>Article URL: <a href="https://victoriametrics.com/blog/victorialogs-concepts-message-time-stream/index.html">https://victoriametrics.com/blog/victorialogs-concepts-message-time-stream/index.html</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=44930625">https://news.ycombinator.com/item?id=44930625</a></p>
<p>Points: 60</p>
<p># Comments: 17</p>
]]></description><pubDate>Sun, 17 Aug 2025 10:49:14 +0000</pubDate><link>https://victoriametrics.com/blog/victorialogs-concepts-message-time-stream/index.html</link><dc:creator>func25</dc:creator><comments>https://news.ycombinator.com/item?id=44930625</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=44930625</guid></item><item><title><![CDATA[Send/Sync Secret Separates Professional from Amateur Rust Developers]]></title><description><![CDATA[
<p>Article URL: <a href="https://blog.cuongle.dev/p/this-sendsync-secret-separates-professional-and-amateur">https://blog.cuongle.dev/p/this-sendsync-secret-separates-professional-and-amateur</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=44861831">https://news.ycombinator.com/item?id=44861831</a></p>
<p>Points: 3</p>
<p># Comments: 0</p>
]]></description><pubDate>Mon, 11 Aug 2025 08:12:57 +0000</pubDate><link>https://blog.cuongle.dev/p/this-sendsync-secret-separates-professional-and-amateur</link><dc:creator>func25</dc:creator><comments>https://news.ycombinator.com/item?id=44861831</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=44861831</guid></item><item><title><![CDATA[New comment by func25 in "Go Sync.Cond, the Most Overlooked Sync Mechanism"]]></title><description><![CDATA[
<p>The article could be a bit misleading, as it focuses on the act of one goroutine signaling another. That’s why it emphasizes 'for its signaling to work.'<p>> "In theory, a condition variable like sync.Cond doesn’t have to be tied to a lock for its signaling to work."<p>It basically separates signaling from lock management, but not about removing the entire need for a mutex. From a pure technical POV, developers can totally handle locking and unlocking the mutex themselves to protect the process of dealing with shared resources, so it's not about technical limitation.<p>Including a mutex in sync.Cond and having it automatically unlock the mutex in cond.Wait() is an engineering decision that enforces us, developers, to call Lock() on the mutex beforehand and follow the pattern to avoid panic.</p>
]]></description><pubDate>Sun, 22 Sep 2024 02:40:44 +0000</pubDate><link>https://news.ycombinator.com/item?id=41614250</link><dc:creator>func25</dc:creator><comments>https://news.ycombinator.com/item?id=41614250</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=41614250</guid></item></channel></rss>