diff --git a/src/content/posts/2025-09-14-weekly-notes-11.md b/src/content/posts/2025-09-14-weekly-notes-11.md
new file mode 100644
index 0000000..ad63945
--- /dev/null
+++ b/src/content/posts/2025-09-14-weekly-notes-11.md
@@ -0,0 +1,90 @@
+---
+title: "Weekly Notes #11"
+date: 2025-09-14T22:00
+excerpt: Let's not talk about how long it's been.
+tags:
+ - post
+ - career
+ - music
+youtube: true
+---
+
+I know, I know... it's been a while. I'm not good with keeping up my writing habits. I try.
+
+A lot has happened since my most recent "weekly notes" post. Around October 2024 I started in the exciting world of freelancing! A company I worked for years ago was looking for help, so I figured let's give this thing a shot. It worked! I managed to find contracts through former colleagues and contacts. As it turns out networking is still the most valuable skill when it comes to careers (in my opinion, anyway).
+
+My most recent contract, which has wrapped up as of last week, has lead to full-time, salaried employment. This is a huge relief for me. I've enjoyed the variety of work that comes with freelancing, but I'm ready to settle back down and get stabilized again. I'm starting as a **Senior Software Engineer**. I feel like I'm actually making some career progress.
+
+From [Weekly Notes #10](/posts/weekly-notes-10/):
+
+> I’ll get a job eventually, and for now I’m taking care of myself.
+
+Hey, whaddya know. I did (to both). :)
+
+Outside of work, I've kept busy. Most recently I participated in another game jam (and [here's a post if you'd like to learn more](/posts/2025-gmtk-game-jam-post-mortem-2025-edition/)). We went on our annual trip to Calgary, Alberta to visit family, and took a sidebar trip to Edmonton (about a 3-ish hour drive from Calgary) to experience a small slice of [Edmonton Fringe](https://www.fringetheatre.ca/). When we learned that a sequel to our beloved [Rat Academy](https://www.instagram.com/the_rat_academy/?hl=en) was happening in Edmonton, we knew we had to be there. And it did not disappoint. I'm hoping they will make a stop in Victoria again soon.
+
+My latest gaming addiction is [Abiotic Factor](https://www.abioticfactor.com/), which is like "what if half-life 1 but a survival crafting game?" and I'm here for it. I adore the aesthetic. It's been great fun playing with a group of friends ("alright, who's ready to do a science?"), and since it's not an early access game (typical for your survival-crafters) there's actually a complete experience here with story and everything. We haven't reached the end yet (in fact I'm not even sure if we're close), but there has been a consistent pace of discoveries (some fun, some horrifying).
+
+And then [Silksong](https://hollowknightsilksong.com/) practically stealth-dropped out of nowhere on September 4th. I've barely started this one - I'm maybe an hour or two in? _Also_, Hades II was [just announced to be released on September 25th](https://www.rogue.site/news/hades-2-launch-date-announcement-nintendo-switch-2/). Then about a month later, [Mina the Hollower](https://www.minathehollower.org/) comes out on October 31st. Can we slow our roll, amazing indie games?
+
+In between everything that's been going on, I've been working with [Old School Blue](https://bsky.app/profile/theforevergm.bsky.social) on taking Rumor Mill from game jam to full release. I want to say more, but I'll zip my lips and hope that what we're cooking looks fun to you!
+
+## Links
+
+[How Tim Cook sold out Steve Jobs](https://www.anildash.com/2025/09/09/how-tim-cook-sold-out-steve-jobs/)
+
+It's beating a dead horse at this point, but the Apple of 2025 is nothing like the Apple of 20 years ago. With the latest version of iOS shaping up to be a design and accessibility nightmare, my faith in my once favourite company is at an all time low. Despite that though, I feel like they are the lesser of two evils (the other being Google/Android) when it comes to mobile phones. I'm ready to jump ship, but I don't see any great alternatives yet.
+
+[How Lofi Girl Became a Chill Beats Empire](https://www.404media.co/how-lofi-girl-became-a-chill-beats-empire/)
+
+I do lament the loss of the hip hop influence with recent lofi trends. It feels softer, quieter. It does make for great "focus music", but I find myself searching for more "instrumental hip hop" these days.
+
+[Does Silksong Seem Unreasonably Hard? You Probably Took a Wrong Turn](https://www.404media.co/does-silksong-seem-unreasonably-hard-you-probably-took-a-wrong-turn/)
+
+I agree that the difficulty of Silksong feels like quite a step up from the previous game. My aging gamer instincts are nowhere near as sharp as they once were. I can feel the struggle already in my short time spent so far in the world of Silksong.
+
+Yet, it feels a bit funny to me that gamers playing "metroid-vania-likes" are not engaging in probably the most important part of the genre: exploration. Some sage advice at the end of the article:
+
+> But when a truly amazing game comes along that tries to gently steer the player with burly ants and difficult puzzles, they don’t appreciate it and they don’t listen. If you’re really stuck in *Silksong*, try going somewhere else.
+
+## Videos
+
+{% youtube "ylL-SSRDyJc", "Turnstile: Tiny Desk Concert" %}
+
+I love Turnstile. I also love seeing how bands "make it work" in a Tiny Desk setting.
+
+{% youtube "r5Y1I1Zol2k", "I Got So Annoyed with YouTube I Built My Own" %}
+
+I feel both seen and completely [nerd-sniped](https://xkcd.com/356/) with this one. I am loathe to admit it, but this is an ideal use-case for AI. Feed it _your_ data, with an LLM _you_ control, to create an algorithm that works _for you_.
+
+Completely reasonable developer behaviour.
+
+## Developing
+
+I made some small tweaks to the posts layout and style today. I think it makes it easier to scan. I also had to fix my development pipeline last month. I guess it's been a while since I've posted, so I didn't notice it breaking.
+
+## Watching
+
+We recently finished all of _The Good Wife_, which was rather enthralling! The last season faltered around a bit, but the previous six were great TV through and through. I'm surprised that I hadn't heard of the show during its original run.
+
+We've swiftly moved onto _The Good Fight_, which takes place a year after the end of _The Good Wife_. It follows Diane Lockhart, after she is forced out of her previous firm. I'm not so sure about it after the first few episodes of season 1, but I'll let it cook and see what it has to offer. There's also the second spin-off _Elsbeth_, which follows Elsbeth Tascioni - probably my favourite character of the "Good Wife Universe".
+
+## Listening
+
+Been ravenously listening to the new The Beaches album _No Hard Feelings_, and I'm beyond excited to see them live in October. No skips on this one.
+
+Deftones' newest album _private music_ is stellar. I read on a music review somewhere that said "they are able to play loud music softly" which feels apt. It's aggressive, but thoughtful. It's in your face, but contemplative. I don't know how they do it, but it's _good_.
+
+Recently discovered the shoegaze band [Slow Crush](https://slowcrush.bandcamp.com/), and have been also devouring their newest album _Thirst_.
+
+The _Metal Gear Solid 3_ soundtrack has been on heavy rotation the past 2 weeks as my "focus music". I guess with the recent release of _Metal Gear Solid Delta: Snake Eater_ it's been on my mind lately. I want to play the game, but not bad enough to fork over $90+ for it. I'll wait for a steep sale.
+
+## Coming Up
+
+Tomorrow is my first day as a full-time employee. I'm excited. I've been working with the team already for 3 months, so I'm well integrated and "in the work". Plenty of onboarding to do too.
+
+Later on we have a symphony performance of "Broadway & Beyond" which is symphonic renditions of famous broadway tunes. I'm looking forward to it!
+
+Later in the October two good friends of mine are finally getting married! I think the wedding will be a ton of fun. They're both giant nerds and I know they've been cooking up something neat.
+
+Until next time! ✌️
diff --git a/src/content/posts/2025-gmtk-game-jam-post-mortem-2025-edition.md b/src/content/posts/2025-gmtk-game-jam-post-mortem-2025-edition.md
new file mode 100644
index 0000000..cb2fe28
--- /dev/null
+++ b/src/content/posts/2025-gmtk-game-jam-post-mortem-2025-edition.md
@@ -0,0 +1,287 @@
+---
+title: "GMTK Game Jam Post-Mortem: 2025 Edition"
+date: 2025-09-14T14:23
+excerpt: My second game jam ever!
+tags:
+ - gamejam
+ - gamedev
+ - pixel-art
+ - post
+---
+
+Once again I participated in this year's [GMTK Game Jam](https://itch.io/jam/gmtk-2025)! There were over 9,000 games made this year. It ran from July 30th to August 3rd, 2025. This year I teamed up with [Old School Blue](https://bsky.app/profile/theforevergm.bsky.social) to make **[Rumor Mill](https://oldschoolblue.itch.io/rumor-mill)**!
+
+The theme this year was **loop**. There are many ways to interpret the theme - we saw a lot of games that had you playing the same levels repeatedly, drawing loops (lassos), moving in loops... a whole lotta looping. We quickly narrowed in on the office phrase "to keep you in the loop", which naturally lead to our game taking the idea of spreading gossip around the workplace.
+
+> Start as a gossipy gossipmonger at "SlowDays Inc" and try to become the SULTAN OF SECRETS in the office!
+>
+> Boost the Tea Score of your hot gossip by making sure your coworkers are passing it along to the right people, amplifying its effectiveness (and salaciousness!)
+>
+> Some people love hearing the latest dish from HR, while others hate hearing about the latest lascivious lore from the Engineering Department.
+>
+> Some love to be the first to know, while others hate being kept out of the loop until the last minute!
+
+## Result
+
+Our final score from 30 ratings:
+
+| Criteria | Rank | Score |
+| ---------- | ----- | ----- |
+| Creativity | #819 | 4.067 |
+| Narrative | #1204 | 3.167 |
+| Enjoyment | #1735 | 3.467 |
+| Audio | #1812 | 3.267 |
+| Artwork | #2367 | 3.467 |
+
+I'm quite pleased with how we fared, especially considering the sheer amount of games that were made! We had a lot of excellent competition. I'm especially proud of the Creativity score, which suggests to me that we found a concept that felt unique and interesting. I was surprised by the Artwork score as a I felt we had a pretty cool art style, but hey that's the breaks sometimes. There were some especially pretty games this year, so I had a lot of competition.
+
+At the end of the day, we've both decided we like the game enough to keep working on it! There's some fun ideas brewing that I think will work very well as a fun puzzle game.
+
+
+
+## Planning & Creation
+
+As I mentioned earlier, we figured out that we had some kind of gossip-spreading game in mind.
+
+> **Old School Blue**:
+> You have a piece of hot goss to spread, it scores.....5 points, whatever....You have to arrange a set of co-workers to spread the goss and get it back to you. Some co-workers increase the gossip score, some lower it, some double it, some cut it in half, your goal is to make it the juiciest gossip in the office. The set of Coworkers you get to use each round is random, you get 6 and have to use...4 of them, there's 4 places to plug them into the "game board"
+>
+> **wonderfulfrog**:
+> HAH okay maybe there’s something here
+
+We started toying with some ideas - what if we have different department employees who prefer talking to one group but not the other? Oh, and what about certain people love being first in the loop (or maybe last)? We had some ideas organically brew from that initial concept.
+
+We eventually arrived at a scoring mechanic being the driving force of the game. The idea is to place employees to maximize your "tea score" such that you progress to the next level.
+
+> **Old School Blue**:
+> At "Slow Days Inc." the common way to pass the day is passing the latest hot gossip and, as part of HR, you always know the best secrets. Figure out the best way to pass this gossip through the office to ensure the maximum effect and greatest enjoyment. Some coworkers love spilling the tea, others only trust certain coworkers with the juciest bits of lore. The player has a piece of Gossip with a "Tea Score", their goal is to maximize the "Tea Score" when the gossip eventually makes it back to them.
+>
+> The office has a series of cubicles, each cubicle can hold one coworker. The path that the gossip will take is clearly labeled. Each coworker will adjust the score in various ways, based on certain criteria. The player will be given two Co-workers to choose from, only one may be chosen, the other is discarded. The chosen coworker can be dragged into one of the Cubicles and may not be changed after being chosen.
+>
+> Once all Cubicle spots are filled, the goss is spread and a final "Tea Score" is gained. A minimum Tea Score is needed to level up and be promoted to the next HR rank and have a larger office, with more Cubicle Spaces and more Coworkers.
+>
+> "Tom Doubles the Tea Score", "Sandra Halves the Tea Score if she's not the first person to hear about it" "Debra loves to spread goss to Tammy and adds 50% to the goss if Tammy is next" sort of thing.
+
+Within the first 24 hours or so we had a functioning prototype, which felt great to see. Having a working game so quickly helped us iterate and test out ideas we had.
+
+Initially we thought gossip might travel between coworkers on a grid (kind of like [Pipe Dream](https://en.wikipedia.org/wiki/Pipe_Mania)).
+
+
+
+I was playing with the idea of gossip traveling along a line (hence the red/white colours there). Early on we also knew we wanted a “departments” concept, something that would affect the score depending on who talked to who (which is where the coloured borders come from).
+
+We really wanted to tie into the loop theme though, so we opted with the gossip starting from you, going around a set of cubicles, and arriving back to you to really hammer that theme home.
+
+
+
+We wanted to experiment with branching paths, with the idea being that perhaps your "coworker deck" would function better with the alternate path available. This was a feature we decided to cut to save time.
+
+
+
+## Artwork
+
+For this game jam I was dead set on using a 1-bit pixel art style. I'm not sure what had me quite so attracted to the style, but I suspect it was the game [Phasing Puller](https://mvln.itch.io/phasing-puller) from the 2021 GMTK Game Jam having a lasting impression on me. I guess [Undertale's](https://undertale.com/) portraits also share this style, although I did not consciously choose the style to imitate Undertale.
+
+
+
+It has been several years since my last pixel art drawing, but I found my footing quickly (and had to given our deadline). My first piece of art (besides the concept art) was this portrait:
+
+
+
+I wasn't deliberately going for a [Will Wright](https://cdn.mos.cms.futurecdn.net/ZKDrAxpQM4dWkFWowKZ5Rh-970-80.png.webp) vibe, but must've done it unconsciously (we've been exploring another game concept that might involve something from SimCity... my lips are sealed 🤐). I ended up tweaking the portrait a bit to try and move in a different direction, and apparently ended up creating disheveled Hideo Kojima. Oh well.
+
+
+
+Immediately I thought it would be fun to have animated portraits:
+
+
+
+Although decided to scrap that plan due to how little time we had.
+
+We needed some way to represent coworkers in a "deck of cards" fashion, since we started leaning into a deck-building aspect pretty quickly. ID badges felt like the way to go here, so off I went:
+
+
+
+I wasn't really sure where I was going with this one, but I thought some odd geometric shapes and funky patterns conveyed some kind of "high tech feel" (even though our fictional in-game company is anything but high tech). It was an amusing contrast to me. I also thought it might be fun to add some variation to each ID badge, so created a few options with icons!
+
+
+
+Somehow our conversation turned to J. Jonah Jameson, and naturally that meant he was going to be our second coworker!
+
+
+
+ Please get me all the gossip on Spider-man Mr. Parker, if you have the time that is...
+
+
+Something wasn't quite right here. The eyes felt a little... small. JJJ is a big personality, so I went back and experimented a bit more and landed on that stern face:
+
+
+
+ I need all the gossip about Spider-Man, Parker!
+
+
+After that I picked a few more "office people" to add to our roster. First was Pam from Archer:
+
+
+
+ The watercooler goes "sploosh"
+
+
+And I've been watching The Good Wife lately, so why not add Diane Lockhart?
+
+
+
+ I bet she loves to open phishing emails...
+
+
+I'm having a ton of fun making various portraits, but realizing quickly that we don't have as much time as I estimate we do. I'll need to move onto other visuals... how about the title screen?
+
+A piece of iconography I latched onto was palm trees. Somehow I felt the tropical vibe was a good fit for "SlowDays Inc". That's how we ended up somewhere vaguely Miami:
+
+
+
+ I should've added a sun!
+
+
+For the logo itself I thought the blue and white looked pretty slick, but accidentally kinda recreated a watercooler motif?
+
+
+
+ You can feel the watercooler filling up, right?
+
+
+Lastly, we needed a breakroom!
+
+
+
+ Thirsty? Enjoy our SlowDays Inc branded water!
+
+
+## Audio
+
+On top of the visuals, I also got to play the role of sound designer! I did a bit of foley to get the majority of our sounds. For most sounds I used my Blue Yeti, and a bit of finesse inside Audacity. A simple setup, but it worked well!
+
+The ID badge sounds were created using a deck of cards - I would slide, pick up, place, and generally muck around with them to produce a variety of sounds. I think I recorded over 50 different sounds in total, but pared it down to about 15 (using about 3-6 sounds each for picking up, placing, and hovering cards).
+
+
+
+ Pickup 1
+
+
+
+ Pickup 2
+
+
+
+ Pickup 3
+
+
+
+ Shuffle 1
+
+
+
+ Shuffle 2
+
+
+
+ Shuffle 3
+
+
+
+ Place 1
+
+
+
+ Place 2
+
+
+
+ Place 3
+
+
+The coworkers blabbing to each other were recorded by myself and my wife! Again, I ended up recording a bunch of sounds for this and had to pare it down to the best. We knew from the outset we wanted a kind of “wah wah” sound the adults in Peanuts make. How did we do?
+
+
+
+ Wah-wah 1
+
+
+
+ Wah-wah 2
+
+
+
+ Wah-wah 3
+
+
+
+ Wah-wah 4
+
+
+Various bleeps and bloops came from [sfxer](https://sfxr.me/) (which I was happy to learn is still a thing), and a few online tools for generating “game sounds”.
+
+
+
+ Gain Points
+
+
+
+ Gossip Transformation 1
+
+
+
+ Gossip Transformation 2
+
+
+Lastly, I had to record our cat Ramona for her grand reveal in game. Let me tell you, getting a cat to meow when you want them to is difficult! I think we only got one or two usable ones. I used my phone’s microphone (through the Voice Memo app).
+
+
+
+ Meow 1
+
+
+
+ Meow 2
+
+
+
+ And if you'd like to spoil the surprise, here's Ramona's portrait!
+
+
+
+To really sell the office vibe, we sourced some stock sounds of people chatting, microwave beeps, and general ambiance. It really feels like you're having lunch in the breakroom (and someone is microwaving fish _again_).
+
+Overall I'm super happy with how the sound and ambiance came off.
+
+## My experience
+
+Unlike my previous experience in the GMTK game jam, we found our concept pretty quickly, like within an hour or two. Once we have a concept, we can get cracking!
+
+This game jam took place during the week, and we both decided that we didn't want to take any additional time off, which meant we were balancing work and other commitments while working on the game.
+
+It had been a long while since I'd mucked around with pixel art (in fact probably since 2021), and it took me a while to "get back into it" again. As always though, once I find my groove I really love it. I had much fun creating spins on "famous office people".
+
+My time management was fairly balanced compared to the last one. No late nights and constant check-ins kept us both updated and aware of what we were working on.
+
+Something I tried last game jam (and decided to repeat this time) was getting into "rating exchange groups" in order to get more ratings for my game. My thought was that the more ratings it has, the better result we get. Something I noticed after everything wrapped up was that the majority of the top games never appeared in my ratings exchange. The games at the very top (10 or so), might've had 30 or less ratings.
+
+I'm beginning to question the strategy of these exchanges. I believe they ended up doing more harm than good. In terms of wanting to "do well", I think we tend to get harder grading rather than organic reviews. On the other hand, I don't know how to get the game "out there" so people can play it. I really don't know what to do. Next time, I will try not joining these exchanges.
+
+Overall, I had a great time. I'm proud of what we made and feel like we found a novel concept that is worth expanding on. Speaking of which...
+
+## Post-jam
+
+I know I said this last time, but I swear this time I mean it! We are continuing to work on the game. I don't want to spoil too much, but we are revisiting some of the core mechanics to develop a vision of the game that matches our expectations. With a game jam you have to set yourself certain limits to save time, but now that we have plenty of time... let's see where we can push things.
+
+I've spent some time trying to determine a "visual style" of where I think things should go... I'm getting close to finding it. Let's just say "Windows NT" and leave it there. I know for certain though that while I enjoyed the constraints of a 1-bit style, I'm going to want a few more colours for a full game.
+
+Hopefully the next time I'm talking about **Rumor Mill** will be revealing a game release! Until then!
diff --git a/src/content/shows/2025-01-20-solo-leveling.md b/src/content/shows/2025-01-20-solo-leveling.md
index d5a6eb4..282ad35 100644
--- a/src/content/shows/2025-01-20-solo-leveling.md
+++ b/src/content/shows/2025-01-20-solo-leveling.md
@@ -1,7 +1,7 @@
---
date: 2025-01-20
title: Solo Leveling
-releaseYear: 2024
+year: 2024
tags:
- anime
- drama
diff --git a/src/content/shows/2025-05-17-dandadan.md b/src/content/shows/2025-05-17-dandadan.md
new file mode 100644
index 0000000..28ec0b2
--- /dev/null
+++ b/src/content/shows/2025-05-17-dandadan.md
@@ -0,0 +1,27 @@
+---
+date: 2025-05-17
+title: Dandadan
+year: 2024
+tags:
+ - anime
+ - action
+ - comedy
+ - science-fiction
+image: https://cdn.wonderfulfrog.com/images/tv/dandadan-poster.jpg
+pullquote: Ghosts or aliens? Why not both?
+watchHistory:
+rating: 3
+isFavourite: false
+hasSpoilers: false
+thetvdb: https://thetvdb.com/series/dandadan
+---
+
+I love the animation and style of this show evokes, it always has something new and exciting to share. Many scenes are gorgeous and fluid, hands down some of the best visuals I've seen in recent memory.
+
+The dynamic of Momo and Okarun having unique powers that can shore up the other's weaknesses is so fun. Each episode has them teaming up in unique (often amusing) ways to defeat this week's monster.
+
+The show's perversion turns me right off, though. While the show feels like it's trying to advance the art form visually, the reliance on erotic art and tired tropes drags it down. It reminds me of _Kill la Kill_, which was fanservice under the guise of "critique", while accomplishing nothing of the sort. It's your classic "anime problem" and frankly I wish the industry would be done with it.
+
+Speaking of horniness, another weak point would be the show's story. The current arc (in season 1) surrounds the gang trying to recover Okarun's penis and testicles. Yup, that's the plot. I get that things are supposed to be silly and slapstick, but come on. This is just stupid.
+
+I'm hoping the show is going somewhere and it's a slow burn, but I don't have a ton of faith.
diff --git a/src/includes/css/blocks/posts.css b/src/includes/css/blocks/posts.css
index cb91bc4..c19c1e2 100644
--- a/src/includes/css/blocks/posts.css
+++ b/src/includes/css/blocks/posts.css
@@ -1,4 +1,19 @@
-.posts-list-item {
+.posts-grid {
display: grid;
- grid-template-columns: auto auto;
+ gap: var(--spacing-4);
+}
+
+.post {
+ &:not(:last-of-type) {
+ border-bottom: 1px solid var(--color-border);
+ padding-block-end: var(--spacing-4);
+ }
+
+ time {
+ font-size: var(--font-size-sm);
+ }
+
+ .post--title {
+ display: inline-block;
+ }
}
diff --git a/src/includes/css/global/variables.css b/src/includes/css/global/variables.css
index 15cbe02..d46064b 100644
--- a/src/includes/css/global/variables.css
+++ b/src/includes/css/global/variables.css
@@ -10,5 +10,8 @@
--font-weight-bold: 700;
--font-weight-black: 900;
+ --font-size-xs: 0.8rem;
+ --font-size-sm: 1rem;
+
--triangles: url('data:image/svg+xml;utf8,');
}
diff --git a/src/includes/css/utilities/fonts.css b/src/includes/css/utilities/fonts.css
index c5c5d4f..87c0415 100644
--- a/src/includes/css/utilities/fonts.css
+++ b/src/includes/css/utilities/fonts.css
@@ -13,3 +13,7 @@
.line-height-l {
line-height: 1.5rem;
}
+
+.font-semibold {
+ font-weight: 500;
+}
diff --git a/src/includes/layouts/book.html b/src/includes/layouts/book.html
index 7447769..4f5f7b5 100644
--- a/src/includes/layouts/book.html
+++ b/src/includes/layouts/book.html
@@ -3,16 +3,10 @@ layout: "layouts/base"
---
{% from "macros/date.njk" import format %}
-{% from "macros/utils.njk" import stars, spoilerWarning %}
+{% from "macros/utils.njk" import stars, spoilerWarning, pageHeader %}
{% from "macros/tags.njk" import tagList %}
-
-
-
{{ title }}
- {% if pullquote %}
{{ pullquote }}
{% endif %}
-
- {{ format(page.date) }}
-
+ {{ pageHeader(title, pullquote, page.date) }}
{% if hasSpoilers %}
{{ spoilerWarning() }}
{% endif %}
diff --git a/src/includes/layouts/game.html b/src/includes/layouts/game.html
index fcfc0c3..0bb4bcf 100644
--- a/src/includes/layouts/game.html
+++ b/src/includes/layouts/game.html
@@ -3,16 +3,10 @@ layout: "layouts/base"
---
{% from "macros/date.njk" import format %}
-{% from "macros/utils.njk" import stars, spoilerWarning %}
+{% from "macros/utils.njk" import stars, spoilerWarning, pageHeader %}
{% from "macros/tags.njk" import tagList %}
-
-
-
{{ title }}
- {% if pullquote %}
{{ pullquote }}
{% endif %}
-
- {{ format(page.date) }}
-
+ {{ pageHeader(title, pullquote, page.date) }}
{% if hasSpoilers %}
{{ spoilerWarning() }}
{% endif %}
diff --git a/src/includes/layouts/movie.html b/src/includes/layouts/movie.html
index 691b67e..5e4e433 100644
--- a/src/includes/layouts/movie.html
+++ b/src/includes/layouts/movie.html
@@ -3,16 +3,10 @@ layout: "layouts/base"
---
{% from "macros/date.njk" import format %}
-{% from "macros/utils.njk" import stars, spoilerWarning %}
+{% from "macros/utils.njk" import stars, spoilerWarning, pageHeader %}
{% from "macros/tags.njk" import tagList %}
-
-
-
{{ title }}
- {% if pullquote %}
{{ pullquote }}
{% endif %}
-
- {{ format(page.date) }}
-
+ {{ pageHeader(title, pullquote, page.date) }}
{% if hasSpoilers %}
{{ spoilerWarning() }}
{% endif %}
diff --git a/src/includes/layouts/page.html b/src/includes/layouts/page.html
new file mode 100644
index 0000000..f13548a
--- /dev/null
+++ b/src/includes/layouts/page.html
@@ -0,0 +1,13 @@
+---
+layout: "layouts/base"
+---
+
+{% from "macros/date.njk" import format %}
+{% from "macros/tags.njk" import tagList %}
+{% from "macros/utils.njk" import pageHeader %}
+
+ {{ pageHeader(title, subtitle) }}
+
+ {{ content | safe }}
+
+
diff --git a/src/includes/layouts/post.html b/src/includes/layouts/post.html
index 9d63ff3..922469a 100644
--- a/src/includes/layouts/post.html
+++ b/src/includes/layouts/post.html
@@ -4,16 +4,13 @@ layout: "layouts/base"
{% from "macros/date.njk" import format %}
{% from "macros/tags.njk" import tagList %}
+{% from "macros/utils.njk" import pageHeader %}
-
-
diff --git a/src/pages/about.md b/src/pages/about.md
index 7e12891..3424e6d 100644
--- a/src/pages/about.md
+++ b/src/pages/about.md
@@ -1,10 +1,9 @@
---
-title: About
+title: About me
+subtitle: It's all about me!
description: All about me!
---
-# About me
-
**See also**: [Stuff I use](/uses), my [contact info](/contact), or [what's happening now](/now).
Hello! Ahoj! Welcome to my site!
diff --git a/src/pages/blogroll.html b/src/pages/blogroll.html
index 213265f..7705c0a 100644
--- a/src/pages/blogroll.html
+++ b/src/pages/blogroll.html
@@ -1,11 +1,10 @@
---
title: Blogroll
+subtitle: A collection of my favourite sites, in no particular order.
description: A collection of my favourite sites.
---
-
Blogroll
-
A collection of my favourite sites, in no particular order.
diff --git a/src/pages/changelog.md b/src/pages/changelog.md
index 6467425..0cdcabb 100644
--- a/src/pages/changelog.md
+++ b/src/pages/changelog.md
@@ -1,15 +1,16 @@
---
title: Changelog
+subtitle: All the changes that are fit to read!
eleventyComputed:
description: All of the latest changes on {{ meta.siteName }}.
---
-# Changelog
-
-All the changes that are fit to read!
-
If preferred, the [commit log is available here][commits].
+## May 31st, 2025
+
+- Added a new page called [Past Designs](/past-designs)!
+
## May 30th, 2025
- As much as I tried, I just couldn't give up **iA Writer Quattro** as my body font. So it's back! Perhaps in the future I can use Hyperlegible as a toggle option.
diff --git a/src/pages/colophon.md b/src/pages/colophon.md
index 0427294..91d4eef 100644
--- a/src/pages/colophon.md
+++ b/src/pages/colophon.md
@@ -1,10 +1,9 @@
---
title: Colophon
+subtitle: A fancy word for describing how this site was built.
description: A little bit of everything about this site.
---
-# Colophon
-
A little bit of everything regarding how this site was built and its origins.
## Technology
diff --git a/src/pages/contact.html b/src/pages/contact.html
index 09d4d60..b5648fd 100644
--- a/src/pages/contact.html
+++ b/src/pages/contact.html
@@ -1,13 +1,10 @@
---
title: Contact
+subtitle: Various ways to get in touch with me on the internet.
description: Various ways to get in touch.
permalink: "/contact/index.html"
---
-
-
Contact
-
Various ways to get in touch with me on the internet.
-
Below are my primary methods of contact. They are the ones I monitor most and likely to respond!
diff --git a/src/pages/feeds.html b/src/pages/feeds.html
index 0ebcc21..779ee50 100644
--- a/src/pages/feeds.html
+++ b/src/pages/feeds.html
@@ -1,9 +1,9 @@
---
title: Feeds
+subtitle: Feed yourself a veritable bevy of feeds.
description: Feed yourself a veritable bevy of feeds.
---
-
Feeds
Here is my collection of feeds for your perusal. They come in RSS varieties.
diff --git a/src/pages/games/favourites.html b/src/pages/games/favourites.html
index fe7903d..b4f31e8 100644
--- a/src/pages/games/favourites.html
+++ b/src/pages/games/favourites.html
@@ -1,12 +1,11 @@
---
title: Favourite games
+subtitle: A collection of my favourite games!
permalink: "games/favourites/index.html"
---
{% from "macros/media-grid.njk" import grid %}
{% set data = collections.game | filterFavourites | reverse %}
-
Favourite games
-
A collection of my favourite games!
{{ grid(data) }}
diff --git a/src/pages/games/index.html b/src/pages/games/index.html
index c0751d3..31b4bd0 100644
--- a/src/pages/games/index.html
+++ b/src/pages/games/index.html
@@ -1,5 +1,6 @@
---
title: Games
+subtitle: I happen to quite like video games.
permalink: "games/index.html"
---
@@ -8,7 +9,6 @@ permalink: "games/index.html"
{% set faves = collections.game | filterFavourites | reverse | limit(5) %}
{% set tags = collections.game | allTagCounts(["game"]) | limit(5) %}
-
Games
A collection of games I played over the years. Ideally this would include every game I've every played, but realistically it's an approximation. I try to include my own thoughts with each.
diff --git a/src/pages/games/recent.html b/src/pages/games/recent.html
index d9c5a0a..0dc216e 100644
--- a/src/pages/games/recent.html
+++ b/src/pages/games/recent.html
@@ -1,5 +1,6 @@
---
title: Recent games
+subtitle: A collection of games that I've played recently.
permalink: "games/recent/index.html"
---
@@ -7,8 +8,6 @@ permalink: "games/recent/index.html"
{% set data = collections.game | reverse %}
{% set tags = collections.game | allTagCounts(["game"]) | limit(5) %}
-
diff --git a/src/pages/now.html b/src/pages/now.html
index f0a5cdd..0b0bd0f 100644
--- a/src/pages/now.html
+++ b/src/pages/now.html
@@ -1,11 +1,10 @@
---
title: /now
+subtitle: Right now! What's happening right now?
description: What's going on now and all the latest with myself.
---
-{% set recentTrack = lastfm.recentTracks[0] %}
-
/now
-
What am I doing right now? Everything on here is automatically generated from various data sources.
+
Everything on here is automatically generated from various data sources.
diff --git a/src/pages/pages.json b/src/pages/pages.json
index fd3fba2..26eee07 100644
--- a/src/pages/pages.json
+++ b/src/pages/pages.json
@@ -1,5 +1,5 @@
{
- "layout": "layouts/base",
+ "layout": "layouts/page",
"permalink": "{{ page.fileSlug }}/index.html",
"tags": ["page"]
}
diff --git a/src/pages/past-designs.md b/src/pages/past-designs.md
new file mode 100644
index 0000000..aaa08f9
--- /dev/null
+++ b/src/pages/past-designs.md
@@ -0,0 +1,25 @@
+---
+title: Past Designs
+subtitle: Who doesn't love a trip down memory lane?
+description: The living chronicle of my site's design.
+---
+
+I love to tinker, and my website design is no exception. Trying my best to chronicle the visual changes it has taken over the years. I may update this page from time to time to include even older designs!
+
+## 3.0 ([March 2024](/posts/version-3/))
+
+### Index
+
+
+
+### About me
+
+
+
+### Posts
+
+
+
+### Catalogue
+
+
diff --git a/src/pages/posts.html b/src/pages/posts.html
index 7ac6146..632b531 100644
--- a/src/pages/posts.html
+++ b/src/pages/posts.html
@@ -1,18 +1,12 @@
---
-title: Posts
+title: All posts
description: Read all of my posts.
---
-{% from "macros/posts.njk" import yearList %}
-
All posts
+{% from "macros/posts.njk" import list %}
Browse all of my posts, or narrow things down via tags.
-{% set itemsByYear = collections.post | reverse | organizeByYear %}
-{% set years = itemsByYear | keys | sort("desc") %}
- {% for year in years %}
- {% set itemsInYear = itemsByYear[year] %}
- {{ yearList(itemsInYear, year) }}
- {% endfor %}
+ {{ list(collections.post | reverse) }}
diff --git a/src/pages/styleguide.html b/src/pages/styleguide.html
index 7d5b641..414cc6d 100644
--- a/src/pages/styleguide.html
+++ b/src/pages/styleguide.html
@@ -1,5 +1,6 @@
---
title: Styleguide
+subtitle: A demo of the site's theme.
description: A demo of the site's theme.
---
@@ -24,14 +25,14 @@ description: A demo of the site's theme.
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
diff --git a/src/pages/tag.html b/src/pages/tag.html
index 38f1d0f..53cab4c 100644
--- a/src/pages/tag.html
+++ b/src/pages/tag.html
@@ -7,19 +7,14 @@ pagination:
- post
permalink: /tags/{{ tag | slugify }}/index.html
eleventyComputed:
+ title: "Tag: \"{{ tag }}\""
description: Browse all posts tagged with "{{ tag }}".
---
-{% from "macros/posts.njk" import yearList %}
-
Tag: {{ tag }}
+{% from "macros/posts.njk" import list %}
All posts tagged with "{{ tag }}", or go back to all tags.
-{% set itemsByYear = collections.postsByTag[tag] | reverse | organizeByYear %}
-{% set years = itemsByYear | keys | sort("desc") %}
- {% for year in years %}
- {% set itemsInYear = itemsByYear[year] %}
- {{ yearList(itemsInYear, year) }}
- {% endfor %}
+ {{ list(collections.postsByTag[tag] | reverse) }}
diff --git a/src/pages/tags.html b/src/pages/tags.html
index 65c8b0d..62da99b 100644
--- a/src/pages/tags.html
+++ b/src/pages/tags.html
@@ -5,7 +5,6 @@ description: Browse posts by all tags.
{% set tags = collections.post | allTagCounts %}
-
{{ title }}
{% for tag in tags %}
diff --git a/src/pages/uses.md b/src/pages/uses.md
index af9799f..a17f3c3 100644
--- a/src/pages/uses.md
+++ b/src/pages/uses.md
@@ -1,13 +1,10 @@
---
title: /uses
+subtitle: A list of my favourite software, tools, gear, configurations, and everything else between.
description: A list of my favourite things and why I like 'em.
---
-# Uses
-
-Last updated on **January 10th, 2025**.
-
-A list of my favourite software, tools, gear, configurations, and everything else between.
+Last updated on **May 31st, 2025**.
More lists like this are available at [uses.tech](https://uses.tech/).
@@ -15,7 +12,7 @@ There are no affiliate links.
## Development
-My editor of choice is [Neovim](https://neovim.io/), which uses a [very opinionated setup](https://github.com/wonderfulfrog/neovim).
+My editor of choice is [Neovim](https://neovim.io/), which uses a [very opinionated setup](https://git.cloud.haska.me/wonderfulfrog/neovim).
My preferred terminal is [WezTerm](https://wezfurlong.org/wezterm/index.html), which works on all major platforms. On Windows I also use [Windows Terminal](https://apps.microsoft.com/detail/9n0dx20hk701?hl=en-us&gl=US).
@@ -53,7 +50,7 @@ I'm one of those weirdos that likes to buy music, so my favourite purchasing pla
Speaking of buying music, I need a way to keep it organized. Enter [beets](https://beets.io/?trk=public_post-text), which does an amazing job. It ships with a bunch of opinionated defaults that line up with my own opinions, which worked great for me. Can be tweaked and tinkered with to your heart's content.
-I use [Plex](https://www.plex.tv/) as a media server. It does a fine job with serving music. I use [Plexamp](https://www.plex.tv/plexamp/) for playing music from the server.
+My personal music server is [Lightweight Music Server](https://github.com/epoupon/lms) which provides a Subsonic/OpenSonic backend. My client of choice is [Amperfy](https://github.com/BLeeEZ/amperfy).
I use the Sony WH-1000XM3 headphones. Unparalleled noise cancelling and long battery life. Just wish it could swap devices easier. I've had these for over 5 years and they keep going. One day I might upgrade to a recent model that handles device switching better, but these are great. If I need wired headphones, I plug in a 3.5mm jack and they work great (even unpowered).
diff --git a/src/pages/watching/index.html b/src/pages/watching/index.html
index 1100350..e739e98 100644
--- a/src/pages/watching/index.html
+++ b/src/pages/watching/index.html
@@ -1,5 +1,6 @@
---
title: Watching
+subtitle: A collection of movies and shows I've seen.
permalink: "watching/index.html"
---
@@ -9,8 +10,7 @@ permalink: "watching/index.html"
{% set favouriteMovies = collections.movie | filterFavourites | reverse | limit(5) %}
{% set favouriteShows = collections.tv | filterFavourites | reverse | limit(5) %}
-
Watching
-
A collection of movies and shows I've seen. I tend to watch more movies than shows these days.
+
I tend to watch more movies than shows these days.
You're probably wondering what the heck is a webring? It's a collection of sites banding under a common theme or idea, and it's circular (like a ring). You can read more on Wikipedia!