I used to work for the US side of a German multinational (one of the largest in the world) and discovered the same thing when it came to software.
The German side always had slick presentations (they always had good visual marketing) and impressive claims, but whenever I tried to work with their products, I always found the claims overstated and that they hadn't really executed deeply. This despite my German counterparts working hard (I visited HQ in Germany and when they work, they really work and clock the hours, no idle chitchat)... yet it doesn't translate to impact.
A lot of their products had impressive front-ends but half-baked back-ends (on the American side, it's the reverse -- our interfaces looked like crap, but our stuff actually worked and often delivered in less time).
A lot of their designs were also non-human friendly (if you've ever driven a German car, you'll realize that the car was built for engineers and not for end users -- weird little user-hostile features pop up everywhere). I don't understand why this is -- this is a nation that produced Dieter Rams. Tobi Lutke (CEO Shopify) likes to talk about how Germans grew up surrounded by good design, yet that design culture never permeated many German products. I own a Bosch in-unit washer/dryer and it's frustratingly unintuitive and has a "my (the engineer's) way or the highway" philosophy.
I went to a BMW talk once about the infotainment system (it was built on the latest Azure tech), but came away feeling that the work was not deep. It was skin deep.
I wonder what has happened to the German builder/tinkerer culture that made German manufacturing great. In the 1980s and 1990s, Germany was synonymous with excellence. But in the 2000s-present, not so much (except maybe in very narrow mittelstand verticals, e.g. Zeiss).
"if you've ever driven a German car, you'll realize that the car was built for engineers and not for end users "
cracks me up. I once leased a BMW for 3 years. By the time I returned the car, I still didn't what all the cryptic buttons for HVAC and other controls. They just refused to follow established automotive ergonomic conventions.
Anyway, my father used to do business with Germans for a long time. He had many interesting stories to share, but one that has always stayed with me is, his disdain for how cheap / penny pinching his German companies and their employees were when doing deals. This was in the 90s, so definitely passed the West Germany glory days.
My take is, in the era of global competition, Germans didn't know how to strike the right balance and effective allocate resources. Where to compromise, and where not to. I don't know if it's sheer stubbornness or they're just wired differently.
>how cheap / penny pinching his German companies and their employees were when doing deals
I think most people(Americans mostly) don't have the faintest idea how true that is right now. Here's a comment of mine from a few weeks ago giving such a present-day example that will blow your brains of how cheap german companies are. https://news.ycombinator.com/item?id=47018023
I feel like German companies know they lost the innovation race (I mean companies that aren't Zeiss), they lost the cheap manufacturing race "thanks" to Russian gas dependence and ideological denuclearisation before enough renewables were built, so all that's left for them now to stay afloat is reducing labor and operating costs by offshoring and pinching all the pennies they can find, but even that it not enough since from where I stand there's weekly corporate bankruptcies and layoffs and that's including the fact that the government has been speeding like crazy the last 3+ years to make sure the private sector industry doesn't completely collapse.
~46M employed (of which ~16M part time, usually related to child or elder care), ~84M total population, ~22M pensioners, avg age ~47, lots of SMEs, little natural resources. It's part of necessary consolidation. Considering all that, we're doing quite well...
I’m told that Germans in general are “cheap” and that this is an expected consequence of their economic policies designed to reinforce their industrial base.
I wish I could find the reference I’m thinking of, but the idea was that Germans buying absurdly cheap wine and their constantly underfunded trains were part of a pattern of deliberate domestic under-investment to keep exports competitive.
Dutch may be cheap at hospitality but they're savvy at running business, while Germans are cheap at running business and the economy in general, hence why austerity is their favorite word in the vocabulary, they're penny wise and pound foolish.
And unfortunately the focus on austerity post-2008 spearheaded by Germany only held the EU economy back compared to the US.
If they're planning to reduce labour with this BMW robot, I have interesting news for them: the Chinese showcased kung fu dancing robots that runs circles around their lame German humanoid robot who can't even pour a beer, let alone assemble cars.
I have long experience of multiple German car brands. The interface spectrum goes like this: driving and seats etc are close to perfect for me. As long as it's about buttons, they are really good. But once it goes to screens, it starts getting worse. And then, with mobile app, it's basically barely functioning at all.
I work on German cars on a daily basis, the “online diagnostic” of one of the top brands runs on a sort of remote desktop fashion complete with windows boot screen, I don’t need to tell you that speed is not one of its main features.
I like how the VW controls are laid out on older models but not the seats. They're too hard and not confortable. Even my Suzuki has better, more confy seats. The seats in the A1 I had were a diaster, especially the back seats, totally useless unless you put 10 year old kids in them.The fronts seats were hard, your butt would hurt after 3 hours. The engine was rattling new and the car is a pita to repair, something broke all the time. But it stuck to the road and was so much fun to drive that I skidded in a roundabout and nearly hit the lane separator. A Civic is probably better in every regard though. Newer Audi diesel models automotive eat up oil, adblue. You basically need to fill up at least 3 or 4 fluids all of the time, including screenwash. Just another extra reason to avoid diesels.
Our (~2015) 3-series controls are just about perfect. Where they differ from Honda/Toyota's controls that I am also very familiar with, they're noticeably better now that I'm familiar with them. Everything is really well thought-out.
Of course, now they (and almost every other manufacturer) have followed Tesla off the cliff and made everything a screen, so the current generation cars have abysmal controls.
I don't know if it's sheer stubbornness or they're just wired differently.
As a German I believe it's more about demographics nowadays. The country and all large companies are run by older people who only saw rising prosperity their entire life. They all have settled in a comfortable place and do not seriously care about the future anymore. They just want to keep the system running until retirement.
There is no long-term strategic thinking anymore, only feel-good policies and short-term cash burning for their respective clientele.
As a young person it infuriates me but there is nothing we can do.
The is always something you can do. Sometimes it's hard or uncomfortable but you can still have an impact on the things you care about if you're willing to do enough.
>As a German I believe it's more about demographics nowadays. The country and all large companies are run by older people who only saw rising prosperity their entire life. They all have settled in a comfortable place and do not seriously care about the future anymore
However bad Germany is in this regard, I suspect the US is far worse. There is no cohort in the US who remembers living in "East US" to temper the excesses of the people who've only known ease and comfort (though of course those people will tell you they worked hard to <insert career/prosperity path that no longer exists).
Actually Kansas is doing the opposite of East Germany.
East Germany introduced the Transsexuellengesetz in 1980, which allowed people to change their first name or gender, as long as they provided, among other things, two psychiatric evaluations to ensure the condition was permanent, and not some decision driven by some temporary influence or fashion, but a full diagnosis of transsexualismus.
You are right about the issue, but wrong about the action. There are things you can do. Vote for candidates and parties that genuinely want a different future. Become politically active yourself. Run for office. Work with your local community. Every bit of action helps.
There is no party in German political landscape interested, capable of solving or even understanding the problems that needed to be solved. We have lost political center to groups of special interests and medieval guides. The state sponsored tool for informing about political programs (Wahl-O-Mat) is biased towards political issues of the mainstream. E.g. nobody is talking about the suffocating monopoly of notaries or increasing the property ownership by any significant margin. Running for office is an interesting idea, but in party-dominated politics to achieve anything is a decades-long adventure.
The wahl-o-mat is not biased, it's based on the respective election programs. If one party decides to put something "about the suffocating monopoly of notaries" in it, it's not enough to be mentioned. There have to be some parties at least to make it comparable.
Also feel free to peruse election programs yourself. Most parties put out short versions.
You also don't need to run for office to have an effect on party lines. I'm a member of a party. There are congresses on a regional (Bundesland) and national level. In my party the process is voting for proposals before the national congress due to the huge amount of proposals, but usually every proposal on regional level is discussed and voted on. It does not take much time to prepare a proposal, but it shapes the discourse.
> The wahl-o-mat is not biased, it's based on the respective election programs.
That’s exactly my point. If a problem exists or a solution to a problem is possible about which no party is willing to talk about, it will not show it. The choice of topics is based on party opinions, not on voter surveys. This is called bias.
> Also feel free to peruse election programs yourself.
I read the full programs. This is the main reason why I think German political system is in the state of crisis.
> I'm a member of a party.
You surely know some examples when a party member shaped the discourse and set the course of institutional reforms. How long did it take for that person to achieve such results?
> That’s exactly my point. If a problem exists or a solution to a problem is possible about which no party is willing to talk about, it will not show it. The choice of topics is based on party opinions, not on voter surveys. This is called bias.
It's not a bias. I think you're misunderstanding the meaning of the word. We vote for parties and the wahl-o-mat compares the opinion of these parties. It would be biased if it would give an unfair advantage or disadvantage to one or some parties. The parties' opinions not being a good representation of the important challenges we face is not a bias of the wahl-o-mat. You can question its usefulness but calling it biased is calling it dishonest.
And honestly? That sucks. You can question its usefulness but please don't call an initiative that aims to give the populace a better political overview biased for no reason. You're not helping shape political discourse for the better here. I just checked: There weren't any no google results for "wahl-o-mat bias" yet. Now there are.
It gives unfair advantage to incumbent parties by shaping the political agenda and manipulating public opinion. When you look at the housing crisis in big cities and what Wahl-O-Mat displays as the options on the table based on political programs, it is very easy to think that the selection of options is exhaustive. Public is effectively pushed into discussing only those options, none of which is a good solution. Yet solutions exist, the only problem: political center is dead and they do not fit into populist right or populist green/left platforms. At least half of the items on Wahl-O-Mat is feel-good populism scoring points for one or another party, not least because scoring points, not real change is for most of them the primary objective. And the tool simply reflects that, because German political system is designed to stabilize status quo, not to challenge it.
Edit: the word „Bias“ may not exist in Google search, but this topic is certainly discussed in German language space and it is easy to find:
I did do a German search as well. And bias in that case would be something like "parteiisch" "bevor-/nachteilen". In 2019 a court did say it gives an advantage to incumbents because you had to limit your results to 8 parties. They've changed that since. The article you've linked is talking about its usefulness in general and not that it gives unfair advantages to anyone.
Honestly, I'm not a big fan of the thing myself and I agree that most of your proposals would improve the tool. But calling it a tool that compares political parties biased makes it sound deceptive. And I don't believe that it's deceptive. It's just ineffective.
The fact that it gives an "unfair advantage to incumbents" also isn't really a bias of the tool. It really just is the most obvious fair way to structure it. Large parties are large because a large amount of people vote for them. So they obviously have more visibility.
But I also agree that the majority rule of an ageing population in Germany is problematic. With most incumbents seemingly agreeing to not talk about the future.
Bias: A preference or an inclination, especially one that inhibits impartial judgment.
Let’s say there are parties A, B and C. A and B offer something populist solutions Sa and Sb to very important problem X, C does not promise anything on it, but offers solution for less important problem Y (single issue party). If voter thinks that Sa and Sb are the only choices, they may choose A or B, because it feels right. If voter was informed that neither Sa, nor Sb solve the problem, but some other solution Sx not supported by any party would do it, party C could become a reasonable choice - at least you get something done this way. This would be impartial judgement. Wahl-O-Mat inhibits this scenario, so yes, it is biased, it is deceptive.
That's not true. I just now went through the Wahl-o-Mat for Baden-Württemberg (because there are elections there this Sunday, March 8). From the 38 questions, there are two that directly address the housing crisis:
> Die Mietpreisbremse in baden-württembergischen Städten und Gemeinden soll abgeschafft werden
> Länger leerstehende Mietwohnungen sollen ihren Eigentümerinnen und Eigentümer konsequent entzogen und vermietet werden.
Why do you think those options are not good options to address the housing crisis? Are there other levers? Of course, but Mietpreisbremse (freezing rents) and Leerstand (empty houses) are certainly key levers. And the point of the Wahl-o-Mat is to give you an indication over overlap, not to list and let you decide on single political initiatives.
> Are there other levers? Of course, but Mietpreisbremse (freezing rents) and Leerstand (empty houses) are certainly key levers.
They are not the key levers, which everyone with basic knowledge of economics should understand immediately.
Regardless of whether certain segment is operated by market, by regulation or by combination of two, it is always about supply matching the demand. If you have more demand than supply, either prices will increase or you enter the state of deficit, where non-market mechanisms will decide who will get home and who will not. In either case prolonged state of reduced supply leads to crisis. Neither of those levers does solve problem of supply reliably. There’s simply not enough empty homes on the market to consider efficient management of them a solution. Rent controls also do not help here, because they actually reduce supply, by creating black market of subleases and reducing mobility (people stick to their regulated contracts).
The solution to the problem requires multiple reforms at once, which will fix short term and long term supply:
1. Dramatically deregulating supply side and reducing NIMBY influence. Project approvals should not take 7 years as in Berlin Friedrichshain and should not be blocked by survival of some rare toads like in Berlin Pankow.
2. Streamlining microdistrict planning, where one project includes construction of thousands of homes along with the necessary infrastructure. May include rapid construction tech (Plattenbau 2.0). It is not enough to build one building here and there, we need to build a lot more.
3. Shifting from majority rental to majority ownership model in which mobility is supported by market, low commissions (remove notaries, reduce taxes) and fast registration of property rights. It must be possible to sell and buy in 2-3 weeks maximum. The large landlords should be re-privatized: first, state takes over, then rentals are converted to subsidized lease deals with tenants with transferrable rights, in which tenants will effectively own their homes, while continuing to pay the current, never increasing amounts.
4. Progressive tax on property ownership kicking in from 0% on 3-5 apartments to significant percentage of rent value on 50+ apartments. The for-profit landlord business model must become unattractive, while not putting too much pressure on small landlords which are more market-friendly.
This kind of reform is neither left, nor right. It’s anti-capitalist, because it prevents concentration of capital and negative redistribution, but it is also pro-market, because it hands over the ownership to millions of people which can then freely sell and buy for their own use.
It seems to even get the compass needle pointing in the right direction would require immense personal sacrifice. This brings to mind a line I heard recently: “I burn my life to make a sunrise I will never see.”
>who only saw rising prosperity their entire life.
Their prosperity has been artificially inflated and not earned for the last years, as the government adjusted their pensions according to inflation, not according to actual economic growth/fall of the nation. It's a cheat code that shouldn't be used if you wish for economic reality but it's used to buy votes.
>They just want to keep the system running until retirement.
To be fair, this is a similar issue with Boomers versus Gen-X in the US and most of the west.
BMW's most recent infotainment is a big step backwards to me in both areas - aesthetics and UX. Its previous generation was one of the best in the market also in both. I literally don't consider buying the newest 4-series just because of it, especially of the ultrawide driver's "monitor" - it's just so ugly, and I regret it, since on the outside the car appeals me so much more. I'd rather spend the same on previous year model with better specs.
I worked on BMW infotainment for a time. My opinions are my own obviously, I don't even work at BMW anymore.
So, when I was working, I found the decisions regarding the infotainment mind boggling, to me they made zero sense, until I found some random documents deep in the BMW intranet, where I found the logic of it all: The focus was actually increasing the car range, so for example instead of having one infotainment dedicated hardware, one for the doors, one for the brakes, etc... now the cars have the least amount of computers as possible, located in the locations that result in the least wires as possible, with the goal of saving weight. Because of this, the software layer now had to deal with extra virtualizations, software that originally was to run on a specific microcontroller and do a specific task, and communicated with other parts by wire, now shares a generalized CPU with many other software, and communicate by virtual machines sending messages to each other.
Marvelous stuff from the point of mechanical engineering, indeed results in lighter car and less parts. But the end result for the user? It is mind bogglingly bad, several VMs running on top of each other, everything is slow, the Infotainment instead of being just Infotainment now do several other things.
I had written some of the surprising non-Infotainment stuff the Infotainment do, but that probably would cross into violating NDAs territory, so better not. Just let's say the Infotainment has to meet some non-entertainment related EU regulations.
Isn't what you are describing known as Zonal Architecture (as opposed to Domain Architecture) and supposed to be the hot new way of architecting automotive platforms? Tesla was pioneering it. The Volkswagen Group spent billions to get their hands on Rivian's zonal architecture platform.
But bafflingly to me, almost zero of my coworkers seemed to be aware of it. They would just get the seemly weird orders from above and would execute them, without figuring out the end goal, and this does result into some bad software engineering (because people don't know the end goal they don't know what they can optimize, so they just don't).
I strongly disagree. The step from the F series to the G vehicles was big, quality improved a lot, specially for the 3 series (F30, F31 vs G20, G21) and the X3 (the G01 feels like a 5 series). The materials, assembly, noises during driving, but specially the driving dynamics and robustness are incredibly high.
It’s also true though that the last wave of G models has improved driving dynamics but cheapened out in interior materials. Peak BMW interiors happened between 2019-2022 with the G01, G30, G05 and iX, i4. Being my favorites the iX and the G01.
BMW also has the best infotainment system after Tesla. And it still integrates well with Android Auto and Apple CarPlay.
Mechanically, you're probably right, but the screen-centric controls of the newer generation are _awful_ by comparison to the F generation's physical buttons and dials (this isn't BMW though, it's the whole industry).
My wife and I both have F31s, which we will drive until we can no longer source replacement parts unless the industry comes to its senses first (unlikely). Any time we've ever looked at plausible replacements, the screen-based controls are an immediate hard no.
I wonder if anybody's manufacturing was great before the Japanese quality revolution. It took Germany longer than the US to adopt modern quality control. Granted, Germany did a lot of it, for instance their chemical industries were staggering.
I've formed the impression that every country's engineering and design cultures are essentially aesthetics.
History of manafacturing philosophy is a pretty interesting lens;
I once had the chance to chatt with an old German colleague about the change in mentality over multiple decades. One thing he highlighted was the change from "lower error rate equals less waste, and higher final sale price" to "customer complaints or defect rates should be above a threshold, otherwise we are investing too much in the process control".
Particularly due to the desire to derisk the process; design by collaboration with the end user, and contracts with quality requirements, rather than the design being owned by the manufacturer.
It's really that the upper management does not appreciate change over departments if it's not their idea.
There is always the mentality that "why fix it if it works" where you actually have to wait for people to go to their pension to really grab a process and drive change.
You then get partially digitalized processes where digital native departments are concerned but they always have to solve the problem of interacting with a bunch of legacy systems and workflows, which in itself is so much harder and more inefficient.
Whats funny is when its privatized by publicly traded companies it becomes this weird nationalized-kinda but not really thing that turns the economy into a bifercated class of first class citizens and second class citizens.
> I wonder what has happened to the German builder/tinkerer culture that made German manufacturing great.
Over engineered stuff which hate the user is staple of German manufacturing. Look on tanks during WW2. Impressive on the surface but unreliable crap for everyone who used it.
I recently replaced the shock dampers on our Miele washing machine (~10 years old) and I was amazed how well designed and ergonomic the inside of the machine is.
Parts are very easy to get at, all screws are Torx of identical size, and there's one very obvious way to take the machine apart and put it back together again. Made the replacement a breeze.
I think the whole premise of judging a whole country on some random product a company from that country made is rediculous. It's like saying Americans can't develop software because Microsoft screwed up Windows in the last few versions.
Indeed, the parent phrase " German engineering ... their vacuum cleaners" struck me as a bit ridiculous. Perhaps there is a design standard for a company and "their" products, but this was too sweeping.
I have a Sebo. The primary thing I dislike is the weight. You'd think something this heavy would have some kind of performance advantage, but it doesn't. I've seen battery powered shit from Walmart suck harder than this machine does.
> if you've ever driven a German car, you'll realize that the car was built for engineers and not for end users -- weird little user-hostile features pop up everywhere
I drive a German car, all be it one from 2015, I don’t recognise this statement at all.
I agree. Parent comment is making extremely generalized statements, about German cars with overconfidence. There’s not a single “German” car, it’s a huge ecosystem of brands like VW (Audi, Porsche), BMW, Mercedes. I’m quite sure they don’t have the single “user-hostile” interface.
They all look the same, e.g. like sh*t IMO, so although the above statement sounds overgeneralized it doesn't meant that it doesn't generalize well. IME it does.
As a non German but someone who has lived there for 10 years my take is that its cultural part of being Germans. They always seem to gravitate towards making things just a little bit more difficult.
Sthe keyboards are not QWERTY. They're QWERTZ.
Traffic lights are in excessive combinations of green/yellow/red. Sometimes you might have yellow/red light sometimes only red.
Roads often have "end of speed limit" sign. But the speed limit might have been temporary for construction. So now you have to remember the original speed limit. Why not post the actual speed limit again?
Stuff like this is absolutely everywhere in the German society for apparently no reason.
EDIT: Adding the best for last.. in Germany when you have an IBAN bank account (you know the I stands for international) you must have German international bank account, or else it will be rejected by everyone and everything.
There are many different keyboard layouts, at least nowadays there is only one German layout. For Spanish there are 2 different layouts which are both actively sold.
The meaning of yellow on traffic lights is no problem, you'll see it for no longer than 2 seconds. Unless it flashes yellow which means that the traffic light is shut off, then "right before left" applies.
Some countries only have a green light, no red and no yellow. Now that is a problem because if the light is off because you a) don't see it, you have to know that it is there, and b) don't know if it is operational.
The end of a speed limit indication means the same as no speed limit indication. The lawful limit for the type of road applies, 50 in the city, 100 for rural roads, unlimited for Autobahn.
Thats why on the Autobahn there will be a speed limit indication after every on-ramp, if there is no speed limit sign then it is unlimited.
With respect, you’ve given the typical German response to virtually any outsider’s criticism anything German: no, it’s simple, you’re just not doing/understanding it correctly, just learn a, b and c, and then do d, e, f and g.
(Except Deutsche Bahn; no-one argues at criticism there. It’s quite refreshing!)
I know how the traffic lights work, point was that there are just excessively many of different combinations in Germany rather than just a single standard green/yellow/red.
"The end of a speed limit indication means the same as no speed limit indication. The lawful limit for the type of road applies, 50 in the city, 100 for rural roads,"
See, that's already wrong because the "Landstraße" may be 70, 80 or 100 depending on the exact road. If there's construction you might have a lower speed for the construction and then "end of limitation" at which point you have to remember whether the road is 70, 80 or 100.
Another example, if you have a Landstraße that is 100km/h, but you have a section that is 80km/h which has construction that has 50km/h, after construction you see "end of limit" what's the speed you're allowed to drive? 80 or 100? If you just had the speed limit sign all this confusion would simply not exist.
France does the same with regards to speed limits. There are also signs telling you the speed limit hasn't changed, or telling you to watch your speed, but without giving you the speed limit!
You are supposed to guess the speed limit from the size and shape of the road too. When I ask, almost nobody knows what is the speed of a road, they just wing it.
By law the speed limit has to be posted before an automatic speed trap (they are everywhere in France). Essentially training everybody that speeds limits are only for avoiding the speed trap "tax", but don't matter otherwise.
I can't speak to Germany, but we also have "end of speed limit" signs in California, and here they definitely mean what the other commenters have said, i.e. the basic speed rule applies. Just based on reading these comments, the German rules seem to be the same here, so I would very much suspect that that in your example the speed limit is unambiguously 100km/hr after the "end of limit" sign.
German here. Some of it I can agree with. The traffic light though is very simple. Yellow means “it was green and will turn red”. Red+yellow means “it was red and will turn green”.
It’s this way in the entire country. There are many things I can get upset with in Germany (I moved abroad 10y ago and have an outsider’s perspective by now) but the traffic light example to me just indicates you didn’t ask why certain things were the way they were.
"The traffic light though is very simple. Yellow means “it was green and will turn red”. Red+yellow means “it was red and will turn green”."
That was not the point, that's the standard way the lights will work.
The point is that sometimes you have a light combination where actual light post only has yellow/red for example (no green light). Sometimes you have a light post that has red only (on, off).
(I'm sure there are various German things to criticize or to make fun of. Much of what I read here, however, says more about the (US?!) authors, though.)
My experience is totally to the contrary. That American software is overpromoted crap - see you there Salesforce.
I have an (admittedly) older BMW. It just works. At first I thought that the cruise control lever is worse than buttons on the weel. After spending a lot of time in the car - no it isn't, it's much better.
I’ve rented many different brands and the BMW interface is by far the best and quite consistent across generations. It hasn’t changed all that much since early 2000s. What exactly do you think was “user-hostile”? If you want to see bad UI/UX, try a Range Rover. Unfortunately all brands collectively (even BMW) have taken a step back with the latest generation of cars and the touch-screen-all-the-things craze.
> if you've ever driven a German car, you'll realize that the car was built for engineers and not for end users
Perhaps they were built for engineers designing the car not for the actual people repairing or maintaining them - they are notorious for requiring a cascade of disassembly for repairs of simple components, require specialist tools, overengineering of components etc.
I don't know about culture in German companies, but my experience with end-user products is the opposite of yours.
I used to have a 2005 c-class mercedes, and that was a great car. Everything was well thought-out and had some very nice touches I didn't even know I needed and haven't seen in any other car my dad has had since then. It was very reliable and even had a recall some 3 years ago for a minor issue with the sunroof – which didn't manifest in my specific car.
I also have a Siemens dishwasher that is absolutely great. It has direct buttons on the front for direct selection of the different washing cycles it has, plus delayed start, extra rinse, and half load. It has an app, but you'd never know if you didn't read the manual – everything is accessible through the front panel and intelligible icons. The drawers are adjustable with the latches you need to pull on falling right under your fingers when you hold them.
In contrast, my LG washer + dryer is much more of a PITA to operate, with indicators that don't fall in front of the labels. I have to count the programs and the wheel clicks just to be sure which one is actually selected, even though I've had it for two years now. The thing doesn't even have a dedicated spin cycle! You can only select it as part of some other, larger cycle, or by using the app to upload a "custom" program. But without the app, there's no way of knowing what the currently loaded 'custom' program does until you actually start it.
I used to solve differential algebraic equations using Lagrange polynomials.
Essentially you convert the differential equations into an algebraic system by discretizing the solution. The method is called Orthogonal Collocation on Finite Elements (OCFE), and it was developed by chemical engineers.
The Lagrange polynomials were calculated at special knots that corresponded to Radau interior points, which work great for stiff systems.
It’s great for solving differential algebraic equations through purely sparse matrix operations, no explicit integration like Runge Kutta.
(Well, it’s implicit Runge Kutta).
MCPs (especially remote MCPs) are like a black box API -- you don't have to install anything, provision any resources, etc. You just call it and get an answer. There's a place for that, but an MCP is ultimately a blunt instrument.
CLI tools on the other hand are like precision instruments. Yes, you have to install them locally once, but after that, they have access to your local environment and can discover things on their own. There are two CLIs are particularly powerful for working with large structured data: `jq` and `duckdb` cli. I tell the agent to never load large JSON, CSV or Parquet files into context -- instead, introspect them intelligently by sampling the data with said CLI tools. And Opus 4.6 is amazing at this! It figures out the shape of the data on its own within seconds by writing "probing" queries in DuckDB and jq. When it hits a bottleneck, Opus 4.6 figures out what's wrong, and tries other query strategies. It's amazing to watch it go down rabbit holes and then recovering automatically. This is especially useful for doing exploratory data analysis in ML work. The agent uses these tools to quickly check data edge cases, and does a way more thorough job than me.
CLIs also feel "snappier" than MCPs. MCPs often have latency, whereas you can see CLIs do things in real time. There's a certain ergonomic niceness to this.
p.s. other CLIs I use often in conjunction with agents:
`showboat` (Simon Willison) to do linear walkthroughts of code.
`br` (Rust port of Beads) to create epics/stories/tasks to direct Opus in implementing a plan.
`psql` to probe Postgres databases.
`roborev` (Wes McKinney) to do automatic code reviews and fixes.
I have also found this as well. CLI outputs text and input text in an interactive manner, exactly the way that is most conducive to text-based-text-trained LLM.
I do believe that as vision/multi-modal models get to a better state, we would see even crazier interaction surfaces.
RE: duckdb. I have a wonderful time with ChatGPT talking to duckdb but I have kept it to inmemory db only. Do you set up some system prompt that tell it to keep a duckdb database locally on disk in the current folder?
> RE: duckdb. I have a wonderful time with ChatGPT talking to duckdb but I have kept it to inmemory db only. Do you set up some system prompt that tell it to keep a duckdb database locally on disk in the current folder?
No, I don't use DuckDB's database format at all. DuckDB for me is more like an engine to work with CSV/Parquet (similar to `jq` for JSON, and `grep` for strings).
Also I don't use web-based chat (you mentioned ChatGPT) -- all these interactions are through agents like Kiro or Claude Code.
I often have CSVs that are 100s of MBs and there's no way they fit in context, so I tell Opus to use DuckDB to sample data from the CSV. DuckDB works way better than any dedicated CSV tool because it packs a full database engine that can return aggregates, explore the limits of your data (max/min), figure out categorical data levels, etc.
For Parquet, I just point DuckDB to the 100s of GBs of Parquet files in S3 (our data lake), and it's blazing fast at introspecting that data. DuckDB is one of the best Parquet query engines on the planet (imo better than Apache Spark) despite being just a tiny little CLI tool.
One of the use cases is debugging results from an ML model artifact (which is more difficult that debugging code).
For instance, let's say a customer points out a weird result in a particular model prediction. I highlight that weird result, and tell Opus to work backwards to trace how the ML model (I provide the training code and inference code) arrived at that number. Surprisingly, Opus 4.6 is does a great job using DuckDB to figure out how the input data produced that one weird output. If necessary, Opus will even write temporary Python code to call the inference part of the ML model to do inference on a sample to verify assumptions. If the assumptions turn out to be wrong, Opus will change strategies. It's like watching a really smart junior work through the problem systematically. Even if Opus doesn't end up nailing the actual cause, it gets into the proximity of the real cause and I can figure out the rest. (usually it's not the ML model itself, but some anomaly in the input). This has saved me so much time in deep-diving weird results. Not only that, I can have confidence in the deep-dive because I can just run the exact DuckDB SQL to convince myself (and others) of the source of the error, and that it's not something Opus hallucinated. CLI tools are deterministic and transparent that way. (unlike MCPs which are black boxes)
or install Docker and have the agent run CLI commands in docker containers that mount the local directory. That way you essentially never have to install anything. I imagine there's a "skill" that you could set up to describe how to use docker (or podman or whatever) for all CLI interactions, but I haven't tried yet.
Are they the echo show? I don't get ads on my dots but the show shows ads most of the time, when I really want it to show the clock face instead.
Region might matter. I set it to Australia/New Zealand region and for about a year it didn't show ads. But it does, now, even though it talks with an Australian accent.
The Alexa's with video screen will start to show ads no matter now many times you set it to no ads. There are settings for No Ads, and after a few days, that setting is reset to allow ads. I had one so I could quickly see my Blink camera, but I threw it away because it kept showing ads.
If you vector index your code base, agents can explore it without loading it into context. This is what Cursor and Roo and Kiro and probably others do. Claude Code uses string searches.
What helps is also getting it to generate a docs of your code so that it has map.
This is actually how humans understand a large code base too. We don’t hold a large code base in memory — we navigate it through docs and sampling bits of code.
> For this reason, programming languages, at least how we understand them today, have reached a terminal state. I could easily make a new language now, especially with the help of Claude Code et al, but there would never be any reason for any other engineer to use it.
This is an interesting opinion.
I feel we are nowhere near the terminal state for programming languages. Just as we didn't stop inventing math after arithmetic, we will always need to invent higher abstractions to help us reason beyond what is concrete (for example, imaginary numbers). A lot of electrical engineering wouldn't be possible to reason about without imaginary numbers. So new higher abstractions -- always necessary, in my opinion.
That said, I feel your finer point resonates -- about how new languages might not need to be constrained to the limitations of human ergonomics. In fact, this opens up new space of languages that can transcend human intuition because they are not written for humans to comprehend (yet are provably "correct").
As engineers, we care about human intuition because we are concerned about failure modes. But what if we could evolve along a more theoretical direction, similar to the one Haskell took? Haskell is basically "executable category theory" with some allowances for humans. Even with those tradeoffs, Haskell remains hard for most humans to write, but what if we could create a better Haskell?
Then farther along, what if we created a LEAN-adjacent language, not for mathematical proofs, but for writing programs? We could throw in formal methods (TLA+) type thinking. Today formal methods give you a correctness proof, but are disconnected to implementation (AWS uses TLA+ for modeling distributed systems, but the final code was not generated from TLA+, so there's disconnect). What if one day we can write a spec, and it generates a TLA+ proof, which we can then use to generate code?
In this world, the code generator is simply a compiler -- from mathematically rigorous spec to machine code.
(that said, I have to check myself. I wonder what this would look like in a world full of exceptions, corner cases, and ambiguities that cannot be modeled well? Tukey's warning comes to mind: "Far better an approximate answer to the right question, than an exact answer to the wrong question")
This could be a language specific failure mode. C++ is hard for humans too, and the training code out there is very uneven (most of it pre-C++11, much of it written by non-craftspeople to do very specific things).
On the other hand, LLMs are great at Go because Go was designed for average engineers at scale, and LLMs behave like fast average engineers. Go as a language was designed to support minimal cleverness (there's only so many ways to do things, and abstractions are constrained). This kind of uniformity is catnip for LLM training.
I've been doing spec-driven development for the past 2 months, and it's been a game changer (especially with Opus 4.5).
Writing a spec is akin to "working backwards" (or future backwards thinking, if you like) -- this is the outcome I want, how do I get there?
The process of writing the spec actually exposes the edge cases I didn't think of. It's very much in the same vein as "writing as a tool of thought". Just getting your thoughts and ideas onto a text file can be a powerful thing. Opus 4.5 is amazing at pointing out the blind spots and inconsistencies in a spec. The spec generator that I use also does some reasoning checks and adds property-based test generation (Python Hypothesis -- similar to Haskell's Quickcheck), which anchors the generated code to reality.
Also, I took to heart Grant Slatton's "Write everything twice" [1] heuristic -- write your code once, solve the problem, then stash it in a branch and write the code all over again.
> Slatton: A piece of advice I've given junior engineers is to write everything twice. Solve the problem. Stash your code onto a branch. Then write all the code again. I discovered this method by accident after the laptop containing a few days of work died. Rewriting the solution only took 25% the time as the initial implementation, and the result was much better. So you get maybe 2x higher quality code for 1.25x the time — this trade is usually a good one to make on projects you'll have to maintain for a long time.
This is effective because initial mental models of a new problem are usually wrong.
With a spec, I can get a version 1 out quickly and (mostly) correctly, poke around, and then see what I'm missing. Need a new feature? I tell the Opus to first update the spec then code it.
And here's the thing -- if you don't like version 1 of your code, throw it away but keep the spec (those are your learnings and insights). Then generate a version 2 free of any sunk-cost bias, which, as humans, we're terrible at resisting.
Spec-driven development lets you "write everything twice" (throwaway prototypes) faster, which improves the quality of your insights into the actual problem. I find this technique lets me 2x the quality of my code, through sheer mental model updating.
And this applies not just to coding, but most knowledge work, including certain kinds of scientific research (s/code/LaTeX/).
My experience with both Opus and GPT-codex is that they both just forget to implement big chunks of specs, unless you give them the means to self-validate their spec conformance. I’m finding myself sometimes spending more time coming up with tooling to enable this, than the actual work.
The key is generating a task list from the spec. Kiro IDE (not cli) generates tasks.md automatically. This is a checklist that Opus has to check off.
Try Kiro. It's just an all-round excellent spec-driven IDE.
You can still use Claude Code to implement code from the spec, but Kiro is far better at generating the specs.
p.s. if you don't use Kiro (though I recommend it), there’s a new way too — Yegge’s beads. After you install, prompt Claude Code to `write the plan in epics, stories and tasks in beads`. Opus will -- through tool use -- ensure every bead is implemented. But this is a more high variance approach -- whereas Kiro is much more systematic.
I’ve even built my own todo tool in zig, which is backed by SQLite and allows arbitrary levels of todo hierarchy. Those clankers just start ignoring tasks or checking them off with a wontfix comment the first time they hit adversity. Codex is better at this because it keeps going at hard problems. But then it compacts so many times over that it forgets the todo instructions.
A key part of this is making sure bite sized issues reference any related holistic concerns like code quality, testing, documentation style, commit strategy, git workflow etc.
In my experience you have to refer to the relevant docs on things explicitly in every single issue for it to work well.
Python too -- hear me out. With spec-driven development to anchor things, coupled with property-based tests (PBT) using Hypothesis, it's great for prototyping problems.
You wouldn't write mission critical stuff with it, but it has two advantages over so-called "better designed languages": massive ecosystem and massive training.
If your problem involves manipulating dataframes (polars, pandas), plotting (seaborn), and machine learning, Python just can't be beat. You can try using an LLM to generate Rust code for this -- go ahead and try it -- and you'll see how bad it can be.
Better ecosystems and better training can beat better languages in many problem domains.
> You wouldn't write mission critical stuff with it
People do, they also write mission critical stuff in Lua, TCL, Perl, and plenty of other languages. What they generally won't do is write performance critical stuff in those languages. But there is definitely some critical communication infrastructure out there running with interpreted languages like these out there.
This is not new. Some checkouts do start with zip code and they feel much more efficient. (US only delivery, so country already assumed)
reply