Cheapest Days Calendar

Are you looking for a calendar that lets you know what days of the week are cheapest to shop? If so, look no further.

Cheapest Days of the Week Calendar

I created a calendar for anyone looking to save a few dollars on common purchases. The data for this calendar comes from this Reader’s Digest post. Please check it out if you want to know the reasoning behind the timing. If you know of other days that I should add - comment below!
Read more

Observations on buying on an NFT on the Ethereum Blockchain

NFTs have recently piqued my curiosity. If you don’t know what an NFT is, it’s a Non-Fungible Token.

Clear as mud right?

There are many articles on the subject these days, so I’ll defer you to them if you want more background.

Anyway, to get exposure to the NFT market I decided to buy an NFT. It didn’t matter what it was, I just wanted to experience the process. More importantly, I wanted to see what it was like from a consumer perspective.

Read more

Fixing Bitcoin Armory on macOS Catalina 10.15

Bitcoin Armory

The recent surge in crypto prices brought my old Bitcoin stash back to mind. I decided to load up an old digital wallet to check it for consistency, but when I tried to load it, the software, Bitcoin Armory, wouldn’t run. I’m running macOS Catalina 10.15.7, so I figured something changed during my miscellaneous software updates or upgrade from Mojave to Catalina.

Read more

Locast Plex - Local TV on Plex with Raspberry Pi4

Watch local broadcast TV on Plex without an antenna.

What is it?

Locast is a free service that receives over the air (OTA) broadcast television signals and encodes and legally distributes them digitally across the internet. Using the program locast2plex you can receive this digital content and send it to a Plex Media Server. Plex will allow you to record, time-shift and save this content. It works exactly like a Cablebox / DVR.

Read more

Fixing Hexo Not Generating Files

If you’re having trouble with Hexo not generating files, check for broken symbolic links in the source directory tree:

find ./ -type l -exec test ! -e {} \; -print

Read more

Strategy for Migrating to Infrastructure as Code

There are several existing resources that document strategies for migrating infrastructure to code. This post is about my experiences based on the reality, the challenges and best practices.

The Setting

You’re in charge of the infrastructure that the entire organization relies upon. Your product is a 24/7 web application, service or destination. The internet property is secure and five nines of uptime is expected. During a meeting with Sr. Leadership, a directive comes down: “We’re moving to the cloud”.

Read more

Mcombo 7040 Lift Chair Manual

I recently purchased an Mcombo 7040 Lift Chair for my elderly grandfather. Prior to purchasing the chair my Grandfather had some questions so I figured I would have a look at the manual for answers. Surprised that I couldn’t find one, I decided to post it here.

Read more

Bash Scripts for Cloudinary

Cloudinary is an amazing image hosting service that offers both a highly functional free tier in addition to a paid enterprise grade image hosting and transformation service.

In this tutorial I demonstrate a few simple bash shell scripts to interface with Cloudinary.

Read more

DIY DAS and NAS for Media 2020

Updated for 2021: Great for Chia Farming and Plotting!!!

Supermicro 836A

Update I have several hundred terabytes that I’ve recently been putting to use to Farm Chia Cryptocurrency. I’ve updated this article were applicable.

Why another NAS/DAS article?

There are a lot resources online for building your own DIY DAS. A lot of them contain good information but none of them were comprehensive for the DAS I wanted to build so I compiled the information that was useful for my specific 2019 build here. The prices linked below are subject to market fluctuations and timing, so some of the components I found at a great price. Overall they should be roughly the same as what you can find. Your mileage may vary.

Read more

Deluge Grafana Dashboard

Tonight I was introduced to a Deluge exporter for Prometheus so I figured I’d whip up a quick dashboard for visualizing the metrics.

Deluge Dashboard
Deluge Dashboard is a very simple way to display Deluge torrent metrics. It uses the deluge exporter to populate a Prometheus data source. The panels in this dashboard can be copied into more comprehensive dashboards for a single pane of glass view of your network transfers or it can be used as a standalone glanceboard.

You can install the dashboard from the Grafana website or from my repo.

Read more

Easily disable Pihole from your iPhone (or iPad)

Using the Launcher Widget to disable pihole

