Let's End Merchants of Complexity Together (Thank You DHH)

"Cut complexity to simplicity like autumn trees shedding leaves, pioneer innovation like February flowers blooming first."
—— Zheng Banqiao, Qing Dynasty (18th century)
This video from Rails World 2025 by DHH is brilliant. DHH started his career before 1999, and I was lucky enough to start using the internet when my father brought me to an internet cafe in China back in 1999. In the technical world, I think DHH is my online mentor who guided me through the bullshit throughout my career, including at Microsoft and other companies. I found too many bullshits when working with different folks, and I believe at least 90% of them don't accept my simplification of problems. They keep adding complexities to their pathetic projects and fail eventually. A simple project that could take one or two million dollars in manpower to develop eventually takes 10x longer time and costs 20 million dollars. All this over-complexity, over-engineering, and overthinking will eventually lead to massive failures.
Since I started learning programming, I've been finding that many so-called rules, best practices, programming languages, and frameworks are bullshit. I wasn't that skilled a programmer, so I didn't dare to say that back then.
I can give you so many examples. Take the App Store's code signing system. It's not just code signing, it's heavily coupled with Apple's IDE, where Apple didn't spend much love, and it sucks. As of now, I'm still fixing random code signing issues for my apps. Today I'm trying to fix the code signing issue with Twilar, which is a macOS Catalyst app in a very strange position.
I cannot fix it, although my customers have been asking me to. It's totally due to Apple's red tape.
Other programming languages like Java, which DHH mentioned, don't trust programmers, so they build as many red tape barriers as they can.
I think this kind of random complexity bullshit accounts for at least 50% of the current programming world. Take Kubernetes, for example. I believe only 10 companies, maybe 100 top companies, need that in this world. And I spent so much time learning it, and it's not useful at all.
Building a Complexity Bullshit Detector
So how do we build a complexity bullshit detector? I think AI is a good tool.
DHH mentioned he's been building Omarchy from the ground up using bash scripts with AI.
About AI-assisted coding, many people say "when code is written by AI, it's not code, it's just garbage." Okay, suppose this is right. If you eat food that's affordable due to mass production, are you eating garbage or food? That's the thing. So many people have that ego, like complex things should be correct. I think the opposite is true. The simpler something is, the more correctness it will have.
I think even without AI, if something can be really quick to be usable, say a minimal viable product within seven days, or with AI within two days, that's a good signal. Otherwise, I'd doubt it, because the actual blocker is something else, like legal compliance or a big platform's monopoly.
For example, I'm building a keyboard input app, and I found it's not possible to use iOS keyboard extensions to record audio, while Apple can do that very easily with their built-in model. Every player in this market is building workarounds, spending an extra 100 hours on workarounds. Apple's so-called privacy issue is just something to block newcomers and competitors. It's complexity bullshit.
There are too many examples. Take macOS apps with code signing. Apple introduced something called notarization, which is automatic App Store review. On most platforms, you can distribute apps without asking for some big company monopoly's approval.
Embracing Open Systems
Earlier last year, I made a decision to avoid cross-platform technologies and write as little platform-specific code as possible, which means fully embracing web technologies for everything.
When I sometimes have to write native code like Swift or C++, I find the design and complexity are so bad. It's simply because the platform provider has been dominating innovation on their platform. They don't want something new because if we build something new, that could overthrow their platform monopoly.
I think only a few open standards are truly open: web standards, Electron, Node.js, Ruby on Rails. These are truly open systems we should learn and use. We should build upon these simpler, cheaper, faster, better, designed-for-humans frameworks and languages. We should beat closed ecosystems like Swift hard, making sure they cannot thrive if they choose to be closed.
Why? Because closed systems are always bad. Xcode IDE has been broken for at least one year. If AI changes too many lines of code, it cannot build the app anymore. It just throws random failures. You might ask how Apple engineers do their job. I believe they're doing their job without AI at all, because if they had AI writing Swift code, they would have noticed this issue a year ago.
The broken state of Xcode is well documented. This Medium article perfectly captures the absurdity of the Xcode build issues I mentioned. The only "solution" developers have found is to restart the entire IDE, which is completely ridiculous. Even basic operations like git branch switching can trigger these failures. If Apple's own engineers actually used modern development workflows, they would have fixed this embarrassing bug long ago.
People often choose to accept authority rather than complain. When I complained about this on Twitter, some random guy from a random company said they didn't see the same issue, which is a 100% joke unless they don't write Swift or Objective-C code.
Why DHH's Philosophy Matters
I'm glad I started learning Ruby on Rails 12 years ago. I love DHH's mindset, although I don't 100% agree with everything like strong typing.
I fully agree we should be working to reduce complexity. I love Apple, I love Tim Cook, I love Steve Jobs, but I don't like the red tape built by Apple. If we reduce complexity, everything will be better. Apple will be better, developers will be better.
It's hard to imagine that 10 years ago I used Capistrano to deploy my Rails app, and now we have Kamal deployment. Things are much easier, much simpler and better now. This should happen to iOS and macOS development as well.
Tomorrow Apple will release their unimportant iOS redesign in an era where UI isn't important at all, the Liquid Glass. The new design looks great but it is definately not among the top priorities of apple. Human-computer interaction is going back to its most natural form: conversations.
I hope Tim Cook realizes the mistakes and wrong decisions and starts to fix the real issues at Apple.
A Perfect Example of Corporate Complexity
Recently I took over some consulting projects from a friend's company that had been built by programmers from Alibaba and Accenture. I found that they added so much complexity to divide a simple project with only 2K or maybe 20K lines of code into 6 different microservices. It's like a joke.
In this kind of small project, a monolith would be a million times better than microservices.
If I want to say something harsh, many people in big companies are just like tools, which is worse than AI because they know so little. They just apply their partial learning to real world issues and make everything overcomplicated unnecessarily.
I have the same feeling when reading their overly complex code as Linus Torvalds when he calls RISC-V code from Google engineers "garbage" and says it "makes the world actively a worse place to live."