The incumbent was just more flexible

I have a project that basically creates a custom Debian distribution image. This distribution image provides the operating system for custom hardware. There was a desire to use Containers for building this image as the process seems well suited for that. After working with it for a while I have abandoned Docker and Podman for this purpose. The reason for each is different, but it turns out that containers are probably not the right answer here.

Setting up the ring for the match

The basic process goes something like this:

  • create the initial foundation file system. We use debootstrap for this. …


Reflecting on my most popular article

I wrote an article in October about my journey as a developer. In that article I explained why I felt that shifting from PHP to Node.js was the right choice for me. I have to say I was surprised at the feedback I got. And how popular that article has been.

I appreciated the supportive feedback, but this seemed to be in the minority. Most of the remaining feedback was about how I was wrong and that PHP met all my needs. (Awesome, good to know someone could determine ALL of my needs from a single article.) Some of it…


Remove prompts from your command line scripts

I had a recent task to automate building a custom Debian image, using some custom software wrapped up as *.deb packages. These packages are stored in an local APT repository via reprepro (also created and populated by our script). The problem I kept running into was my script would prompt for the GPG key’s passphrase. This breaks the automation efforts we were striving for.

I’ve over simplified here for the sake of keeping this article short and concise.

It took a lot of digging, but the “fix” for the situation above was to use a passphrase-less key. Most of the…


For when you have many network interfaces

The short version:

ip addr show $(ip route | awk '/default/ { print $5 }') | grep "inet" | head -n 1 | awk '/inet/ {print $2}' | cut -d'/' -f1
  • We use ip route and awk to determine the name of our default network interface
  • We use ip addr to get the IP details for that interface
  • We grep for only the line(s) that indicate “inet”
  • We then make sure we are only dealing with one line via the head command. There should only be a single “inet” line to begin with, but it is possible there could be more than one.


Secondary and soft skills are just as important

I have been writing code for the past couple of decades. Through it all I pushed myself to be able to create applications that would solve more and more complex needs. I have done a great deal of research to expand my dev skills and knowledge to the point that I’d guess 95% of what I know is “self taught” (aka not learned through traditional academic routes). My focus has been web based applications. …


One possible solution

I recently updated my Intel NUC (model NUC6i7KYK) to run MX Linux instead of the original Debian install I had on the box. Everything is running great out of the box. Except Blender. Finding out why took a bit of sleuthing.

Short form — firing up Blender with the INTEL_DEBUG=reemit environment variable *may* clean up the crashes.

Every other box/laptop I have is running MX Linux already, and only my desktop — the Intel NUC — was still running Debian. I had just picked up a 1TB M.2 drive for that box to replace the two smaller drives (120GB and…


Results after printing for a month

Last month I installed the Ender Extender 400 kit on to my Ender 3 Pro. When I wrote up my original article I was still working through the last couple of tweaks I needed to ensure the printer would work as expected. Since then I’m happy to report that the printer is working out amazingly.

Here is my very first successful print on the HUGE new build space.


OMG it is HUGE!

I have applied the Ender Extender 400 to my Ender 3 Pro. There are some gotcha’s that need to be considered over and above the extender kit.

The Creality Ender 3, Ender 3 Pro, Ender 3 V2, and Ender 5 printers are popular 3D printers. These are relatively simple to assemble, setup, tune, and get printing with good output. And they are inexpensive compared to other vendors providing similar specifications. The Ender 3 models come with a 220mm X 220mm print bed (or a 235mm X 235mm). This is good for most prints, but can require some models to need…


From zero to productive coding in a few minutes

I have just started another Node.JS project and noticed how fast I was able to go from concept to writing productive code. By productive code I mean code that applies to the project, not “foundational” work needed to get the coding environment ready for your project. I’m sharing how I did that here. Let me know if you have any tips to speed up that process even more.

The project

This is a research project diving into the guts of e-commerce. This is a large topic that has more steps than “just post a product” to it. …


Things I encountered

My Frankenstein of a 3D Printer with various enhancements applied.
My Frankenstein of a 3D Printer with various enhancements applied.

I recently dusted off a 3D Printer I had sitting in the basement. It was placed there because it had many challenges to it and I just didn’t have the time to address them. Thanks to the pandemic I had an opportunity to get back to it. I got my start with 3D Printing in 2012 with a Makerbot Replicator. By 2014 I had to set aside 3D Printing to focus on some family issues that had come up (and have since been resolved in a positive manner). So my skills were quite dusty as well.

The printer is a…

Shawn Grover

Technology enthusiast

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store