Monday, April 06, 2026

link dump #7


I follow a lot of RSS feeds which makes it easier for me to discover interesting web pages without having to visit my list of interesting blogs which aren't updated often.  I hate to send these interesting links via email since it feels too much like a teacher giving homework... here, go read all of these web pages and report back to me.  Instead I think collecting them in a blog post is a friendlier way to pass links along.

Given the fact that Microsoft is warning people that their CoPilot AI assistant is for entertainment purposes only and should not be trusted, this study showing people blindly trust AI results is disturbing.  I believe the results from this study since so many people fall for phishing emails which contain painfully obvious errors.
https://futurism.com/artificial-intelligence/study-do-what-chatgpt-tells-us

Speaking of absurd beliefs, apparently some people think that blood banks maintain separate supplies from donors who have never been vaccinated.  I've been donating blood for over 50 years and have seen no evidence that separate blood supplies exist.
https://www.cidrap.umn.edu/covid-19/more-people-requesting-unvaccinated-blood-themselves-or-their-children

This article about the memory devices used in the AGC (Apollo Guidance Computer) also contains detailed descriptions of other memory devices used during that time which were considered.  I remember these older technologies since I'm older than dirt.
https://2earth.github.io/website/20260304.html

I'm not surprised that repeated clonings from different generations of the same line of cloned mice has caused problems.  Entropy is a cruel mistress.
https://www.popularmechanics.com/science/animals/a70861443/scientists-cloned-a-mouse-for-58-generations-the-results-were-catastrophic/

Recently a magnetic tape containing source code for UNIX v4 was discovered.  I found the procedure used to extract the data from that old tape fascinating.  Stories about magnetic tape make me nostalgic for large computer rooms.  A row of tape drives constantly seeking and reading is a visual indication of a busy computer.  Tape drives were always my favorite peripheral devices to maintain.
https://irreal.org/blog/?p=13661

I'm not sure I would trust any Internet connection sufficiently to try using it to install directly from it to an SD card to boot Linux.  That being said, the technique is quite interesting.
https://astrid.tech/2026/03/24/0/curl-to-dev-sda/

Here's an account of the role which the Parkes Observatory in Australia played in monitoring the Apollo 11 mission.
https://www.parkes.atnf.csiro.au/news_events/apollo11/

Too often people focus on negative stereotypes of people on the autism spectrum while ignoring their creativity and other gifts.
https://www.psychologytoday.com/us/blog/positively-different/202601/what-the-world-got-wrong-about-autistic-people

It makes me happy to know that John Fogerty has regained control over his music catalog.  His songs are in many of my favorite playlists I have on my phone.  This NPR Tiny Desk Concert shows what I love about his music.
https://laughingsquid.com/john-fogerty-npr-tiny-desk/ 

Sunday, March 29, 2026

More about me

I've been working in the computer industry since 1977.  For the first 6 years of my career, I worked as a field engineer which is basically a computer mechanic.  In those days I serviced Honeywell and GE mainframe computers followed by a short stint working on DEC PDP-11 minicomputers.  I only lasted 8 months maintaining DEC PDP-11 computers because they were so simple compared with mainframes that they weren't very challenging.  Most of the service calls involved fixing the peripheral equipment such as line printers, disk drives, magnetic tape drives, card readers/punches, paper tape reader/punches, and a variety of terminals.  The calls I enjoyed most were those which involved a computer which crashed or which failed to boot since those offered hours of debugging fun.

