<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: dwwoelfel</title><link>https://news.ycombinator.com/user?id=dwwoelfel</link><description>Hacker News RSS</description><docs>https://hnrss.org/</docs><generator>hnrss v2.1.1</generator><lastBuildDate>Thu, 30 Apr 2026 12:55:31 +0000</lastBuildDate><atom:link href="https://hnrss.org/user?id=dwwoelfel" rel="self" type="application/rss+xml"></atom:link><item><title><![CDATA[New comment by dwwoelfel in "Pgbackrest is no longer being maintained"]]></title><description><![CDATA[
<p>Are you using `walg wal-receive` for streaming? As far as I can tell, that command will wait for the full wal segment before it pushes anything to storage. I don't see any way to stream wal records continuously in wal-g.</p>
]]></description><pubDate>Mon, 27 Apr 2026 17:58:56 +0000</pubDate><link>https://news.ycombinator.com/item?id=47924982</link><dc:creator>dwwoelfel</dc:creator><comments>https://news.ycombinator.com/item?id=47924982</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47924982</guid></item><item><title><![CDATA[Show HN: Draw a sketch and watch it back again with persistent WebStreams]]></title><description><![CDATA[
<p>Made this game as a testing ground for persistent WebStreams that we recently released at InstantDB.<p>We created the streams to make it easier to build apps that stream data from an llm to the client, but they’re fundamentally a single-writer, multiple-reader data structure.<p>The pointer events are stored as json lines in the stream, and then the replay reconstructs shapes from the events as they get played back.<p>The code lives at <a href="https://github.com/instantdb/inkdot" rel="nofollow">https://github.com/instantdb/inkdot</a></p>
<hr>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=47414857">https://news.ycombinator.com/item?id=47414857</a></p>
<p>Points: 1</p>
<p># Comments: 0</p>
]]></description><pubDate>Tue, 17 Mar 2026 16:24:57 +0000</pubDate><link>https://inkdot.instantdb.dev/</link><dc:creator>dwwoelfel</dc:creator><comments>https://news.ycombinator.com/item?id=47414857</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47414857</guid></item><item><title><![CDATA[New comment by dwwoelfel in "John Carmack on mutable variables"]]></title><description><![CDATA[
<p>Carmack is talking about variable reassignment here, which Clojure will happily let you mutate.<p>For example:<p><pre><code>  (let [result {:a 1}
        result (assoc result :b 2)]
    ...)

