HNHacker News
TopNewBestAskShowJobs

andrewingram

3,005 karma · joined July 6, 2010

submissionscomments
andrewingram··on Safari introduces Adaptive Dark Mode in 27.3
Mine is, at least not completely. I had keratoconus in both eyes, one far more progressed than the other. The more affected eye has a cornea graft (essentially a transplant) which helps a lot with visual acuity, but there's still some astigmatism. And the risk/reward for the other eye means treatment isn't worth it.
andrewingram··on Typesafe AI raises $870M at $7.5B
I had the opposite experience. Clef was worse in accuracy, and an order of magnitude slower.
andrewingram··on Port of the TypeScript compiler, checker and lsp to Rust, by LLM
The notable thing that these LLM-generated ports aren't doing is _rewriting in Go_. TypeScript 7 is a lot faster than the JS/TS-based version 6, but memory use is a major bottleneck.

However, it mostly represents a mechanical port of the old codebase to Go. What I haven't seen anyone do is try a true rewrite in Go optimized for performance (whilst keeping a strong emphasis on readability).

andrewingram··on AI Makes Me Sad
> If I added a few vibecoded projects to my resume, the gaping maw of every startup, enterprise company, and FAANG behemoth would open to me.

I don't know how true this is. I've got a handful of vibe-coded projects that are quite interesting to me, but the project that is by far the most interesting to talk about (and most impressive) is the one that I did back in 2021 before I ever used an LLM.

The common wisdom in this industry is that ideas are cheap, and if that's still true, there's now a pretty high bar for a vibe-coded project to be considered impressive. You need to either execute to an unusually high level of polish, or be building in a space where even having an idea would require a high level of experience.

Of course, I might be wrong. Maybe all these vibe-coded projects really are recruitment fodder?

andrewingram··on Clef: Open-weight decision models, and new RL fine-tuning platform
It's anecdata, but I ported a Jev-based prototype i've been working on to Clef, and it ended up being significantly slower and the results were worse.
andrewingram··on You said no MCP
And I said that they do this in my last paragraph. But you need an execution environment for this, and you don’t get this automatically when just interacting with models via their API
andrewingram··on You said no MCP
The value is that rather than an agent chaining together tool calls itself (which means each step sends the result back to the agent for it to analyse and work out what to do next), it writes a script for the harness to execute that chains together all the calls. The major benefits are:

* speed - much fewer hops back to the LLM

* fewer tokens - intermediate execution steps in the script don't leak into context, only the final result does.

* repeatability - if the LLM needs to repeat work, it can reuse a script it wrote last time.

If you have a harness that has access to a full shell and knows how to use bash or python, you'll often see it writing little scripts. For setups that don't (ie normal model API requests with tool calls), you can give it an lightweight secure execution environment like just-bash, or quickjs.

andrewingram··on Pi.dev: You Said No MCP
Over the last week or so on Twitter, I've seen a lot of people talking about how various ways of using MCP don't compose, but nobody seems to be clarifying what that means with a concrete fashion; which leads me to try and read between the lines.

In this very post:

> While a lot of things have improved about MCP, quite a few have not. The biggest issue with MCP continues to be that it’s hard to compose. Even with codemode, which is just a neat little sandbox to allow composing of tool calls, MCP doesn’t fully deliver on this. But that at this point is less the problem of MCP but the MCP servers out there and different approaches of harnesses to work with them.

Can we get a bit more clarity on this? With codemode, what's the gap? I've also been investigating the search+execute MCP server pattern evangelised by Cloudflare (it uses codemode inside the MCP server to bypass the need to expose a large number of individual tools), but i've seen people say that doesn't compose well either.

andrewingram··on Muse – Meta’s personal AI agent
Only one i'd trust less is SpaceX, and they're other major player in this space...
andrewingram··on Research acceleration: The view inside OpenAI
Yeah, I kept looking for the first place it was defined in the article and... nothing
andrewingram··on Decompiling a Nintendo 64 game in 84 days
I had a lot of fun with Snowboard Kids. Not quite Diddy Kong Racing, but one of my favourite N64 racers.
andrewingram··on Apple's new Mac mini, featuring M6 and M5 Pro
I play quite a few games on my Mac Mini via Crossover, but rarely anything particularly graphically intensive. Though I do see occasional buzz about improvements in the game porting toolkit leading to significant perf improvements when they make their way into Crossover.
andrewingram··on Solid 2.0 RC: The Big <Reveal>
I probably wasn’t clear with my experience. I was trying to get Claude to present my ideas, with a lot of steering and refinement, but it always seemed to be plagued by Claudisms. Even after getting rid of most, it took me rewriting all the prose to get something which people felt comfortable reading.

The published post reminded my of where I got to after several rounds of review and cleanup.

andrewingram··on GPT-5.6 Sol Pricing Cut by 50% on OpenRouter
I used Sol to extract the remaining decryption keys from the Super Mario Maker 2 (Switch) game files. Someone had previously extracted all the keys from the original release, but not any of the new ones from updates. Not only did it succeed, but it helped me understand the data sufficiently to add support for “Super World” rendering to my level viewer (which I made back in 2021), eg the little widget at the top of https://www.smm2-viewer.com/players/B16-306-GVG

I was very pleasantly surprised to find Sol wasn’t obstructive over what was clearly a very grey area endeavour.

andrewingram··on Solid 2.0 RC: The Big <Reveal>
The article reads eerily like the Claude-authored drafts I did for some internal explanations of Relay’s design philosophy (it’s a GraphQL client I’ve been advocating for). I’m not one to make accusations of AI authorship, but it was a particularly striking impression with this one.