If you run a pihole the odds are good that you’ve needed to disable it from time to time. I wanted an easy way to disable my pihole(s) temporarily, so I wrote a simple shell script to do it for me. I’m almost always on my Macbook, so this approach worked for a while. I needed to disable it a few times while I was out of the room, so I figured I’d find an easier way to do it from my phone.
Read more

Grafana Dashboards

Grafana is a really great tool for visualizing data. In my homelab, I have obviously have a lot of data so what better than to use than the right tool for the job. Below, you can find some screenshots of my dashboards. I use a raspberry pi that just runs a full screen browser for viewing the dashboard slideshow in addition to a few other glance boards (DAKBoard, Monitorr, et al).

VMWare Cluster Health Dashboard
ESXi Datastores Overview

Here’s the Gallery
Read more

Plex Grafana Dashboard

Plex Dashboard

I made a Grafana Dashboard for my Plex system at home. I feed various system telemetry into an influx database as the data source and Plex-Data-Collector for inserting the data from plex. Additionally, I wrote a python script for injecting logs from NZBGet into mysql. I then use Grafana to display the graphs. I really love Grafana and I’ve created several dashboards:

Read more

Service monitoring with Monitorr


As part of my dashboard project (link coming soon) I was looking for a lightweight self hosted monitoring solution for my home network services. I found Monitorr and decided it was a perfect fit for my needs. It’s simple and it doesn’t have any frills, which is exactly what I wanted.

Read more

pfSense graphs in Grafana

Using Grafana with pfSense

Grafana Dashboard

Update: 2018/09/13
pfSense has a plugin for telegraf which can be installed from the gui. I recommend this method rather than what I figured out below. I’m leaving these notes for manual installation reference.

I put this guide together using information from various other blogs. This is current as of December 2017 and using pfSense 2.4.2. For this tutorial, you’ll need your IP or hostname of your influxdb data source and your username and password.

The data flow is as follows:

pfSense -> Telegraf (gather metrics) -> InfluxDB (store metrics) -> Grafana (render graphs)

Read more

NZBGet MySQL Extension Script

I wrote a simple plugin for NZBGet that inserts download history into a MySQL database. Having my download list in a database makes operations on the data easier than groking text logs.

I wanted to display my most recent downloads on a Grafana Dashboard:
Table of downloads

To use simply copy the script into your NZBGet/scripts directory. In NZBGet, select settings and set the hostname of your MySQL instance.

You can download the plugin on github

Read more

Using curl with the Pihole API

I couldn’t find any quick references about accessing the Pihole API so I created this page.

Pihole is a great app for blocking internet advertising that was originally designed to be run on a raspberry pi. It blocks known advertisers’ domains at the DNS level by effectively null routing requests destined to serve ads. It can be run on VMs, Raspberry Pis and bare metal servers.

Here are the steps to access the pihole’s rest api. I’m using curl in this example, but you can integrate it with OpenHAB or any other system that can talk REST.

Step 1: Obtaining the web password

Most of the useful API endpoints the pihole provides wisely require authentication. After searching around the net I found that I could pass &token=A_VALID_SESSION_TOKEN to authenticate to the pihole for a session. Unfortunately, this is a temporary auth token and wasn’t suitable for my needs. After more digging, I found the gem I needed: &auth=WEBPASSWORD. Sounds great, but where do I obtain this password? You simply log onto your pihole instance or server and run:

sudo cat /etc/pihole/setupVars.conf | grep PASSWORD

Read more

NZBGet ElasticSearch Plugin

I wrote a simple plugin for NZBGet that inserts download history into an ElasticSearch cluster (or node). It uses API calls rather than parsing filesystem logs. I wanted a quick way to just insert the data so I created this script.

Simply copy the script into your NZBGet/scripts directory. In NZBGet, select settings and set the hostname of your ElasticSearch instance.

You can download the plugin on github

Read more

Speeding up Ansible Playbook runs

Ansible is a great tool for configuration management but because of the way it’s designed a common complaint is that it’s not as fast as other tools like Salt, Chef or Puppet. This is because Ansible doesn’t have an agent that listens (although it can) on a host and uses a different type of deployment methodology that is based on SSH. This post isn’t about the pros and cons of each tool, but rather about ways to improve upon Ansible’s default configuration values. By default Ansible ships with very conservative default values. This is smart in my opinion because it offers greater compatibility out-of-the-box. Here I highlight some safe adjustments that can be made to the default configuration for improved performance (speed!)

