---
title: "New Website"
date: "2025-05-16T13:16:00-06:00"
description: "There's finally a new website at d-b.ca."
summary: "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 published a proper website at [https://d-b.ca/](https://d-b.ca/).
The last time I had anything live on this domain was over 20 years ago,
according to the [Wayback Machine](https://web.archive.org/). What took so
long? Over the years I've learned a lot, and I'm constantly experimenting with
new ways of getting things done. This site, while useful in its own right, is
a culmination of the platform I've developed to host it.

## History

My first personal website was developed while I was a student at the
[University of Alberta](https://ualberta.ca), near the end of the previous
century. The web itself was still quite young, but the university provided
students with the means to publish web content. It was mostly a novelty at the
time and didn't last beyond my time at school, but it sparked my interest in
Internet technologies and their applications.

That early site included 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 began when I was working at a local
Internet service provider. I was able to get a special deal on a
business-class broadband connection at home, which included a small network
block (a `/28`, or 16 IP addresses) that I could use. I dedicated my most
powerful machine to be my server and developed several services, including a
new website.

My website at that time wasn't fancy, and was geared primarily towards
experimentation. I developed a simple content management system from scratch
in PHP3, which I used to publish a blog. It also integrated with mailing
lists, another area I was exploring at the time.

### D-B.CA

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

Early on, I focused mostly on operating my email services and other
experiments, with little attention paid to a website. There were a few test
pages at times, but nothing substantial.

## Modern Technology

One of the projects I've been following is [Hugo](https://gohugo.io/). I've
seen and worked with various web content management systems in the past, and
they often feel cumbersome and present security concerns. Hugo is an example
of a "Static Site Generator," which transforms a source description of a site
into the static resources used to serve it – 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, as traditional CMS systems do.

Using Hugo is much easier with a good base template, and there are
[many to choose from](https://themes.gohugo.io/). I've chosen one called
["Blowfish"](https://blowfish.page/) for this site.

Another benefit of a static site generator is that all the sources for the
site can be treated like software code, making it 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. Feel free to take a look:

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

### CI/CD

I've also set up a CI/CD pipeline to build and deploy the site whenever
changes are made to the source repository. The CI portion is triggered by a
push to the web repository. It runs a workflow that builds the site and
packages the resulting artifacts into a container image based on
[Caddy](https://caddyserver.com/). The build container with Hugo is another
image 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 the platform this site is running on, and
some of the history and decisions that drove its design.