Jan 25 2025

Audi Q4 E-Tron: Accidental Review


My Q5 has been sitting in the shop for about a month now waiting for a part from Germany and I’ve been driving a loaner Q4 from my local dealer.

I’ve had it long enough that I feel like I can review it well enough!

The Good

My main car is a Q5 e-tron plug-in hybrid. Its electric drivetrain is decent enough for low-speed driving in town, but the gas engine has to kick on for anything serious and that can make things feel a bit sluggish.

Going from the hybrid system to an all-electric drivetrain is a massive upgrade. It’s easily my favorite thing about the Q4.

When I want to pass someone on the highway I can just step on the gas and vroom vroom. But because it’s an EV it just quietly zooms ahead without the loud engine noises.

If you enjoy cars and you take an EV for a spin, it’ll be very hard to stop thinking about it after.

Acceleration speed looks pretty mid on paper (a little over 5 seconds) but in practice it feels quite quick, even having enjoyed my 2016 A4 that boasted 0–60 speeds in 5.2 seconds. Not having to wait for gears to shift really makes a difference.

I’m tempted to test drive a Kia EV6 GT or Hyundai Ioniq5 N some time to experience those insane acceleration speeds but this default configuration feels good enough in a way I wasn’t expecting. I wouldn’t be surprised if I took an EV6 GT and stepped on the gas and felt “oh crap, this is too fast.”

The Bad

Audi used to boast the best interiors of any mass-market car. If they are still in the lead it’s only because the rest of the car industry got worse too. The Q4 has a ton of paper cuts in the experience.

Audi has, for some reason, become allergic to knobs in the car. From what I can tell, there is just one knob, and it’s the control to adjust the mirrors. The rest have been replaced with flipper buttons and capacitive touch buttons.

The steering wheel lost its buttons and instead has one giant clicker button on either side, and depending on what region you press on, capacitive controls will determine what “button” you pressed. I can’t imagine it saved Audi anything on the bill of materials, and it feels cheap. The volume control is a touch slider that you can slide up and down with your thumb, but it’s worse than the knob it replaces; I can always precisely turn my volume up or down a single click on my Q5; on this Q4 it’s a crapshoot when I want to make a small tweak to the volume.

The touch screen on the Q4 is quite nice. I don’t like touch screens much in cars because it’s a dumb idea trying to touch a button on a touch screen while the car is moving, but Audi positioned this high-resolution screen at a more accessible angle and it feels decent. I’m still glad my Q5’s MMI is exclusively controlled with the knob, but I’m glad to see there are decent car touch screens out there still.

After I bought my Q5 I was surprised to discover it was missing a spare tire; that was an area Audi usually didn’t cheap out on. I figured it was because the car needed room for both the gas tank and battery and I assumed that Audi’s EVs would add the spare tire back. Not so in the Q4, and it feels chintzy. It’s not an everyday concern but a spare tire is one of those things that you are really happy to have the day you need it.

The Ugly

Audi’s car software has gotten to be utter garbage, and the cars overall are worse for it now.

This Q4 suffers an issue where every time I start the car I have to manually turn off the traffic sign-based speed warning beeps. Allegedly a dealer can install a software update that makes the car remember this between starts but I can’t confirm it’s a thing.

On at least one occasion the MMI got into a scenario where a dialog box was covering the rest of the screen but it was not dismissible. Once I got to my destination I needed to park the car and then follow steps to hard reboot the MMI.

You should NEVER have to do that in a car.

The UI/UX of the car’s built-in touchscreen OS just isn’t good and it feels like it was designed by people who have never used a car sitting at a desk imagining what makes a good UI. There’s an inexplicable “Favorites” section on the home screen and I thought it might make it simpler to add the speed warning toggle to favorites to make it less tedious to turn off when I start the car, but it takes almost as many taps from Favorites as it does to turn off by going to the settings screens. To its defense, I did optimize the experience of turning off this setting by adding it as a favorite, rearranging my favorites so that vehicle settings favorites was the first group, and then adding the favorites section as one of the top-level tabs in the left sidebar. Every one of those steps was more painful than it should have been.

