Posts

Showing posts from 2019

Apple's Busy End of Year

Image
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

Image
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

Image
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

Image
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

Image
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

Image
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…

LuldCalc For Android

Image
LuldCalc is now available for Android.

Learn more about Limit Up Limit Down here: http://www.luldplan.com

See our privacy policy:
https://www.ytechnology.com/p/luldcalc.html

The app is now available on Google Play:



Bookshelf Classic: Design Patterns

Image
This is an odd book.  It is a classic, yet among the least useful books in my library.  The authors Gamma, Helm, Johnson, and Vlissides, affectionately referred to as the "Gang Of Four," wrestled with Object-Oriented Programming (OOP) to produce a catalog of solutions.  Inspired by the pattern languages used in architecture -- notably by architect, design theorist, and professor, Christopher Alexander -- they worked to imbue software development with the same formality, benefits, and gravitas of the age-old discipline.

To some degree, the "Gang Of Four" succeeded. They explored and reinforced a working vocabulary regarding software design such as Model View Controller, Singleton, and Factory.  Unfortunately, they also promoted jargony and academic terms such as adapter which is better known as wrapper, observer for publisher/subscriber, and compositor and composition for formatting classes.

OOP, while still popular, is waning, yielding to both new styles such as f…

The 24x7 Trap

Image
One Sunday morning, I noticed a US Postal truck driving like a DHL delivery van -- in a word, frantically.  Normally, my mail carrier is methodical, efficient, and friendly.  Apparently, he was delivering for Amazon.

I've read accounts where the drivers welcomed the extra work and the subsequent pay, but I've also read accounts where additional tools -- straps and dollies -- weren't provided to help with larger and heavier packages, making those drivers uninterested in the overtime.

On another Sunday morning, my bank branch was open, mainly because the bank across the street adopted Sunday hours.  Inside, the mood was somber and the air was stale.  The ventilation system was dialed back to account for fewer people.  Normally, the tellers were friendly and engaging, offering lollipops to customers with children.  Looking into the tellers' eyes, I could see they just hoped to make it through the day.

I never went back on a Sunday.  Fortunately, the extended hours at the…

LuldCalc version 1.1 Available

Image
Version 1.1 is available for downloading at the app store.  The changes are cosmetic: contrast and readability have been improved, and the icon has a cleaner design.

More info about LuldCalc can be found here: https://www.ytechnology.com/p/luldcalc.html















DIY: Hide The Mac Desktop

Image
macOS Mojave introduced stacks to organize and clean up the desktop.  I like and use that feature, but sometimes, I want to go a little more minimalist and hide my desktop entirely.

Those who have bitten the Apple already know the commands to hide and show the desktop.





Hide:
defaults write com.apple.finder CreateDesktop -bool false && killall Finder

Show:
defaults write com.apple.finder CreateDesktop -bool true && killall Finder

For the uninitiated, I will explain the commands and help you put them in a couple of scripts so you can hide and show the desktop at will.

First, you will need to launch the terminal app.  It lives in the Utilities folder, but you can also use Apple's Spotlight Search and type in "terminal"


Once you launch the terminal, you can type in the above commands and watch your desktop hide and reveal itself respectively.

The defaults command gives you access to the Mac OS user default settings.  You can read the value of CreateDesktop, or in th…

Programming Languages I've Loved and Hated

Image
Upon encountering various programming languages during my career, some appealed to me instantly, while others left me cold.  I never really understood why, but perhaps by writing about them, I can discern a pattern.

PL/C: This was the first language I learned.  Structured, imperative, and procedural, PL/C was Cornell's teaching variant of PL/1, and the language shaped much of my thinking.  It was a good language, and I liked it, but it was also an academic language and one I would never see or use again.

Basic (IBM PC): It was hate at first sight.  The language relied on line numbers, needed GOTOs, and was interpreted. But it was early in the PC days and I had to use it if I wanted to do anything useful.  In time, Basic became a compiled language and eventually evolved into Visual Basic for Windows programmers.  But even then, the first version of Visual Basic did not directly support arrays, an omission that convinced me that Basic would forever be a dumbed-down language.

8088 Asse…

Post Processing: Hiring, Microsoft, Einstein, Google Fi, and Linux

I explored how tech hiring was broken in two previous posts: The Best Selling Tech Book On Amazon Is ... and Alternatives to the Whiteboard. An article from CNBC adds to the story.  Historically, the Google hiring process required six to nine months and 15 to 25 interviews, but learning the lesson of diminishing returns, Google has adopted the "Rule of Four."

In the post Git-Hub Hub-Bub, I wrote how Microsoft, under Nadella, is different and better than when it was under Ballmer.  Microsoft continues that trajectory as written in Bloomberg's The Most Valuable Company (for Now) Is Having a Nadellaissance.  Most telling is Nadella's mature reaction to a $1 trillion valuation: "... not meaningful" and any rejoicing about such an arbitrary milestone would mark "the beginning of the end."
The figurines Albert Einstein and Homer Simpson sat together on my shelf for a few years.  Every now and then, I wondered what they would say to each other if they ha…

Bookshelf Classic: More Programming Pearls

Image
If you were to judge a book by its cover, you would, from the image of the keyboard, conclude this book is old.  If you were to judge this book by what's inside, you would conclude likewise because the examples are written in C and Awk.  But were you to look deeper, you would see that these are no ordinary pearls.

Jon Bentley wrote a regular column for the Association for Computing Machinery (ACM) and his essays were collected into two of books: "Programming Pearls" and "More Programming Pearls."   The first book focused on speed and efficiency, while the second book covered that and more, including debugging, I/O, and enlightening "Aha!" moments.

Because these essays were originally written for a monthly magazine, Bentley recommends taking it slow, reading one column per sitting, and trying the exercises.  Thankfully, he doesn't leave you hanging, and provides answers at the end of the book.  Chapters 5 thru 8 are the exception and can be read i…

LuldCalc Live at the App Store

Image
LuldCalc is live at Apple's App Store.  Designed for traders and stock exchange operators, it calculates the upper and lower price bands given a stock's price.  Search "Luld" on your iPhone's App Store.
The tables here summarize the rules involved in the calculations.  More details can be found the luldplan website.


Apple requires a privacy policy for all its apps. Simply put, LuldCalc is a stand-alone calculator, does not collect personal information, and does not connect to the internet.

Privacy PolicyThis privacy notice discloses the privacy practices forwww.ytechnology.com. This privacy notice applies solely to information collected by this website. It will notify you of the following:

1. What personally identifiable information is collected from you through the website, how it is used and with whom it may be shared.
2. What choices are available to you regarding the use of your data.
3. The security procedures in place to protect the misuse of your information.
4…