Marc Andreessen was once famously quoted saying something that made Bill Gates very mad and led to the browser wars. He bragged that Netscape would soon reduce Windows to “a poorly debugged set of device drivers.” I always thought that was a good diss, and a good goal to have. https://twitter.com/jhamby/status/1325928779001180160
I wouldn’t say that now, though, because Windows device drivers are generally extremely well-debugged. But they weren’t in 1995, especially if you were lucky enough to have one of the new-fangled SMP systems running Windows NT.
In terms of all-time great predictions, though, the early Web proponents were quite correct that for most people, having a good version of Netscape->Mozilla->Firefox, or similar browser, is sufficient for much of their computing needs. Java applets failed and Flash rose and fell.
But we now have JavaScript and HTML 5 stuff that works far better than it should have any right to, partly because of a friendly arms race between browser makers that led to vast improvements in JS, DOM, etc. performance.

Where Windows/native code still excels is for games.
Games, large native apps such as office suites (thank goodness for Open Office / LibreOffice for providing an alternative to Microsoft Office that supports all of the old and new file formats), and Internet servers can’t really run in a web browser, but Linux handles more & more.
Microsoft has a very loyal market for corporate desktops and servers and it isn’t going away. On the consumer side, I think they’ve really hitched a lot of hopes to being the alternative to Mac for people who want to run boxed apps like Office and Quicken and the Adobe suite.
And also as Windows being the platform to play all of your Game Pass games besides Xbox. It does all of that and Linux-in-a-VM, too. What a bargain (and you already paid for it when you bought your PC!).

I mean, I wouldn’t mess with a successful strategy like that.
It pains me to say it, but Android was the new “poorly-debugged set of device drivers” on phones of the past decade. There were such poor hardware compatibility tests compared to what Microsoft was doing by then.

Even if WP7 and WP8 made terrible missteps, they have good talent.
AOSP being open source was a bit of a mirage in terms of being so closely tied to Google’s closed-source apps. And on top of that, since only the Linux kernel was GPL licensed (and Andy Rubin and many others in that space despised the GPL because OEMs feared it), what happened…
So it’s extremely difficult to disentangle every OEMs customized version of Android from the updates that Google made, and so every handset and tablet ends up getting stuck on whatever version of Android it shipped with, and maybe not getting security patches. Unacceptable, imho.
Even with “Project Treble”, most users would have been far better off with a Windows Phone, if only because they would’ve been getting updates from Microsoft. Except that Microsoft botched the WP7 to WP8 update by changing the kernel & APIs and not running WP8 apps on WP7 phones.
You could run WP7 apps on WP8 phones, but by the time of the launch of Windows 10 mobile in Nov. 2015, most people who weren’t hardcore Microsoft fans (and I've met some who did like it) were very skeptical of buying into that ecosystem vs. iOS or Android. https://en.wikipedia.org/wiki/Windows_10_Mobile
If Google wasn’t going to port their apps to Windows phones, then why should you buy one?

“As of May 2020, Windows 10 Mobile has a 0.03% market share.”

It’s a real winners-take-all game in mobile.
The one wacky thing that came out of Microsoft’s efforts to beg developers to port their iOS and Android apps to Windows 10 Mobile was they made an iOS to UWP porting tool that you can still use to write UWP apps for Windows 10. Windows Bridge for iOS: https://developer.microsoft.com/en-us/windows/bridges/ios/
There are bridges to cross-port in a lot of directions. Kotlin Multiplatform Mobile is a new way to write the OS-specific parts in Swift for iOS or Kotlin/Java for Android, and the common business logic in Kotlin. If you’re starting from an Android app, you can port to iOS/macOS.
You can port from iOS to macOS with the latest Xcode Mac Catalyst APIs, except users will need to be on the latest macOS 10.15 Catalina or the upcoming macOS 11 Big Sur (which I expect many will upgrade to quickly if their Macs are new enough to run it at adequate speeds).
I’ve been running the macOS 11 developer betas since this summer and it’s incredibly pretty and fun to use, with the transparencies and colorful wallpapers and stuff. That’s really what you’re paying for when you pay for a Mac: the luxury experience. A bit slow on a hard drive.
I bought an iMac with the “Fusion Drive” that’s a hybrid HD+SSD, so the performance is awkwardly in between what I imagine it would be if I had an SSD or if I had a hard drive only. I wouldn’t recommend upgrading macOS to 11 if you don’t have *at least* a Fusion Drive or an SSD.
When it comes to native apps, I just think Windows is on the losing side for new apps. I don’t want to write apps in Visual Studio. All the cool kids are using VS Code, which is a totally different app. I don’t see a lot of interest in .NET Core. It all feels like too late.
Although TypeScript is pretty popular, and that’s a Microsoft thing. Microsoft is going to end up very successful in a lot of areas with their open source contributions and their closed source stores, but their .NET ecosystem feels much less relevant than Java, esp. with Kotlin.
And Java+Kotlin feels a lot less relevant than JS/WASM/C++/Rust or Swift. Half of those are plugging into LLVM so there’s plenty of code sharing going on and it’s all open source.

I’d much rather learn Rust or Swift really well (or C++) than the latest C# or Java version.
Android feels like a bit of a tar pit, in the sense that it doesn’t go anywhere useful for the general case or the future. It’s too tied to being a variant of Java for the specific use case it was being designed for circa 2005-06.
Android also has all sorts of weird nonstandard file paths and alternative shared library names and so on. The NDK manages all of that when you’re building Android apps, and there are various shims to convert between regular Linux and Android style, but I’d rather run 100% Linux.
You can follow @jhamby.
Tip: mention @twtextapp on a Twitter thread with the keyword “unroll” to get a link to it.

Latest Threads Unrolled:

By continuing to use the site, you are consenting to the use of cookies as explained in our Cookie Policy to improve your experience.