hakk

software development, devops, and other drivel
Tree lined path

Blogs

Install OpenWRT x86 64 Using an A/B Partition Setup

A quick reference for OpenWRT Installation Prepare Debian bootable USB Connect your Debian USB and boot Download OpenWRT image onto the Debian USB Flash the SSD drive with the OpenWRT image Resize the OpenWRT partition Create an additional partition Upgrade Prepare a bootable Debian USB You can use another distro if you’d like. I use Debian as a personal perference and also because it’s relatively quick to create a live USB. Read more...

Connecting from Mac OSX to Ubuntu Desktop

After discovering how pleasant it can be without the sound of a whirring fan, I started looking for options to move my desktop as far away as possible so I no longer had to listen to all the fan noise. The MicroSoft RDP App works great on Mac and allows me to connect to not only Windows but to Linux desktop environments. After installing this on my mac I was able to remote into my Windows desktop (Follow this guide). Read more...

Detect When the Browser URL Changes (JavaScript)

When building a single page web app it’s important to update the URLs without refreshing the page and so the user can easily copy and share or revisit the current page. How Can This Be Done? Fortunately the browser provides an API that works in such use cases. Enter “popstate event” this works hand and hand with the history.pushState() event which updates the URL. When the user clicks either the forward or back button the URL will change but unfortunately the page content will not. Read more...

Update Browser URL Without Page Reload (JavaScript)

When building a single page web app it’s important to update the URLs without refreshing or reloading the page. This will also enable the user to easily copy and share or revisit the current page. Using the History API Browsers provide a History API that allows the page URL to be updated that works great for this use case. The API does allow for sharing other data but has limitations; with that in mind it would be better to find another way to share any data especially if it’s sizable. Read more...

Deploy WordPress on KataCoda Kubernetes

A step by step guide to deploying WordPress on Kubernetes provided by the KataCoda website. Please note that this shouldn’t be used for a production deployment and should only be used for learning and/or practice. Create a Secret for the MySQL Password The first step is to create a secret that can be used to store the MySQL database password. Later in the deployment this will be used in creating the MySQL database pod and then used by the WordPress pod to connect to the database. Read more...

Vagrant Ubuntu with Docker install

Creating an Ubuntu VirtualBox and installing Docker. Vagrantfile Vagrant.configure("2") do |config| config.vm.box = "ubuntu/bionic64" config.vm.define "docker-1" do |node| node.vm.hostname = "docker-1" config.vm.box_check_update = false config.vm.network "public_network" config.vm.provider "virtualbox" do |vb| vb.name = "docker-1" vb.memory = "2048" vb.cpus = "2" end node.vm.provision "install-docker", type: "shell", :path => "ubuntu/install-docker-2.sh" end end install-docker-2.sh cd /tmp curl -fsSL https://get.docker.com -o get-docker.sh sh /tmp/get-docker.sh vagrant up Wait for the virtual machines to get created and started. Read more...

Building a VirtualBox ISO with Packer

I wanted to try building my own Vagrant base box, I decided to use one of the chef bento templates for ease. It was moving along nicely, downloaded the ISO, verified the checksum and suddenly this error appears. VBoxManage: error: Details: code NS_ERROR_FAILURE (0x80004005), component MachineWrap, interface IMachine packer Not quite sure where to start I decided to do a quick Google, read some posts about VirtualBox modules. I was quite sure that wasn’t my issue. Read more...

VBoxManage - Manage VirtualBox VMs From The Command Line

VirtualBox is a fantastic tool, previously I had been using it from the GUI. However, recently I started running it remotely on a server and using VNC to connect and manage the virtual machines. I decided that I would rather use the command line for this task as well. However, remembering all the commands is proving difficult. So I’m going to create a list and hopefully help myself and others along the way. Read more...

Go embed example of serving static files at the root URL path

Go 1.16 introduced the embed package which allows serving static files from directly within the binary without the need for any external package. Screenshot of the example web page Here are two example’s showing how to serve from the root URL path. example.go shows an example of how to use the new io/fs package and the Sub func. The comments offer a word of caution however that it may not prevent access outside of the subdirectory. Read more...

Detect Visitors DNS Provider

Recently I had bought a new router and was in the process of setting it up, during that process I started looking for various DNS-over-TLS and DNS-over-HTTPS providers. That’s when I came across NextDNS, on the setup page I saw the following: NextDNS Setup page I thought what!? How do they know that? After some investigation it all made sense, I’ll share what I found and a demo implementation. Enter Dev Tools The first place I start when investigating interesting finds such as this is my browsers trusty Developer Tools. Read more...