After having a DEC PDP-11 fall on me (it's a long story) in late 1982, I decided to make the switch from computer hardware to software since it seemed safer.  It wasn't a huge change since I had been filling my idle hours working night shifts figuring out how to write machine language programs via the maintenance panel switches (see image below).  After the long hours of figuring out the data patterns to write to memory via CPU maintenance panel switches, it was easy to use switch to using an assembler for generating the executable code for me.

Honeywell 6180 maintenance panel (from multicians.org)

 

Since then I've mostly worked on systems software in both assembly language and C.  I've occasionally worked on networking protocols.  There have also been a couple strange forays into other areas of the industry like 9.5 years working on the software which runs on cable TV set-top boxes.  The technology was interesting and I loved the company but I really missed systems programming.

In 1990 I discovered that I have a strong preference for Unix and Unix like operating systems when I took a job which gave me a Sun workstation to use. Unix made me so much more productive that I couldn't bear the thought of not having access to it.  Since then I've tried to only take jobs which satisfied that itch.  Whenever I've been stuck using Windows somewhere, I've usually installed Cygwin to give myself access to a Unix style development environment.  The exception is my current job which has given me a Windows laptop too locked down to be able to install Cygwin.  Fortunately, I have multiple Linux servers at my disposal as well.

Since 1994 I've been working mostly at startup companies.  Several have been bought by larger companies which inevitably leads to unpleasant changes in company culture which I haven't enjoyed.  For example, in 1996 I took a job at a startup which developed ISDN modems shortly after it had been bought by U.S. Robotics.  USR managed to preserve the small company feel of our office but that disappeared when USR was bought by 3Com a couple years after I joined.  It was a shame since I really enjoyed the great group of people I worked with there but 3Com's changes made it clear that they would eventually shut down that remote office which they did about a year after I left.

One of my favorite projects at USR was an ADSL modem which connected to a Windows PC via USB.  We were developing that device in late 1997.  Windows 95 only supported USB via a USB support package and it really didn't work that well.  Windows 98 and later Windows 2000 fixed many of Windows' problems with USB but we had to do full drivers before the USB interface was documented in the Windows DDK.  This was during the early days of USB so the USB communications device class didn't exist yet.  I spent many hours with a USB analyzer verifying that we had the protocol correct.  USB has remained one of my favorite technologies to work on ever since.

After leaving USR, I took a job at an optical networking startup called Ocular Networks.  That was another great group of people to work with until Tellabs bought the company.  I enjoyed the team I worked with so much that we started meeting for regular happy hours at the Old Dominion Brew Pub once a week after work.  After I left Tellabs, I didn't want to lose contact with my friends, so I started a mailing list to continue our regular happy hours.

Old Dominion Brew Pub was a wonderful place to meet.  They had great good, interesting beer, and a pleasant atmosphere.  Unfortunately, Old Dominion sold their brewery and brew pub around 2008 and the new owner moved their brewing operations up to Delaware. That left our happy hour group a number of places to meet for happy hours, none of which seemed to last more than a few months. We wandered from place to place until the Fairfax Dogfish Head Alehouse opened in 2009.  We continued meeting there until the pandemic made it hard to do in-person meetings.  After that, we changed our happy hours to virtual ones, meeting via video chats.  Unfortunately, between the slowdown caused by the pandemic and a landlord who kept raising the rent, DFHA ended up having to close their Fairfax location in 2023.

link dump #6

 


I follow a lot of RSS feeds which makes it easier for me to discover interesting web pages without having to visit my list of interesting blogs which aren't updated often.  I hate to send these interesting links via email since it feels too much like a teacher giving homework... here, go read all of these web pages and report back to me.  Instead I think collecting them in a blog post is a friendlier way to pass links along.

Tracy Kidder, the author of the excellent book The Soul of a New Machine, died recently.  Here's some memories of Tracy from the daughter of one of the engineers featured in the book.  Her memories emphasize the importance of not letting work interfere with spending time with your family.
https://www.jessamyn.com/journal/2026/03/tracy-kidder-rip

I plan on re-reading The Soul of a New Machine.  A while back I had saved a link to an article with interesting notes on the book so I could access them while enjoying the book.
https://auxiliarymemory.com/2017/01/06/rereading-the-soul-of-a-new-machine-by-tracy-kidder/

Kim Stanley Robinson, author of several books about Mars, has pointed out how ridiculous the idea of emigrating to Mars is.
https://www.newscientist.com/article/2520312-author-of-red-mars-calls-bullshit-on-emigrating-to-the-planet/

NASA's plans for a moonbase seem rushed to me.  I worry that they'll be sacrificing safety to meet arbitrary goals.
https://www.livescience.com/space/space-exploration/nasa-announces-near-impossible-space-plans-including-usd20b-moon-base-and-humanitys-first-nuclear-powered-interplanetary-spacecraft

It's getting harder to get a look at the night sky which is clear of satellites. That's sad since seeing stars is one of many reasons I enjoy living in a more rural area.
https://petapixel.com/2026/03/21/as-spacex-launches-its-10000th-satellite-a-photographer-captures-the-impact-on-the-night-sky/

CERN has succeeded in transporting antimatter particles in a containment trap.  This allows them to distribute samples for experimentation at other laboratories.
https://home.cern/news/press-release/experiments/base-experiment-cern-succeeds-transporting-antimatter

Scientists have byproducts of bourbon production into super capacitors, probably extra tasty super capacitors.
https://arstechnica.com/science/2026/03/how-chemists-turned-bourbon-waste-into-super-capacitors/

There's evidence that Romans used a weapon similar to a machine gun 2000 years ago.
https://www.popularmechanics.com/science/archaeology/a70698814/archeologists-uncovered-evidence-of-a-2000-year-old-machine-gunand-the-damage-it-did/

Stephen Colbert and his son are developing a new Lord of the Rings film.  This article also mentions Andy Serkis' project, The Hunt for Gollum, which I haven't heard about in a while.
https://variety.com/2026/film/news/lord-of-the-rings-movie-stephen-colbert-warner-bros-1236698684/

Recently I read about a documentary about Lowell George of Little Feat fame.  It's available to watch free on Youtube at the link below and I enjoyed watching it yesterday.  I hadn't realized that Lowell collaborated with Frank Zappa.  I had also never noticed that he used a Craftsman 11/16" spark plug socket as the slide for his guitar.  Apparently his reasoning was that it would be easy to replace if it ever got lost while it might be hard to find the same type of bottle had he used if he used a bottle neck as many musicians who play a slide guitar do.
https://youtu.be/VZ8EKw46Ce8?si=TESumuPdWsGPj-f3

Sunday, March 22, 2026

link dump #5


I follow a lot of RSS feeds which makes it easier for me to discover interesting web pages without having to visit my list of interesting blogs which aren't updated often.  I hate to send these interesting links via email since it feels too much like a teacher giving homework... here, go read all of these web pages and report back to me.  Instead I think collecting them in a blog post is a friendlier way to pass links along.

For a while, Turbo Pascal was my favorite programming language.  The IDE it used was fast and made me more productive than other compilers available in the mid 1980s by showing me the cause of any compilation errors immediately.  This web page shows how small it was which seems weird in an age of phone applications are quite large.  It was also much, much faster than other compilers of that time.
https://prog21.dadgum.com/116.html

Somone has used AI to disassemble Turbo Pascal to better understand how it achieved such a small size.
https://simonwillison.net/2026/Mar/20/turbo-pascal/

Apparently it can dangerous to fill your SSD devices too full.  I knew this was the case on some of the low level flash memory devices used on embedded systems but thought SSD controllers would be able to handle this more gracefully.
https://www.makeuseof.com/why-never-fill-ssd-past-80-and-you-shouldnt-either/

This research into how fireflies stay in sync is fascinating.  I wonder whether this is similar to how starling murmurations work?
https://arstechnica.com/science/2026/03/the-science-of-how-fireflies-stay-in-sync/

MIT has a study which suggests that the use of AI may lead to cognitive decline.  This rings true to me.  I know anytime I've had a break from programming, it's hard to jump back in and be nearly as productive as I am when I do it regularly.  The same thing happens to software developers who move into management and completely leave programming behind.  An extreme case of this was a CEO at a small company where I used to work.  He liked to ingratiate himself to engineers by telling us about having started out as an ALGOL programmer.  From his performance as a CEO, it was not obvious he had ever possessed any technical skills.
https://publichealthpolicyjournal.com/mit-study-finds-artificial-intelligence-use-reprograms-the-brain-leading-to-cognitive-decline/ 

A number of bloggers are bemoaning the changes heralded by widespread use of AI in software development.  I'm glad I'll be retiring before management tries to force me to use it.  Programming and debugging are like solving puzzles for me and I'd hate to give that up.
https://nolanlawson.com/2026/02/07/we-mourn-our-craft/ 

Sunday, March 15, 2026

link dump #4


I follow a lot of RSS feeds which makes it easier for me to discover interesting web pages without visiting a lot of favorite blogs which haven't been updated.  I hate to send these interesting links via email since it feels too much like a teacher giving homework... here, go read all of these web pages and report back to me.  Instead collecting them in a blog post seems like a friendlier way to pass links along.

I watched Star Trek II: The Wrath of Khan again a few nights ago.  I had forgotten that they used old maintenance panels from a GE-635 mainframe computer to serve as controls for one of the Enterprise's systems.  I recognize panels from Honeywell and GE computers since I serviced both as a field engineer nearly 50 years ago.  It's not uncommon to see old maintenance panels used in this capacity since they usually have lots of lights and switches.  Here's a few other movies and TV shows which have used parts of the GE-635.
https://www.starringthecomputer.com/computer.html?c=427 

Apparently RAM kits are now being sold with one real RAM stick and a fake one due to the RAM shortage created by AI datacenters.
https://www.tomshardware.com/pc-components/ram/fake-ram-bundled-with-real-ram-to-create-a-performance-illusion-for-amd-users-1-1-value-pack-offers-desperate-psychological-relief-as-the-memory-shortage-worsens

Here's an interesting article about how how Lego goes about creating a new set.
https://www.theverge.com/c/23991049/lego-ideas-polaroid-onestep-behind-the-scenes-price

This article about how snakes manage to get up to 70% of their body length into the air is interesting but I found the picture a bit disturbing.
https://nautil.us/heres-how-snakes-defy-gravity-to-stand-up-1278914 

Scientists have figured out how to revive frozen mouse brains.  This might be a step towards allowing longer spaceflights.
https://www.nature.com/articles/d41586-026-00756-w

Iranian physicists have estimated that technological civilizations probably only last 5,000 years at most.  This could explain why we haven't encountered aliens yet.
https://boingboing.net/2026/03/03/iranian-physicists-estimate-advanced-civilizations-last-5000-years-or-less.html

Swiss watchmakers continue fighting back against accurate clocks from Japan.  It's got to be hard competing against both cheap accurate models and smart watches like the Apple Watch which can offer more features.
https://worksinprogress.co/issue/watch-men/

This article about how taxing the use of AI can be on users' brains makes me glad that I'll be retiring before being forced to use it at work.
https://www.the-independent.com/tech/ai-brain-fry-artificial-intelligence-b2934903.html

Tuesday, March 10, 2026

C versus C++


Last week at work, I was helping a colleague with some low level code.  That's because I'm the firmware guy responsible for the bootloader, OS, device drivers, and other low level code.  I wrote a couple functions for him to access capabilities he needed to use.  Since I've been writing C for over 40 years, I write in the classic (or perhaps archaic) style of the first edition of the K&R book.  This involves always returning an integer value (where appropriate) to indicate success or failure and using pointers to return any values which need to be returned.  The next day, he asked if I could help him figure out why it was crashing.  It turns out he didn't understand pointers very well.  To be fair, this engineer is much better at C++ than I am and pointers are a kind of a holdover from the days when C was more like a portable assembly language.  He's also a top notch signal processing engineer.  I ended up fixing his code to access my functions for him because my explanation of pointers didn't click with him.

About 6 months ago I had experienced something similar with another younger engineer.  To be fair, what I call the younger engineers in my group are mostly in their 40s and are all extremely competent.  Anyway, I had written a device driver for him to control the 2 LEDs we have on one of our devices.  Since I come from the days when storage was precious, I had compressed the parameter to control both LEDs and their blink rate (if not solid on or off) into a single 32-bit word.  Doing so involved bit shifting and masking which is second nature to me as I had been trained in simplifying Boolean expressions many years ago.  Engineer #2 didn't understand this code and wanted to reverse it to read what state the LEDs were currently in.  Our company has been pushing an internal version of GPT so he gave it my code and asked for code to reverse my operations to compress all that information into a single word.  It crashed his GPT session and which apparently took several days to clear up.

I think both problems stem from the fact that C++ is heavily object oriented but manages to fool old-timers like me into thinking it's just a fancier version of C.  The problem is being slowly solved as more of the greybeards like me end up retiring which I'm most definitely looking forward to.

Sunday, March 08, 2026

link dump #3


I follow a lot of RSS feeds which makes it easier for me to discover interesting web pages without visiting a lot of favorite blogs which haven't been updated.  I hate to send these interesting links via email since it feels too much like a teacher giving homework... here, go read all of these web pages and report back to me.  Instead collecting them in a blog post seems like a friendlier way to pass links along.

Nathan Fillion has been dropping hints lately which make are making fans suspect that some type of Firefly sequel might be in the works.  If I had the power to bring back a single show, it would definitely be Firefly.
https://www.ign.com/articles/nathan-fillion-is-getting-firefly-fans-all-sorts-of-excited-over-20-years-after-the-show-was-canceled 

I find a lot of anti-AI sentiment among techies and artistic types in various places.  I've lost the link, but I recently saw a CTO complaining that he got the axe because his company was replacing some executives with AI.  There's a company I definitely wouldn't want to work for or to reply upon as a customer.  I'm lucky because I'm very close to retirement with more than enough work to keep me busy until I pull the ripcord.  I feel sorry for younger engineers who have to deal with the instability AI is causing.
https://www.scottsmitelli.com/articles/you-dont-have-to/

NASA's DART (Double Asteroid Redirection Test) just managed to nudge a binary asteroid system.  There may be hope if we manage to detect a killer asteroid early enough to launch a mission.
https://arstechnica.com/science/2026/03/nasas-dart-mission-shifted-the-orbits-of-two-asteroids/

The news that younger males are clinging harder to outdated gender roles than older generations do depresses me.  One can only hope that they alienate partners before managing to reproduce.
https://www.theguardian.com/world/2026/mar/05/gen-z-men-baby-boomers-wives-should-obey-husbands

Videos of launching small cars via trebuchet are entertaining but I really wish they has stuck to launching Yugos or other worthless cars.  A classic Austin Mini seems too valuable to waste this way.
https://www.jalopnik.com/2117130/watch-cars-launched-by-trebuchet/

Sunday, March 01, 2026

link dump #2


I follow a lot of RSS feeds which allows me to find a lot of interesting web pages.  I hate to send them via email since it feels too much like a teacher giving homework... here, go read all of these web pages and report back to me.  Instead collecting them in a blog post seems like a friendlier way to pass links along.

When I was a kid, my favorite cartoon by far was The Rocky and Bullwinkle Show, which started airing as repeats when I was 7 years old.  I found it refreshing because unlike other cartoons of the time, it never talked down to kids.  I knew some of the humor escaped me but that made me love it all the more.  Thanks to the more sophisticated humor, I continue to love it even now.
https://www.smithsonianmag.com/innovation/how-bullwinkle-taught-kids-sophisticated-political-satire-180964803/

Who knew that deaths due to car crashes spike around the release of pop albums?  Seeing the way some people drive on my 40 mile commute, it doesn't surprise me as much as it should.
https://www.theregister.com/2026/02/23/pop_album_fatal_car_accidents/

I've enjoyed Jason Lee's acting in Kevin Smith's movies as well as My Name is Earl.  Here's an interesting interview with him which he was not happy with.  I can see his point since it appears the interviewer misrepresented what type of questions would be asked.
https://defector.com/a-complimentary-profile-of-jason-lee-that-was-surprisingly-difficult-to-publish 

Cory Doctorow gave a speech 15 years ago about the coming war on general computation which looks increasingly plausible given what AI companies have been doing lately.  If you enjoy realistic near future SciFi which is both entertaining and a bit frightening in its likely accuracy, check out his website craphound.com.
https://en.wikisource.org/wiki/The_Coming_War_on_General_Computation

I was surprised to read that tire pressure sensors have enough range to be considered a privacy risk.
https://boingboing.net/2026/02/27/tire-pressure-sensors-are-a-huge-privacy-risk.html

An asteroid passed pretty close to Earth and apparently we didn't see it until it had already passed by.
https://boingboing.net/2026/02/24/an-asteroid-passed-428-km-from-earth-and-no-one-saw-it-coming.html

A computer formed of chips containing 800k human neurons has been taught to play Doom.  I find this disturbing on a lot of levels.
https://boingboing.net/2026/02/26/living-human-brain-cells-are-now-playing-doom.html

This article about the steady loss of deep knowledge is something which worries me.
https://fireborn.mataroa.blog/blog/the-slow-death-of-the-power-user/

Monday, February 23, 2026

link dump #1


I follow a lot of RSS feeds which allows me to find a lot of interesting web pages.  I hate to send them via email since it feels too much like a teacher giving homework... here, go read all of these web pages and report back to me.  Instead collecting them in a blog post seems like a friendlier way to pass links along.

I'm fascinated by miniatures so I find these very realistic RC trucks very cool.
https://www.thedrive.com/news/custom-rc-shop-recreates-real-life-work-trucks-that-are-fully-functional-just-mini

Speaking of miniatures, these models of classic computers remind me of my days as a field engineer in mainframe and mini computer data centers.
https://www.miniatua.com/work/ibm1401/ 

Someone took the time to recreate the Top Gear studio using Lego.
https://www.thedrive.com/news/someone-recreated-the-top-gear-studio-in-lego-and-so-can-you 

Did you ever wonder where the expression 'peanut gallery came from?  It's older than I thought.
https://theconversation.com/the-complicated-origin-of-the-expression-peanut-gallery-148897 

This sliderule simulator teaches you how to use one for calculations.  I should use it remember how to use one of my small sliderule collection. 
https://hackaday.com/2026/02/18/sliderule-simulator-teaches-you-how-to-do-calculations-the-old-fashioned-way/

Sunday, February 22, 2026

Legacy hardware persists

I develop firmware for small embedded devices with ARM CPUs.  Most of these devices run some flavor of Linux.  An important device for Linux machines is the console interface.  Older PCs had physical serial ports available.  Modern PCs lack serial ports but they usual direct the console interface to the monitor/keyboard combination.  Small embedded systems usually don't have a dedicated monitor or keyboard and they often don't have a physical serial port.  The devices I work with have a USB serial interface which provides a serial interface over a USB A to USB micro cable.

Once in a while it becomes necessary to interface via a physical serial port, often using a DB-9 connector.  When that's the case, I'm always asked to make it work since none of the younger engineers have much experience with older technologies while I spent a few years at the beginning of my lengthy career as a field engineer for mini and mainframe computers where serial ports were common.

Last week, one of the younger engineers was hooking up a couple devices via DB-9 serial connectors and wanted to hook 2 male DB-9 connectors (the ones where the pins are visible) together.  He came to see me because my office tends to be a graveyard for old cables and connectors as well as test equipment.  He asked about whether a null modem cable would be required.  I took a little time to explain when null modem cables are required but it quickly became obvious that I was providing more information than needed and that he just wanted to solve a problem.  

My theory has always been that I can solve problems faster if I develop a mental model of how a given technology works.  What helped me tremendously in figuring out the many possible variations in async serial comm devices was getting the job of on-site field engineer as USA Today in Rosslyn, VA when they launched in 1982.  As part of my duties, I had to hook up the satellite feeds from various news agencies like UPI, AP, and Reuters.  There were a lot of async devices to hook up to the 12 DEC PDP-11 minicomputers.  Fortunately I had an RS-232 breakout box which helped identify how the serial cables needed to be wired.

I had been trying to explain the young engineer at work that null modem cables allow 2 terminal type devices to be connected together where the original intention was for a terminal to be hooked to a modem type device.  There are 2 main categories of RS-232 serial equipment, data terminal equipment (aka DTE) and date circuit-terminating equipment (aka DCE).  Modems or modem eliminator devices are DCE equipment.  The primary function of a null modem cable is to swap the Transmit Data line with the Receive Data line.  When DTE devices are directly connected to DCE devices, no such signal swapping is required.  Admittedly, this is for devices which follow the RS-232 standard closely which doesn't seem as common as one might think.

On some of the smaller devices, there's only a serial port available for data transfer.  In those cases, I choose ZMODEM to securely transfer binary data files between machines.  Back when I used to connect to bulletin board systems (aka BBSes), terminal emulator programs which supported ZMODEM used to be plentiful but now there's only a few options.  I've been using Tera Term because I find its ZMODEM implementation easier to use.  Here's what a file transfer looks like using it.


 

 

 

Saturday, February 21, 2026

Darts and hanging out with friends after work

A few days ago while doing some neck exercises given to me 8 years ago by a physical therapist to help prevent pain from bone spurs in a neck vertebra, instead of stopping at 50 repetitions as I usually do, I continued to 51 by mistake.  That triggered the thought that 51 is 3 x 17 which made me think of playing darts where landing a dart in the triple 17 ring is desirable.

I started playing darts around 1985 or so.  At the time, I was working at GE Information Systems in Rockville, MD at the time and commuting there from Northern VA.  At GE I became friends with a Brit named Dave there who organized weekly lunch outings to area ethnic restaurants.  Those outings were a welcome distraction from the repressed corporate atmosphere at GE.  Dave left GE about a year after I met him and he started working at Sprint International in Northern VA.  Few recognize the name Sprint International.  It's what was left of Telenet which used to run one of the largest packet switched networks in the world.

Since Dave lived in MD and was commuting to Northern VA, we had commutes which were close to the opposites of one another.  He and I missed chatting and we figured out that McLean would be roughly halfway if we wanted to meet for a beer after work.  He found a great little place called McKeever's Pub which had a great atmosphere as well as featuring a couple dart boards and we began meeting once a week there.

Dave was quite skilled at darts.  With practice I became a mediocre player but only for about an hour or so when the beer I consumed balanced out the residual caffeine from my workday which tended to leave me too jittery to have much accuracy.  At some point, my skills started waning as the caffeine lost the battle and I relaxed too much.  We usually played either Cricket or 301.  Despite not being very good, I enjoyed playing darts unless forced to play against someone who was too competitive.  

The strange train of thought which began with my 51st repetition next had me wondering what happened to the owners of McKeever's Pub.  I had heard a rumor that it it had closed about 10 years ago which made me a little sad but still nostalgic for the many evenings spent there chatting with friends and trying not to embarrass myself at darts.  It turns out the rumor of the pub closing was true and I discovered that one of the patrons had loved the place so much that he bought up the furnishings and recreated it in his basement.  Those of us who enjoyed the McKeever's Pub's welcoming atmosphere and excellent food (I still miss their bacon cheeseburger and home fries) can understand the impulse to keep it alive.  Then I discovered that the owners had opened a vineyard and restaurant on their farm in Leesburg, VA.  It's called EagleTree Restaurant and Winery and judging by the menus I looked at, it sounds amazing.  I think a visit may be in order at some point.

I hope everyone finds a happy place to meet friends to unwind after work.  I've had a few since McKeever's including Old Dominion Brewpub, Dogfish Head Alehouse, and Leesburg Public House.  Discussions outside of the office tend to let you find interests you may have in common and can make work friendships closer.

Saturday, January 24, 2026

Our not-so-new 60 pound lapdog

We had the sad experience of losing 2 dogs to different forms of cancer in 2023.  First we lost Bandit, an 80 pound lab shepherd husky pit mix we had loved for 10 years, to bone cancer which had spread to his lungs. We lasted 3 weeks before the house became unbearably quiet and we adopted Greta, a sweet 50 pound pit bull.  We lost her to lymphoma after having her for only 7 months.  This time to prevent the empty nest syndrome, we immediately adopted Kya, a 60 pound pit bull, who has kept us busy ever since.

 


A mere 3 days after we adopted Kya, she gave us a scare by getting very sick.  She stopped eating and drinking due to a severe gastrointestinal bug of some sort.   We had to drop her off at the vet where they kept her overnight to administer IV antibiotics and fluids.  When we picked her up the next day, we had to sit on the floor with her to coax her to eat and drink before the vet would let us take Kya home.  The picture above is from Thanksgiving at my mother's house which was 4 days after we brought her home.  She still wasn't feeling 100% when this picture was taken.

She was suffering from FAS (Fear, Anxiety, Stress) syndrome when we adopted her.  I think that's probably because she had been in the shelter twice before we adopted her.  She has relaxed quite a bit in the past 2 years but she can still be a bit reactive at times.

After she recovered from her GI issue, we discovered that at 3 years old, Kya had a lot of energy and is quite athletic.  She gets 1 or 2 long walks per day as well as several play sessions on long leash while playing catch.


 

We've had Kya for a little more than 2 years now and she continues to be an absolute joy. She's affectionate, protective, and very enthusiastic. It never gets old having her rush up the stairs to check on me when she gets home from her morning walk and I never get tired of seeing her antics when I take her out for multiple daily play sessions which makes us both happy.

As you can see from the picture below, she's got me totally wrapped around her paw.  She also has us convinced that at 60 pounds, she's not too large to be a lap dog.  She turned 5 in December.  We're hoping to have another 10 years with her because she makes every day better.




Sunday, January 04, 2026

Computing setup, software focused

Windows

My company gives software/firmware developers a very capable Windows laptop.  It's got 32 cores, 64 GB of memory, and a 500 GB SSD to which I was able to add another 2 TB SSD.  There are a couple downsides to this machine -- it's kind of heavy and the corporate IT team has this laptop very locked down.  All software installed on it must be on the approved software list which I understand.  It makes it harder to use my corporate laptop as a good development environment though.  I compensate by using Linux machines for the actual development work and relegating the Windows machine to acting as a terminal plus using it for web browsing and corporate communications tasks such as email, Teams, and Slack.  I was able to install VMware which allows me to use the laptop to run Ubuntu Linux VMs which are used for occasional software builds and to host some FPGA development tools to program the firmware I develop onto the embedded hardware it targets.

  • Vim - I've been using Vi/Vim as my editor of choice since I took a job which gave me a Sun workstation on my desk.  I've got friends who love various editors such as Emacs, Visual Studio, Notepad+, Atom, and a few others.  I've occasionally experimented with other editors but it's really hard to overcome the muscle memory which comes from using Vi for 35 years.  The benefit is I'm still using a few macros I created that long ago.  I prefer GVim, the GUI version of Vim for its ability to resize windows.
  • Putty - I've got Putty profiles for all the Linux machines which I connect to regularly.  Each includes X11 forwarding which gives me the ability to launch X11 apps on any of the Linux hosts I access.  I know that Wayland is more modern but most of the Linux machines I'm accessing run old enough versions of Linux to make Wayland too much trouble to try to use.  Putty supports both SCP and serial connections, making it a handy way to connect to serial console ports.
  • WinScp -  This is a great little network file transfer program which supports the SFTP and SCP protocols.  I often use one Linux host to build my software and another to install it so being able to easily transfer files is a necessity.
  • VcXsrv -  Since so many of the tools I use require an X11 connection, I need to run a X11 server on Windows.  I actually petitioned our IT group to add this to the approved software list.  It can be a little buggy at times but getting free software approved is always much easier than asking for commercial software be added to the budget.
  • TeraTerm -  Believe it or not, sometimes I need to transfer files to an embedded machine which only offers a serial connection.  TeraTerm supports ZMODEM transfers which makes exchanging binary files much easier in that case.
  • Kdiff3 -  Capable free GUI file/directory comparison tool and one of the few allowed on my work laptop.
  • Microsoft Outlook - Outlook seems to work adequately for basic email and scheduling needs.  It has a terrible search feature which makes it difficult for me to find past emails I need to reference.
  • Microsoft Teams - I have never cared for Teams but it's a necessity to allow me to join meetings while working from home.
  • Slack - Most of the time this is okay but it's very quirky.  It's a necessity to allow easy connections to people while I'm working from home. 
  • Google Chrome - It's the browser chosen by our corporate IT team.  I guess it's a necessity since it's captured the majority of the browser market but I must admit that I've never really cared for its UI. 
  • Windows Calculator -  Having a calculator capable of hexadecimal and binary operation is a necessity at times.

 Linux

All of the embedded devices I work with run some version of Linux.  Some actually have multiple copies running on different CPUs.

  • Vim - Vim comes preinstalled on all the Linux machines I need to access.  I do often still install Gvim to make it easier to edit files over an X11 connection.
  • Putty - I manually install Putty on Linux machines.  It makes it easy to connect to devices on the Linux machine which use a serial port.  It's also handy to do that via an X11 connection.
  • GNU Screen - Screen makes it very easy to maintain a persistent connection to a machine which is necessary as some of the firmware builds take over an hour and network hiccups used to kill the build before it was done.  Screen allows me to reconnect after the network issue and see the build continuing as if no interruption had occurred.
  • Exuberant Ctags - I've been using ctags to make navigation through unfamiliar code easier for 30+ years now.
  • Ack - Ack allows me to do a recursive search for files which contain some string and to limit that search to source files or some other category such as Bitbake files.  I use the ack executable which is implemented as a single perl module which makes it trivially easy to install on Linux machines.  I know there are faster source search tools available but this one is easy to use and works well for me.
  • Kdiff3 -  Capable free GUI file/directory comparison tool.
  • xxd -  Sometimes I need to examine binary files and this tool is readily available on Linux machines.  It can also help transfer binary files in a pinch by converting a file to its hexadecimal ASCII equivalent, transferring it, and using xxd to convert it back to binary.
  • bash - I rely on the bash shell along with awk, sed, grep, find, and other standard GNU Linux tools for the vast majority of my scripting and interactive use needs.  I rely heavily upon bash scripts to help automate much of my development process.

Apps for both Mac & iOS

Here are the apps I run on both the Mac and iOS.

  • Music - Sometimes I like to have background music playing to help mask out distracting sounds while I'm working from home.  I have a few playlists which work well for this purpose.  I buy most of my music in MP3 form from Amazon or Bandcamp and import the MP3 files into the Music app.
  • Apple Mail -  It's free on Apple devices and does a reasonably good job of keeping my mail accounts in sync between my Mac and my phone.
  • Apple Numbers -  Even though this is a spreadsheet, it can also function as a lightweight database app.  I use it to keep track of audio books and e-books I own and which I've read.  I have quite a few of these lightweight databases.  I used to use a great database app called Bento made by FileMaker which had versions for Mac and iOS.  It was discontinued in 2013 and I haven't found a replacement I like better than Numbers although I do occasional search still. 
  • Google Calendar - I like it because it seems to be the most flexible in scheduling recurring events.  For example, you can choose the 3rd Saturday of each month or the 21st day of each month.
  • Microsoft To Do -  A reasonably good cross platform to do app.

Mac 

My old Intel Mac Mini is getting long in the tooth but still manages to support some of my work and all of my personal computing needs.  Here are some of the apps I run on it.

  • ChronoSync -  I've been using ChronoSync for backups for quite a while now and I've very happy with it.
  • Little Snitch - I insist on running a top notch firewall program and Little Snitch fills the bill nicely.
  • GnuCash - Since I pay most bills electronically, GnuCash lets me keep track of my checking account easily.  I really like its ability to change the sorting from ascending to descending dates since that makes it much easier to compare with my bank's statements.
  • Waterfox browser -  I've always liked the Firefox browser for how easily its UI can be customized and for the rich set up plugins which allow safer browsing.  Firefox lost me as a user when they started on their quest to shove AI in every aspect of the browser.  Waterfox is a reasonable fork of Firefox which does not include the unwanted AI features.  I use this for all my general purpose browsing.  I also use the Chrome, Safari, and Vivaldi browsers each for a special purpose.  It limits having to worry about whether cookies from financial or social media accounts are being seen by other websites.
  • Vim - The command line version of Vim comes preinstalled on Mac machines.  I still install MacVim to make it easier to edit files and to be able resize windows.

iOS

I use the cheapest iPhone available whenever I need to replace my phone as my personal device.  I've got iOS software I depend upon to make life easier.

  • iTunes Remote - This allows me to easily select the playlist from the Mac's Music app.  I used to also use it for pausing music when I had an incoming call but now I rely upon an Anavi Macropad 10 for that purpose which allows me to pause songs without fumbling to bring up an app on my phone.
  • PCalc -  Having a calculator capable of hexadecimal and binary operation is a necessity at times and I'm not always near my Windows laptop.
  • Overcast - This is my favorite podcast app.  It has the best UI of any iOS app I can think of.
  • Audible - Listening to audio books keeps me sane when commuting to work or in warmer weather when I'm doing 3-4 hours of yard work. 
  • Libby - App which makes it easy to borrow library books.  Mostly e-books but they also have audiobooks.
  • Hoopla -  App which makes it easy to borrow library books.  This seems to have more audiobooks and graphic novels than Libby does.  They also let you borrow and stream digital movies and tv content.
  • Two factor authentication apps -  I enable two factor authentication for any website which supports it and apps such as Authy, Google Authenticator, and others make that possible.

Thursday, January 01, 2026

Computing setup, hardware focused

Since I work from home the majority of the time and my job involves writing software and firmware for multiple small embedded ARM based devices, my computing setup tends to be a bit more complicated than normal.  I'm also cheap so I've gotten almost everything on sale.

 

The picture above shows some of the equipment at home which makes it easier for me to switch between the many devices I need to use both for work and my personal computing needs.  The red surface everything rests upon is a grounded anti-static mat which is a necessity as I often need to use bare circuit boards for easy access to JTAG connectors.

  • Philips 4k monitor.  I often have ssh sessions with anywhere between 2 and 5 Linux systems simultaneously.  That many terminal windows take up a lot of screen space so the fact that a 4k monitor has 4 times as many pixels as the HD monitor I'm stuck using at the office has made working so much easier.  I got this at a good price thanks to a Black Friday sale 3 years ago.
  • IOGear KVM switch.  I usually switch between my work laptop, my Mac Mini which is mostly for home use, and a Raspberry Pi 5.  Since this is a 4 port KVM switch, that leaves an extra set of cables to connect to other devices as needed.  I had a cheaper KVM but the move to a 4k monitor forced me to upgrade to one which supported the higher resolution.
  • Mechanical keyboard.  I opted for a cheap mechanical gaming keyboard with a PC key layout and which uses Outemu Blue switches (Cherry MX Blue clone).  I find it much easier to use a PC style keyboard on a Mac than the other way around.  Since I often connect to Linux and Windows machines, it just makes more sense for me.
  • Technical Pro rack mount power supply.  This allows me to easily power on or off any individual device in my setup as needed. 
  • Raspberry Pi 5.  This is a great development device as there are much better free development tools available for Linux than there are for Mac or Windows.  That provides me with a lot of flexibility in my development and debugging tasks.  It's my favorite computer to work with.
  • Anavi Macropad 10.  This device comes with CircuitPython installed which makes it very easy to configure the key codes it can to send to my Mac.  I like this one because it's also got a rotary encoder (which can be used to easily change the volume) with a button on top to pause the music.  I often use my Mac Mini to play background music while I'm working.  Being able to pause music playback, skip to the next song in the playlist, rewind to the previous song, or adjust the volume on the Mac while my keyboard and monitor are switched to my work laptop via the KVM is very handy.  The situation which this keypad helps with most is when I get a call from someone at work and need to quickly pause the music in order to take the call.
  • Canon PIXMA G6020 All-in-One Megatank Printer - It's affordable, reasonably fast at printing, doesn't use proprietary ink cartridges, and has copying and scanning capabilities as well.  We've had it a year and are still on the original ink bottles supplied with the printer.  I think we've been through about 6 reams of paper during that time, most of it double-sided.

 

The picture above is an EDID (Extended Display Identification Data) HDMI adapter.  It causes the computer which it's plugged into to continue thinking that the 4k monitor is still plugged into the computer when it's actually switched to another computer via the KVM switch.  The EDID HDMI adapter shown above is connected to my work laptop.  I've got another one plugged into my Mac Mini.  This prevents the windows on whichever machine from being rearranged when the monitor configuration changes via the KVM switch.  More expensive KVM switches sometimes include this capability without requiring an external adapter like this.

 

 

Saturday, December 06, 2025

Things which make C/C++ source code easier to understand

I end up reading a lot of C/C++ source code from various sources in my role as an embedded firmware engineer.  There are a few rules I try to follow to make my code easier for others to decipher.

  • Include explanations for any acronyms you use in function or variable names and even in comments.  Don't assume that everyone has the same background as you do.
  • Don't ever use magic numbers.  When I'm looking for all code which writes or reads a bit within a register, I don't want to have to try to grep for every hex value which includes that bit and even worse, sometimes people define register values as decimal which makes less sense to low level programmers like me.  Just define it with a mnemonic name and use the boolean or operator "|" to define the set of bitmasks required.  Think of the poor sod who gets stuck maintaining your code.
  • Start your functions with an open brace starting in column 1 after the function name/parameters.  End functions with a close brace in column 1 for the same reason.  It makes it easier to search for function names within a source file.  In an editor which uses a vi style user interface, the command "/^{" (without the quotes and followed by the Enter key will find the first instance.  Then "n" will find the next one and can be repeated as many times as desired.
  • Emulate whatever indentation style you found in the code if you inherited it from someone else.  It's irritating to have a mix of tab and space characters with no hint of what tab stops the author used.

Saturday, November 15, 2025

Whiteboard coding during interviews

I recently responded to a writer I follow on Mastodon and Bluesky who was looking for input for an article she was planning to write about interviews for embedded systems positions.  Since I enjoy her writing and I have loads of experience with embedded systems, I responded to her request.

The act of recalling various interview questions I had been asked or had posed to others made me remember some questions which I disliked intensely.  The type of question I dislike most is being asked to write code on a whiteboard to solve some problem.  I generally enjoy coding and the problems are often interesting but coding on a whiteboard is so different from writing code on computer using a good editor that I've grown to hate it.  I'd almost rather go back to the bad old days of using a keypunch to generate punched cards as source for my program.  When programming I like to start with an outline of the program and fill it in as ideas occur to me which is nearly impossible when stuck with a more linear coding environment such as whiteboard or a sheet of paper.

I've had two memorable experiences responding to requests to code on a whiteboard.  The first was the most absurd question I believe I have ever been asked in a job interview.  Apparently the company I was interviewing with had guidelines for technical interviews and the engineer asking the questions was hellbent on sticking to these guidelines.  He asked me to write an assembly language program for him.  I asked which assembly languages he was familiar with since I was comfortable with about 5 at the time.  Once I discovered that we had no assemblers in common, I pointed out that it made little sense for me to write a program in a language he wasn't familiar with but he insisted on me completing this task so he could check it off on his interview form.  In addition to it being ridiculous to write a program which cannot be evaluated, it's also frustrating trying to write a meaningful assembly language program on the tiny whiteboards available in cubicles since assembly programs tend to be much longer than those written in higher level languages.  Apparently I passed muster as I ended up getting the job.

The second whiteboard coding experience which came to mind ended far more positively.  I was asked to solve a problem in C but ended up needing to keep adding lines which is no problem on a computer but presents a huge obstacle when stuck using a whiteboard and marker.  I managed to come up with an incomplete and messy solution before they called time on me.  Once I got home from the interview, I was still bothered by my performance.  I was able to quickly code up the solution on my computer at home and emailed a working program to the VP of Engineering I had been interviewing with at the time.  He was so impressed that I had followed through with solving the problem that I was offered the job and ended up staying at that company for 9.5 years.  I still hated the initial request for whiteboard coding but was pleased that it resulted in me getting the job.

I'm hoping that the days of being asked to code on whiteboards are relegated to the past.  To tell the truth, since I'm at my last job before retirement. it won't have a huge impact on my life either way but I hate the thought of others being subjected to this absurd practice.

Friday, September 05, 2025

The benefits of a varied technical background

This week I helped a colleague solve a strange problem which he had encountered.  He was modifying some application level code which needed to read from and write to a device driver I had created to control two LEDs on our device.  Previously the application code had only written to the driver but the decision was made to control the two LEDs independently which required reading the old state from the driver prior to updating the LED state.  Fortunately I had included the ability to read the LED status since it improved my ability to debug the device driver.

The problem was caused by the need to interleave reads and writes to the device driver which under Linux gets treated as a file.  Unbeknownst to my colleague, any read or write to a file stream affects the file pointer which keeps track of the location within the file which will be accessed next.  A simple device driver has no need of the file pointer concept but since Linux treats devices as files, the standard library code which enables accesses to devices and files keeps track of the supposed file pointer even if it doesn't need to do so.  In a standard file access, I should have been able to do a fseek (file seek) to the current position between the read and write calls to fix this issue.  Unfortunately, since my device driver is very bare bones, I suspect there was extra call within the device driver needed to handle fseek calls.  I used a brute force fix of closing the device driver and re-opening it within the application code.

Somehow this makes me think of the common wisdom from early in my career which suggested one shouldn't change jobs too often lest one be labeled a "job hopper".  It turns out that job hopping has given me a very diverse background which has improved my chances of finding jobs.  Changing jobs more frequently has helped me escape from jobs where the work was boring or which placed me under managers which were difficult to deal with.

Friday, August 08, 2025

More machine language fun

When I first starting working as a Senior System Analyst at GEISCO (GE Information Systems) in the mid-1980s, they had us logging into mini and mainframe computers via terminals.  Several of the commands we had to use needed elevated privileges which required us to enter a password of the day.  In order to get this special password, they gave us a small script which retrieved this password and most people put a call to this script as part of their network login to automatically show the password of the day.  Being a curious sort, I wanted to know how the script to display the password worked.  Most people found it cryptic since it consisted of several groups of 12 digit numbers and none of the digits were larger than 7.  I knew this likely meant that these digits were octal numbers which require 3 bits each to represent.  Couple that with the fact that the groupings of numbers were 12 digits long told me that they represented 36 bit words.  Since I knew GE made heavy use of Honeywell mainframe computers at the time, I concluded that the script was some type of interpreted machine language program.  So I dug out my old Honeywell assembly language documentation and discovered that the script was a simple little program to issue a system call (MME - Master Mode Entry) and then print out the results.  To test my theory further, I modified the program to shift the characters of the master password so they would print out backwards.  It basically served to entertain me each time I logged in.  It's amazing the little challenges which I find amusing, huh?

While I was working at GE, a project was launched to upgrade the storage device on the CC (Central Concentrator) network node.  One of the tasks performed by the CC was to load software on the other, smaller network nodes and its original 2 MB device was deemed too small to handle network expansion.  Believe it or not, that 2 MB storage device was a magnetic drum from Vermont Research.  I had signed up for this project because the replacement storage device was originally specified as a 10 MB hard drive similar to those used on higher end PCs of that time.  I was anxious to get experience on these disk devices which were cutting edge technology at the time and writing a device driver from scratch sounded like fun.  Somehow Vermont Research found out about the project and submitted a lower bid for an upgrade to a 10 MB drum device.  So my dreams of writing a device driver became the much less interesting task of updating the old device driver to extend the addressing to accommodate the extra storage.  The only challenging part of the project was that the diagnostic program also needed to be updated and somehow the source code for the diagnostic had been lost.  So I was forced to read the punched card deck into the mainframe in order to print out the binary data the deck contained so I could disassemble it.  Then I had to figure out how to write a patch for the diagnostic program.  And finally, I had to figure out how to get the mainframe's card punch to reproduce the same punch card format used by the diagnostic.  For a few days the computer operators for the mainframe got used to me making multiple daily attempts to convert the binary file containing my patches into a format which could be punched in the same format as the diagnostic deck.  They told me that they hadn't seen anyone use the card punch in many years.  Each attempt required me to tweak my program to convert the diagnostic's binary data into a slightly different format.  It wasn't as much fun as I had hoped for but it did prove pretty challenging.

Thursday, July 31, 2025

The joys of machine language programming

When I started my career as a field engineer for Honeywell mainframe computers in the late 1970s, I worked a lot of swing and midnight shifts.  While day shift was always pretty busy, the night shifts were often boring.  To entertain myself, I read the CPU manuals with the goal of being able to modify the diagnostic programs used to test the computers.  Occasionally it proved handy to load one of the diagnostics and then to patch them in memory to loop through operations which were failing.  This allowed using an oscilloscope to trace signals of interest though the 80 wire-wrap boards which made up the CPU.

Eventually writing these machine language programs became my favorite pastime on slow nights.  Part of the draw was the maintenance panel switches which made it easy to read and write memory locations.  There was a definite thrill to getting a program working and watching its progress via the flashing lights on the maintenance panel.

For those who aren't familiar with low level programming, machine language programming involves directly entering the binary encoded instructions into memory locations for later execution.  More people are familiar with assembly language programming which replaced the binary programming with mnemonic names for the instructions and any modifiers.  For example, a Honeywell mainframe had an instruction called LDA which loaded the A (or accumulator) register with some value.  In machine language programming, that LDA instruction had the opcode of octal 235.  Older mainframes often used octal encoding instead of the hexadecimal encoding which is more often used today.  The other convenience offered by using assembly language over machine language is that the assembler would calculate the addresses automatically rather than forcing you to manually calculate the address offsets by hand which was painful.

My second job was as a field engineer for DEC PDP-11 minicomputers.  These smaller machines were so much less complex than the mainframes that fixing the hardware wasn't much of a challenge.  The saving grace was the PDP-11 instruction set was simple enough to allow me to quickly come up to speed on its machine language.  When I was in Boston for training, I wrote a machine language program to determine which terminal connected to the PDP-11 had had data entered on its keyboard.  Apparently the way I approached programming was different than most people's because the instructors had trouble figuring out how my program worked.

Believe it or not, the ability to decipher machine language is still useful when I have to use gdb to debug a program.

Sunday, July 06, 2025

Memories of a very dear friend

It's been a week since we got the sad news that a dear friend of ours had passed away unexpectedly.  Since that time, David has been in my thoughts a lot.  Because I had the pleasure of working with David at 5 different companies for a total of 16 years and had also enjoyed his company after work on a regular basis, I know a number of his work friends.  I tried to help share the news of David's passing.  One of our friends responded by commenting how well David and I had clicked which made me smile.

I met David in 1990 when I left a contracting position at the Washington Navy Yard for a job with Sprint International which created equipment for Sprint's packet switching network.  My boss at Sprint was a Brit I had previously worked with at GEISCO.  My boss was a firm believer in getting out of the office at lunch and arranged regular outings to various ethnic restaurants in the area, something he had also previously done at GE.  I think it was at one of those lunches where I first met David.  As we chatted, it became obvious that we had similar tastes in books and movies.  We started eating lunch together on a regular basis.  My boss was also keen on regular after work happy hours, which occasionally involved playing darts.  David and I enjoyed many of those gatherings, sometimes playing darts.

Initially at Sprint, David and I were working on different types of PADs (packet assembler/disassembler) network nodes at Sprint.  I was working on a QLLC PAD which enabled IBM equipment to connect over Sprint's X.25 network.  David worked on more traditional PADs until Sprint started developing Frame Relay, which was a hot new network technology at the time.  Frame Relay was the perfect place for David as he picked up new technologies so easily.

After a couple years, I transferred to Sprint's Operating System group which gave David and I more chances to work together.  I enjoyed that opportunity since I discovered that he and I had compatible troubleshooting approaches.  I believe that came from both of us having started out working on computer hardware, him designing it and me repairing it.  

David and I enjoyed getting together outside of work which continued after I left Sprint in 1994.  It was at one of the after work gatherings that I remember us arguing over the actor's name who had uttered a line in the movie "Cool Hand Luke".  Fortunately, there was a movie store next to the restaurant where we were.  David and I left happy hour for a few minutes so we could consult the movie guides next door to settle the argument.  Other people at happy hour laughed at us for needing to prove our geek cred that way.  That's just one of many little happy moments with David that make me smile when I remember them.

The next time we worked together was in 2000.  At the time, David was working for a startup company which was developed financial problems, as many small startup companies do.  I was happy to help him get a job at 3Com where I was working at the time.  I was developing firmware for a number of ADSL modems while David was helping the ADSL architecture group.  This was another ideal position for David since network architecture requires expertise in so many different areas and David was always eager for opportunities to learn new technologies.  3Com was challenging since the schedules were incredibly aggressive.  That was because the group we were part of sold hardware to consumers which is a rapidly changing environment.

Later in 2000, David and I were both contacted by someone we both worked with back at Sprint who had taken a management position at a new optical networking startup company called Ocular Networks.  We both took the plunge and joined within a month of each other.  Ocular gave us the chance to work closely together on a regular basis.  David initially worked on a DS1 board while I worked on a DS3 board.  These boards provided electrical network interfaces which could be concentrated over the fiber optic network cables.  Like many early stage startups, Ocular required that we work 60-70 hour weeks for the first couple of years.  Fortunately things slowed down a bit after Ocular was purchased by Tellabs.  Tellabs moved our office from Reston to Ashburn.  It wasn't long until we discovered that our new office was very close to the Old Dominion brewpub which became a favorite place for after work gatherings.

The group of engineers I had met at Ocular, many of whom I had worked with at other companies, were so nice that shortly before I left Ocular in 2004, I organized an e-mail list to make it easier to organize regular get togethers as people left for new companies.  I often think how ironic it is that someone as naturally introverted as I am ended up in the role of organizer for activities outside of work.  That's due in large part to David and a few others like him who I couldn't bear the thought of losing contact with.

After Ocular, I took a position at AOL in the e-mail server group.  David also moved to AOL shortly after that and we found a way to work together again.  Unfortunately, the group we were with disbanded before too long and despite being moved to another group together, we both ended up leaving AOL.

For the next 10 years or so, we only saw each other for lunch or for an after work happy hour but fortunately those meetings were regular enough so we didn't lose contact.

In 2015, David joined a company called FourthWall Media, where I had been working for 5 years.  We got to spend another 5 years working together before a shift in company direction resulted in both of us getting laid off.  FourthWall was fond of company outings and I have happy memories of baseball games and visits to Top Golf to unwind.

The pandemic limited our in-person get togethers for a while but since I hated the thought of losing touch with David and a few others, I started a weekly video chat call on Skype which has been something we all looked forward to each week.

Over the 35 years I've known him, David has been someone whose company I have enjoyed and whose opinions I have valued.  He was an absolute joy to work with since he's very knowledgeable and extremely easy to work with.  We've shared recommendations for books, movies, music, and beer.  In the week since I learned of his passing, I've encountered a number of things which I wanted to share with him only to remember that he's no longer available.  He will be missed more than words can express.

Here's a picture of David and me at the Lost Rhino Oktoberfest in September, 2023.  I'm at the front left and David was directly across from me, looking at his phone.  This photo makes me smile because we spent part of the day trying to answer trivia questions posed by the musician who was playing.  We were up to our old geeky tricks that day.