How to use environment variables in a Kubernetes manifest

If you’re a Docker/Compose user new to Kubernetes, you might have noticed that you can’t use environment variables in your manifest files. This might not be a huge deal to most, especially since there are other (better) ways of managing environment variables in Kubernetes, but to someone getting started it can be a pain.
Continue reading “How to use environment variables in a Kubernetes manifest”

Deploy a Kubernetes cluster with Kubernetes in Docker (Kind)

The kind logo is licensed under CC BY 4.0

In a previous post, I showed how to build your own Kubernetes clusters using K3s. Since then, I’ve found an even easier cluster deployment tool that runs entirely within Docker. That’s right – if you have a computer with Docker installed, you can run a full multi-node Kubernetes cluster with no additional setup. This post shows you how to do it, and provides an all-in-one script for spinning up a full cluster with a demo website in one command.

Continue reading “Deploy a Kubernetes cluster with Kubernetes in Docker (Kind)”

Bootstrap a Kubernetes cluster with KVM and K3s

Container Ships

No joke, Kubernetes is a pain in the butt to set up yourself. Managed services like GKE and EKS are great if you have extra cash, but if you just want a basic cluster to mess around in (or you’re cheap like me), eventually you’ll start looking for a way to do it yourself.

After a lot of futzing around, I finally got a virtualized 3-node Kubernetes lab running on my home server. It’s not redundant, secure, or fail-safe, but I can run K8s applications on it without problem. And you can’t beat the cost. This blog will show you how to set up your own fully functioning, free Kubernetes cluster.

Continue reading “Bootstrap a Kubernetes cluster with KVM and K3s”

Easy Adware and Malware Blocking on Android

Letter box in brick wall.

Digital ads are a disaster. While ads themselves are a legitimate and often necessary source of income for service providers, the way they’re delivered to users can be downright malicious. On mobile devices, ads have been shown to drain battery life and surreptitiously deliver malware, without the content providers even being aware of it. Until content providers can get their act together, it’s up to users to protect themselves.

In this post, I’ll present a convenient, root-free way of blocking ads on Android devices using free and open source tools.

tl;dr: download Steven Black’s hosts file and the Vpn Hosts app from xfalcon.

Continue reading “Easy Adware and Malware Blocking on Android”

Showcase: Using PixelMaestro to Control an LED Matrix on an Arduino Mega

This past week saw the release of PixelMaestro 2.0, and with it, a bunch of fixes to device communication and control. You can now plug in any Arduino-compatible board with an attached LED strip or matrix and start controlling it in a matter of minutes. Not only can you send commands to it in real-time, but you can upload complete configurations and store them in EEPROM for long-term storage, even across reboots. This was possible in previous versions of PixelMaestro, but now it’s even easier.

This post demonstrates some of PixelMaestro’s new device integration features and example sketches.

PixelMaestro on an Arduino Mega
Controlling an LED grid on an Arduino Mega using PixelMaestro

Continue reading “Showcase: Using PixelMaestro to Control an LED Matrix on an Arduino Mega”

Cross-Compiling Windows Applications in Linux with MXE

About a year ago, I started looking into ways to cross-compile Windows applications from within Linux. This brought me to a cool project called MXE (short for M Cross Environment). With MXE, you can use your Linux machine to generate Windows binaries without having to install any virtual machines or compatibility layers. In this post, I’ll walk you through the process of setting up MXE and turning your source code into a Windows program.

Continue reading “Cross-Compiling Windows Applications in Linux with MXE”

Saving LED Configurations to Arduino Using EEPROM

While working on the next release of PixelMaestro, I came across a problem of storing long-term data on an Arduino. I have a system in place where configuration changes are sent to an Arduino over USB as byte arrays, and as the Arduino reads the array it applies the changes. The problem is those changes disappear as soon as you restart the device. How, then, does one store persistent data without having to add an SD card or extra memory? Enter EEPROM.

Continue reading “Saving LED Configurations to Arduino Using EEPROM”

Gamifying Your Life Part 2: How I Use LifeRPG

In an earlier post, I explored the idea of productivity gamification and how it can help increase your motivation. I’ve been testing this over the past few weeks by using an Android app called LifeRPG to track my habits, tasks, and important milestones I wanted to reach. In this post, I’ll go into detail about my LifeRPG setup and how it’s helped me stay focused in my everyday life.

Continue reading “Gamifying Your Life Part 2: How I Use LifeRPG”