In the series Halt and Catch Fire, Joe MacMillan (Season 1, Episode 2) says:

“Progress depends on changing the world to fit us, not the other way around.”

I decided to google that, and it turns out it’s a condensed version from George Bernard Shaw, Man and Superman.

“The reasonable man adapts himself to the world: the unreasonable one persists in trying to adapt the world to himself. Therefore all progress depends on the unreasonable man.”

Feels like the story of my life (being the unreasonable man) when it comes to software development!




The Rock

I first found it in my back yard – the lawn mower ran over it and the blade took a sizable chunk out of it.  How it got there, I don’t know, as I’d mowed that section of the lawn many times.  But there it was, sort of grey with flecks of quartz scintillating in the sunlight.  And of course with a chunk missing.  Good thing rocks can’t bleed.  Still, looking at it, I felt a kind of sadness that this rock had somehow found its way into my yard only to be partially decapitated by the spinning blade of the mower.

I brought it into the house.  No point leaving it in the yard for further potential mutilation.  It wasn’t that big – maybe the size of a big melon, and seemed rather light for a rock.  I put it on the coffee table, the bloodless gash turned out to make good “foot” for it to rest on, its grey face and many faceted pinprick eyes staring up at me as if to ask some unspoken but important question.   I had no answer; even the cats sniffed it just once and promptly got bored.  Still, there it was, a stranger that had been invited into the house but that leaves an awkward silence between guest and resident, each wondering where this was going.  Each wondering, maybe this was a mistake.  But then again, the rock didn’t have much choice in the matter, did it?

As I did the various chores of the day, I’d occasionally walk by the coffee table that was somewhat reluctantly, but without complaint, holding this new burden.  I kept noticing how the living room felt different – yesterday, there was no rock on the coffee table, today there was.  It felt strange having this new addition in the house, and yet at the same time growing familiar.  Every time I walked by it I experienced surprise, a flash of “what is that?” that was replaced immediately with “oh, it’s the rock.”  This happened several times throughout the day until at one point I realized I had passed the rock without even noticing it.  Even the coffee table seemed more at ease, as if it were growing more comfortable with this new addition.

After feeding the cats their late night snack and turning off the kitchen light, I headed upstairs to bed, and on a whim stopped in front of the coffee table and gave the rock a gentle pat, whispering “Good night.”  With no light to reflect off the tiny quartz shards, it seemed asleep, eyes closed.  Yet it also seemed to feel a kind of foreboding, the way someone pretends to be asleep because they don’t know what’s going to happen next but hope whatever it is will just go away.  I decided not to disturb it further.

Blame it on the glass of Shiraz I had with dinner, or the full moon, but I awoke at 2 AM with the call of nature.  Heading downstairs, the rock was awake now, moonlight glimmering in its eyes.  Feeling a bit self-conscious in my nakedness, I stepped quickly past it.

The next morning I noticed something odd.  There were flakes of what can only be described as debris in a circle around the rock.  Sort of like dandruff or flakes of dead skin.  Maybe the cats had after all taken an interest in the rock and had brushed off some loose material when they rubbed their noses on it.  It glared up at me in the morning sunlight, its eyes dulled a bit by whatever had transpired in the night.  I decided to leave it, as I wasn’t sure if wiping it with a rag or washing it would do more harm than good.  That night I decided not to give it a goodnight pat.

Every morning, there was a new pile of this rock dandruff in a ring around it.  Every morning, I brushed it off the coffee table, being careful not to touch the rock.  The coffee table was annoyed – these flakes were sharp and left tiny, almost microscopic scratches in its surface, something that wounded its antique pride.

A week later, the rock died.  I came downstairs to find a pile of rubble instead of a rock.  It had shattered into a hundred fragments, its bones and cartilage and sinews all crumbled apart.  Perhaps the original blow by the lawn mower had created tiny internal fractures and it had finally succumbed to its wound, which must have been more grievous than had first appeared.  Its eyes were gone, only dull, empty grey ruin remained.  I grabbed the dustpan from the kitchen shelf and swept up its corpse, and was about to toss the remains into the trashcan when something in me stirred – this was an ignominious burial for my house guest.  Instead, I took the dustpan outside and scattered the remains on the lawn.

That night, in the waning full moon, the lawn gleamed like diamonds.

Microservices: Myth, Madness, or Magic


If you drink the Kool-Aid, the key phrases to the microsservices bandwagon are:

  • loosely coupled services
  • fine-grained
  • lightweight
  • modular
  • resilient
  • parallelizes development
  • scaleable

The irony here is that we’ve heard pretty much the same mantra starting with object oriented programming / architecture / design, so why are microservices now suddenly (one of) the in-vogue solution to problems that have not been already solved? 

Read more on Code Project.

The Year of IoT – Hooking up a 2 line LCD Display







There are quite a few blog posts and articles on hooking up the LCD1602 (shown above) to the rPi.  But understanding what is going on with all those “magic bits” being set was a mystery, until now!  So if you’re looking for an example of how to talk to the LCD1602 with an rPi and using .NET Core to communicate over the I2C bus, and really understand how it works, you should find the article (link below) to answer all your questions.

Read the full article!

.NET Core nginx, and Postgres with EF on an rPi


My first article of 2019!

This article accomplishes quite a few things:

  1. Determining the rPi version and capabilities.
  2. Imaging an OS onto a USB drive.
  3. Setting up SSH so we can use PuTTy and WinSCP to communicate to the rPi.
  4. Installing Postgres and creating a test database.
  5. Installing .NET Core 2.2 and testing out Postgres connectivity, both from a Windows box and directly on the rPi.
  6. Creating an “echo” HTTP server.
  7. Installing and configuring nginx for HTTP.
  8. Configuring nginx as a reverse proxy to our .NET Core “echo” server.
  9. Configuring nginx with a test certificate.

And the big accomplishment here is that we did all this without using ASP.NET Core.  Frankly, it’s damn hard to find any articles that are not related to ASP.NET Core with regards to nginx, setting up HTTPS, etc., so hopefully the reader will appreciate the bare-metal approach that I’ve taken here.  My next article will dive more into creating a real website (a port from an existing website), working with performance issues (that horrid 8 second connect delay to Postgres) and who knows what else.

Read the full article!