edit: new-website

This commit is contained in:
Drew Bowering 2025-05-16 13:26:50 -06:00
parent 217779d89a
commit 9df2de9207
Signed by: drew
GPG Key ID: DC9462335BDDAC6B

View File

@ -1,100 +1,97 @@
--- ---
title: "New Website" title: "New Website"
date: "2025-05-11T12:00:00-06:00" date: "2025-05-16T13:16:00-06:00"
description: "There's finally a new website at d-b.ca." 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." 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 gotten around to publishing a proper website here at I've finally published a proper website at [https://d-b.ca/](https://d-b.ca/).
[https://d-b.ca/](https://d-b.ca/). The last time I had anything up on this The last time I had anything live on this domain was over 20 years ago,
domain was over 20 years ago, according to the according to the [Wayback Machine](https://web.archive.org/). What took so
[Wayback Machine](https://web.archive.org/). What took me so long? Over the long? Over the years I've learned a lot, and I'm constantly experimenting with
years I've learned a lot, and I'm constantly trying out new ways of getting new ways of getting things done. This site, while useful in its own right, is
things done. This site, although intended to be useful in its own right, is a a culmination of the platform I've developed to host it.
culmination of the platform I've developed to host it.
## History ## History
My very first personal website was developed while I was a student at the 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 [University of Alberta](https://ualberta.ca), near the end of the previous
century. The web itself hadn't been around for very many years, but the century. The web itself was still quite young, but the university provided
university did provide the means for every student to publish web content. students with the means to publish web content. It was mostly a novelty at the
It was mostly a novelty at the time, and didn't last beyond my time at the time and didn't last beyond my time at school, but it sparked my interest in
school, but it was part of the beginning of how I got interested in Internet Internet technologies and their applications.
technologies and how they can be applied.
That early site did include one interesting feature. I developed a mechanism That early site included one interesting feature. I developed a mechanism to
to automatically update a page every time I logged into one of the school's 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. computers, so my friends could find me if they wanted to.
### Self-Hosting ### Self-Hosting
I've always been an avid self-hoster. It started when I was working at a local I've always been an avid self-hoster. It began when I was working at a local
Internet services provider. I was able to get a special deal on a Internet service provider. I was able to get a special deal on a
business-class broadband connection at home, which came with a `/28` subnet business-class broadband connection at home, which included a small network
that I could use. I dedicated the largest machine I had on hand at the time as block (a `/28`, or 16 IP addresses) that I could use. I dedicated my most
my server, and developed many services, including a new website. powerful machine to be my server and developed several services, including a
new website.
My website at this time was nothing fancy, and was mostly geared towards My website at that time wasn't fancy, and was geared primarily towards
experimentation. I developed a simple content management system from scratch 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 in PHP3, which I used to publish a blog. It also integrated with mailing
lists, which I was also experimenting with quite a lot at the time. lists, another area I was exploring at the time.
### D-B.CA ### D-B.CA
I hadn't registered a domain name of my own in those early days, so everything 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 resided under a friend's domain. In late 2002, I decided to finally register
register one of my own, mainly so I could have a stable email address. I came one of my own, primarily so I could have a stable email address. I came up
up with `d-b.ca`, because someone was squatting on `db.ca` --- which is still with `d-b.ca` because someone was squatting on `db.ca` and still is, I might
squatted on to this very day, I might add. add.
Early on I was mostly involved in operating my email services and other Early on, I focused mostly on operating my email services and other
experiments, and didn't focus much on a website. There were a few test pages experiments, with little attention paid to a website. There were a few test
at times, but nothing serious. pages at times, but nothing substantial.
## Modern Technology ## Modern Technology
One of the projects I've been keeping an eye on is [Hugo](https://gohugo.io/). One of the projects I've been following is [Hugo](https://gohugo.io/). I've
I've seen and worked with various web content management systems in the past, seen and worked with various web content management systems in the past, and
and they tend to be rather cumbersome and a source of security concerns. Hugo they often feel cumbersome and present security concerns. Hugo is an example
is an example of what's called a "Static Site Generator", which transforms a of a "Static Site Generator," which transforms a source description of a site
source description of a site into the set of static resources used to serve into the static resources used to serve it much like a compiler. The
the site, much like a compiler. The resulting static resources can be served resulting static resources can be served as regular files from any web
as regular files from any web service, without the need for dynamically service, without the need for dynamically generating content upon request from
generating content upon request from a database like a traditional CMS. a database, as traditional CMS systems do.
Using Hugo is much easier with a good base template, of which there are 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 [many to choose from](https://themes.gohugo.io/). I've chosen one called
["Blowfish"](https://blowfish.page/) for this site. ["Blowfish"](https://blowfish.page/) for this site.
Another benefit of a static site generator is that all of the sources for the Another benefit of a static site generator is that all the sources for the
site can be treated like software code, meaning that it's simple to use site can be treated like software code, making it simple to use development
development tools like git for version control. I keep the sources for this tools like Git for version control. I keep the sources for this site in a
site in a public repository on my own git server, have a look at this link public repository on my own Git server. Feel free to take a look:
if you like.
{{< gitea repo="d-b.ca/web" >}} {{< gitea repo="d-b.ca/web" >}}
### CI/CD ### CI/CD
I have also set up a CI/CD pipeline to handle building and deploying the site I've also set up a CI/CD pipeline to build and deploy the site whenever
whenever anything is changed in the source repository. The CI portion is changes are made to the source repository. The CI portion is triggered by a
triggered by a push to the web repository. It runs a workflow that builds the push to the web repository. It runs a workflow that builds the site and
site and then packages the resulting artifacts into a container image based on packages the resulting artifacts into a container image based on
[Caddy](https://caddyserver.com/). The build container with Hugo is another [Caddy](https://caddyserver.com/). The build container with Hugo is another
image that I maintain in this repository. image I maintain in this repository:
{{< gitea repo="d-b.ca/hugo-builder" >}} {{< gitea repo="d-b.ca/hugo-builder" >}}
Next, the workflow updates the CD Gitops repository to deploy this new version 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 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 production site, I use my regular GitOps repository to update the image tag,
and the rest happens automatically. and the rest happens automatically.
{{< gitea repo="d-b.ca/db-cd" >}} {{< gitea repo="d-b.ca/db-cd" >}}
## Underlying Platform ## Underlying Platform
In my next article, I'll describe more about the platform that this site is In my next article, I'll describe the platform this site is running on, and
running on, and some of the history and desicions that were made to get some of the history and decisions that drove its design.
everything up and running.