Real World Playbook Test

For this test I’m using a real-world playbook that I use in my homelab when provisioning a new CentOS VM. It configures some basic things (hostname, ssh keys, etc), installs common packages/utilities and tunes some OS configurations.

Read more

Pfsense WAN with Cellular LTE/4G

Using pfsense for WAN Redundancy with Cellular LTE/4G

I work from home a lot and I need reliable internet connectivity to workplace. As a result, I decided to implement a failover WAN connection into my firewall. I use pfSense as my firewall which combines power and flexibility with ease of configuration.

The Hardware: NetGear LB2120 LTE Modem

While researching options, I decided on the Netgear LB2120 4G LTE modem since it has Gigabit port(s) and can be used with external antennae.

Netgear LB2120

Read more

Dynamic DNS via Digital Ocean API

This is a quick tutorial about setting up a simple shell script that runs periodically to update a DNS record on the internet with the IP address of your network. If you’ve ever wanted to have always updated with your home IP address, this is one way you can do it. There are paid and free services that offer this functionality, but I choose to use this method because it gives me ultimate flexibility over my domain.
This tutorial assumes you have your own Top Level Domain (TLD) and that you’ve configured it to use Digital Ocean as the authoritative DNS for it. Here, I’ll use “” as the top level domain.

Generate a Personal Access Token

Log in to Digital Ocean and click on API from the top Menu. Click the Generate New Token button and give it a name. The name is not parsed, it’s just for your own reference. I like to give it something descriptive to my application. For this example, I’ll use MyDNS. Be sure to check the box next to Write so we can update the records using this API Key.

Once you have the API Key, save it somewhere for reference. It’s one of the 3 variables we’ll need to update in the script.

The API Key will look something like this:

Read more

Quieting a Dell R710

I have a Dell R710 rev. II that I use in my home office lab (homelab) running ESXi 6.5. The R710 sits in my office where we work from home. Normally the hum of the R710 fans isn’t terribly bothersome - the 5 fans it houses run at around 3,800 RPM each. The noise is definitely noticeable so I did a little bit of digging into ways I could quiet it down. After looking into replacing the fans with quieter ones I found that I could override the system control of the fans and silence them that way. While I have to monitor the onboard temperatures more closely when disabled, I’ve found little downside to doing so when I’m in there. Here’s how to do it:

The commands used below assume default username / password of root / calvin. Hopefully you’ve changed the default password so substitute yours where applicable.

Read more

A Dashboard for Pihole Stats

Pihole + Grafana + InfluxDB Dashboard

Grafana Dashboard
I wanted to add the metrics from my ad-blocker, the great Pihole to my executive dashboard. To create the dashboard I used Grafana to display the graphs and InfluxDB a the time-series backend database. I use a simple python script to get the metrics from pihole and record them in influxdb.
Grafana makes it easy to render them into a user friendly dashboard.

Installing Grafana and Influxdb is beyond the scope of this blog post but here is the scipt that I use to get the data from pihole and insert it into Influx.

After you’re getting data in your influx db you’ll have to create a grafana dashboard.

Read more

Amazon Alexa in the car

Since Alexa for Car is becoming available on Dec. 5th, 2018, I thought I would throw some pictures up of my Alexa installation before it was productized. It was novel at the time. I used a Verizon LTE Jetpack for cellular connectivity. I simply feed the audio into the Auxillary port in the car and tether wirelessly to the LTE modem. This is far from a noteworth project, it’s just something I did for fun and proof of concept.

Perfect fit

Read more

Using Ansible to build a high availablity Nzbget usenet downloader

I’m limited to about 80MB/s on downloads on my VPC at Digital Ocean, but I run Nzbget for downloading large files from usenet. It doesn’t take long to download at all, but out of curiosity I wanted to see if I could parallelize this and download multiple files at the same. I use Sonarr for searching usenet for freely distributable training videos which then sends them to NZBget for downloading. Since Sonarr can send multiple files to nzbget which get queued up, I figured I can reduce the queue by downloading them at the same time.

