2025-05-16 13:26:50 -06:00

98 lines
4.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
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.