Five Stages of a Successful Cloud Data Science Platform
From Publish to Reader: The Content Distribution Pipeline Behind This Blog
Rebuilding My Resume Site From the Ground Up
Visual Indicators for Draft and Future Posts in Jekyll
Jekyll Run Plugin: Local Development Settings That Actually Work
Upgrading from a Basic Favicon to a Modern Device Set in Jekyll
The CI/CD Pipeline Behind This Jekyll Blog
Adding Comments to a Static Site: Why I Chose Giscus for Jekyll
Building a Custom Tag and Category Generator Plugin for Jekyll
Kiro IDE on Windows: WSL2 Support via Open Remote Extension
Kiro IDE: Running Parallel Personas for Director and Developer Workflows
Jekyll's Invisible Bug: When Code Fences Don't Protect Your Liquid Examples
The Small Things: Polish Features That Make a Jekyll Blog Feel Professional
Jekyll Content Plumbing: Permalinks, Reading Time, Excerpts, and Redirects
Upgrading Jekyll: Two Years of Cascading Breakage
Merging Two Jekyll Websites: Architectural Analysis and Integration Strategies
Managing Multiple Jekyll Sites Under One Domain: Sitemap Challenges
Your Jekyll Theme Is Probably Missing head and body Tags
Your Jekyll Sitemap Is 60% Garbage
Improving E-E-A-T Signals for Google AdSense Approval on Jekyll
Google AdSense Approval Failure: Debugging the 'Site Isn't Ready' Rejection
USB Drive SMART Updates: Fast-Track to the GRUB Solution
Consolidating Proxmox Notes: A Python Export Script
Advanced Jekyll SEO Health Checks: Comprehensive Automation and Monitoring
Jekyll SEO: Fixing Canonical URLs and Google Search Console Issues
SASS Circular Dependency Nightmare: Lessons from Jekyll Architecture
Adding Google Custom Search to Jekyll Website
Jekyll Website Optimization for GitHub Pages - Part 2
Debian Linux Oh-Crap Moment in the Homelab
Essential CLI Tools for Linux System Management
Jekyll Website Optimization for GitHub Pages - Part 1
Generate Git Timesheet from Commit Logs
Enabling SMART Monitoring on Seagate USB Drives
Dell Wyse 3040 eMMC Storage Health Monitoring
Optimizing Ceph Performance in Proxmox Homelab
Managing Ceph Nearfull Warnings in Proxmox Homelab
Proxmox 8 Lessons Learned in the Homelab
Adding Ceph Dashboard to Your Proxmox Cluster
Using Github Actions with pip-audit to audit pip library versions
Windows Sandbox for Safe Testing
Start the Windows screensaver with a Shortcut
Windows 11 Upgrade Challenges on ThinkPad T480
Debian 12 SystemD nightly reboots on Dell Wyse 3040s
Power Supply upgrade for GPUs in the Homelab
Ceph Cluster Complete Removal on Proxmox for the Homelabs
Linux Disk I/O Performance in the Homelab
Google Wifi running OpenWRT
MacOS Outlook Calendar Copy Events
HP ProCurve Switch Java WebUI
Powerline Networking for the Homelabs
Proxmox VE 8.1 to 8.2 upgrade issues in the Homelabs
ProxMox 8.2.4 Upgrade on Dell Wyse 3040s
Google Documents - copy an image
Tailscale on Dell Wyse 3040 with Debian 12
MacOS Touch ID for Sudo with TMUX and DisplayLink
Proxmox Ceph settings for the Homelab
ProxMox 8.2.2 Cluster on Dell Wyse 3040s
Debian 12 on Dell Wyse 3040s
Dell Wyse 3040 CMOS CR2032 Battery Replacement
Sharing file systems between WSLv2 instances
Hard Drives for the Homelabs
ProxMox 8.2 for the Homelabs
Thinkpad T480 WWAN SSD
Running Github Pages locally
HP ProCurve 2800 initial setup
Ceph Cluster rebalance issue
Aggregated Network Connections with LAG/LACP
Buying a 10Gbps or higher network on a homelab budget
PhotoSynth Export and Visualizer
I have developed something interesting for my graduate class in Computations Photography for the final project. As background, for the class we had an assignment in which we used the Microsoft Photosynth service to generate a 3D walk thru of an area by uploading several hundred photographs. On the back-end the Photosynth web service does feature extraction on all the photos and then related the photos in three dimensions to each other and the feature points. This generated a point cloud of related points between the photos.
LetsEncrypt Certificates go live
I’m live with the Lets Encrypt certificates for the blog.mcgarrah.org website. This has been awhile in the making and I’m kind of excited. I’m on a legacy environment with Ubuntu 12.04 LTS so part of the process is manual but certificate update just happens nicely. Updating the Apache config files has a little bit of effort but nothing too bad.
Artificial Intelligence for Robotics (CS8803-001)
Artificial Intelligence for Robotics (CS8803-001)
Associated with Georgia Institute of Technology
Fall Semester 2015
The goal for the final project in CS6475 AI for Robotics was to create a robotic platform to investigate computer vision technology. The platform included an Arduino with sensors and motors and a Raspberry Pi 2 for the vision and primary control system. The project URL is a video channel that shows the progress and challenges.
Raspberry Pi 2 built-in LED
For an assignment in my robotics class, I need to have an autonomous system react to the environment around it. Reacting can be as simple as flashing a LED if a sensor detects a change.
I have two objectives for the Raspberry Pi 2 (RasPi2) and those are to take a picture using the 5mp webcam and flash a LED. I could use the standard GPIO pins and setup a separate LED but noticed we have two perfectly good LEDs built into the board.
Reading on these built-in LED did not elicit any clear way of interacting with them from the regular Linux documentation. I informally called them the Red Power and Green DiskIO LEDs. It was by reading the headers to the source for Windows 10 for Raspberry Pi 2 that I found the GPIO pinouts for these two LEDs. They are:
35 Red Power LED
47 Yellow DiskIO LED
Python TimeDate functions
I needed a quick understanding of the Python 3.3.0 datetime functionality to do a difference in times across days. Python make it amazingly easy.
import datetime
from datetime import timedelta
# get current timedate
now = datetime.datetime.now()
print "now: " + str(now)
# get one day of time oneday = timedelta(days=1)
# make one day in the future and past
tomorrow = now + oneday
yesterday = now - oneday
print "tomorrow: " + str(tomorrow)
print "yesterday: " + str(yesterday)
# compare times
if now < tomorrow:
print "now < tomorrow"
elif now > tomorrow:
print "now > tomorrow"
else:
print "now must be equal tomorrow"
if now > yesterday:
print "now > yesterday"
elif now < yesterday:
print "now < yesterday"
else:
print "now = yesterday"
The expected results are:
CMD> python time.py
now: 2015-03-19 14:30:31.083000
tomorrow: 2015-03-20 14:30:31.083000
yesterday: 2015-03-18 14:30:31.083000
now < tomorrow
now > yesterday
I hope this helps someone.
Rackspace Cloud Load Balancer with Windows 2012 IIS
I’m working on a problem with Windows 2012 RTM server running an IIS web service. To load balance it, we decided to use Rackspace Cloud Load Balancers. Periodically we receive some errors that appear in the system event logs.
"A fatal alert was generated and sent to the remote endpoint. This may result in termination of the connection. The TLS protocol defined fatal error code is 40. The Windows SChannel error state is 1205."
Wildcard SSL Certificates
I’m beginning to setup enough infrastructure that a wildcard certificate would be nice but I’m uninterested in paying several hundred dollars a year for that certificate. The free certs that used to be around just are not there anymore so far as I can see. My goal is to setup SSL certificates for both my email server and all the virtual host web sites I’m hosting under my mcgarrah.org domain for less than a hundred dollars a year.
Skype 7.0 Upgrade UI Annoyance
Okay, full disclosure, I hate change or at least useless change. Skip over the rant to the HowTo fix Skype if you want.
Doctor of Applied Psuedoscience
Mininet network simulator
I’m taking a graduate course in computer networking at Georgia Tech. The tools they are asking us to use are all open source and allow for some pretty interesting projects.
One such tool is the Mininet software that allows for building realistic virtual networks with real switches, routers and applications running on a single system. We are using a virtual machine that contains a copy of the Linux operating system and the virtual networking software. So far we are encountering minor issues with the OS and VM software.
Downgrading VMware ESXi 5.5 virtual machine hardware
One of this issues I ran into with bouncing between VMware Player 6.0.3 and my VMware ESXi 5.5u1 server is the hardware level of the virtual machines. ESXi 5.5 without the vSphere licence will not manage the newer virtualHW.version = “10″ virtual machines.
More WordPress plugins
Some addition research into WP plugins have a couple more worth reviewing.
VMware ESXi toolchain build
I’ve been back to the toolchain for ESXi again and had some success.
I was really getting frustrated with my lack of success in building the VMware ESXi 5.5 toolchain and compilers. It was a multi-week effort and I’m usually able to get something like that working eventually. I took a couple of month break from it while I worked on some other things including this website(WordPress) and my email servers. This gave me some perspective.
WordPress Plugins
Researching plugins and extensions for WordPress has been an experience.
Certifications
I’ve got a pile of certifications that I’ve accumulated over the years.
Below are my Redhat Linux, Microsoft, Sun Solaris, Nortel Networking and ITIL cert logos. I think the RHCE and Sun Solaris certs were probably the hardest of this bunch.

