4.7 KiB

title, date, description, summary
title date description summary
New Website 2025-05-11T12:00:00-06:00 There's finally a new website at d-b.ca. I've published my personal website. A brief history of some past endeavours, and some details on the technology behind the new site.

I've finally gotten around to publishing a proper website here at https://d-b.ca/. The last time I had anything up on this domain was over 20 years ago, according to the Wayback Machine. What took me so long? Over the years I've learned a lot, and I'm constantly trying out new ways of getting things done. This site, although intended to be useful in its own right, is a culmination of the platform I've developed to host it.

History

My very first personal website was developed while I was a student at the University of Alberta, near the end of the previous century. The web itself hadn't been around for very many years, but the university did provide the means for every student to publish web content. It was mostly a novelty at the time, and didn't last beyond my time at the school, but it was part of the beginning of how I got interested in Internet technologies and how they can be applied.

That early site did include one interesting feature. I developed a mechanism to automatically update a page every time I logged into one of the school's computers, so my friends could find me if they wanted to.

Self-Hosting

I've always been an avid self-hoster. It started when I was working at a local Internet services provider. I was able to get a special deal on a business-class broadband connection at home, which came with a /28 subnet that I could use. I dedicated the largest machine I had on hand at the time as my server, and developed many services, including a new website.

My website at this time was nothing fancy, and was mostly geared towards experimentation. I developed a simple content management system from scratch in PHP3, which I used to publish a blog. It had some integration with mailing lists, which I was also experimenting with quite a lot at the time.

D-B.CA

I hadn't registered a domain name of my own in those early days, so everything was listed under a friend's domain name. In late 2002, I decided to finally register one of my own, mainly so I could have a stable email address. I came up with d-b.ca, because someone was squatting on db.ca --- which is still squatted on to this very day, I might add.

Early on I was mostly involved in operating my email services and other experiments, and didn't focus much on a website. There were a few test pages at times, but nothing serious.

Modern Technology

One of the projects I've been keeping an eye on is Hugo. I've seen and worked with various web content management systems in the past, and they tend to be rather cumbersome and a source of security concerns. Hugo is an example of what's called a "Static Site Generator", which transforms a source description of a site into the set of static resources used to serve the site, much like a compiler. The resulting static resources can be served as regular files from any web service, without the need for dynamically generating content upon request from a database like a traditional CMS.

Using Hugo is much easier with a good base template, of which there are many to choose from. I've chosen one called "Blowfish" for this site.

Another benefit of a static site generator is that all of the sources for the site can be treated like software code, meaning that it's simple to use development tools like git for version control. I keep the sources for this site in a public repository on my own git server, have a look at this link if you like.

{{< gitea repo="d-b.ca/web" >}}

CI/CD

I have also set up a CI/CD pipeline to handle building and deploying the site whenever anything is changed in the source repository. The CI portion is triggered by a push to the web repository. It runs a workflow that builds the site and then packages the resulting artifacts into a container image based on Caddy. The build container with Hugo is another image that I maintain in this repository.

{{< gitea repo="d-b.ca/hugo-builder" >}}

Next, the workflow updates the CD Gitops repository to deploy this new version to a private staging site. When I want to publish the new version as the production site, I use my regular Gitops repository to update the image tag and the rest happens automatically.

{{< gitea repo="d-b.ca/db-cd" >}}

Underlying Platform

In my next article, I'll describe more about the platform that this site is running on, and some of the history and desicions that were made to get everything up and running.