Icon arrangement on these screens is inconsistent which messes with my muscle memory. Taps sometimes fail to get detected, especially when I’m moving fast, and when you scroll with your finger to page through the home screen sections it does so with a sluggish frame rate I’d expect from an Android phone circa 2010 (not surprising; I think the MMI’s software is now based on Android Automotive). Audi’s MMI software wasn’t always like this either; my Q5’s works nicely and the UI is fluid and when I turn the knob to navigate, it just works. Same goes for my previous two Audis.

The car ostensibly has conveniences like being able to leave the climate control running when you leave the car, but you have two choices: either let it run for 30 minutes, or use a complex set of scheduled timers to control it. Has no one at Audi ever considered that maybe I might be leaving my car for, say, 45 minutes, and I’d like to have the AC kick on after a predetermined delay? It’s like someone had the feature in a to-do list and hastily banged out something without any thought to what might make the feature valuable.

Between these papercuts and the lack of differentiation of car form factor, I understand how Audi shipments have dropped dramatically in recent years. Car companies have internalized this mandate to make their cars software-driven above all, and not a single car company is capable of making good software to power their cars (and that goes for the upstarts too). Making software that’s so great that it feels like an appliance is really hard, and car companies don’t seem up for the challenge, but they’re doing it anyway.

If you’re not super fussy about details like I am you might get in this car and think it’s quite solid. But if you’re not super fussy about details in cars, why are you even considering an Audi?


The car market in the US has been in a weird place for the last couple of years, and EV sales are stalling a bit. I don’t believe it’s because Americans don’t like EVs; everyone I know who’s driven one loves the experience. The trepidation comes down to two things:

  • Charging EVs away from home is a work in progress still (a problem I think we could solve)
  • Every car company is making the same knuckle-headed decisions with their EVs, so most new cars tend to be a mixed bag as opposed to being better than older cars in any way.

I suspect that these design decisions are cost-cutting measures to compensate for the fact that the battery eats up so much of the cost of an EV.

Audi manages to avoid the most obnoxious choices (for instance, there isn’t a massive touch screen that requires you to control things like the windshield wipers with it).

I previously was on a cadence of upgrading cars every three years or so and for my Q5, I bought out the lease early because in late 2022 the market was in a weird place and since then, I’ve been waiting for an EV that excites me and doesn’t have a bunch of dumb design decisions.

I’m still waiting. I was excited about the ID.Buzz but it sounds like VW enshittified it with a bunch of similar design decisions, like the capacitive steering wheel.

It’s hard to get behind the wheel of an EV and not be bullish on them as a concept; they’re seriously just so fun to drive. But car companies are finding a way to fuck them up nonetheless.


Jan 14 2025

Follow-up: macOS Messages Text Input Lags Less!

Almost a year ago I lamented that since macOS Sonoma was released, the Messages app suffered a serious performance regression with text input.

I’m happy to say that with the release of macOS 15.2, it’s better!

a screen recording of me using a script to rapidly type a long paragraph of text into the Messages app for macOS

It’s not quite as smooth as text input in an AppKit app, but it’s back to being adequate.


Jan 6 2025

AI’s Threat To Software Developers

Disclosure: The company I work for is very heavily invested in generative AI, specifically developer tools. As a result, I have financially benefited from recent AI popularity and I’ve had involvement with building software products that incorporate modern generative AI. These are my opinions, but my closeness to AI has surely influenced these opinions.

I’ve been seeing a lot of dread and fear from my peers about generative AI and the worries that it’s a threat to our industry and our livelihoods.

