Apple's Busy End of Year

When IBM produced their desktop operating system -- OS/2 -- it was with a mainframe mindset.  That hurt more than it helped, and OS/2 failed against Microsoft, a company with a desktop mindset.

Ironically, when Microsoft produced their handheld operating system -- Win CE -- the desktop mindset caused them to fail against Palm, a company with a handheld mindset.

The lessons are obvious.  Don't cram a mainframe into a desktop.  Don't cram a desktop into a handheld.  Prowess in one domain can be baggage in another.

For a deep retrospective on the failure of OS/2, see Ars Technica: Half an operating system: The triumph and tragedy of OS/2.  For a shorter take, click on the "We asked for it" image to read my essay which appeared in Computer Language November 1990. And for a riveting read on Palm's battle with Microsoft and the struggle to IPO, visit the Internet Archive for  Piloting Palm, by David Pogue and Andrea Butter.

This year end, we saw Apple with an uncharac…

Programmer Humor for the Holidays

Maybe we programmers take ourselves too seriously.  How else do you explain the infamous Google Manifesto written by James Damore linking programming ability to gender?  Or  Levandowski being charged with stealing Waymo's intellectual property and fleeing to Uber?  Or the growth of the tech-bro culture?

If only a sense of humor could be tested as part of the interview process!  I've found humorists and comedians to be remarkably intelligent, as a good sense of humor requires imagination, a strong grasp of wordplay, and the ability to read a room.

To help with the upcoming holiday gatherings, I've collected a handful of programmer jokes.  Use at your own risk.

Q: How do you get rich with C++?
A: Inheritance!

Q: Why is C a rude language?
A: Because it has no class.

Q: Why do Java programmers wear glasses?
A: Because they can't "see sharp."  (C#, developed by Microsoft, gets grudging respect as Java done right)

The one-liner below is credited to Eric S. Raymon…

Post Processing: Watch Your Language, Jaron Lanier Fixes The Internet

Watch the rise and fall of your favorite programming languages, set to music: Popular Programming Languages 1965-2019.   The lead changed multiple times and the YouTube video ended with the top 3 languages being Python, Java, and Javascript.  Okay, C# came in 3rd if you don't consider Javascript a real programming language.

This was the work of a first year PhD student who mined data from GitHub repositories and historic national surveys.  It's not far from the TIOBE index I wrote about in a previous Post Processing which ranked the top 3 languages as Java, C, and Python.

There is yet another language survey done by Stack Overflow.  It polled its membership, and nearly 90,000 developers responded.  While 90,000 is a healthy sample size, keep in mind those polled still represent a closed environment.

Top 3 loved languages: Rust, Python, TypeScript.
Top 3 dreaded languages: VBA, Objective-C, Assembly
Top 3 languages programmers want to learn: Python, Javascript, Go

These result…

Bookshelf Classic: Beautiful Code

This book is what you get when you ask 38 top software developers "What is beautiful code?"  An open ended question, you get diverging answers such as a deep dive into a regular expression matcher from Brian Kernighan, an optimization of population counts from Henry S. Warren Jr. (for bit-heads, not sociologists), and a treatise on why code is better treated as an essay from Yukihiro "Matz" Matsumoto.

For this post though, I want to focus on Jon Bentley's contribution, curiously titled "The Most Beautiful Code I Never Wrote."  Elaborating, Bentley writes

In software, the most beautiful code, the most beautiful functions, and the most beautiful programs are sometimes, not there at all.

He then uses the Quicksort algorithm to illustrate his point, first reviewing the code, instrumenting it with counters, and optimizing it along the way.  But the pressing question he tries to answer is: "How many comparisons does Quicksort make, on average, for a ra…

Swift vs Kotlin

Dropbox wrote a candid and insightful post titled The (not so) hidden cost of sharing code between iOS and Android. It's a common dream to have "one codebase to rule them all" but reality intruded, not only for DropBox, but on projects I have worked on as well.

Dropbox needed to support both Android and iOS devices, so instead of writing for each platform in Java and Objective C respectively, they labored to produce a layer of C++ code that worked for both.  But success was hard to come by, and in their own words:

By writing code in a non-standard fashion, we took on overhead that we would have not had to worry about had we stayed with the widely used platform defaults. This overhead ended up being more expensive than just writing the code twice.

I would add, from my own experience, that a "generic code layer" targets the lowest common denominator, and fails to take full advantage of native device features.  Add that Apple and Google are continuously improving t…

On The Road To macOS Catalina, Take The Scenic Route

I've upgraded to macOS Catalina and there's a lot to like.  There's also a lot to be concerned about, and I recommend only upgrading if you have a second machine running the older macOS Mojave.

Post Processing: Swift, Kotlin, Team Scaling Fallacy, Levandowski

When I wrote Programming Languages I've Loved and Hated, it came from the heart.  In contrast, the Tiobe Index ranks the languages from the head, and is based on hits from a search query.  As of August 2019, Java reigns at #1, followed by C, and then Python.  The rankings did not surprise me, and at least 2 of my favorite languages made it into the top 3.  C++ came in 4th.

Swift (iOS) and Kotlin (Android), being specialty languages for the mobile space, were further down the list.  Swift came in at #18, but Kotlin disappointed, coming in at #45. Nevertheless, as iOS and Android users grow,  the popularity of Swift and Kotlin will likely follow.

The name Swift is easy to fathom.  The language speeds up iOS development (compared to using Objective C), and it also runs respectably fast.  The Kotlin designation is rather opaque, but being a derivative of Java, Kotlin was named after an island near St. Petersburg under the mistaken assumption that Java was also named after an island, a…