<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: CraigJPerry</title><link>https://news.ycombinator.com/user?id=CraigJPerry</link><description>Hacker News RSS</description><docs>https://hnrss.org/</docs><generator>hnrss v2.1.1</generator><lastBuildDate>Sun, 06 Sep 2026 15:59:33 +0000</lastBuildDate><atom:link href="https://hnrss.org/user?id=CraigJPerry" rel="self" type="application/rss+xml"></atom:link><item><title><![CDATA[New comment by CraigJPerry in "CEO fired developers to make room for AI. Developers create open source AI CEO"]]></title><description><![CDATA[
<p>Yank on that thread harder, developers and engineers are not safe just because they rely on different patterns.<p>But once you've toppled the house of knowledge work, you'll find you can rebuild it easily because the foundation still exists, and it's the thing missing in this analysis; judgement.</p>
]]></description><pubDate>Thu, 27 Aug 2026 07:35:52 +0000</pubDate><link>https://news.ycombinator.com/item?id=49461212</link><dc:creator>CraigJPerry</dc:creator><comments>https://news.ycombinator.com/item?id=49461212</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49461212</guid></item><item><title><![CDATA[New comment by CraigJPerry in "Pnpm 12.0"]]></title><description><![CDATA[
<p>Describing NPM as boring is a stretch. Given its security model, i think spicy is a far more apt label.<p>I have switched to pnpm already.</p>
]]></description><pubDate>Thu, 27 Aug 2026 07:26:16 +0000</pubDate><link>https://news.ycombinator.com/item?id=49461151</link><dc:creator>CraigJPerry</dc:creator><comments>https://news.ycombinator.com/item?id=49461151</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49461151</guid></item><item><title><![CDATA[New comment by CraigJPerry in "Deutsche Bank becomes first foreign yuan clearing bank in Europe"]]></title><description><![CDATA[
<p>>> They still import a lot<p>I don't think it's common knowledge how much they dropped imports since the Iran / straight of hormuz crisis.<p>Back at the start of that conflict there were a lot of breathless takes about what catastrophe was in store in a few weeks time, and what materialised was bad but not in anything like the same league as what was predicted.<p>The thing that wasn't accounted for in the analysis at the time was just how rapidly and by how much China could suppress its appetite for oil imports.</p>
]]></description><pubDate>Thu, 13 Aug 2026 19:41:36 +0000</pubDate><link>https://news.ycombinator.com/item?id=49290932</link><dc:creator>CraigJPerry</dc:creator><comments>https://news.ycombinator.com/item?id=49290932</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49290932</guid></item><item><title><![CDATA[New comment by CraigJPerry in "License plate reader searches should require a warrant"]]></title><description><![CDATA[
<p>System 1: a system for recording an image of a location at a given place over time.<p>System 1 can refer to the dashcam or the mk1 eyeball + notepad in your example.<p>System 2: a system for tracking the presence of a person across both time and location<p>An example of system 2 would be the facial id system being trialled on the london underground currently.<p>These are a difference in kind not in degree. It doesn't matter how many system 1's you deploy, you cannot unlock the capability of querying where any given face was observed across time and location.</p>
]]></description><pubDate>Wed, 12 Aug 2026 17:18:34 +0000</pubDate><link>https://news.ycombinator.com/item?id=49275739</link><dc:creator>CraigJPerry</dc:creator><comments>https://news.ycombinator.com/item?id=49275739</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49275739</guid></item><item><title><![CDATA[New comment by CraigJPerry in "US Treasury undertakes historic intervention in yen market"]]></title><description><![CDATA[
<p>>> Currency interventions never work<p>Where did you learn that? It doesn't reflect the structural volumes present. Central banks make interventions all the time in line with little stabilisation programs. Those are almost always deemed success.<p>Maybe you deduced it by yourself? If so, fx is weird despite traditionally being seen as the simplest area in finance. E.g. It's counter-intuitive but we tend to think trade make up most FX volume globally. It's in the area of less than 3%. The majority by far is speculative and hedging.<p>The other trap is fx volume, people assume the know what volume is but then they learn expressions of fx volume is almost always actually tick volume.</p>
]]></description><pubDate>Sun, 02 Aug 2026 16:52:54 +0000</pubDate><link>https://news.ycombinator.com/item?id=49146148</link><dc:creator>CraigJPerry</dc:creator><comments>https://news.ycombinator.com/item?id=49146148</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49146148</guid></item><item><title><![CDATA[New comment by CraigJPerry in "Some more things about Django I've been enjoying"]]></title><description><![CDATA[
<p>I think the mental model is the right thing to focus on. I'm not denying there are cases where async at the edge of an app can make sense but there's no free lunch and i that doesn't appear to be well understood.<p>Maybe i will write a blog post, if nothing else than to get my own thoughts in order.</p>
]]></description><pubDate>Mon, 27 Jul 2026 10:47:24 +0000</pubDate><link>https://news.ycombinator.com/item?id=49067647</link><dc:creator>CraigJPerry</dc:creator><comments>https://news.ycombinator.com/item?id=49067647</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49067647</guid></item><item><title><![CDATA[New comment by CraigJPerry in "Some more things about Django I've been enjoying"]]></title><description><![CDATA[
<p>I'm not sure i see it as a hack, but i do feel unduly burdened as a developer by async in python. I feel like there's a lot that i have to think about and i'd appreciate more help from the language.<p>I don't want to be overly critical, there's languages that people complain about and then there are languages that no one uses... If i compare it to js/ts, some stuff is genuinely better in Python - e.g. if you missed an await. While both ecosystems have lint tools available for this, but the  behaviour is just friendlier in python.<p>Structured concurrency is better in python, but even if TaskGroup is nicer to use than AbortController, it still has its own foibles which means i'll usually advocate for AnyIO.<p>But the js/ts ecosystem just generally benefits from being async from the get-go where python you're just a time.sleep() away from a bug that will slip through dev envs and ci pipelines undetected and only rear its head under load in prod.<p>If i have a tip to share its the debug flag for asyncio run:<p><pre><code>    asyncio.run(f(), debug=True)  # find some more issues before prod</code></pre></p>
]]></description><pubDate>Sun, 26 Jul 2026 21:19:35 +0000</pubDate><link>https://news.ycombinator.com/item?id=49062512</link><dc:creator>CraigJPerry</dc:creator><comments>https://news.ycombinator.com/item?id=49062512</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49062512</guid></item><item><title><![CDATA[New comment by CraigJPerry in "Some more things about Django I've been enjoying"]]></title><description><![CDATA[
<p>There are so many footguns[1] in async python but it really has stolen the zeitgeist of modern python web. Synchronous django has a lot to commend it. If you deploy it reasonably well (workers, behind a caching reverse proxy etc) it's easy to operate in production even under duress.<p>It's not going to be the right stack for long lived websocket connections or whatever but for a CRUD-ish or enterprise app, often very productive.<p>[1] buffer bloat is too easy to sleep walk into<p><pre><code>    queue = asyncio.Queue()  # oops
</code></pre>
unbounded concurrency<p><pre><code>    await asyncio.gather(*(fetch(item) for item in items))  # look mum! no outbound sockets left or maybe even no file descriptors
</code></pre>
accidental blocking<p><pre><code>    data = requests.get(url).json()  # oops! we're blocking the event loop
</code></pre>
and sure you can setup a separate task to measure the event loop latency and alert on that but this is the kinda thing you'll never find in a tutorial, you just need to experience this stuff and figure out a solution you like<p>I can go on and on about async python (cancellation bugs, leaking a task - that has a cataclysmic failure mode where if you forget to hold a reference to your asyncio.create_task() then it's all weak refs in that machinery so your task can get garbage collected before it ran or completed in production! super tricky forensics. Then there's all the obvious stuff like race conditions, new ways of creating deadlocks, blah blah i really can go on for days.</p>
]]></description><pubDate>Sun, 26 Jul 2026 09:52:11 +0000</pubDate><link>https://news.ycombinator.com/item?id=49056394</link><dc:creator>CraigJPerry</dc:creator><comments>https://news.ycombinator.com/item?id=49056394</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49056394</guid></item><item><title><![CDATA[New comment by CraigJPerry in "Everyone should know SIMD"]]></title><description><![CDATA[
<p>>> you'll begin to naturally decompose every for loop into these five steps<p>Does zig have auto vectorisation? I'm thinking that if you write the code in a vector friendly way, then the compiler can do the boiler plate for you<p><a href="https://llvm.org/docs/Vectorizers.html" rel="nofollow">https://llvm.org/docs/Vectorizers.html</a><p><a href="https://inside.java/2025/08/16/jvmls-hotspot-auto-vectorization/" rel="nofollow">https://inside.java/2025/08/16/jvmls-hotspot-auto-vectorizat...</a></p>
]]></description><pubDate>Thu, 23 Jul 2026 08:18:15 +0000</pubDate><link>https://news.ycombinator.com/item?id=49018382</link><dc:creator>CraigJPerry</dc:creator><comments>https://news.ycombinator.com/item?id=49018382</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49018382</guid></item><item><title><![CDATA[New comment by CraigJPerry in "The 'absolute magic' of Morse code that still connects people globally"]]></title><description><![CDATA[
<p>The thing that never fails to impress me is when an old timer ham copies a signal that's basically right on the noise floor when all i can hear is static. There was an old chap at the radio club i went to and he just had incredibly well tuned hearing. Felt almost superhuman</p>
]]></description><pubDate>Mon, 13 Jul 2026 17:37:46 +0000</pubDate><link>https://news.ycombinator.com/item?id=48896087</link><dc:creator>CraigJPerry</dc:creator><comments>https://news.ycombinator.com/item?id=48896087</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48896087</guid></item><item><title><![CDATA[New comment by CraigJPerry in "Dev productivity metrics suck. Ops reviews are key for AI-accelerated eng orgs"]]></title><description><![CDATA[
<p>> Core 4 (and similar) rub me the wrong way – measuring individual developers as the atomic unit IMO is always meaningless<p>And From: <a href="https://getdx.com/research/measuring-developer-productivity-with-the-dx-core-4/" rel="nofollow">https://getdx.com/research/measuring-developer-productivity-...</a><p><pre><code>    > Diffs per engineer*
    >
    > * Not at individual level