If this is a thing that keeps you up at night, let me give you a few salient points that might help put your mind at ease:

  • Have you ever actually tried leaning on generative AI to do anything nontrivial for programming? It largely can’t, and it certainly isn’t going to help you with big refactorings on large codebases because the context window would need to be way too large.
  • Have you tried troubleshooting something complicated by relying only on the AI? AI can’t troubleshoot because it can’t interact with the system it’s allegedly helping you write. It can’t go too far past platitudes. They’re somewhat personalized platitudes, sure, but writing software is a discipline where you get backed into super specific corners.
  • Have you tried using an LLM-based tool with your large codebase to ask questions about the codebase itself? It gets hit and miss really fast.
  • Have you tried asking an LLM to do anything remotely creative? It falls flat.
  • Have you ever asked the LLM for a code sample on how to accomplish something, only to find that it generates code that references APIs that don’t actually exist but sound plausible? That’s not really a bug; it’s core to how LLMs are designed; they don’t have a notion of whether APIs exist.
  • Have you tried leaning on AI tools to make your writing great? At best you get text with this milquetoast voice and sameness to it. It’s forgettable and completely lacking in character.

LLMs as we know them today aren’t capable of logical reasoning (at best, we have future ones that pretend they can reason about things). They’re incapable of interacting with the outside world as part of their operation. All they do is receive input and generate statistically plausible sounding output using that input plus their training data.

And these deficiencies of LLMs aren’t mere kinks that can be ironed out. Even if you added several orders of magnitude more tokens to prompts and could feed it your entire company’s code and the code for all of your dependencies the LLM would still fall short because all that extra context still isn’t helping the LLM understand what it’s helping you write because it doesn’t understand anything in the first place.

To build an AI that can make software would require building a fundamentally different set of tools altogether.

When ChatGPT came onto the scene a couple years ago it felt like it came out of left field, but ChatGPT is actually the result of decades of incremental research. It feels like it’s evolved fast in the last 2 years but that’s with billions being poured into improving it, and at the end of the day ChatGPT and its peers are all still fundamentally LLMs, and–say it with me: all LLMs do is receive input and use that input with their training to generate statistically plausible output.

Now, that’s not useless! LLMs can be really handy while programming. They can be great at helping you start a project. You can ask them high-level questions to help you learn new things (assuming that you’re asking about something it has a lot of training data for). They can often cut through the toil of certain tasks, like writing tests.

But the moment you try to really lean hard on the LLM to help you with something (programming or not), you realize the LLM’s “knowledge” is ultimately very shallow, and they get really hand-wavy as soon as you’re asking about anything nontrivial.

I understand why LLMs feel scary. They make for remarkable demos. We’ve been conditioned for decades to think of computers as being really rigid and picky about how you communicate with them, and ChatGPT suddenly comes along and breaks that assumption with uncannily human-seeming responses. But the corollary of that is that we also assume the output of ChatGPT is highly reliable and consistent like a computer but it’s not; it’s giving output that’s just as loosey-goosey as the input we get to give it. It looks plausible and in many cases it will give factually correct output, but it’s never correct because it knew anything; the math just worked out in its favor.

You can’t do knowledge work without knowledge.

I’m not suggesting we be complacent. Complacent industries get disrupted all the time. But so much of the fear I see from engineers about generative AI is based on this assumption that it’s capable of things it can’t actually do. If you look past the hype and try to really understand what today’s AI can can’t can’t do, you’ll realize that AI’s about as capable of stealing your engineering job as Alexa or Siri.

A much bigger worry for me (and something that we saw happening in ’22–23) is companies getting into a panic about their spending and deciding to lay off engineers, usually saying they’re overstaffed. The companies probably aren’t actually overstaffed, but when you fire people you see those cash savings on your balance sheet instantly, and you won’t actually start seeing the effects of firing a chunk of your team until months or years down the road, and leadership doesn’t really learn anything.

Software engineers are one of the only roles who have enjoyed decent leverage negotiating compensation in the last 20 years, and companies resent them for that.

Companies can lay off their engineers regardless of whether LLMs can help fill in the gap or not (and they do), but reality eventually catches up with you.