<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: menziess</title><link>https://news.ycombinator.com/user?id=menziess</link><description>Hacker News RSS</description><docs>https://hnrss.org/</docs><generator>hnrss v2.1.1</generator><lastBuildDate>Thu, 17 Sep 2026 19:37:43 +0000</lastBuildDate><atom:link href="https://hnrss.org/user?id=menziess" rel="self" type="application/rss+xml"></atom:link><item><title><![CDATA[New comment by menziess in "Show HN: Slipstream – A Python library for stateful stream processing"]]></title><description><![CDATA[
<p>Compared to Bytewax, Slipstream puts the emphasis on freedom, at the cost of having to implement certain features yourself.<p>This freedom let's you do things that other libraries may not offer within the bounds of their API. For instance, I do see that joins and windows are supported in Bytewax, but is it possible to do more complex stateful joins based timestamps (temporal joins) or other arbitrary conditions?<p>If it does, then that's great. But I've had experiences where limitations became apparent during an end-phase of a project. When the API starts to reach its limits, but you're already invested in it quite deeply.</p>
]]></description><pubDate>Fri, 04 Apr 2025 08:13:33 +0000</pubDate><link>https://news.ycombinator.com/item?id=43579525</link><dc:creator>menziess</dc:creator><comments>https://news.ycombinator.com/item?id=43579525</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=43579525</guid></item><item><title><![CDATA[New comment by menziess in "Show HN: Slipstream – A Python library for stateful stream processing"]]></title><description><![CDATA[
<p>Thanks! This example uses nearby-joins (based on event time): <a href="https://slipstream.readthedocs.io/en/1.0.1/cookbook.html#joins" rel="nofollow">https://slipstream.readthedocs.io/en/1.0.1/cookbook.html#joi...</a>.<p>I hope I get your question right, but if you're joining on a fixed key, the solution should be simpler. If the data is partitioned by id (partition 0 has id's 0 - 9, and 1 has 10 - 19), each message still passes through the handler that stores each message in the cache. So in the cache it will no longer be partitioned. Let's say each weather update has a fixed `id` we could join on, we'd simply use the following logic instead:<p>```
if w := weather_cache[id]:
    return f'The weather during {a["value"]} was {w["value"]}'<p>return a['value'], '?'
```<p>It may be the case that the weather updates come in late, in which case we may be joining with stale data. For that we can use Synchronization: <a href="https://slipstream.readthedocs.io/en/1.0.1/cookbook.html#synchronization" rel="nofollow">https://slipstream.readthedocs.io/en/1.0.1/cookbook.html#syn...</a><p>Here's a full example that sends out corrections: <a href="https://gist.github.com/Menziess/22d8a511f61c04a8142d81510a0db04b?permalink_comment_id=5468001#gistcomment-5468001" rel="nofollow">https://gist.github.com/Menziess/22d8a511f61c04a8142d81510a0...</a><p>Instead, you could also wait by pausing the activity stream by setting the Checkpoints Dependeny downtime_threshold to 0. Perhaps negative values may also work, although I haven't tried yet.</p>
]]></description><pubDate>Fri, 04 Apr 2025 07:54:19 +0000</pubDate><link>https://news.ycombinator.com/item?id=43579412</link><dc:creator>menziess</dc:creator><comments>https://news.ycombinator.com/item?id=43579412</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=43579412</guid></item><item><title><![CDATA[New comment by menziess in "Show HN: Slipstream – A Python library for stateful stream processing"]]></title><description><![CDATA[
<p>The link leads to the readthedocs.
The library can be used to parallelize data processing.
`AsyncIterables` can be used a data sources, and any `Callable` can be used as a sink.
RocksDB is used to preserve state.
Checkpoints are used to detect stream downtimes, which will pause dependent streams until the dependency streams have recovered and have caught up.</p>
]]></description><pubDate>Thu, 03 Apr 2025 20:45:04 +0000</pubDate><link>https://news.ycombinator.com/item?id=43575155</link><dc:creator>menziess</dc:creator><comments>https://news.ycombinator.com/item?id=43575155</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=43575155</guid></item><item><title><![CDATA[New comment by menziess in "Show HN: Slipstream – A Python library for stateful stream processing"]]></title><description><![CDATA[
<p>Code: <a href="https://github.com/Menziess/slipstream-async">https://github.com/Menziess/slipstream-async</a></p>
]]></description><pubDate>Thu, 03 Apr 2025 20:17:28 +0000</pubDate><link>https://news.ycombinator.com/item?id=43574830</link><dc:creator>menziess</dc:creator><comments>https://news.ycombinator.com/item?id=43574830</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=43574830</guid></item><item><title><![CDATA[Show HN: Slipstream – A Python library for stateful stream processing]]></title><description><![CDATA[
<p>Article URL: <a href="https://slipstream.readthedocs.io/en/1.0.1/">https://slipstream.readthedocs.io/en/1.0.1/</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=43574807">https://news.ycombinator.com/item?id=43574807</a></p>
<p>Points: 32</p>
<p># Comments: 6</p>
]]></description><pubDate>Thu, 03 Apr 2025 20:15:32 +0000</pubDate><link>https://slipstream.readthedocs.io/en/1.0.1/</link><dc:creator>menziess</dc:creator><comments>https://news.ycombinator.com/item?id=43574807</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=43574807</guid></item></channel></rss>