</code></pre>
Are you guys agreeing or disagreeing with each other?</p>
]]></description><pubDate>Fri, 10 Jul 2026 15:19:12 +0000</pubDate><link>https://news.ycombinator.com/item?id=48861154</link><dc:creator>CraigJPerry</dc:creator><comments>https://news.ycombinator.com/item?id=48861154</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48861154</guid></item><item><title><![CDATA[New comment by CraigJPerry in "Dev productivity metrics suck. Ops reviews are key for AI-accelerated eng orgs"]]></title><description><![CDATA[
<p>I'm trying to disentangle this from
the established / proven / trusted "dx core 4" (ask your local devops person if you don't recognise the name).<p>I found "initiatives" was added. What does this new initiatives measure bring. Why do we care about otherwise unqualified initiatives, how do i know that doesn't just mean using the other 4 proven measures as cover for pushing pet projects without merit?<p>I'm super cynical tonight it seems. This is just rubbing me up the wrong way i guess and i can't really put my finger on why.</p>
]]></description><pubDate>Thu, 09 Jul 2026 19:08:00 +0000</pubDate><link>https://news.ycombinator.com/item?id=48850917</link><dc:creator>CraigJPerry</dc:creator><comments>https://news.ycombinator.com/item?id=48850917</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48850917</guid></item><item><title><![CDATA[New comment by CraigJPerry in "AI changes the economics of software rewrites"]]></title><description><![CDATA[
<p>Not a good example i'd say given Python's position as pretty much the ultimate glue language :) You'd more likely keep the python shell (and faster developer iteration speed) and push measured hotspots down into c++/rust/c/whatever.<p>Incidentally, Whenever i've done this in the past it's had a pleasant side effect of improving architecture. You end up forcing something akin to "push for's down and pull if's up" because crossing the ffi boundary is not free. It can be quite magical, as in leading to comically unbelievably speed ups when you also take advantage of vector intrinsics.</p>
]]></description><pubDate>Thu, 09 Jul 2026 07:35:36 +0000</pubDate><link>https://news.ycombinator.com/item?id=48842205</link><dc:creator>CraigJPerry</dc:creator><comments>https://news.ycombinator.com/item?id=48842205</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48842205</guid></item><item><title><![CDATA[New comment by CraigJPerry in "US residents angry datacenters 'shoved down our throats' are recalling officials"]]></title><description><![CDATA[
<p>Sounds like a certainty stated like that. So not like toilet paper during covid?<p>what if the market was hard to enter?<p>What if the inputs aren't available?<p>What if the costs of the inputs rises?<p>What if the capital for expansion isn't available?<p>What if the manufacturers don't expect demand to persist?<p>What if there's a shortage of skilled labour?<p>What if it takes years to expand supply?<p>What if there wasn't effective competition?<p>I'm not sure it's as certain as you seem to claim.</p>
]]></description><pubDate>Fri, 03 Jul 2026 19:30:56 +0000</pubDate><link>https://news.ycombinator.com/item?id=48779015</link><dc:creator>CraigJPerry</dc:creator><comments>https://news.ycombinator.com/item?id=48779015</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48779015</guid></item><item><title><![CDATA[New comment by CraigJPerry in "CarPlay Is Additive"]]></title><description><![CDATA[
<p>That's just engine and gearbox i believe, not really a BMW.<p>Could be an Alpina</p>
]]></description><pubDate>Fri, 03 Jul 2026 05:53:02 +0000</pubDate><link>https://news.ycombinator.com/item?id=48771302</link><dc:creator>CraigJPerry</dc:creator><comments>https://news.ycombinator.com/item?id=48771302</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48771302</guid></item><item><title><![CDATA[New comment by CraigJPerry in "Internal Combustion Engine (2021)"]]></title><description><![CDATA[
<p>The thing that's missing here that really drastically changes the story is all the emissions control hardware that would exist on such an engine.<p>This is a circa 1990s engine in the US market i think? Dual Overhead Cam didn't really become popular in the US market until then i think. 70s-80s for single overhead cam to become established.<p>The diagrams are beautiful and informative as always from this author.</p>
]]></description><pubDate>Wed, 01 Jul 2026 17:04:41 +0000</pubDate><link>https://news.ycombinator.com/item?id=48749993</link><dc:creator>CraigJPerry</dc:creator><comments>https://news.ycombinator.com/item?id=48749993</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48749993</guid></item><item><title><![CDATA[New comment by CraigJPerry in "Looking Ahead to Postgres 19"]]></title><description><![CDATA[
<p>>> Each PG connection being a whole process does not scale like MSSQL that uses a thread per connection<p>There's no free lunch id think, the PG model is more robust. Unsafe extensions can take down the whole instance in the threaded model, processes contain the blast radius to that connection (also typically easier to debug since this type of issue is thankfully rare, it's also gnarly to get on top of).<p>Further, on linux (not on windows) a lot of the lines between a thread and a process get blurry (copy on write, shared memory mappings etc). They're both handled very similarly in the kernel, theyre both scheduled using similar machinery.<p>>> For PG to do plan caching it would need to serialize the plan between processes and that would require some significant work since it was never designed that way.<p>Is that true? I'm thinking the buffer cache and locks and WAL coordination are just as fast - it's just mmap'd SHM into each process. It's not like every access needs IPC?</p>
]]></description><pubDate>Wed, 01 Jul 2026 06:15:35 +0000</pubDate><link>https://news.ycombinator.com/item?id=48742912</link><dc:creator>CraigJPerry</dc:creator><comments>https://news.ycombinator.com/item?id=48742912</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48742912</guid></item><item><title><![CDATA[New comment by CraigJPerry in "RF hacking my cloud-controlled ceiling fan"]]></title><description><![CDATA[
<p>Love these write-ups, i have various 433mhz things around the home that i’ve integrated with home assistant. Probably the most useful is still a bbq thermometer with multiple probes.<p>Anyway i was going to post my favourite tool in this space <a href="https://github.com/jopohl/urh" rel="nofollow">https://github.com/jopohl/urh</a> universal radio hacker just makes the process trivial, but i see the repo is marked archived now. Either way, the software is excellent.</p>
]]></description><pubDate>Tue, 30 Jun 2026 20:42:23 +0000</pubDate><link>https://news.ycombinator.com/item?id=48738901</link><dc:creator>CraigJPerry</dc:creator><comments>https://news.ycombinator.com/item?id=48738901</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48738901</guid></item><item><title><![CDATA[New comment by CraigJPerry in "Apple raises prices of MacBooks, iPads"]]></title><description><![CDATA[
<p>>> it will be consumers demanding<p>But how do I get to express that demand? Asking as a frustrated regular user of excel - excel is amazing software but if your laptop is not in airplane mode, the number of little delays that creep in is wild. It's all seemingly network delays, connecting to onedrive servers when i'm editing a field (why?!), 10s of connections to random microsoft domains as i flick between tabs in the UI (why?!) - each flick incurring a subtle but observable delay.<p>>> Dreaming is free... All Electron devs<p>I like your sentiment for sure but i reckon you might be barking up the wrong tree. I'll give the clearest counter example i know of:<p>When i scroll a buffer in Zed (it's a 120fps editor written in rust that i really want to like) i perceive micro stutters.<p>When i scroll a buffer in VSCode (an electron app) it's buttery smooth.<p>I've tried this many times over 1.5+ years of releases. It's a reliable finding on an m1 macbook pro and an m1 imac.<p>If the slow stack can be fast and the fast stack can be slow, then there's more to this than just tech stack.</p>
]]></description><pubDate>Thu, 25 Jun 2026 19:19:06 +0000</pubDate><link>https://news.ycombinator.com/item?id=48677999</link><dc:creator>CraigJPerry</dc:creator><comments>https://news.ycombinator.com/item?id=48677999</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48677999</guid></item><item><title><![CDATA[New comment by CraigJPerry in "The Coming Loop"]]></title><description><![CDATA[
<p>> My current status is that I have not had much success with this way of working for code I deeply care about<p>If something is judgement heavy, "code i care deeply about", then i don't really agree with the direction of travel here. Don't try to delegate decisions you care deeply about.<p>I do like the framing of agent loop vs harness loop, but only delegate stuff that you can accurately specify in advance, that usually means stuff that's repeatable in my case ("hey go see how i did X, do that but for Y"), and that inherently means stuff that's predictable.<p>For stuff where lack of my judgement as input is just going to cause me to say "no", we're down to collaborating in the "agent loop" as Armin puts it. And that's totally fine. It's fast, but also safe.<p>Remember before AI coding assistants, sometimes you'd get an engineer join your team who was SUPER productive, your peers would be jealous "oh yeah but you guys only got all that done because you have X on your team!" - they didn't live the curse of having that kind of person around - if you don't have them PERFECTLY aligned, then they run off at break neck speed in the wrong direction.</p>
]]></description><pubDate>Tue, 23 Jun 2026 12:57:24 +0000</pubDate><link>https://news.ycombinator.com/item?id=48644271</link><dc:creator>CraigJPerry</dc:creator><comments>https://news.ycombinator.com/item?id=48644271</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48644271</guid></item></channel></rss>