AJ's Blog

This is a personal blog focused on computer software and hardware. Most projects are implementing software and hardware for a homelab. What is a homelab? I would say a homelab could be a single computer or dozens of computers connected in a network. You can also integrate with computers in the Cloud.

Continue reading...

Recent Posts

KVM, QEMU, and libvirt

01-23-2022

This post is taking a look at another suite of software to create and manage Virtual Machines. For a background on computer virtualization, check out a previous post.

Linux distributions support virtualization through the Linux kernel which is why the software is called KVM. This stands for “Kernel-based virtual machine”. It consists of a loadable kernel module, kvm.ko, that provides the core virtualization infrastructure and a processor specific module, kvm-intel.ko or kvm-amd.ko.

Building websites with containers, hugo and AWS Amplify

01-08-2022

Note (2025-10-12): This blog has been running on the same Amplify setup since this post. In 2025 the hugo build image was updated along with the site theme. The AWS Console has changed so look for a newer post about AWS Amplify

Deploying static sites to AWS Amplify is the updated post

AWS Amplify is a set of tools and services that can be used together or on their own, to help front-end web and mobile developers build scalable full stack applications, powered by AWS (Amazon Web Services). With Amplify, you can configure app backends and connect your app in minutes, deploy static web apps in a few clicks, and easily manage app content outside of AWS.

GitLab CI/CD and building containers

01-02-2022

Update 2025-10-15: This method of building containers should be considered deprecated. The kaniko project is not maintained

GitLab CI/CD is a feature of the GitLab platform that is used in software development for Continuous Integration, Delivery, and Deployment of software. The idea is that software source code will grow and evolve over time but you do not want to have to manually compile your code each time a change is made. This is especially true when you develop software as a team and multiple changes might be made in a single day.

Netboot.xyz

12-31-2021

The tool netboot.xyz can be used to bootstrap operating systems onto new physical or virtual computers and also run utilities to recover data over the network. With this tool you can PXE boot without having to create a lot of infrastructure to support PXE installations. With netboot.xyz, I can use a single bootable image on a usb drive or mounted to a virtual machine to install many different operating systems. This tool leverages the iPXE project to load different operating system images.

ZShell

12-19-2021

What is a shell?

The shell is a program that translates human readable words (commands) and converts them into binary data that the Operating System kernel can interpret. The shell can interpret commands entered from the keyboard or a file commonly refered to as a script.

You can access the shell through a terminal program on the local computer or remotely using SSH.

The most popular shells that I am aware of are:

ZSH

Zsh is a shell that builds on shells such as bash, ksh, and tcsh. Zsh offers some useful features such as better tab completion.

Dokuwiki homelab wiki

12-04-2021

Dokuwiki is an open-source wiki software that isn’t too fancy, perfect for documenting a personal homelab. This software does not require a database and is easy to host and backup running as a container.

Installing and configuring Dokuwiki with Docker

In order to run the Dokuwiki server, I will be using a docker container inside of a virtual machine. In order to keep this post concise, please check out my previous post on docker if you are not familiar with the technology. I also have a post on setting up virtual machines and yet another post on setting up a dedicated system to run virtual machines with proxmox.