Tools Of The Trade

"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

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

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

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

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

Add the following entries:

The address 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

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++

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…