Using Ansible and Terraform (devops automation tools), I can spin up VPC on demand, provision them, configure them as nzbget download nodes and then destroy the instances when complete.

Read more

Record and playback terminal sessions with Showterm


I just found a neat tool that will let you record a bash session for playback / site linking. It’s called Showterm. Adding the playback video is as simple as adding an iframe to your page:

<iframe src="" width="640" height="480"></iframe>

or pasting the url:


Here’s a sample:

Building an executive dashboard with Grafana

Grafana + InfluxDB + scripts = Awesome

I have many interests and some of them have metrics that are useful or fun to watch. For example, I have investment in Bitcoin so it’s nice to be able to keep an eye on it periodically.
I decided to create a graphical “at a glance” dashboard for myself. I chose Grafana as the user interface / front end and InfluxDB a the time-series backend database to store the metrics. I use various scripts and applets to populate the data into Influx and Grafana makes it easy to
render them into a user friendly dashboard.

Some of the metrics I monitor are Pihole stats, the price of bitcoin, how many IPs get banned from my webservers and my network throughput.

Here’s my dashboard:

Grafana Dashboard

Read more

Using Ansible to build a high availablity Sabnzbd usenet downloader

I’m limited to about 40MB/s on downloads on my VPC at Digital Ocean, but I run Sabnzbd for downloading large files from usenet. It doesn’t take long to download at all, but out of curiosity I wanted to see if I could parallelize this and download multiple files at the same. I use Sonarr for searching usenet for freely distributable training videos which then sends them to SABnzbd for downloading. Since Sonarr can send multiple files to sabnzbd which get queued up, I figured I can reduce the queue by downloading them at the same time.

Using Ansible and Terraform (devops automation tools), I can spin up VPC on demand, provision them, configure them as sabnzbd download nodes and then destroy the instances when complete.

The instances all run the same sabnzbd config and the instances use haproxy for round-robin distribution. I will probably change this to Consul, but I just wanted something quick so I used a basic haproxy config.

Read more

System info bash script

I put together a quick bash shell script to view system info at a glance. I know there are existing tools for this like inxi, but I wanted to put something together I can copypasta. This is specific to RHEL, Centos and Sci Linux but it can be easily adapted for other distros.

Read more

Inxi - a utility for viewing system information


inxi is a super handy system info utility. These days I typically work with ephemeral instances / microservers, so I just dispose of infrastructure that flakes out. Occassionally I’ll need to see what’s up with a box so I’ve put together some common invocations of inxi below for reference:

Common Invocations

Read more Panda

Comma is shipping the Panda interface again. I received mine last week. It’s a wifi enabled OBDII interface. The Panda is more than just a reader though. It decodes and enables writing to the Media canbus. It’s going to make for some fun projects. Using Cabana I should be able to create a Database file of the Kia Optima’s CANbus protocol.

Read more

Building a homebrew generator

A few years ago I built my own generator. I cobbled it together with some parts I had laying around the house. I found a free lawnmower on craigslist and I used the engine from it as a power source for the generator. I coupled the engine to an automobile alternator and a power inverter. The result is a cheap AC power generator. It only produces a few hundred watts of power, but it’s enough to power lights or emergency equipment in the event of power failure. I did this project for fun, not as a replacement for a real backup power generator. Here are some pictures:
The generator
The generator
Wood coupler panel
Belt and pulleys

My Homemade Metalcasting Furnace

On this page I highlight how I built my metal casting furnace. It’s a propane furnace capable of melting metals at up to 1,300 degrees F (°F). There are 2 major assemblies: The furnace housing and the burner. The housing is composed of a combination of fireclay, sand and cement; equally mixed in thirds.

An aluminum bar turning into liquid

Read more

Interviewed for O'Reilly's Release 2.0 Magazine

O’Reilly’s Radar - Release 2.0 Magazine interviewed me about Dashwerks, Inc’s role in the proliferation of open-source technology and how we were able to develop a profitable business model using a hybrid open-source / proprietary business model. My interview is in the Winter 2007 issue.

In this issue of Release 2.0, we consider the state of the open source hardware products and business models that are emerging. It’s the future of manufacturing - and early signs of it are here now.

