Posts

Showing posts from 2018

Bookshelf Classic: The Mythical Man-Month

Image
More than 250,000 copies were printed, and yet, that was not enough to spare me countless programming and management fads.  So popular was this title that it earned a 20th Anniversary Edition and still, buzzwords like "pair-programming," "open workspaces," "test driven development," and "military style management" forced their way into my vocabulary.
Frederick P. Brooks, Jr., in 1964, managed the software side in the creation of the IBM 360 Mainframe Computer.  Working on the famed project also afforded him a view of the hardware management side, and by way of comparison, he noticed that no developments in software could, or ever would, improve productivity, reliability, and simplicity in the same way hardware improved with advances in electronics, transistors, and large-scale integration.  Noting Moore's law, Brooks writes "We cannot expect ever to see two-fold gains every two years." 
The essays in The Mythical Man-Month shed lig…

A Tale Of Two Sundials

Image
It was the best of times, it was the worst of times, ... it was the season of Light, it was the season of Darkness, it was the spring of hope, it was the winter of despair ... With apologies to Charles Dickens, I am writing about two sundials on Cornell's campus. One is outside Goldwin Smith Hall in the Arts Quad while the other is in the Engineering Quad.

Tools Of The Trade

Image
"Like many artists, I am very attached to my brushes. I love them all individually and I’m very familiar with their individual characteristics. I can distinguish between brushes of the same make, series and size. I know their degree of spring, their shape, their balance, and, most importantly of all, the marks I can make with each of them."

This was the opening paragraph from an article on Artists and Illustrators.  I'm no artist, but I felt an instant kinship.  Developers -- the passionate ones -- care about their tools in the same way.

A good computer configuration would include a fast multi-core cpu with two 24" displays.  Dual monitors were fantastic, letting me code on one display and allowing me to read email or web pages on the other.  They became less fantastic when I began to code on both displays.  The angles between the monitors were awkward and the frame separating them was distracting.  A single large monitor became more suitable, and I found 27" i…

The C Programming Language, Part 3

Image
I found C easy to pick up.  Yet, it had the wonderful property in that the more you used the language, the more there was to learn.

The book in the middle with the red title -- The C Answer Book -- provided solutions to the exercises presented in The C Programming Language (topmost book).  It was neatly done, and kept pace with the concepts presented in the source material.  Depending on how you learn, the answer book can be useful.  Back in the day, before the internet matured, it certainly was.  Today, it's not as essential because sample code abounds.

The book at the bottom was the second edition of The C Programming Language and described the ANSI standard.  A new one on Amazon sold for about $60, which made my first edition quite the bargain.  Emphasizing C's main strength, and at the same time, acknowledging a major source of difficulty, K&R expanded Chapter 5: Pointers and Arrays with diagrams of how memory was organized, how arrays were imagined, and how pointers …

The C Programming Language, Part 2

Image
The leftmost book was a first edition, and it beckoned me, sometime around 1984, from the shelves of Barnes & Nobles.  Priced at $17.95, the book was a significant out-of-pocket expense for someone on their first job, but it would prove to be quite the investment.

Turning to the Introduction, I noticed it was denoted as Chapter 0. This was a delightful self-reference to the C language itself, where arrays started with an index of 0, instead of 1.  Think of it as an elevator that marks the ground floor as "G" and the next floor up as "1."

C's array and pointer capabilities were what made the language especially powerful, compact, clear, and efficient, but it also took discipline to use them right.  Pointers let you access memory, but sloppy use can take your pointer to bad places, leading to security holes, and ultimately crashing your program.

One technique I've used to corral stray pointers was to set them null after I was done with them.  It was stil…

Bookshelf Classic: The C Programming Language

Image
My first job had me programming in Microsoft BASIC for the IBM PC (DOS).  BASIC worked well enough, but its limitations were clear.  The language was interpreted and therefore slow.  More importantly, it wasn't a modern structured language, and instead, relied on line numbers and the GOTO statement.  Anyone who has read Dijkstra knew GOTO was a bad thing.

Having learned a structured language in college (PL/I), using BASIC felt unnatural.  When a C compiler became available for the PC, I saw a chance to improve and modernize our software.  The problem was selling the idea -- a problem made harder because I wasn't fluent in C.

"It would be a staffing problem.  Not many people know C, but we can find a lot of programmers who know BASIC," noted one manager.

The argument was strong as my knowledge of C was weak.  But I knew that C, by design, was a small language and thus easy to learn.  "It has about 30 keywords," I proffered to another manager.

Unimpressed, h…

Hiding from Facebook 🙈📕

Months leading to up to Facebook's IPO in 2012, I received an invitation to join from an old neighbor and acquaintance.  I ignored it.  Upon receiving a second invitation, I replied stating that I'm not the Facebook type and prefer not to join.  My former neighbor, surprised, replied that he had never sent me an invitation.  He wasn't even a member.

And the Facebook shenanigans have ramped up ever since.

One trick I learned to block my desktop from accidentally accessing facebook is to update the computer's host file.  The technique works for Linux, Mac, and Windows, and you will need elevated permissions to do so... and maybe a techie friend.

MacOS and Linux
sudo vi /etc/hosts

Windows
notepad C:\Windows\System32\Drivers\etc\hosts