I had to rewrite the drafts very heavily in my own voice in order for people to enjoy reading them —- not that I’m a great writer, but I am human and people tend to appreciate that.

andrewingram··on I'll be stepping back from leading product for X
Are you paying? I see an endless stream of AI or bot-like posts in the replies of basically every tweet I see with any traction, but i'm not a paying user so I may have the bad version of the platform.
andrewingram··on I don't recommend Tailwind CSS
> conflicting styles don't make sense

Sometimes true, but one issue here is that because Tailwind utility classes vary from being a 1:1 mapping to a single underlying style rule, to mapping to several, it's not always obvious which classes will conflict.

andrewingram··on 98% Isn't Much
For anyone who didn't know, caniuse lets you upload your actual usage data. Then for any capability, next to global support you also see the stats for your user-base.

https://caniuse.com/ciu/settings#usage

andrewingram··on YC CEO says he ships 37K LoC AI code per day. A developer looked under the hood
Whilst I don't _really_ consider 37k LoC a day to be a particularly extreme number, my issue with all the high profile high output usage of AI, is that it doesn't really prove much of value.

I use AI in a pretty single-threaded way and my primary challenge is figuring out how to keep the LoC as minimal as possible, as well as minimise my spend. I am, unintentionally, one of the highest spenders at work; this is possible because I do more fiddly UI enhancements where the desired behaviour is often subjective and invariably hard to articulate. When I work on big backend features, my spend tends to be much lower.

What I really want from the people who have effectively unlimited tokens to spend, is to use that finding ways for the rest of us to produce higher quality output at lower costs, rather than focusing on output alone.

andrewingram··on YC CEO says he ships 37K LoC AI code per day. A developer looked under the hood
> Note that Rails was built as a framework for making blogs

This doesn't seem right. Yes, the "build a blog in 15 minutes" demo was pretty memorable, but I don't think it's ever really been pitched as a sweet spot for Rails. IIRC Rails was essentially extracted out of the 37Signals codebases for Basecamp et al.

andrewingram··on Shadcn/UI now defaults to Base UI instead of Radix
I think it depends on the project, but I've found that using installable libraries becomes a bottleneck over time as you find yourself running into their limits, or trying to customise them in ways they really aren't design for.

I wrote something about it a few years ago when shadcn was relatively new on the scene https://andrewingram.net/posts/recipe-kits-a-great-alternati...

andrewingram··on Shadcn/UI now defaults to Base UI instead of Radix
I call it "being shot in the face with bullet points". I was trying to use an LLM to write up some guidelines on how to use a piece of tech, and I kept getting frustrated that it felt like a slide deck rather than sincere persuasion.

Maybe it's a style that's always existed in moderation, but now it feels like it's being applied to every paragraph in every document or social posting.

andrewingram··on Wordgard: In-browser rich-text editor from the creator of ProseMirror
One thing i've struggled with with Prosemirror (via TipTap) is that I very often need to interact with JSON representation of the document programmatically to extract data from it, this means I need (okay, strongly prefer) a statically-typed representation of it.

Prosemirror doesn't really have any mechanism to do this, so i've ended up doing one of these two things:

1. Define the schema twice, once using Prosemirror and once using something like Zod. Then having a battery of equivalence tests to assert that the schemas match. 2. Build a meta schema definition layer that can output a Prosemirror schema, but conforms to the standard schema spec (https://standardschema.dev/), this approach is more viable if not using something like Tiptap.

I haven't tried using Wordgard yet, so I can't tell if it does anything to address this, but just calling it out as a pain point i'd love to see solved.

andrewingram··on Vite+ Beta
At work we've tried switching to vitest, and it's 1.5-2x slower than Jest (I think it's related to our very large and circular module graph), so performance is very much a your-mileage-may-vary thing.
andrewingram··on The React2Shell Story
If you look at the origins, the primary motivation was finding a way to get a good data loading developer experience without having to adopt Relay and GraphQL.
andrewingram··on The bottleneck was never the code
As they say (they being me), no design survives implementation.
andrewingram··on Your Website Is Not for You
I remember regularly scrambling to redesign our marketing site, because the CEO was going to start speaking to investors in less than a week. So we'd always end up with a homepage that represented a new narrative the CEO was trying out, often at the expense of current customers being able to find what they were looking for (our homepage was also our primary entry point into the onboarding funnel).
andrewingram··on An update on recent Claude Code quality reports
I'd hazard a guess that there's a large gulf between proportion of users who know as much as you, and the total number using these tools. The fact that a message can perform wildly differently (in either cost, or behaviour if using one of the mitigations) based on whether I send it at t vs t+1 seems like a major UX issue, especially given t is very likely not exposed in the UI.
andrewingram··on An update on recent Claude Code quality reports
This points to a fairly fundamental mismatch between the realities of running an LLM and the expectations of users. As a user, I _expect_ the cost of resuming X hours/days later to be no different to resuming seconds or minutes later. The fact that there is a difference, means it's now being compensated for in fairly awkward ways -- none of the solutions seem good, just varying degrees of bad.

Is there a more fundamental issue of trying to tie something with such nuanced costs to an interaction model which has decades of prior expectation of every message essentially being free?

andrewingram··on Elon Musk pushes out more xAI founders as AI coding effort falters
There's a _big_ continuum between disagreeing over something and an ethical hard line, it feels like a slippery slope to interpete a suggested approach for one end of that line as advocacy for applying that same approach to the other end.
Page 1 of 34Next →