</code></pre>
He mentions that C and C++ allow const variables, but Clojure doesn't support that.<p>clj-kondo has a :shadowed-var rule, but it will only find cases where you shadow a top-level var (not the case in my example).</p>
]]></description><pubDate>Fri, 31 Oct 2025 15:53:00 +0000</pubDate><link>https://news.ycombinator.com/item?id=45773479</link><dc:creator>dwwoelfel</dc:creator><comments>https://news.ycombinator.com/item?id=45773479</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45773479</guid></item><item><title><![CDATA[New comment by dwwoelfel in "Wikipedia as a Graph"]]></title><description><![CDATA[
<p>You have to use the slug from the wiki page. `Jell-O` to `Philosophy` works.</p>
]]></description><pubDate>Fri, 29 Aug 2025 19:33:08 +0000</pubDate><link>https://news.ycombinator.com/item?id=45068388</link><dc:creator>dwwoelfel</dc:creator><comments>https://news.ycombinator.com/item?id=45068388</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45068388</guid></item><item><title><![CDATA[New comment by dwwoelfel in "I ditched the algorithm for RSS"]]></title><description><![CDATA[
<p>If you want an RSS feed of your YouTube video subscriptions, I made an app for that:<p><a href="https://yt-better-subs.web.app/" rel="nofollow">https://yt-better-subs.web.app/</a><p>I went through quite the hassle to get the app's oauth scopes approved with Google so that it can keep your subscriptions up-to-date as you add or remove YouTube channel subscriptions.</p>
]]></description><pubDate>Thu, 16 Jan 2025 18:41:04 +0000</pubDate><link>https://news.ycombinator.com/item?id=42729145</link><dc:creator>dwwoelfel</dc:creator><comments>https://news.ycombinator.com/item?id=42729145</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=42729145</guid></item><item><title><![CDATA[New comment by dwwoelfel in "Why does everyone run ancient Postgres versions?"]]></title><description><![CDATA[
<p>Here's how we did it at OneGraph (RIP), where we not only upgraded versions without downtime, but we also moved hosting providers from GCP to Aurora without downtime.<p>1. Set up logical replication to a new database server. We used <a href="https://github.com/2ndQuadrant/pglogical">https://github.com/2ndQuadrant/pglogical</a>, but maybe you don't need that any more with newer versions of postgres?<p>2. Flip a feature flag that pauses all database queries and wait for the queue of queries to complete.<p>3. Wait for the query queue to drain and for replication to catch up.<p>4. Flip a feature flag that switches the connection from the old db to the new db.<p>5. Flip the flag to resume queries.<p>It helped that we were written in OCaml. We had to write our own connection pooling, which meant that we had full control over the query queue. Not sure how you would do it with e.g. Java's Hikari, where the query queue and the connection settings are complected.<p>We also had no long-running queries, with a default timeout of 30 seconds.<p>It helped to over-provision servers during the migration, because any requests that came in while the migration was ongoing would have to wait for the migration to complete.</p>
]]></description><pubDate>Fri, 18 Oct 2024 14:42:12 +0000</pubDate><link>https://news.ycombinator.com/item?id=41879888</link><dc:creator>dwwoelfel</dc:creator><comments>https://news.ycombinator.com/item?id=41879888</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=41879888</guid></item><item><title><![CDATA[New comment by dwwoelfel in "Show HN: YourNextStore – an open-source Shopify with Stripe as the back end"]]></title><description><![CDATA[
<p>How do you handle shipping price calculations? Is that also a feature in Stripe's Product Catalogue?</p>
]]></description><pubDate>Tue, 10 Sep 2024 17:03:43 +0000</pubDate><link>https://news.ycombinator.com/item?id=41503007</link><dc:creator>dwwoelfel</dc:creator><comments>https://news.ycombinator.com/item?id=41503007</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=41503007</guid></item><item><title><![CDATA[New comment by dwwoelfel in "Bard Extensions"]]></title><description><![CDATA[
<p>I'm impressed. I asked it "How much is a flight from San Francisco to the rapid & blitz tournament over Christmas?" and it figured out which tournament I was talking about and showed me ticket prices.<p><a href="https://g.co/bard/share/7966410c42af" rel="nofollow noreferrer">https://g.co/bard/share/7966410c42af</a><p>ChatGPT also figured it out, but Bard is much better at displaying information: <a href="https://chat.openai.com/share/ba5d5acc-7b40-46e1-ada5-74b4a6ab2241" rel="nofollow noreferrer">https://chat.openai.com/share/ba5d5acc-7b40-46e1-ada5-74b4a6...</a></p>
]]></description><pubDate>Wed, 22 Nov 2023 04:43:23 +0000</pubDate><link>https://news.ycombinator.com/item?id=38374811</link><dc:creator>dwwoelfel</dc:creator><comments>https://news.ycombinator.com/item?id=38374811</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=38374811</guid></item><item><title><![CDATA[Show HN: Latch, a feature flagging tool built on Google Storage]]></title><description><![CDATA[
<p>Latch is a feature flagging tool built on top of Google Storage.<p>It's available on GitHub at <a href="https://github.com/dwwoelfel/latch">https://github.com/dwwoelfel/latch</a><p>It has a self-hosted UI that reads and writes directly to Google storage and a nodejs client that subscribes to flag changes via Google Pub/Sub.<p>I made a short video walkthrough to help give a feel for the UI:<p><a href="https://www.youtube.com/watch?v=GKDekwvPTD4">https://www.youtube.com/watch?v=GKDekwvPTD4</a><p>In the past I've stored feature flags directly in the database, but I wanted something that was more consistent between environments. I also want to be able to use feature flags to trigger db failover during upgrades, so storing them in the db was out.<p>I've also used two of the main SaaS services at a previous company, which made me wary of lock-in and performance issues.<p>Google Storage turned out to be well-suited for feature flags. It has a pub/sub integration where changes to a bucket trigger notifications in pub/sub. It has object versioning, which I use to display a flag history. It has an increasing "generation" id for each file, which I use to prevent race conditions and ensure that I'm not making changes based on stale information.<p>I'm pretty happy with the UI. I built a Relay-compatible GraphQL interface over Google Storage and the UI uses that to read and write from storage using OAuth credentials. If I want to give someone access to the feature flags, I just have to manage their permissions to the bucket.</p>
<hr>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=36359896">https://news.ycombinator.com/item?id=36359896</a></p>
<p>Points: 4</p>
<p># Comments: 1</p>
]]></description><pubDate>Fri, 16 Jun 2023 16:54:45 +0000</pubDate><link>https://github.com/dwwoelfel/latch</link><dc:creator>dwwoelfel</dc:creator><comments>https://news.ycombinator.com/item?id=36359896</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=36359896</guid></item><item><title><![CDATA[New comment by dwwoelfel in "Show HN: New GraphQL API for WordPress"]]></title><description><![CDATA[
<p>A few ideas to improve the schema based on looking at the examples:<p>1. Make `globalId` part of a "Node" interface that all of the types implement. This will work better with tooling like Relay (used for refetching and caching). It will also let you add a `node` field that can be used to fetch any node in the graph.<p>2. Make the sort input an enum so that you have `sort: TITLE_DESC` instead of `sort: {by: TITLE, order: DESC}`.<p>3. Implement the connection spec instead of returning a list of items: <a href="https://relay.dev/graphql/connections.htm" rel="nofollow">https://relay.dev/graphql/connections.htm</a>. This will let you add pagination data to the field and other useful info like totalCount.<p>4. Spin up a postgraphile instance with the `@graphile-contrib/pg-simplify-inflector` and `postgraphile-plugin-connection-filter` plugins and copy everything they do.</p>
]]></description><pubDate>Thu, 12 Jan 2023 19:02:52 +0000</pubDate><link>https://news.ycombinator.com/item?id=34358721</link><dc:creator>dwwoelfel</dc:creator><comments>https://news.ycombinator.com/item?id=34358721</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=34358721</guid></item><item><title><![CDATA[New comment by dwwoelfel in "Curl doesn't add libproxy due to its quality issues"]]></title><description><![CDATA[
<p>You can build curl without support for ftp.</p>
]]></description><pubDate>Sun, 23 Oct 2022 17:41:57 +0000</pubDate><link>https://news.ycombinator.com/item?id=33308702</link><dc:creator>dwwoelfel</dc:creator><comments>https://news.ycombinator.com/item?id=33308702</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=33308702</guid></item><item><title><![CDATA[New comment by dwwoelfel in "[dead]"]]></title><description><![CDATA[
<p>Might be better to redirect to the news.ycombinator.com instead of google.com. I'd be less likely to notice that, especially if I opened it in a background tab.<p>But maybe that's the kind of criticism he was trying to avoid in the first place!</p>
]]></description><pubDate>Thu, 15 Sep 2022 23:32:25 +0000</pubDate><link>https://news.ycombinator.com/item?id=32859879</link><dc:creator>dwwoelfel</dc:creator><comments>https://news.ycombinator.com/item?id=32859879</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=32859879</guid></item><item><title><![CDATA[New comment by dwwoelfel in "Coinbase is rescinding already-accepted job offers"]]></title><description><![CDATA[
<p>They are getting a severance package.</p>
]]></description><pubDate>Sat, 04 Jun 2022 20:37:30 +0000</pubDate><link>https://news.ycombinator.com/item?id=31624809</link><dc:creator>dwwoelfel</dc:creator><comments>https://news.ycombinator.com/item?id=31624809</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=31624809</guid></item><item><title><![CDATA[New comment by dwwoelfel in "Coinbase is rescinding already-accepted job offers"]]></title><description><![CDATA[
<p>According to the article, they likely are getting severance.<p><i>Those affected will gain access to the company’s “generous severance philosophy” and “a talent hub to allow them to opt-in to receive additional support services.” (The details surrounding the severance package are unclear, but some affected workers on Blind alleged they would receive two months worth of base pay; a representative from Coinbase did not provide further comment.)</i></p>
]]></description><pubDate>Sat, 04 Jun 2022 16:50:11 +0000</pubDate><link>https://news.ycombinator.com/item?id=31622574</link><dc:creator>dwwoelfel</dc:creator><comments>https://news.ycombinator.com/item?id=31622574</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=31622574</guid></item><item><title><![CDATA[Netlify Graph: A faster way for teams to develop web apps with APIs]]></title><description><![CDATA[
<p>Article URL: <a href="https://www.netlify.com/blog/announcing-netlify-graph-a-faster-way-for-teams-to-develop-web-apps-with-apis">https://www.netlify.com/blog/announcing-netlify-graph-a-faster-way-for-teams-to-develop-web-apps-with-apis</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=30348274">https://news.ycombinator.com/item?id=30348274</a></p>
<p>Points: 102</p>
<p># Comments: 28</p>
]]></description><pubDate>Tue, 15 Feb 2022 16:05:09 +0000</pubDate><link>https://www.netlify.com/blog/announcing-netlify-graph-a-faster-way-for-teams-to-develop-web-apps-with-apis</link><dc:creator>dwwoelfel</dc:creator><comments>https://news.ycombinator.com/item?id=30348274</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=30348274</guid></item><item><title><![CDATA[New comment by dwwoelfel in "Burning plasma achieved in inertial fusion"]]></title><description><![CDATA[
<p>At the end of the video you linked, she accuses the author of The Star Builders of "only briefly mention[ing] the total energy gain and never giv[ing] a number".<p>I had just started the book when I watched her video, and I counted four separate times where he did mention total energy gain. In one chapter (pg. 142 in my kindle edition), he quotes from a source who lays out the distinction she claims people in fusion research want you to be confused about:<p><i>Like First Light Fusion, Tokamak Energy is much more interested in power production than energy breakeven. "Achieving a of one is a scientific goal," Jonathan Carling continues, "but it's nowhere near enough to produce commercial energy, which requires a Q [in the region] of tens." As mentioned previously, Q is the ratio of fusion power out to heating power in. His strong view is that unless other star builders have a credible plan to get to factors of twenty or thirty more power out than they put in, then they're in the science game and not the fusion energy game.</i><p>This video by the Improbable Matter channel has a good response to Dr. Hossenfelder's general remarks: <a href="https://www.youtube.com/watch?v=KtqC8W0_Ups" rel="nofollow">https://www.youtube.com/watch?v=KtqC8W0_Ups</a></p>
]]></description><pubDate>Wed, 26 Jan 2022 18:10:08 +0000</pubDate><link>https://news.ycombinator.com/item?id=30089277</link><dc:creator>dwwoelfel</dc:creator><comments>https://news.ycombinator.com/item?id=30089277</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=30089277</guid></item><item><title><![CDATA[New comment by dwwoelfel in "Debunking Cloudflare’s recent performance tests"]]></title><description><![CDATA[
<p>It's not the benchmark that's unethical. The unethical part is leaving up the original claim without adding a correction or a note that addresses the problems Fastly found with the benchmark.</p>
]]></description><pubDate>Wed, 08 Dec 2021 00:27:59 +0000</pubDate><link>https://news.ycombinator.com/item?id=29479998</link><dc:creator>dwwoelfel</dc:creator><comments>https://news.ycombinator.com/item?id=29479998</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=29479998</guid></item><item><title><![CDATA[New comment by dwwoelfel in "Debunking Cloudflare’s recent performance tests"]]></title><description><![CDATA[
<p>Cloudflare's blog post still says, in bold, "Cloudflare Workers is 196% faster than Fastly’s Compute@Edge based on the time to first byte from the tests we ran on 50 nodes using Catchpoint’s data from across the world".<p>It is unethical to leave that up after Fastly pointed out core issues with the benchmarking, like using a free tier that was rate-limited.</p>
]]></description><pubDate>Tue, 07 Dec 2021 20:57:03 +0000</pubDate><link>https://news.ycombinator.com/item?id=29478121</link><dc:creator>dwwoelfel</dc:creator><comments>https://news.ycombinator.com/item?id=29478121</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=29478121</guid></item><item><title><![CDATA[New comment by dwwoelfel in "Debunking Cloudflare’s recent performance tests"]]></title><description><![CDATA[
<p>My experience working at tech companies is that the tech lead, or anybody at the company, can post in an internal message board or slack to ask "what's up with this weird clause in our ToS" and expect an explanation.<p>It's nice that eastdakota responded here, but he had two weeks since the original tweet thread from Fastly's VP of Eng calling out the problems with their benchmarking. They didn't respond or retract the blog post in those two weeks.<p>As a cloudflare shareholder (and a fastly shareholder), I want Cloudflare to act ethically and either retract the blog post or issue a correction.</p>
]]></description><pubDate>Tue, 07 Dec 2021 17:32:46 +0000</pubDate><link>https://news.ycombinator.com/item?id=29475524</link><dc:creator>dwwoelfel</dc:creator><comments>https://news.ycombinator.com/item?id=29475524</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=29475524</guid></item><item><title><![CDATA[New comment by dwwoelfel in "Debunking Cloudflare’s recent performance tests"]]></title><description><![CDATA[
<p>But I'd bet kentonv was following this one, since he said "until Fatly complained about it" and not "until I read the blog post".</p>
]]></description><pubDate>Tue, 07 Dec 2021 17:19:00 +0000</pubDate><link>https://news.ycombinator.com/item?id=29475320</link><dc:creator>dwwoelfel</dc:creator><comments>https://news.ycombinator.com/item?id=29475320</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=29475320</guid></item></channel></rss>