Add the following entries:
127.0.0.1    facebook.com
127.0.0.1    www.facebook.com

The address 127.0.0.1 maps specifically to your local PC, and is sometimes referred to as "home."  Consequently, any application, social plugin, or invisibl…

Bitcoin: 15 minutes (or more) of privacy

Image
Andy Warhol was right when, in 1968,  he said "In the future, everyone will be world-famous for 15 minutes."

Now that the future is here, what everyone seems to desire is 15 minutes (or more) of privacy.  At least that's what occurred to me when I asked myself what problem Bitcoin, and more specifically, blockchain is trying to solve.

Digital currency offers the ability to hide transactions, and is often associated with those who purchase illegal goods or launder money.  But digital currency is also used for legal transactions and appeals to those with memories of the 2008 recession; they want to have as little to do as possible with the banks that contributed to it, and that often means using some combination of credit unions, cash, and Bitcoin.

Unlike Fiat money, Bitcoin is not backed by any government. It operates independently of any central bank and lives on the net.  This is made possible by a mathematical token referred to as the blockchain.  It follows the Bitco…

Bookshelf Classic: The Design and Evolution of C++

Image
There was a time when I put a corporate seal on my favorite books.  Dr. Stroustrup noticed the embossed seal, ran his fingers over it, and remarked "nice" as he signed my copy.

The book was  published circa 1994, and Stroustrup was on hand to give a talk to an eager C++ user group.

While the book describes the early evolution of C++ -- the proposals, the decisions, the trade-offs, and the mistakes -- it is in the early sections where we learn most about the author.  Stroustrup writes:

"It is often claimed that the structure of a system reflects the structure of the organization that created it.  Within reason, I subscribe to that idea."

In my years of programming and working with management, I have found this to be very true.  This was Stroustrup's way of saying the C++ language is largely shaped by who he is.  While it's no surprise he has advanced degrees in mathematics and computer science, we learn that his hobbies include history and philosophy.  Descri…

Kid at Heart, Beginner's Mind

Image
What do Hot Wheels, the XO Laptop, and Mozart's Nachtmusik have in common?  Each one appeals to the beginner and opens the door to something more complex.

There is a way of thought in Zen Buddhism referred to as "Beginner's Mind."  Approach activities with the mind of a beginner, even routine things such as eating.  That's because  "In the Beginner's Mind there are many possibilities. In the expert's mind there are few."

Mozart's Nachtmusik is a popular introduction for those new to classical music, whether as a listener or as a budding musician.  Listen to the clip above and you will understand better than any words I can write.

The XO Laptop brought the concept of computers and programming to children. especially in underdeveloped nations.   It did not succeed as planned, but the hearts behind it were in the right place.  The Verge (2018) recently took a thorough look back, accompanied by some sharp photos:

OLPC’S $100 Laptop Was Going To C…

iPhones In Stretch Jeans

Image
Current iPhones are just too large.  I saw one -- an iPhone 6 perhaps -- squeezing out from the front pocket of a young woman's stretch jeans.  With each step she took, the iPhone slid a little further out.  But she couldn't save it as her arms were full with two trays of sheet cake.

Walking past her, I made eye contact, and then looked down to her pocket.  She smiled and asked, "Could you?..."

I gently pushed the phone back into her pocket.  She thanked me and I continued on my way.

When I recount this tale, the guys would, in mock frustration, say "Mike, what's the problem?  Why are you complaining that phones are too big?  Did you at least get her number?"

Okay, this particular situation made for a fun blog entry. But being serious, a phone should fit in your pocket comfortably and be properly sized for one handed operation. The iPhones that came after the 4S pushed past those boundaries, delaying my upgrade from the 4S until it could no longer func…

Microsoft Git-Hub Hub-Bub 🙀

The developer community is divided over Microsoft's purchase of GitHub.  In simple terms, it's closed source versus open source.  ArsTechnica's take is that GitHub had no good alternative, but some developers are having none of that, and are actively exploring options such as GitLab and BitBucket.

For perspective though, and at the risk of sounding like your high school English teacher, read the following articles on Steve Ballmer and Satya Nadella.  Compare and contrast.

Vanity Fair 2012:
Ballmer and Microsoft’s Lost Decade

Wired 2017:
Nadella and Microsoft’s Future
Bill Gates and Steve Ballmer were more than their sums.  Together, they made Microsoft formidable and feared.  Alone, however, Ballmer was a functional CEO, executing in the present, but unable to take Microsoft into the future.
Nadella came from within the ranks of Microsoft, and given the complexity of the company, an insider for CEO was a good thing.  A telling and significant move was that Nadella allowed so…

Phone Cradle Hack

Image
It dawned on me during breakfast.  Coaster sets come in various containers and as I stared at this particular empty holder, I realized it could be used to hold my iPhone.  It props your phone up a bit, and there's a convenient opening to channel your recharging cable.

And what of the coasters it once held?  Without a home, they are coasting around the dining table.






Connections

Image
Opening a drawer in my hotel room in Toronto, I found this.  I worship at the altar of tech, but I imagine the reaction between two priests might go like this:

Mormon Priest:  "At least we're wireless!"

Catholic Priest: "And from the very beginning too!"