<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: enduku</title><link>https://news.ycombinator.com/user?id=enduku</link><description>Hacker News RSS</description><docs>https://hnrss.org/</docs><generator>hnrss v2.1.1</generator><lastBuildDate>Sun, 24 May 2026 20:35:22 +0000</lastBuildDate><atom:link href="https://hnrss.org/user?id=enduku" rel="self" type="application/rss+xml"></atom:link><item><title><![CDATA[New comment by enduku in "Silk: Open-source cooperative fiber scheduler"]]></title><description><![CDATA[
<p>The `Cilk` angle is interesting. There’s still room for small runtimes focused just on fork/join recursion.<p>I’ve been working on one for C: <a href="https://github.com/xtellect/cactus" rel="nofollow">https://github.com/xtellect/cactus</a><p>It’s narrower than Silk/SeaStar: continuation stealing for CPU-bound recursive code, not a general async I/O fiber runtime.</p>
]]></description><pubDate>Sun, 24 May 2026 11:34:16 +0000</pubDate><link>https://news.ycombinator.com/item?id=48256444</link><dc:creator>enduku</dc:creator><comments>https://news.ycombinator.com/item?id=48256444</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48256444</guid></item><item><title><![CDATA[New comment by enduku in "Fc, a lossless compressor for floating-point streams"]]></title><description><![CDATA[
<p>Fair points on both. Thanks for aasking.<p>The 120 MiB/s encode ceiling is the cost of the mode competition. that's where the ratio comes from. At 800-1600 MiB/s off a digitizer, fc is the bottleneck no matter what transport sits behind it; for that regime zstd-3 or lz4 are the better fit, or fc further down the pipeline on aggregated/decimated data.<p>You're also right on int/short. fc's modes look for IEEE-754 bit patterns, so doubles that started life as rescaled ints lose the structure those modes exploit. A native int16/int32 path is on the list.<p>For the wiring itself: I have a sister single-header library, vibe (<a href="https://github.com/xtellect/vibe" rel="nofollow">https://github.com/xtellect/vibe</a>), built for this exact pattern: length-prefixed TCP/IPC framing on Linux, with a `telemetry_sink` example close to the edge-sensor --> cloud-ingest case. Producer compresses with fc, ships framed bytes through vibe, consumer decompresses. Doesn't solve the throughput ceiling, but handles the producer/consumer setup cleanly.<p>edit: i think the comments is flagged automatically because I used `vibe` (bad name I know) :)</p>
]]></description><pubDate>Thu, 14 May 2026 02:36:49 +0000</pubDate><link>https://news.ycombinator.com/item?id=48130464</link><dc:creator>enduku</dc:creator><comments>https://news.ycombinator.com/item?id=48130464</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48130464</guid></item><item><title><![CDATA[Vibe, A single-header lock-free networking library for Linux]]></title><description><![CDATA[
<p>Article URL: <a href="https://github.com/xtellect/vibe">https://github.com/xtellect/vibe</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=48129937">https://news.ycombinator.com/item?id=48129937</a></p>
<p>Points: 4</p>
<p># Comments: 0</p>
]]></description><pubDate>Thu, 14 May 2026 01:13:17 +0000</pubDate><link>https://github.com/xtellect/vibe</link><dc:creator>enduku</dc:creator><comments>https://news.ycombinator.com/item?id=48129937</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48129937</guid></item><item><title><![CDATA[New comment by enduku in "Fc, a lossless compressor for floating-point streams"]]></title><description><![CDATA[
<p>Yeah, and also approximating a double (within range) to int32 :)<p><a href="https://x.com/Densebit/status/1839705674378613043?s=20" rel="nofollow">https://x.com/Densebit/status/1839705674378613043?s=20</a></p>
]]></description><pubDate>Wed, 13 May 2026 11:49:54 +0000</pubDate><link>https://news.ycombinator.com/item?id=48120688</link><dc:creator>enduku</dc:creator><comments>https://news.ycombinator.com/item?id=48120688</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48120688</guid></item><item><title><![CDATA[New comment by enduku in "Fc, a lossless compressor for floating-point streams"]]></title><description><![CDATA[
<p>Thank you. Fuzz safety is definitely on my list. Current focus is to broaden the benchmarks , predictors and preprocessors and  see what sticks</p>
]]></description><pubDate>Wed, 13 May 2026 11:22:51 +0000</pubDate><link>https://news.ycombinator.com/item?id=48120497</link><dc:creator>enduku</dc:creator><comments>https://news.ycombinator.com/item?id=48120497</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48120497</guid></item><item><title><![CDATA[New comment by enduku in "Fc, a lossless compressor for floating-point streams"]]></title><description><![CDATA[
<p>I need to add it to the benchmark. My expectation is that OpenZL should be strong when the enclosing format is known and SDDL can separate typed fields cleanly. Running both on the same f64 arrays will give some information</p>
]]></description><pubDate>Wed, 13 May 2026 11:04:02 +0000</pubDate><link>https://news.ycombinator.com/item?id=48120358</link><dc:creator>enduku</dc:creator><comments>https://news.ycombinator.com/item?id=48120358</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48120358</guid></item><item><title><![CDATA[New comment by enduku in "Fc, a lossless compressor for floating-point streams"]]></title><description><![CDATA[
<p>Yes it is. The mismatch is mainly representation and purpose: audio is usually int16/int24/float32 PCM, and audio codecs often exploit perceptual loss. fc is lossless and currently tuned for float64 streams.</p>
]]></description><pubDate>Wed, 13 May 2026 11:01:20 +0000</pubDate><link>https://news.ycombinator.com/item?id=48120338</link><dc:creator>enduku</dc:creator><comments>https://news.ycombinator.com/item?id=48120338</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48120338</guid></item><item><title><![CDATA[New comment by enduku in "Fc, a lossless compressor for floating-point streams"]]></title><description><![CDATA[
<p>Agreed; pcodec is probably one of the most relevant comparisons. I will add pcodec to teh benchmark</p>
]]></description><pubDate>Wed, 13 May 2026 10:59:50 +0000</pubDate><link>https://news.ycombinator.com/item?id=48120319</link><dc:creator>enduku</dc:creator><comments>https://news.ycombinator.com/item?id=48120319</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48120319</guid></item><item><title><![CDATA[New comment by enduku in "Fc, a lossless compressor for floating-point streams"]]></title><description><![CDATA[
<p>I have an XOR128-style mode and a byte-transpose/byte-split-like mode, but I should not claim that as a proper Chimp128 or Arrow Parquet byte-stream-split comparison yet. I willadd direct baselines for Chimp128 and Arrow/Parquet BSS+zstd to the harness.</p>
]]></description><pubDate>Wed, 13 May 2026 10:58:16 +0000</pubDate><link>https://news.ycombinator.com/item?id=48120312</link><dc:creator>enduku</dc:creator><comments>https://news.ycombinator.com/item?id=48120312</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48120312</guid></item><item><title><![CDATA[New comment by enduku in "Fc, a lossless compressor for floating-point streams"]]></title><description><![CDATA[
<p>Agreed. will work on that :)</p>
]]></description><pubDate>Wed, 13 May 2026 10:53:23 +0000</pubDate><link>https://news.ycombinator.com/item?id=48120271</link><dc:creator>enduku</dc:creator><comments>https://news.ycombinator.com/item?id=48120271</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48120271</guid></item><item><title><![CDATA[New comment by enduku in "Fc, a lossless compressor for floating-point streams"]]></title><description><![CDATA[
<p>I’m regarding that term loosely here-  in this case it is 'try several representations/codecs for a block and store the winner.' Similar ideas show up in columnar formats choosing encodings per column/page, OpenZL selectors (asother commenters pointed here), and shuffle/transpose + backend-compressor pipelines. fc’s version is much narrower: a tournament among f64-specific modes per block.</p>
]]></description><pubDate>Wed, 13 May 2026 10:51:21 +0000</pubDate><link>https://news.ycombinator.com/item?id=48120256</link><dc:creator>enduku</dc:creator><comments>https://news.ycombinator.com/item?id=48120256</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48120256</guid></item><item><title><![CDATA[New comment by enduku in "Fc, a lossless compressor for floating-point streams"]]></title><description><![CDATA[
<p>That’s a fair description. One mode does not dominate in my current harness; the winning mode varies quite a bit by dataset/block. If real workloads show one or two modes dominate, I’d rather simplify the portfolio :) For now the extra encode CPU is intentional: spend time once, get smaller blocks and fast parallel decode.</p>
]]></description><pubDate>Wed, 13 May 2026 10:48:21 +0000</pubDate><link>https://news.ycombinator.com/item?id=48120227</link><dc:creator>enduku</dc:creator><comments>https://news.ycombinator.com/item?id=48120227</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48120227</guid></item><item><title><![CDATA[New comment by enduku in "Fc, a lossless compressor for floating-point streams"]]></title><description><![CDATA[
<p>Thanks, this looks super relevant. I think the transferable part is the per-block selectrover  predictors, strides, deltas, exponent/mantissa-ish structure, byte transpose, fallback raw/LZ, etc.sddl2 looks like a natural place to try some of that.</p>
]]></description><pubDate>Wed, 13 May 2026 10:46:47 +0000</pubDate><link>https://news.ycombinator.com/item?id=48120216</link><dc:creator>enduku</dc:creator><comments>https://news.ycombinator.com/item?id=48120216</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48120216</guid></item><item><title><![CDATA[New comment by enduku in "Fc, a lossless compressor for floating-point streams"]]></title><description><![CDATA[
<p>It is intended t obe mainly source agnostic (will try to add custom source predictors too). The idea is to treat input as an ordered stream of  doubles and look for numeric structure like repeats, smooth deltas, fixed increments, or low-entropy bits. Target presentlyis scientific/time-series/simulation/analytics data, not photos or sound.</p>
]]></description><pubDate>Tue, 12 May 2026 20:47:57 +0000</pubDate><link>https://news.ycombinator.com/item?id=48114320</link><dc:creator>enduku</dc:creator><comments>https://news.ycombinator.com/item?id=48114320</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48114320</guid></item><item><title><![CDATA[New comment by enduku in "Fc, a lossless compressor for floating-point streams"]]></title><description><![CDATA[
<p>I built "fc", a C library for compressing streams of 64-bit floating-point values without quantization.<p>It is not trying to replace zstd or lz4. The idea is narrower: take blocks of doubles, try a set of float-specific predictors/transforms/coders, and emit whichever representation is smallest for that block.<p>It is aimed at time-series, scientific, simulation, and analytics data where the numbers often have structure: smooth curves, repeated values, fixed increments, periodic signals, predictable deltas, or low-entropy mantissas.<p>The API is intentionally small: "fc_enc", "fc_dec", a config struct, and a few counters to inspect which modes won. Decode is parallel and meant to be fast; encode spends more CPU searching for a better representation.<p>Current caveats: x86-64 only for now, tuned for IEEE-754 doubles, research-grade rather than production-hardened.<p>Repo: <a href="https://github.com/xtellect/fc" rel="nofollow">https://github.com/xtellect/fc</a></p>
]]></description><pubDate>Sun, 10 May 2026 10:14:20 +0000</pubDate><link>https://news.ycombinator.com/item?id=48082587</link><dc:creator>enduku</dc:creator><comments>https://news.ycombinator.com/item?id=48082587</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48082587</guid></item><item><title><![CDATA[Fc, a lossless compressor for floating-point streams]]></title><description><![CDATA[
<p>Article URL: <a href="https://github.com/xtellect/fc">https://github.com/xtellect/fc</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=48082586">https://news.ycombinator.com/item?id=48082586</a></p>
<p>Points: 108</p>
<p># Comments: 33</p>
]]></description><pubDate>Sun, 10 May 2026 10:14:20 +0000</pubDate><link>https://github.com/xtellect/fc</link><dc:creator>enduku</dc:creator><comments>https://news.ycombinator.com/item?id=48082586</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48082586</guid></item><item><title><![CDATA[Show HN: Vibe, a single-header C networking library for Linux]]></title><description><![CDATA[
<p>I wrote vibe, a small single-header C library for framed TCP and Unix-domain-socket messaging on Linux:<p><a href="https://github.com/xtellect/vibe" rel="nofollow">https://github.com/xtellect/vibe</a><p>It uses one background epoll thread. Application code polls an inbox queue for CONNECTED, DATA, and DISCONNECTED events, and sends through per-connection outboxes.<p>The pieces I wanted:<p>- TCP or Unix stream sockets
- 4-byte length-prefixed messages
- non-blocking application-side polling
- single-copy fan-out via refcounted payload chunks
- explicit per-connection backpressure instead of unbounded queues<p>For multicast, the payload is copied once into a refcounted chunk, then queued by reference to each recipient. A 1 KB message to 1,000 peers is one payload allocation/copy plus 1,000 queue nodes, not 1,000 payload copies.<p>It is Linux-only for now: epoll, eventfd, accept4, and Linux abstract Unix sockets. No UDP, TLS, HTTP, or WebSocket layer.<p>This is not meant to be a full networking framework. I’m posting mainly for your inputs/revies, especially around connection lifetimes, backpressure accounting, edge cases, and the queue design.<p>Apache 2.0.</p>
<hr>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=47970747">https://news.ycombinator.com/item?id=47970747</a></p>
<p>Points: 4</p>
<p># Comments: 0</p>
]]></description><pubDate>Fri, 01 May 2026 02:33:37 +0000</pubDate><link>https://github.com/xtellect/vibe</link><dc:creator>enduku</dc:creator><comments>https://news.ycombinator.com/item?id=47970747</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47970747</guid></item><item><title><![CDATA[New comment by enduku in "Durable queues, streams, pub/sub, and a cron scheduler – inside your SQLite file"]]></title><description><![CDATA[
<p>I think this is interesting too sqlite a as the coordination boundary: business state, queue state, stream offsets, retries, and acks all sharing one transactional substrate. The 1ms polling is getting a lot of weight in the thread though :)</p>
]]></description><pubDate>Thu, 30 Apr 2026 22:28:23 +0000</pubDate><link>https://news.ycombinator.com/item?id=47969078</link><dc:creator>enduku</dc:creator><comments>https://news.ycombinator.com/item?id=47969078</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47969078</guid></item><item><title><![CDATA[New comment by enduku in "Cactus, a work-stealing parallel recursion runtime for C"]]></title><description><![CDATA[
<p>Yes: contention and locality.<p>In Cactus the fast path is local. A worker pushes its own continuation onto its own deque, runs the child, and later tries to reclaim that continuation locally. Other workers only touch that deque when they become idle and steal.<p>With one global deque, every fork/pop/steal hits the same shared structure, making it a cache-coherency hotspot.<p>Per-worker deques make the common case mostly uncontended; stealing is only the load-balancing fallback.<p>So a global deque is simpler, but it scales worse.</p>
]]></description><pubDate>Sun, 26 Apr 2026 07:43:12 +0000</pubDate><link>https://news.ycombinator.com/item?id=47908259</link><dc:creator>enduku</dc:creator><comments>https://news.ycombinator.com/item?id=47908259</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47908259</guid></item><item><title><![CDATA[Cactus, a work-stealing parallel recursion runtime for C]]></title><description><![CDATA[
<p>Article URL: <a href="https://github.com/xtellect/cactus">https://github.com/xtellect/cactus</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=47897570">https://news.ycombinator.com/item?id=47897570</a></p>
<p>Points: 14</p>
<p># Comments: 2</p>
]]></description><pubDate>Sat, 25 Apr 2026 00:47:37 +0000</pubDate><link>https://github.com/xtellect/cactus</link><dc:creator>enduku</dc:creator><comments>https://news.ycombinator.com/item?id=47897570</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47897570</guid></item></channel></rss>