diff --git a/content/posts/new-website/featured.png b/content/posts/new-website/featured.png new file mode 100644 index 0000000..2f0db21 Binary files /dev/null and b/content/posts/new-website/featured.png differ diff --git a/content/posts/new-website/index.md b/content/posts/new-website/index.md new file mode 100644 index 0000000..cc7c167 --- /dev/null +++ b/content/posts/new-website/index.md @@ -0,0 +1,100 @@ +--- +title: "New Website" +date: "2025-05-11T12:00: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 gotten around to publishing a proper website here at +[https://d-b.ca/](https://d-b.ca/). The last time I had anything up on this +domain was over 20 years ago, according to the +[Wayback Machine](https://web.archive.org/). 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](https://ualberta.ca), 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](https://gohugo.io/). +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](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 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](https://caddyserver.com/). 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.