Raspberry Pi IR Receiver

I recently got my hands on a IR Receiver and Transmitter module from a ELEGOO Upgraded 37 in 1 Sensor Modules Kit V2.0. I wanted to learn how the technology works and figure how to the IR transmitter with my Raspberry Pi 4. EEVblog has an excellent video describing how the IR transmitter and receiver work in excellent detail. EEVblog #506 - IR Remote Control Arduino Protocol Tutorial Signal Basics The IR transmitter works by using OOK (on off keying) to modulate a carrier frequency. [Read More]

Vim Plug Autoload

This post is about how to write some vim-script to autoload the plugin manager from the .vimrc. This makes the process of getting up and running on a new system easier because the plugin manager is automatically downloaded as well as the plugins are also automatically downloaded. Using the commands from https://github.com/junegunn/vim-plug I was able to create a script to auto download VimPlug for vim and NeoVim on windows and on Linux. [Read More]

CMake Dependencies using Fetch Content

Simple built-in method to download and build dependencies

I recently have been wanted to play around a bit with learning the Vulkan graphics API. Before I was able to get started with that I needed a couple if libraries as dependencies to make things easier to work with cross platform. GLFW is an Open Source, multi-platform library for OpenGL, OpenGL ES and Vulkan development on the desktop. It provides a simple API for creating windows, contexts and surfaces, receiving input and events. [Read More]

Git Issue in Docker

Failed to Initialize Git Repository in Docker

Failed to Initialize Git Repo in Docker http://blog.johngoulah.com/2016/03/running-strace-in-docker/ While working with Docker I was trying to automate the build of a project. The project automatically downloaded the source code for several dependencies using Git. When running this command on Linux everything worked flawlessly as expected. When I tested the same build setup on Docker for Windows on my PC things worked as expected there were no build issues. Then as other people started to use the build script they ran into a weird error that I have never seen before that is shown below. [Read More]
git  docker  wsl 

TestDisk Saved My Data

Using Testdisk to Recover a Formatted Partition

It started a couple days ago when I was trying to format a flash drive on Linux. I ran the following commands to format the flash drive to exfat so that I could use it to take some files to work that I needed. mkfs.exfat /dev/sdc1 The only problem was that I didn’t double check the device I was formatting. This is something that you should always check, when you are running a destructive command. [Read More]

Wireguard VPN behind NAT

How to Setup VPN without Port Forwarding (Keep Alive Packets)

In this blog post I would like to show my setup on how I set a VPN to my work account without setting up port forwarding. Currently I work at a small company that does not have a large IT infrastructure. The building that we are leasing manages the network for us which means that we cannot customize the network to our needs. My goal was to be able to ssh into my work PC in case I forget to push some code and didn’t want to wait until the next time I came in the office. [Read More]

Decreasing Elf Size


Recently I had a problem of reducing the size of an ARM executable that was being loaded onto a embedded platform with only 640K of flash storage. I ran into an issue where the executable was much larger than it should have been. For this post I’ll create an example empty c file to demonstrate what is happening. // main.c int main() {}; I’ll go ahead and compile the simple program using the arm cross compile. [Read More]
gcc  arm  embedded 

Audiobook Ripping on Linux

cdparanoia, sox, and lltag

In this blog post I would like to share my process for ripping audio-books for listening to on my commute to work. I will also talk about some of the challenges of ripping audio in a reliable way without many defects. I am also going to describe how to use some of the programs that I use to produce the output of the cdripping script. CDPARANOIA At the center of the audio CD ripping process is a program called cdparanoia. [Read More]
shell  audio