Blog

Table of Contents

Home Blog Music

POST : How I Made This Page

This will serve as my first post here. I'm not entirely sure yet what sort of topics I'll end up covering in this space, but for now I will give a brief overview of how I put this website together.

I've been putting off making my own page for a little while now. I don't have much web development experience, and have always been a little intimidated by the number of options that exist for creating a site. Since I'm more focused on finding IT and Cybersecurity related work than pursuing web development jobs, I haven't spent much time learning web development frameworks or front-end tools.

Recently though, I started experimenting with Emacs (specifically Org mode within Emacs) and it inspired me to finally put something together. I thought it would be fun to show off the workflow I used to make this page.

progress2.png

Above is a screenshot of what this page looks like while I'm editing it. You may notice I'm not actually editing any HTML. Instead, I'm working in a file called blog.org. When opened in Emacs, .org files are viewed in Org mode. Org mode is a tool built into Emacs that allows you to structure plain text into a hierarchical format using nested headings and subheadings. It can be used for all kinds of things like taking notes, personal organization, planning projects, really anything where you need to organize information into some kind of human readable, structured format. Part of what makes Org mode extensible is its ability to export directly to HTML (as well as several other formats), which I then use here on this site. I don't really feel qualified to give a full introduction to Org or Emacs but if this sounds interesting, I'd recommend checking out the documentation. As for the backend bits, I am hosting the site on a DigitalOcean Droplet and using FastAPI to serve the static files:

from fastapi import FastAPI
from fastapi.responses import RedirectResponse
from fastapi.staticfiles import StaticFiles

app = FastAPI()


app.mount("/home", StaticFiles(directory="home"), name="home")
app.mount("/blog", StaticFiles(directory="blog"), name="blog")
app.mount("/music", StaticFiles(directory="music"), name="music")
app.mount("/styles", StaticFiles(directory="styles"), name="styles")

@app.get("/")
async def root():

    return RedirectResponse(url="/home/home.html")

project/
  app.py
  home/
      home.org
      home.html
  blog/
      blog.org
      blog.html
  music/
      music.org
      music.html
  styles/
      style.css

It's a pretty minimal setup, mounting the directories and redirecting root requests to /home/home.html. This might be a strange way to use FastAPI, but it works for now. I will probably move to something else when I eventually need something more stable/scalable. I'll probably go into more detail about my experience with Org eventually too once I've spent some more time with it. For now I'm going to sleep.

Asher Brownlie Thu Aug 14 05:50:38 EST 2025