<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: iand675</title><link>https://news.ycombinator.com/user?id=iand675</link><description>Hacker News RSS</description><docs>https://hnrss.org/</docs><generator>hnrss v2.1.1</generator><lastBuildDate>Sun, 03 May 2026 09:20:46 +0000</lastBuildDate><atom:link href="https://hnrss.org/user?id=iand675" rel="self" type="application/rss+xml"></atom:link><item><title><![CDATA[New comment by iand675 in "What functional programmers get wrong about systems"]]></title><description><![CDATA[
<p>Author here: I have a bunch of drafts that I haven't gotten around to publishing for quite some time, and I'm on parental leave, which affords me a little more time than usual to get things published. I don't have a lot of additional ideas left in the tank.</p>
]]></description><pubDate>Tue, 10 Feb 2026 09:26:38 +0000</pubDate><link>https://news.ycombinator.com/item?id=46957262</link><dc:creator>iand675</dc:creator><comments>https://news.ycombinator.com/item?id=46957262</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46957262</guid></item><item><title><![CDATA[Your Best Thinking Is Wasted on the Wrong Decisions]]></title><description><![CDATA[
<p>Article URL: <a href="https://www.iankduncan.com/engineering/2026-02-07-your-best-thinking-is-wasted-on-the-wrong-decisions/">https://www.iankduncan.com/engineering/2026-02-07-your-best-thinking-is-wasted-on-the-wrong-decisions/</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=46928001">https://news.ycombinator.com/item?id=46928001</a></p>
<p>Points: 2</p>
<p># Comments: 0</p>
]]></description><pubDate>Sat, 07 Feb 2026 21:05:23 +0000</pubDate><link>https://www.iankduncan.com/engineering/2026-02-07-your-best-thinking-is-wasted-on-the-wrong-decisions/</link><dc:creator>iand675</dc:creator><comments>https://news.ycombinator.com/item?id=46928001</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46928001</guid></item><item><title><![CDATA[No, Really, Bash Is Not Enough: Why Large-Scale CI Needs an Orchestrator]]></title><description><![CDATA[
<p>Article URL: <a href="https://iankduncan.com/engineering/2026-02-06-bash-is-not-enough">https://iankduncan.com/engineering/2026-02-06-bash-is-not-enough</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=46910830">https://news.ycombinator.com/item?id=46910830</a></p>
<p>Points: 4</p>
<p># Comments: 1</p>
]]></description><pubDate>Fri, 06 Feb 2026 09:37:41 +0000</pubDate><link>https://iankduncan.com/engineering/2026-02-06-bash-is-not-enough</link><dc:creator>iand675</dc:creator><comments>https://news.ycombinator.com/item?id=46910830</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46910830</guid></item><item><title><![CDATA[New comment by iand675 in "JSON Schema Demystified: Dialects, Vocabularies and Metaschemas"]]></title><description><![CDATA[
<p>author here:<p>I'm not really sure why you'd say that OpenAPI isn't a JSON Schema document: there are published JSON Schema files on the official OpenAPI website.
See for example:<p>One using the draft-04 of JSON schema: <a href="https://spec.openapis.org/oas/3.0/schema/2024-10-18.html" rel="nofollow">https://spec.openapis.org/oas/3.0/schema/2024-10-18.html</a>
One using the 2020-12 version of JSON schema: <a href="https://spec.openapis.org/oas/3.2/schema/2025-09-17.html" rel="nofollow">https://spec.openapis.org/oas/3.2/schema/2025-09-17.html</a></p>
]]></description><pubDate>Sat, 29 Nov 2025 08:08:01 +0000</pubDate><link>https://news.ycombinator.com/item?id=46085879</link><dc:creator>iand675</dc:creator><comments>https://news.ycombinator.com/item?id=46085879</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46085879</guid></item><item><title><![CDATA[The CRDT Dictionary: A Field Guide to Conflict-Free Replicated Data Types]]></title><description><![CDATA[
<p>Article URL: <a href="https://www.iankduncan.com/engineering/2025-11-27-crdt-dictionary/">https://www.iankduncan.com/engineering/2025-11-27-crdt-dictionary/</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=46077439">https://news.ycombinator.com/item?id=46077439</a></p>
<p>Points: 2</p>
<p># Comments: 0</p>
]]></description><pubDate>Fri, 28 Nov 2025 10:44:39 +0000</pubDate><link>https://www.iankduncan.com/engineering/2025-11-27-crdt-dictionary/</link><dc:creator>iand675</dc:creator><comments>https://news.ycombinator.com/item?id=46077439</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46077439</guid></item><item><title><![CDATA[New comment by iand675 in "Beads – A memory upgrade for your coding agent"]]></title><description><![CDATA[
<p>I've been trying `beads` out for some projects, in tandem with <a href="https://github.com/github/spec-kit" rel="nofollow">https://github.com/github/spec-kit</a> with pretty good results.<p>I set up spec-kit first, then updated its templates to tell it to use beads to track features and all that instead of writing markdown files. If nothing else, this is a quality-of-life improvement for me, because recent LLMs seem to have an intense penchant to try to write one or more markdown files per large task. Ending up with loads of markdown poop feels like the new `.DS_Store`, but harder to `.gitignore` because they'll name files whatever floats their boat.</p>
]]></description><pubDate>Fri, 28 Nov 2025 10:43:49 +0000</pubDate><link>https://news.ycombinator.com/item?id=46077433</link><dc:creator>iand675</dc:creator><comments>https://news.ycombinator.com/item?id=46077433</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46077433</guid></item><item><title><![CDATA[Event Design for Streaming Systems: A Primer]]></title><description><![CDATA[
<p>Article URL: <a href="https://www.iankduncan.com/engineering/2025-11-14-event-design-for-streaming-systems">https://www.iankduncan.com/engineering/2025-11-14-event-design-for-streaming-systems</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=45937016">https://news.ycombinator.com/item?id=45937016</a></p>
<p>Points: 1</p>
<p># Comments: 0</p>
]]></description><pubDate>Sat, 15 Nov 2025 12:36:01 +0000</pubDate><link>https://www.iankduncan.com/engineering/2025-11-14-event-design-for-streaming-systems</link><dc:creator>iand675</dc:creator><comments>https://news.ycombinator.com/item?id=45937016</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45937016</guid></item><item><title><![CDATA[New comment by iand675 in "US to rewrite its past national climate reports"]]></title><description><![CDATA[
<p>Has this data has been archived elsewhere?</p>
]]></description><pubDate>Fri, 08 Aug 2025 11:35:20 +0000</pubDate><link>https://news.ycombinator.com/item?id=44835841</link><dc:creator>iand675</dc:creator><comments>https://news.ycombinator.com/item?id=44835841</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=44835841</guid></item><item><title><![CDATA[New comment by iand675 in "Hulk Hogan Has Died"]]></title><description><![CDATA[
<p>There are plenty of people left to like who aren't racist and misogynist. It's okay to update your worldview of your heroes when they behave badly.</p>
]]></description><pubDate>Fri, 25 Jul 2025 14:46:21 +0000</pubDate><link>https://news.ycombinator.com/item?id=44683747</link><dc:creator>iand675</dc:creator><comments>https://news.ycombinator.com/item?id=44683747</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=44683747</guid></item><item><title><![CDATA[New comment by iand675 in "How Tesla is proving doubters right on why its robotaxi service cannot scale"]]></title><description><![CDATA[
<p>To be fair, I absolutely would take ocean liners for this purpose if such a thing existed.<p>The closest that you can get on this front is basically seasonal route switches for cruise liners. The thing is, cruise lines price gouge on WiFi, so I'm not really able to work while taking the slow route, and I'm also having to pay food, lodging, etc.<p>The latency itself / limited freedom for a week or two, I don't mind. But it's the other expenditures and tradeoffs that are rather hard to stomach.</p>
]]></description><pubDate>Sun, 20 Jul 2025 20:48:24 +0000</pubDate><link>https://news.ycombinator.com/item?id=44629178</link><dc:creator>iand675</dc:creator><comments>https://news.ycombinator.com/item?id=44629178</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=44629178</guid></item><item><title><![CDATA[New comment by iand675 in "Show HN: Voiden – a free, offline, Git-native API Client"]]></title><description><![CDATA[
<p>I mean this nicely, I don't really feel like anything on the landing page besides one paragraph is actually helpful to readers understanding what problem you're trying to solve.<p>I think it'd be useful to focus on this more:<p>> Voiden turns your API definitions and docs into dynamic, purpose-built interfaces — no fixed UI, no rigid templates. Everything is composed in one place and rendered down to Markdown, tailored to the API it serves.</p>
]]></description><pubDate>Wed, 28 May 2025 14:01:32 +0000</pubDate><link>https://news.ycombinator.com/item?id=44116136</link><dc:creator>iand675</dc:creator><comments>https://news.ycombinator.com/item?id=44116136</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=44116136</guid></item><item><title><![CDATA[New comment by iand675 in "Haskell vs. Ada vs. C++ vs. an Experiment in Prototyping Productivity (1994) [pdf]"]]></title><description><![CDATA[
<p>We have a pretty limited set of abstractions that are used throughout. We mostly serve web requests, talk to a PostgreSQL database, communicate with 3rd-party systems with HTTP, and we're starting to use Temporal.io for queued-job type stuff over a homegrown queueing system that we used in the past.<p>One of the things you'll often hear as a critique levelled against Haskell developers is that we tend to overcomplicate things, but as an organization we skew very heavily towards favoring simple Haskell, at least at the interface level that other developers need to use to interact with a system.<p>So yeah, basically: Web Request -> Handler -> Do some DB queries -> Fire off some async work.<p>We also have risk analysis, cron jobs, batch processing systems that use the same DB and so forth.<p>We're starting to feel a little more pain around maybe not having enough abstraction though. Right now pretty much any developer can write SQL queries against any tables in the system, so it makes it harder for other teams to evolve the schema sometimes.<p>For SQL, we use a library called esqueleto, which lets us write SQL in a typesafe way, and we can export fragments of SQL for other developers to join across tables in a way that's reusable:<p>select $
from $ \(p1 `InnerJoin` f `InnerJoin` p2) -> do
on (p2 ^. PersonId ==. f ^. FollowFollowed)
on (p1 ^. PersonId ==. f ^. FollowFollower)
return (p1, f, p2)<p>which generates this SQL:<p>SELECT P1.<i>, Follow.</i>, P2.*
FROM Person AS P1
INNER JOIN Follow ON P1.id = Follow.follower
INNER JOIN Person AS P2 ON P2.id = Follow.followed<p>^ It's totally possible to make subqueries, join predicates, etc. reusable with esqueleto so that other teams get at data in a blessed way, but the struggle is mostly just that the other developers don't always know where to look for the utility so they end up reinventing it.<p>In the end, I guess I'd assert that discoverability is the trickier component for developers currently.</p>
]]></description><pubDate>Wed, 18 Dec 2024 15:42:54 +0000</pubDate><link>https://news.ycombinator.com/item?id=42451358</link><dc:creator>iand675</dc:creator><comments>https://news.ycombinator.com/item?id=42451358</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=42451358</guid></item><item><title><![CDATA[New comment by iand675 in "Haskell vs. Ada vs. C++ vs. an Experiment in Prototyping Productivity (1994) [pdf]"]]></title><description><![CDATA[
<p>I work on one of the largest Haskell codebases in the world that I know of (<a href="https://mercury.com/" rel="nofollow">https://mercury.com/</a>). We're in the ballpark of 1.5 million lines of proprietary code built and deployed as effectively a single executable, and of course if you included open source libraries and stuff that we have built or depend on, it would be larger.<p>I can't really speak to your problem domain, but I feel like we do a lot with what we have. Most of our pain comes from compile times / linking taking longer than we'd prefer, but we invest a lot of energy and money improving that in a way that benefits the whole Haskell ecosystem.<p>Not sure what abstractions you are wondering about, though.</p>
]]></description><pubDate>Wed, 18 Dec 2024 14:05:27 +0000</pubDate><link>https://news.ycombinator.com/item?id=42450496</link><dc:creator>iand675</dc:creator><comments>https://news.ycombinator.com/item?id=42450496</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=42450496</guid></item><item><title><![CDATA[New comment by iand675 in "Losing my son"]]></title><description><![CDATA[
<p>I lost my 3 1/2 year old daughter to sudden illness about 10 months ago. Be gentle to yourself and your family. There will be times where you aren’t actively feeling the grief, but they pull you into theirs or vice versa. There will be times where your love and grief for your lost child will make it easy to forget to cherish the loved ones in front of you.<p>As you figure out how to live life from here– may you find a path forward that is healthy, loving, and beneficial for you and those you care about.</p>
]]></description><pubDate>Thu, 18 Jan 2024 07:22:52 +0000</pubDate><link>https://news.ycombinator.com/item?id=39038962</link><dc:creator>iand675</dc:creator><comments>https://news.ycombinator.com/item?id=39038962</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=39038962</guid></item><item><title><![CDATA[New comment by iand675 in "BMW: Gasoline Car Ban Poses “Imminent Risk” to European Automakers"]]></title><description><![CDATA[
<p>The writing has been on the wall for 5+ years that government bodies would eventually legislate this, even for casual observers. If these auto manufacturers as industry insiders couldn’t plan ahead to handle this outcome, it sounds like they might deserve to be unseated.</p>
]]></description><pubDate>Tue, 05 Sep 2023 19:33:32 +0000</pubDate><link>https://news.ycombinator.com/item?id=37396623</link><dc:creator>iand675</dc:creator><comments>https://news.ycombinator.com/item?id=37396623</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=37396623</guid></item><item><title><![CDATA[New comment by iand675 in "Scientists Have Developed the Whitest White Paint Ever Made –  Can Cool Surfaces"]]></title><description><![CDATA[
<p>According to the article, half of the Sahara Desert based on 2019 calculations. Probably more now.</p>
]]></description><pubDate>Sat, 26 Aug 2023 14:18:46 +0000</pubDate><link>https://news.ycombinator.com/item?id=37273164</link><dc:creator>iand675</dc:creator><comments>https://news.ycombinator.com/item?id=37273164</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=37273164</guid></item><item><title><![CDATA[New comment by iand675 in "The Meaning of Monad in MonadTrans"]]></title><description><![CDATA[
<p>Mercury (<a href="https://mercury.com/" rel="nofollow noreferrer">https://mercury.com/</a>) uses Haskell extensively for pretty much all of its backend systems. It’s a great general purpose language.</p>
]]></description><pubDate>Sun, 13 Aug 2023 12:26:12 +0000</pubDate><link>https://news.ycombinator.com/item?id=37109307</link><dc:creator>iand675</dc:creator><comments>https://news.ycombinator.com/item?id=37109307</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=37109307</guid></item><item><title><![CDATA[New comment by iand675 in "Life Is So Terrible and Beautiful at the Same Time"]]></title><description><![CDATA[
<p>I lost my 3 1/2 year old daughter to sudden illness several months ago. So many dreams left our family that day. Now it is up to those of us left behind to pick up the pieces.</p>
]]></description><pubDate>Mon, 12 Jun 2023 14:00:18 +0000</pubDate><link>https://news.ycombinator.com/item?id=36293536</link><dc:creator>iand675</dc:creator><comments>https://news.ycombinator.com/item?id=36293536</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=36293536</guid></item><item><title><![CDATA[New comment by iand675 in "Pluggable Storage Committed in Postgres"]]></title><description><![CDATA[
<p>On the one hand, you know that it's not appropriate to post things like this... on the other hand, you post it anyways?</p>
]]></description><pubDate>Fri, 05 Apr 2019 02:31:07 +0000</pubDate><link>https://news.ycombinator.com/item?id=19579132</link><dc:creator>iand675</dc:creator><comments>https://news.ycombinator.com/item?id=19579132</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=19579132</guid></item><item><title><![CDATA[New comment by iand675 in "Slate JS – A customizable framework for building rich text editors"]]></title><description><![CDATA[
<p>Can't speak for OP, but draftjs didn't work well on mobile at all for a major project I tried to use it in. Had to migrate off of it.</p>
]]></description><pubDate>Thu, 15 Nov 2018 12:30:14 +0000</pubDate><link>https://news.ycombinator.com/item?id=18458698</link><dc:creator>iand675</dc:creator><comments>https://news.ycombinator.com/item?id=18458698</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=18458698</guid></item></channel></rss>