Here are my SAS certifications that took me six months to complete on my own time. The Clinical Trials Programmer exam was by far the hardest of this set of tests. I mostly use my SAS experience now to port software to R.

I’m interested in the security CISSP and VMware VCP5 certification but have not had the inclination to spend the money or time yet.
Debian on BA NAS 110
Hajo on the BlackArmor Forums has an older posting about getting Debian Linux 5.0 (Lenny) installed on BA NAS 110/220/4x0 (archived — Seagate forums shut down). This is not a port that includes the kernel but simply a minimum install that gets the system setup to install binaries out of the Lenny EABI ARM platform. The kernel that comes with the BA NAS is compatible with those binaries. The newer kernel for the Debian 6 or higher is not compatible with the BA NAS. This has some limitations but offers a way to get to some newer software pre-compiled. I don’t want to loose the existing functionality on my test system but the draw to DLNA services is pretty strong right now.
To top it off, Debian has a nicely setup cross-compilation setup documented for people working on non-Intel platforms. This offers a way to compile newer software without killing myself anymore on building the entire compiler and supporting software myself.
The goal has always been to make the NAS device useful and I want to play my movies off it to my TV upstairs so this might be the next thing I play with on the development NAS.
Rsync on Black Armor NAS 110
I figured out something simple but neat on the Black Armor NAS 110 (BA-NAS110) device. It has rsync a powerful file-system replication tool from UNIX.
Caveats are that in order to do this you must have root on the device and a ssh connection with the command line. I’ll write a friendly doc on how to get ‘root’ later. (Just search for Hajo Noerenberg’s work on the subject sans the friendly write up if you want to do it now.)
So, the BA-NAS110 is capable of using rsync from the command line to replicate its data to another NAS or Linux system if you have root on the system. Getting it setup was simple enough but knowing that the rsync daemon and client were on the systems was the trick.
You have to create a rsyncd.conf file since there isn’t one pre-built. Syntax is common to the typical rsync 3.0.4 version.
Seagate Black Armor 110 NAS
I found something fun.
The Seagate NAS (Network Attached Storage) that I’ve been using at my house is running an embedded Linux. A NAS is a big network hard drive you can share between computers. I got a root account on it and have found a whole world of fun that could be done in there. Root is the master administrative account for UNIX systems that let you do extra things beyond the normal.
First steps is getting a functional toolchain and then build some trivial tools. The goal would be to have a full set of GNU tools available in a package format for people to use. I want to publish a full working OpenSSH with scp support and rsync for this thing as a starting point. Maybe add some features for NFS. Just digging around on this thing reminded me how much I enjoy hacking on hardware.
NetApp iSER Performance Evaluation Project Continuation
NC State University - Computer Science
Senior Design Project
“Senior Design: NetApp iSCSI with RDMA/TOE” (Fall 2010 Capstone Project)
Aug 2010 - Dec 2010
Summary: Develop a methodology for 10Gbps iSCSI that utilized RDMA and TOE to reduce primary CPU and memory usage. Document and managed the project as a team leader. The resulting iSER implementation was utilized in a related NetApp Phd project at the University of Bangalore India.
Microsoft Developer Studio 6.0 Patches
This is a very old set of notes but might be useful for a developer dealing with Microsoft Visual Studio 6.0 for DOS and Windows 16-bit coding. This is from the era of Borland and Zortech Compilers being in play. I migrated this from my defunct darkmagic.org website.