You can read the current issue here. You can purchase this issue of the magazine for $129.00, or get a 6 month subscription for $495.00.

Release 2.0 Magazine - December 2007

Update July, 16, 2018:
O’Reilly is updating their website and they have released the eBook version of this for free.

From their site:

O’Reilly published Release 2.0 from February 2007 (when we acquired Esther Dyson’s Release 1.0 newsletter) through April 2009. In this print journal, we endeavored to provide “news from the future.” Looking back, we did a pretty good job. Themes included open source hardware, information visualization, web operations and performance, geo, and big data–all of which matter even more today. We’ve made PDFs of the entire archive freely available, so read, remember, and learn.

Building an Ethanol Still

A few years ago, when gas prices were exorbitant, I started to build my own Ethanol Still. In light of the global energy crisis, I figured that being able to produce my own fuel was a useful endeavor. Creating ethanol fuel requires distilling corn (or other vegetables/fruits) and extracting its potential liquid energy. I did some research on the web and discovered the Charles 803.
I bought plans and began building the still. I’ve put this project on hold for now but perhaps one day I’ll complete it. Until then, here are some pictures of the project:

Read more

How high gas prices paid for my new (used) car

The stage is set:

I drive my VW Jetta exactly 50 miles a day to and from work. When gas prices started going up in the Summer of 2006, I decided to figure out exactly how much fuel was costing me each workday. So, one morning on the way to work, I stopped at the gas station nearest my home. I filled my tank and reset my trip counter to zero. I recorded the price per gallon ($3 something a gallon!). Then, I drove directly to work, worked, and drove back to the same gas station. I pulled up to the same pump I filled up at that morning. I took note of how many miles I had driven, and sure enough it read almost exactly 50 miles. Next, I refilled my gas tank. It cost me $7. I had burned $7 dollars worth of fuel just going to work and back! That came as quite a shock. I knew gas prices were high, but I never thought that I was spending that much each day. $3 a Gallon?!? Somethings gotta give! After doing some homework on the web (, et al., I decided to buy a much more fuel efficient car (and a soon to be FREE CAR).

Read more

Dashpc Carputer

My carputer: The Dashboard PC
In 1999 (many years ago), I had the crazy idea of putting a personal computer into my car. After much though and some serious planning, I decided to do it. I started the project in 1999 and its been evolving ever since. A lot of people may wonder why I wanted to put a personal computer into my car. Well, back when I started the project, there were no iPods or portable music players. Navigation systems for cars only existed in specialty markets (military, super luxury, etc) and nothing provided useful information like traffic conditions. So, I set about installing the computer and customizing it for my needs / desires. The project became wildly popular on the internet and it catalyzed the carputer craze. I blogged about it as I built it and it developed quite a following on-line. It was featured on a popular technology website and later in two books:
Geek My Ride (forworded by Apple co-founder Steve Woz Wozniak) and Car PC Hacks. As I built the carputer, I had to develop my own electronic circuit to control power issues in the car. After an overwhelming number of requests to purchase this circuit, I began selling it (the DSSC startup and shutdown controller) via my company Dashwerks, Inc.

I created a website dedicated to the project, dubbed The DashPC where you can find more detailed information. DashPC is an amalgam for Dashboard Personal Computer.

Here are some pictures
Screenshot of my dashpc software
Red Hat Linux booting in the car
The screen and keyboard
The computer in the trunk
The wireless keyboard

Technology Used:

(add freshmeat link here)

Dashboard Linux

In 1999 (many years ago), I had the crazy idea of putting a personal computer into my car. There were no frameworks or code bases available at the time because a project of this magnitude had never been done, so I set about writing my own frontend software: Dashboard Linux. The entire system was initially built around Linux From Scratch (LFS). I started the interface with Perl & TCL/TK, then later ported it over to C. On it’s final iteration I used C++ with Qt.

This post is mostly for posterity because the project has been abandoned and there are many newer projects that are much more capable.

Pictures / Screenshots

ScreenshotThe old Perl TCL/TK interface (circa 1998)
Bare GTK interfaceSame interface with a different theme applied
Another theme applied... and another theme
The FM Tuner card interfaceGPSDrive on Linux

Technology Used: