m5p3nc3r

About me

Hi, my name is Matt Spencer, I am a software engineer with over 30 years experience across multiple industries and segments. To find out more about me, please see my Linkedin profile.

You will probably find me hanging out on the DevEco Discord server. And all of my code is available on GitHub

About this site

I like to learn through doing, so all aspects of this site from hosting to content are build using open source tools and technologies. It is currently deployed to a RaspberryPi 4, sat in my home office.

About the hardware

The site is hosted on a RaspberryPi 4 running Debian 12 (bookworm).

Software running on the Pi

The host OS is configured using Ansible to ensure that the build is repeatable. The playbook is available on GitHub if you are interested in creating your own.

The ansible script installs and configures the following software:

How the site is built

The site is built using Next.js, a React framework. Scripting is implemented with TypeScript to ensure type safety and early catching of errors. The content written in markdown and converted to HTML using MDX.

The sources for the site are available on GitHub, so you can explore how I have built it.

Key technoloties used in the site are:

I am using GitHub Actions to build and publish the site, however because its my personal site, the container is private on ghcr.io.

How the site is deployed

Currently the site is deployed to the Pi4 through a manual process, but I am hoping to explore using an automatic container updater like Watchtower in the future.

Development Environment

My primary development machine as a Dell XPS 13 with a Arm powered Snapdragon processor running Windows. Being an ex-Arm employee, I have a soft spot for the Arm architecture, and I want to help dogfood the ecosystem.

As an Open Source fan and a lifelong Linux user, I am using the Windows Subsystem for Linux (WSL) to run a Linux Distro so that the developer experience and tools are as familiar as possible.

VSCode is my editor of choice, and I am using the Remote - WSL extension to enable me to work on the Linux filesystem from within Windows.

The only real issue with this setup I have found so far is that when working in WSL, I am unable to access USB devices as the VirtualBox tools used to enable this currently don't support Windows on Arm.