Sunday, December 30, 2012

The numbers show C++ is in decline

I love C++. I think it's cool. I wish I knew it better than I do. I think C++11 is awesome and I recommend to people who want to write cross-platform iOS/Android apps that they use C++.

That said.

There are a lot of reasons not to use C++ for anything in userland other than, say, games. And even then I would say this is mostly a restriction of the platform and its APIs than anything to do with language advantages. You can manage memory off-heap when needed in managed languages.

This blog post documents reasons to not use C++ well. Most of that is debatable, and Microsoft is proselytizing a "C++ renaissance". I wish that were the case in a lot of ways, but the rest of the world is in disagreement. I present the following:



I think this reflects the kind of demand for C++ engineers you see out there in the world. And let's remember, this only samples the jobs that list C++ somewhere in the description. It doesn't mean the job has anything to do with programming C++.

C++ is fantastic for game programming and HFT. I think both of those careers are going to be fairly short-lived in the greater scheme of things, and the above reflects the way the job market is headed.

Thursday, December 27, 2012

The Unspoken Linux Future: Android

I like this blog called "Linux Rants" and I follow Mike's posts on G+. He posts semi-frequently (i.e. doesn't take over my feed) and I like reading the hardcore Linux angle towards tech topics.

Earlier today, he linked to this article in PC World called "Five Reasons 2012 was a great year for Linux". My response was simple: "how did Android only get one mention in this article?" For all of the advancements that Linux on the desktop has made in the past several years, none of that compares to Android. Let's look at the numbers.

  • Ubuntu has something like 20 million existing users. Android will add that number of new users in the next 15 days.
  • The article discusses "preloaded prevalence" and a handful of companies shipping PCs with Linux preloaded. Android must have dozens, many of whom are making billions shipping android. I can't find a definitive list but I counted at least 20 here.
  • The article also discusses "gaming acceptance" -- and I agree, it is a huge deal that Valve is beginning to support Linux and a great hedge for them -- however, if you compare the sheer number of games, or hours of games played, Android will again dominate.
  • Android has already been forked successfully by many hardware vendors into successful products. Nook and Kindle Fire come to mind.
I'm not saying this all to pooh-pooh the results that Ubuntu and others have put up there. I'm pointing this all out to get Linux fans (a group I include myself in, even though I type this on a Mac currently) to focus on the future. That future will be Android. At some point, the several million user base of OG Linux becomes secondary to the billion user base of Android (est. June, 2013). Or, if Tomi's predictions are correct, the two billion user base by 2015.

When something has that much mindshare, it permeates everything. That's how Windows became a viable alternative and then the mainstream for workstations (RIP SGI) and a very popular server platform. When a platform can offer vertical integration, that's a big deal, and something Microsoft leveraged very well. I think Android is going in the same direction for a slightly different reason...

So now imagine the future. Try even today. What are we using? Mostly cloud services. No need for corporations to run their own servers. Email is hosted by Google. Docs are Office 365 or Google apps. Even code is in the cloud. I made Github the standard for our engineering team. Reviewboard is a SaaS we pay for as well. Every possible chance, I push stuff we need up to a SaaS product or the cloud.

This is already the standard. When I hear about school districts wasting money for Exchange and Windows (or Mac), I seriously get angry. Take Google up on their offer to do this for you for free. Then just get educators Chromebooks or Transformers. Buy a few Windows boxes or Linux boxes for the educators who need it to run specialized software.

In that future, why do I need an OS like Linux as it's baked today? I don't. I don't need X11. I don't need chkconfig, mysql, etc. It's handy for developers, but even then I almost exclusively work on remote boxes as it is (the exception is when using IntelliJ).

So while I'm happy that Linux is making strides to be easier to use, it's like Windows 8: polishing the legacy path. There's no growth left there. I've tried installing Linux on Mac and using it a few times but have given up. I just don't care enough to deal with the driver crap.

Instead, I'll just bide my time for the laptop of the future. The laptop of the future is an improved Transformer or Chromebook. The desktop PC of the future is a Chromebox, "Androidbox" or something like it. And while there may be forks of Linux in the future specific for gaming (as it appears Valve is looking at with their hardware), to me, the massive userbase of Android and the hardware support there does make this a mutually exclusive choice. You can focus your open source development, OEM work, etc., on "legacy" Linux distributions like Mint and Ubuntu. Or you can focus on Android. I just don't see people choosing anything but Android and the web for big time open source efforts, maybe as soon as 2013.

Full disclosure: several months ago, I contacted a friend at Google about potentially porting X11 to Android in order to give a better path to making Android a full-fledged desktop OS. I ended up scrapping the idea because I figured that ultimately, another solution will be had for windowing on Android and for its native apps.