Why are we acting like they're the only one that makes mini-ITX stuff?
Who is saying that? Not the comment you replied to:
... you can use their motherboard in other cases if you care about the power supply being non-standard, or other motherboards in their case if you care about the soldered RAM.
---
Or I could just buy a mini-ITX motherboard, CPU, RAM, and mini-ITX chassis and not have to throw away any of their crap that isn't suitable.
Right now, this looks like it should be one of the most powerful mini-ITX boards that I can find on the market. I suspect MINISFORUM and others will have similar boards available soon, but right now they don't.
The whole point of Framework is that they make it very easy to buy exactly the parts you need. If you want specific parts, they will be available in the marketplace later in the year, and you can buy exactly which ones you want. If you don't want any of their parts, you're clearly not the target market.
The first I ever saw measuring in liters was the rise of the "1-liter PC" like the aforementioned Lenovo ThinkCentre "Tiny" series, the HP Elite "Mini" series, the Dell Optiplex "Micro" series, the Intel "NUC" series, etc. ServeTheHome has a great series of articles about this form factor, which they call "Project TinyMiniMicro".
Companies have been specifying chassis volume in liters for smaller desktop PCs for many years (doing a quick search found references 10 years ago), since it's an easy way to compare the size of all small form-factor (SFF) PCs, not just the tiny ones described above. But I think it's become more popular along with TinyMiniMicro-type projects, since mid-2020.
I was disappointed to see the soldered RAM, but the fact that it's a standard mini-ITX form factor means that you can use their motherboard in other cases if you care about the power supply being non-standard, or other motherboards in their case if you care about the soldered RAM.
Most of the desktops that I use these days are the "1 liter" PCs, such as the Lenovo ThinkCentre Tiny, but those are 100% proprietary parts other than the RAM and SSD. If I had a place where I needed a more powerful system and wasn't space limited, I would probably consider this machine.
the inability for either side just to simply ask the user to replace the ratty USB cable
Actually, just today I plugged my Google Pixel 6 into my Toyota Sienna and the Pixel popped up a notification that said something to the effect of "this cable may be broken, and you may have issues with Android Auto, we suggest you get a new cable."
It then worked perfectly for the next 20 minutes, until I moved my phone a little bit and it got disconnected. I have no idea what it was detecting, but it was clearly correct.
and that customers tend to blame the automaker rather than the phone manufacturer or phone software.
I've used Android Auto in vehicles made by Toyota, GM, Chrysler, and several aftermarket units. The Toyota and aftermarket units worked perfectly, while the GM and Chrysler units had major trouble. I've spoken to family members and friends who say the same thing - some infotainment system makers have done a much better job than others at implementing Android Auto. (I have not tested Apple Carplay.)
When GM says "Android Auto has bugs", they really just mean they can't be troubled to implement it well.
Most likely, you had legacy code written by shitty programmers and you hired a better Kotlin team.
Nope. It's the same idiots.
Also, in my experience, most rewrites tend to produce a better product for human engineering reasons, not software engineering ones.
[snip]
I suspect something similar happened to you. Had you just changed your Java frameworks or did any architecture, you probably would have had a similar result.
This wasn't a rewrite at all. The errors were uncovered simply by using the "Convert to Kotlin" menu option in Android Studio. After the conversion, the code failed to compile because nullable parameters were being passed to functions that had non-null arguments. In Java, nothing stops you from doing that. (In Java, I would put `Nullable` and `NonNull` annotations anywhere that I could, but the other developers did not understand how or why that was needed.)
The same bad developers continue to write bad code in many different ways. The difference now is that the compiler does a better job of noticing it.
If I had my way, we'd fire the lot of them and hire some people who know what they're doing, but I'm not in charge of hiring. In any case, I stand by the original statement: Kotlin has several features that make it harder for bad developers to do stupid things.
I've not had that particular bug in C writing driver code in 10 years. Better compiler warnings, static analysis, and most discipline when writing tests has closed the gap. It's just software development the language is the least important part.
Then you are fortunate to be working all on your own or only with people as good as you are. Unfortunately, some of us still have to work with idiots, and we welcome language features that make it more difficult for those people to make stupid mistakes.
Our policy is, when in doubt, do the right thing. -- Roy L. Ash, ex-president, Litton Industries