diff --git a/src/components/JournalList.astro b/src/components/JournalList.astro
index 95f6f97..3054848 100644
--- a/src/components/JournalList.astro
+++ b/src/components/JournalList.astro
@@ -9,7 +9,6 @@ interface Props {
import { pickTwoRandomColors } from '../utils';
import Link from '../components/Link.astro';
import Subsubheadline from './Subsubheadline.astro';
-import ThemeBox from './ThemeBox.astro';
const { entries } = Astro.props;
---
@@ -55,7 +54,7 @@ const { entries } = Astro.props;
- {data.title}
+ {data.subtitle ? `${data.title}: ${data.subtitle}` : data.title}
diff --git a/src/components/JournalTitle.astro b/src/components/JournalTitle.astro
new file mode 100644
index 0000000..eadabff
--- /dev/null
+++ b/src/components/JournalTitle.astro
@@ -0,0 +1,28 @@
+---
+import Title from './Title.astro';
+import Headline from './Headline.astro';
+
+export interface Props {
+ class?: string;
+ grid?: 'narrow' | 'wide' | 'fullsize';
+ innerGrid?: boolean;
+ subtitle?: string;
+}
+
+const { class: className, grid = 'narrow', innerGrid, subtitle } = Astro.props;
+---
+
+
+
+ {subtitle && {subtitle}}
+
diff --git a/src/content/journal/2007/gtd.mdx b/src/content/journal/2007/gtd.mdx
index fa99e42..18b6cb2 100644
--- a/src/content/journal/2007/gtd.mdx
+++ b/src/content/journal/2007/gtd.mdx
@@ -1,5 +1,6 @@
---
-title: "GTD: Getting Things Done"
+title: GTD
+subtitle: Getting Things Done
slug: gtd
author: Stefan Imhoff
date: 2007-11-24
diff --git a/src/content/journal/2007/japanese-colors.mdx b/src/content/journal/2007/japanese-colors.mdx
index 25d440d..9549476 100644
--- a/src/content/journal/2007/japanese-colors.mdx
+++ b/src/content/journal/2007/japanese-colors.mdx
@@ -1,5 +1,6 @@
---
title: Colors of Japan
+subtitle: Historic hues from kimono to samurai armor, packaged for modern design
slug: japanese-colors
author: Stefan Imhoff
date: 2007-12-08
diff --git a/src/content/journal/2007/koi-design.mdx b/src/content/journal/2007/koi-design.mdx
index 96d6679..a2fbf9d 100644
--- a/src/content/journal/2007/koi-design.mdx
+++ b/src/content/journal/2007/koi-design.mdx
@@ -1,5 +1,6 @@
---
title: Koi Design
+subtitle: Translating traditional tattoo art into UI
slug: koi-design
author: Stefan Imhoff
date: 2007-06-02
@@ -21,7 +22,10 @@ These works of art are painful (dozens of bamboo needles are [stung several time
One of the best living artists of the Irezumi is Horiyoshi III, whose works can be seen in many illustrated books: and .
-
+
diff --git a/src/content/journal/2009/git.mdx b/src/content/journal/2009/git.mdx
index bcf9d40..c47f69a 100644
--- a/src/content/journal/2009/git.mdx
+++ b/src/content/journal/2009/git.mdx
@@ -1,5 +1,6 @@
---
title: Git
+subtitle: Your Git learning playlist
slug: git
author: Stefan Imhoff
date: 2009-02-10
diff --git a/src/content/journal/2009/gitweb-theme.mdx b/src/content/journal/2009/gitweb-theme.mdx
index 69202a6..3e9bf56 100644
--- a/src/content/journal/2009/gitweb-theme.mdx
+++ b/src/content/journal/2009/gitweb-theme.mdx
@@ -1,5 +1,6 @@
---
title: GitWeb Theme
+subtitle: Because the default GitWeb theme hurt my eyes
slug: gitweb-theme
author: Stefan Imhoff
date: 2009-02-19
diff --git a/src/content/journal/2009/home-documentary.mdx b/src/content/journal/2009/home-documentary.mdx
index aea2cda..4f14540 100644
--- a/src/content/journal/2009/home-documentary.mdx
+++ b/src/content/journal/2009/home-documentary.mdx
@@ -1,5 +1,6 @@
---
title: HOME
+subtitle: A love letter to the planet
slug: home-documentary
author: Stefan Imhoff
date: 2009-06-15
diff --git a/src/content/journal/2010/rework.mdx b/src/content/journal/2010/rework.mdx
index a83d537..2b87fea 100644
--- a/src/content/journal/2010/rework.mdx
+++ b/src/content/journal/2010/rework.mdx
@@ -1,5 +1,6 @@
---
title: Rework
+subtitle: A sharp, illustrated manifesto for working smarter, not bigger
slug: rework
author: Stefan Imhoff
date: 2010-04-27
diff --git a/src/content/journal/2010/vim.mdx b/src/content/journal/2010/vim.mdx
index f252080..de61434 100644
--- a/src/content/journal/2010/vim.mdx
+++ b/src/content/journal/2010/vim.mdx
@@ -1,5 +1,6 @@
---
title: Vim
+subtitle: Make text bend to your will
slug: vim
author: Stefan Imhoff
date: 2010-10-29
diff --git a/src/content/journal/2010/webstandards-magazine-django.mdx b/src/content/journal/2010/webstandards-magazine-django.mdx
index 26c6af2..012b7a7 100644
--- a/src/content/journal/2010/webstandards-magazine-django.mdx
+++ b/src/content/journal/2010/webstandards-magazine-django.mdx
@@ -1,5 +1,6 @@
---
title: Django Article
+subtitle: Apparently they still print things and I’m in one of them
slug: webstandards-magazine-django
author: Stefan Imhoff
date: 2010-09-21
diff --git a/src/content/journal/2011/decodeunicode.mdx b/src/content/journal/2011/decodeunicode.mdx
index 1e33170..a41c641 100644
--- a/src/content/journal/2011/decodeunicode.mdx
+++ b/src/content/journal/2011/decodeunicode.mdx
@@ -1,5 +1,6 @@
---
title: Decodeunicode
+subtitle: All the world’s characters, one remarkable book
slug: decodeunicode
author: Stefan Imhoff
date: 2011-06-02
diff --git a/src/content/journal/2014/gulp-tutorial-1-intro-setup.mdx b/src/content/journal/2014/gulp-tutorial-1-intro-setup.mdx
index bfdd6ee..596b108 100644
--- a/src/content/journal/2014/gulp-tutorial-1-intro-setup.mdx
+++ b/src/content/journal/2014/gulp-tutorial-1-intro-setup.mdx
@@ -1,5 +1,6 @@
---
-title: "Introduction to Gulp.js 1: Intro and Setup"
+title: Introduction to Gulp.js 1
+subtitle: Setting up Gulp.js and Jekyll
slug: gulp-tutorial-1-intro-setup
author: Stefan Imhoff
date: 2014-10-18
diff --git a/src/content/journal/2014/gulp-tutorial-10-generating-sprites.mdx b/src/content/journal/2014/gulp-tutorial-10-generating-sprites.mdx
index 07d77e4..b51d66b 100644
--- a/src/content/journal/2014/gulp-tutorial-10-generating-sprites.mdx
+++ b/src/content/journal/2014/gulp-tutorial-10-generating-sprites.mdx
@@ -1,5 +1,6 @@
---
-title: "Introduction to Gulp.js 10: Generating CSS Image Sprites"
+title: Introduction to Gulp.js 10
+subtitle: Generating CSS Image Sprites
slug: gulp-tutorial-10-generating-sprites
author: Stefan Imhoff
date: 2014-10-27
diff --git a/src/content/journal/2014/gulp-tutorial-11-production-build-server-and-jekyll.mdx b/src/content/journal/2014/gulp-tutorial-11-production-build-server-and-jekyll.mdx
index e284fcc..ae8721a 100644
--- a/src/content/journal/2014/gulp-tutorial-11-production-build-server-and-jekyll.mdx
+++ b/src/content/journal/2014/gulp-tutorial-11-production-build-server-and-jekyll.mdx
@@ -1,5 +1,6 @@
---
-title: "Introduction to Gulp.js 11: Production Build, Server and Jekyll"
+title: Introduction to Gulp.js 11
+subtitle: Production Build, Server, and Jekyll
slug: gulp-tutorial-11-production-build-server-and-jekyll
author: Stefan Imhoff
date: 2014-10-28
diff --git a/src/content/journal/2014/gulp-tutorial-12-optimize-css-javascript-images-and-html.mdx b/src/content/journal/2014/gulp-tutorial-12-optimize-css-javascript-images-and-html.mdx
index 478a2d7..40890bb 100644
--- a/src/content/journal/2014/gulp-tutorial-12-optimize-css-javascript-images-and-html.mdx
+++ b/src/content/journal/2014/gulp-tutorial-12-optimize-css-javascript-images-and-html.mdx
@@ -1,5 +1,6 @@
---
-title: "Introduction to Gulp.js 12: Optimize CSS, JavaScript, Images and HTML"
+title: Introduction to Gulp.js 12
+subtitle: Optimize CSS, JavaScript, Images, and HTML
slug: gulp-tutorial-12-optimize-css-javascript-images-and-html
author: Stefan Imhoff
date: 2014-10-29
diff --git a/src/content/journal/2014/gulp-tutorial-13-revisioning.mdx b/src/content/journal/2014/gulp-tutorial-13-revisioning.mdx
index ff3c40b..e0b1b72 100644
--- a/src/content/journal/2014/gulp-tutorial-13-revisioning.mdx
+++ b/src/content/journal/2014/gulp-tutorial-13-revisioning.mdx
@@ -1,5 +1,6 @@
---
-title: "Introduction to Gulp.js 13: Revisioning"
+title: Introduction to Gulp.js 13
+subtitle: Revisioning
slug: gulp-tutorial-13-revisioning
author: Stefan Imhoff
date: 2014-10-30
diff --git a/src/content/journal/2014/gulp-tutorial-14-deploying-the-website.mdx b/src/content/journal/2014/gulp-tutorial-14-deploying-the-website.mdx
index 7248d0a..1600075 100644
--- a/src/content/journal/2014/gulp-tutorial-14-deploying-the-website.mdx
+++ b/src/content/journal/2014/gulp-tutorial-14-deploying-the-website.mdx
@@ -1,5 +1,6 @@
---
-title: "Introduction to Gulp.js 14: Deploying the Website with Rsync"
+title: Introduction to Gulp.js 14
+subtitle: Deploying the Website with Rsync
slug: gulp-tutorial-14-deploying-the-website
author: Stefan Imhoff
date: 2014-10-31
diff --git a/src/content/journal/2014/gulp-tutorial-15-performance-improvements-webp-gzip.mdx b/src/content/journal/2014/gulp-tutorial-15-performance-improvements-webp-gzip.mdx
index 55cc123..8045cc6 100644
--- a/src/content/journal/2014/gulp-tutorial-15-performance-improvements-webp-gzip.mdx
+++ b/src/content/journal/2014/gulp-tutorial-15-performance-improvements-webp-gzip.mdx
@@ -1,5 +1,6 @@
---
-title: "Introduction to Gulp.js 15: Performance Improvements with WebP and Gzip"
+title: Introduction to Gulp.js 15
+subtitle: Performance Improvements with WebP and Gzip
slug: gulp-tutorial-15-performance-improvements-webp-gzip
author: Stefan Imhoff
date: 2014-12-21
diff --git a/src/content/journal/2014/gulp-tutorial-16-postcss.mdx b/src/content/journal/2014/gulp-tutorial-16-postcss.mdx
index 8f97060..39d863e 100644
--- a/src/content/journal/2014/gulp-tutorial-16-postcss.mdx
+++ b/src/content/journal/2014/gulp-tutorial-16-postcss.mdx
@@ -1,5 +1,6 @@
---
-title: "Introduction to Gulp.js 16: PostCSS"
+title: Introduction to Gulp.js 16
+subtitle: PostCSS
slug: gulp-tutorial-16-postcss
author: Stefan Imhoff
date: 2014-12-30
diff --git a/src/content/journal/2014/gulp-tutorial-2-development-server-browsersync-configuration.mdx b/src/content/journal/2014/gulp-tutorial-2-development-server-browsersync-configuration.mdx
index 8aa42ff..f986635 100644
--- a/src/content/journal/2014/gulp-tutorial-2-development-server-browsersync-configuration.mdx
+++ b/src/content/journal/2014/gulp-tutorial-2-development-server-browsersync-configuration.mdx
@@ -1,5 +1,6 @@
---
-title: "Introduction to Gulp.js 2: Server with BrowserSync"
+title: Introduction to Gulp.js 2
+subtitle: Setting up a Development Server with BrowserSync
slug: gulp-tutorial-2-development-server-browsersync-configuration
author: Stefan Imhoff
date: 2014-10-19
diff --git a/src/content/journal/2014/gulp-tutorial-3-build-clean-jekyll.mdx b/src/content/journal/2014/gulp-tutorial-3-build-clean-jekyll.mdx
index 0339441..d2020d5 100644
--- a/src/content/journal/2014/gulp-tutorial-3-build-clean-jekyll.mdx
+++ b/src/content/journal/2014/gulp-tutorial-3-build-clean-jekyll.mdx
@@ -1,5 +1,6 @@
---
-title: "Introduction to Gulp.js 3: Build, Clean and Jekyll"
+title: Introduction to Gulp.js 3
+subtitle: Build, Clean and Jekyll
slug: gulp-tutorial-3-build-clean-jekyll
author: Stefan Imhoff
date: 2014-10-20
diff --git a/src/content/journal/2014/gulp-tutorial-4-css-generation-sass.mdx b/src/content/journal/2014/gulp-tutorial-4-css-generation-sass.mdx
index 69d1217..dcd99e9 100644
--- a/src/content/journal/2014/gulp-tutorial-4-css-generation-sass.mdx
+++ b/src/content/journal/2014/gulp-tutorial-4-css-generation-sass.mdx
@@ -1,5 +1,6 @@
---
-title: "Introduction to Gulp.js 4: Creating CSS with Sass and Compass"
+title: Introduction to Gulp.js 4
+subtitle: Creating CSS and Source Maps with Sass and Compass
slug: gulp-tutorial-4-css-generation-sass
author: Stefan Imhoff
date: 2014-10-21
diff --git a/src/content/journal/2014/gulp-tutorial-5-javascripts-browserify.mdx b/src/content/journal/2014/gulp-tutorial-5-javascripts-browserify.mdx
index f167b87..f1561d4 100644
--- a/src/content/journal/2014/gulp-tutorial-5-javascripts-browserify.mdx
+++ b/src/content/journal/2014/gulp-tutorial-5-javascripts-browserify.mdx
@@ -1,5 +1,6 @@
---
-title: "Introduction to Gulp.js 5: Bundling JavaScript with Browserify"
+title: Introduction to Gulp.js 5
+subtitle: Bundling JavaScript with Browserify
slug: gulp-tutorial-5-javascripts-browserify
author: Stefan Imhoff
date: 2014-10-22
diff --git a/src/content/journal/2014/gulp-tutorial-6-images-vector-fonts.mdx b/src/content/journal/2014/gulp-tutorial-6-images-vector-fonts.mdx
index 094d267..67d7d2f 100644
--- a/src/content/journal/2014/gulp-tutorial-6-images-vector-fonts.mdx
+++ b/src/content/journal/2014/gulp-tutorial-6-images-vector-fonts.mdx
@@ -1,5 +1,6 @@
---
-title: "Introduction to Gulp.js 6: Images and Vector Fonts"
+title: Introduction to Gulp.js 6
+subtitle: Images and Vector Fonts
slug: gulp-tutorial-6-images-vector-fonts
author: Stefan Imhoff
date: 2014-10-23
diff --git a/src/content/journal/2014/gulp-tutorial-7-base64.mdx b/src/content/journal/2014/gulp-tutorial-7-base64.mdx
index c2a6800..cd342cf 100644
--- a/src/content/journal/2014/gulp-tutorial-7-base64.mdx
+++ b/src/content/journal/2014/gulp-tutorial-7-base64.mdx
@@ -1,5 +1,6 @@
---
-title: "Introduction to Gulp.js 7: Base64 Encoded Images"
+title: Introduction to Gulp.js 7
+subtitle: Base64 Encoded Images
slug: gulp-tutorial-7-base64
author: Stefan Imhoff
date: 2014-10-24
diff --git a/src/content/journal/2014/gulp-tutorial-8-watch.mdx b/src/content/journal/2014/gulp-tutorial-8-watch.mdx
index d3a7d95..b7c9475 100644
--- a/src/content/journal/2014/gulp-tutorial-8-watch.mdx
+++ b/src/content/journal/2014/gulp-tutorial-8-watch.mdx
@@ -1,5 +1,6 @@
---
-title: "Introduction to Gulp.js 8: Watch for Changes"
+title: Introduction to Gulp.js 8
+subtitle: Watch for Changes
slug: gulp-tutorial-8-watch
author: Stefan Imhoff
date: 2014-10-25
diff --git a/src/content/journal/2014/gulp-tutorial-9-linting-scss-and-javascript.mdx b/src/content/journal/2014/gulp-tutorial-9-linting-scss-and-javascript.mdx
index c4834f9..d97904f 100644
--- a/src/content/journal/2014/gulp-tutorial-9-linting-scss-and-javascript.mdx
+++ b/src/content/journal/2014/gulp-tutorial-9-linting-scss-and-javascript.mdx
@@ -1,5 +1,6 @@
---
-title: "Introduction to Gulp.js 9: Syntax-Check of SCSS and JavaScript"
+title: Introduction to Gulp.js 9
+subtitle: Syntax-Check of SCSS and JavaScript
slug: gulp-tutorial-9-linting-scss-and-javascript
author: Stefan Imhoff
date: 2014-10-26
diff --git a/src/content/journal/2014/john-seymour-books.mdx b/src/content/journal/2014/john-seymour-books.mdx
index 929fab7..2694eb3 100644
--- a/src/content/journal/2014/john-seymour-books.mdx
+++ b/src/content/journal/2014/john-seymour-books.mdx
@@ -1,5 +1,6 @@
---
title: John Seymour’s Books on Self-Sufficiency
+subtitle: Self-sufficiency, beautifully explained
slug: john-seymour-books
author: Stefan Imhoff
date: 2014-08-03
diff --git a/src/content/journal/2014/logo-design.mdx b/src/content/journal/2014/logo-design.mdx
index 20e49c9..2426dcb 100644
--- a/src/content/journal/2014/logo-design.mdx
+++ b/src/content/journal/2014/logo-design.mdx
@@ -1,5 +1,6 @@
---
title: Design of My New Logo
+subtitle: From sketches to seal
slug: logo-design
author: Stefan Imhoff
date: 2014-04-18
diff --git a/src/content/journal/2014/website-typography.mdx b/src/content/journal/2014/website-typography.mdx
index 116097a..722f38d 100644
--- a/src/content/journal/2014/website-typography.mdx
+++ b/src/content/journal/2014/website-typography.mdx
@@ -1,5 +1,6 @@
---
title: Typography of My Website
+subtitle: Type first, everything else follows
slug: website-typography
author: Stefan Imhoff
date: 2014-06-19
diff --git a/src/content/journal/2015/calisthenics.mdx b/src/content/journal/2015/calisthenics.mdx
index 9d72a04..80df08b 100644
--- a/src/content/journal/2015/calisthenics.mdx
+++ b/src/content/journal/2015/calisthenics.mdx
@@ -1,5 +1,6 @@
---
title: Calisthenics
+subtitle: Strong with nothing but gravity
slug: calisthenics
author: Stefan Imhoff
date: 2015-05-19
diff --git a/src/content/journal/2015/human-documentary.mdx b/src/content/journal/2015/human-documentary.mdx
index abd8fbf..59f1f83 100644
--- a/src/content/journal/2015/human-documentary.mdx
+++ b/src/content/journal/2015/human-documentary.mdx
@@ -1,5 +1,6 @@
---
title: Human
+subtitle: The world, looking back at itself
slug: human-documentary
author: Stefan Imhoff
date: 2015-09-29
diff --git a/src/content/journal/2015/motivational-video.mdx b/src/content/journal/2015/motivational-video.mdx
index 9c19e02..cfe1e1d 100644
--- a/src/content/journal/2015/motivational-video.mdx
+++ b/src/content/journal/2015/motivational-video.mdx
@@ -1,5 +1,6 @@
---
title: Motivational Video
+subtitle: Every quote, finally sourced
slug: motivational-video
author: Stefan Imhoff
date: 2015-08-14
diff --git a/src/content/journal/2016/japanese-netflix-tv-show-underwear.mdx b/src/content/journal/2016/japanese-netflix-tv-show-underwear.mdx
index 5322fcd..764e377 100644
--- a/src/content/journal/2016/japanese-netflix-tv-show-underwear.mdx
+++ b/src/content/journal/2016/japanese-netflix-tv-show-underwear.mdx
@@ -1,5 +1,6 @@
---
title: Underwear
+subtitle: A warm, beautifully crafted series about craft, character, and quiet excellence
slug: japanese-netflix-tv-show-underwear
author: Stefan Imhoff
date: 2016-02-12
diff --git a/src/content/journal/2017/attention.mdx b/src/content/journal/2017/attention.mdx
index 85819e2..884e793 100644
--- a/src/content/journal/2017/attention.mdx
+++ b/src/content/journal/2017/attention.mdx
@@ -1,5 +1,6 @@
---
title: Self-Defense in the Age of Attention
+subtitle: A simple playbook to protect your time, attention, and mental bandwidth
slug: attention
author: Stefan Imhoff
date: 2017-11-03T08:00:00+01:00
diff --git a/src/content/journal/2017/gitbook.mdx b/src/content/journal/2017/gitbook.mdx
index 74166ee..b0505cf 100644
--- a/src/content/journal/2017/gitbook.mdx
+++ b/src/content/journal/2017/gitbook.mdx
@@ -1,5 +1,6 @@
---
title: I Wrote a Book in GitBook
+subtitle: 18 years of notes, now a book
slug: gitbook
author: Stefan Imhoff
date: 2017-06-27
diff --git a/src/content/journal/2017/minimalism.mdx b/src/content/journal/2017/minimalism.mdx
index 863ec8e..416f994 100644
--- a/src/content/journal/2017/minimalism.mdx
+++ b/src/content/journal/2017/minimalism.mdx
@@ -1,5 +1,6 @@
---
title: Minimalism
+subtitle: Less, but better—and on purpose
slug: minimalism
author: Stefan Imhoff
date: 2017-06-07
diff --git a/src/content/journal/2018/morning-routine.mdx b/src/content/journal/2018/morning-routine.mdx
index 0e76f11..dea7ed8 100644
--- a/src/content/journal/2018/morning-routine.mdx
+++ b/src/content/journal/2018/morning-routine.mdx
@@ -1,5 +1,6 @@
---
title: Morning Routine
+subtitle: Win the morning, win the day
slug: morning-routine
date: 2018-09-08
updated: 2025-02-10
diff --git a/src/content/journal/2018/storing-information.mdx b/src/content/journal/2018/storing-information.mdx
index 911709a..534d1a1 100644
--- a/src/content/journal/2018/storing-information.mdx
+++ b/src/content/journal/2018/storing-information.mdx
@@ -1,5 +1,6 @@
---
title: How to Store Information
+subtitle: Keep what counts, where you’ll find it
slug: storing-information
date: 2018-10-03
author: Stefan Imhoff
diff --git a/src/content/journal/2020/101-things-you-can-do.mdx b/src/content/journal/2020/101-things-you-can-do.mdx
index 0ff8770..ddae7ca 100644
--- a/src/content/journal/2020/101-things-you-can-do.mdx
+++ b/src/content/journal/2020/101-things-you-can-do.mdx
@@ -1,5 +1,6 @@
---
title: 101 Things You Can Do While Being on Lockdown
+subtitle: Learn, create, move, and explore—without leaving your living room
slug: 101-things-you-can-do
date: 2020-03-28
author: Stefan Imhoff
diff --git a/src/content/journal/2020/apps-tools-services.mdx b/src/content/journal/2020/apps-tools-services.mdx
index c8d118d..545e593 100644
--- a/src/content/journal/2020/apps-tools-services.mdx
+++ b/src/content/journal/2020/apps-tools-services.mdx
@@ -1,5 +1,6 @@
---
title: Apps, Tools & Services
+subtitle: My everyday apps, all in one place
slug: apps-tools-services
date: 2020-04-18T10:00:00+02:00
updated: 2025-01-06
diff --git a/src/content/journal/2020/best-of-2020.mdx b/src/content/journal/2020/best-of-2020.mdx
index a34dc59..62bf05d 100644
--- a/src/content/journal/2020/best-of-2020.mdx
+++ b/src/content/journal/2020/best-of-2020.mdx
@@ -1,5 +1,6 @@
---
title: Best of 2020
+subtitle: The year’s most compelling rabbit holes
slug: best-of-2020
date: 2020-12-22
author: Stefan Imhoff
diff --git a/src/content/journal/2020/everyday-carry.mdx b/src/content/journal/2020/everyday-carry.mdx
index 9bea529..030792c 100644
--- a/src/content/journal/2020/everyday-carry.mdx
+++ b/src/content/journal/2020/everyday-carry.mdx
@@ -1,5 +1,6 @@
---
title: Everyday Carry
+subtitle: What’s in my pockets (and why)
slug: everyday-carry
date: 2020-03-14
updated: 2023-06-09
diff --git a/src/content/journal/2020/new-website-2020-design.mdx b/src/content/journal/2020/new-website-2020-design.mdx
index 1f8d8ca..77b09f5 100644
--- a/src/content/journal/2020/new-website-2020-design.mdx
+++ b/src/content/journal/2020/new-website-2020-design.mdx
@@ -1,5 +1,6 @@
---
-title: "New Website 2020: Design"
+title: New Website 2020
+subtitle: Designing a personal site with constraints I actually wanted
date: 2020-07-21
slug: new-website-2020-design
author: Stefan Imhoff
diff --git a/src/content/journal/2020/new-website-2020-development.mdx b/src/content/journal/2020/new-website-2020-development.mdx
index a5cbfaa..3ff3b11 100644
--- a/src/content/journal/2020/new-website-2020-development.mdx
+++ b/src/content/journal/2020/new-website-2020-development.mdx
@@ -1,5 +1,6 @@
---
-title: "New Website 2020: Development"
+title: New Website 2020
+subtitle: How I engineered the stack, testing, theming, MDX, and deployment
slug: new-website-2020-development
date: 2020-07-28
author: Stefan Imhoff
diff --git a/src/content/journal/2020/new-website-2020-inspiration.mdx b/src/content/journal/2020/new-website-2020-inspiration.mdx
index 55c70c7..dcd2263 100644
--- a/src/content/journal/2020/new-website-2020-inspiration.mdx
+++ b/src/content/journal/2020/new-website-2020-inspiration.mdx
@@ -1,5 +1,6 @@
---
-title: "New Website 2020: Inspiration"
+title: New Website 2020
+subtitle: How Japanese aesthetics shaped my site
slug: new-website-2020-inspiration
date: 2020-07-14
author: Stefan Imhoff
diff --git a/src/content/journal/2020/new-website-2020.mdx b/src/content/journal/2020/new-website-2020.mdx
index d5dd24f..9d5cbce 100644
--- a/src/content/journal/2020/new-website-2020.mdx
+++ b/src/content/journal/2020/new-website-2020.mdx
@@ -1,5 +1,6 @@
---
title: New Website 2020
+subtitle: After 250 hours, a complete rebuild—design, code, and content
slug: new-website-2020
date: 2020-07-07
author: Stefan Imhoff
diff --git a/src/content/journal/2020/tools-i-use-for-note-taking.mdx b/src/content/journal/2020/tools-i-use-for-note-taking.mdx
index b80d34e..7c60c7d 100644
--- a/src/content/journal/2020/tools-i-use-for-note-taking.mdx
+++ b/src/content/journal/2020/tools-i-use-for-note-taking.mdx
@@ -1,5 +1,6 @@
---
title: Tools I Use For Note-Taking
+subtitle: Notes built for connection, not clutter
slug: tools-i-use-for-note-taking
date: 2020-09-03
author: Stefan Imhoff
diff --git a/src/content/journal/2020/zettelkasten-note-taking-devonthink.mdx b/src/content/journal/2020/zettelkasten-note-taking-devonthink.mdx
index 18b0f65..33df112 100644
--- a/src/content/journal/2020/zettelkasten-note-taking-devonthink.mdx
+++ b/src/content/journal/2020/zettelkasten-note-taking-devonthink.mdx
@@ -1,5 +1,6 @@
---
title: Zettelkasten Note-Taking Method With DEVONthink
+subtitle: Build a Zettelkasten that lasts
slug: zettelkasten-note-taking-devonthink
date: 2020-05-18
author: Stefan Imhoff
diff --git a/src/content/journal/2021/devonthink-obsidian-for-note-taking.mdx b/src/content/journal/2021/devonthink-obsidian-for-note-taking.mdx
index eabb7e8..8b1b7c3 100644
--- a/src/content/journal/2021/devonthink-obsidian-for-note-taking.mdx
+++ b/src/content/journal/2021/devonthink-obsidian-for-note-taking.mdx
@@ -1,5 +1,6 @@
---
-title: "DEVONthink and Obsidian: The Perfect Pair of Tools for Note-Taking"
+title: DEVONthink and Obsidian
+subtitle: The Perfect Pair of Tools for Note-Taking
slug: devonthink-obsidian-for-note-taking
date: 2021-07-23
author: Stefan Imhoff
diff --git a/src/content/journal/2021/how-to-prepare-for-the-worst-case.mdx b/src/content/journal/2021/how-to-prepare-for-the-worst-case.mdx
index 3b06a05..28a96b7 100644
--- a/src/content/journal/2021/how-to-prepare-for-the-worst-case.mdx
+++ b/src/content/journal/2021/how-to-prepare-for-the-worst-case.mdx
@@ -1,5 +1,6 @@
---
title: How to Prepare for the Worst Case
+subtitle: Plan now, panic less later
slug: how-to-prepare-for-the-worst-case
date: 2021-11-19
author: Stefan Imhoff
diff --git a/src/content/journal/2021/interpretation-if.mdx b/src/content/journal/2021/interpretation-if.mdx
index 3b70cdc..1236c7b 100644
--- a/src/content/journal/2021/interpretation-if.mdx
+++ b/src/content/journal/2021/interpretation-if.mdx
@@ -1,5 +1,6 @@
---
title: If— Guidance for a Virtuous, Stoic Life
+subtitle: A Modern Interpretation of Rudyard Kipling’s Great Poem
slug: interpretation-if
date: 2021-12-13
author: Stefan Imhoff
diff --git a/src/content/journal/2021/interpretation-the-gods-of-the-copybook-headings.mdx b/src/content/journal/2021/interpretation-the-gods-of-the-copybook-headings.mdx
index a1eee09..d9385c8 100644
--- a/src/content/journal/2021/interpretation-the-gods-of-the-copybook-headings.mdx
+++ b/src/content/journal/2021/interpretation-the-gods-of-the-copybook-headings.mdx
@@ -1,5 +1,6 @@
---
-title: "The Gods of the Copybook Headings: A Warning Against Loss of Virtue, Morality, and Reason"
+title: The Gods of the Copybook Headings
+subtitle: A Warning Against Loss of Virtue, Morality, and Reason
slug: interpretation-the-gods-of-the-copybook-headings
date: 2021-06-12
author: Stefan Imhoff
diff --git a/src/content/journal/2021/learning-poems.mdx b/src/content/journal/2021/learning-poems.mdx
index 7ebb97e..7dc56b8 100644
--- a/src/content/journal/2021/learning-poems.mdx
+++ b/src/content/journal/2021/learning-poems.mdx
@@ -1,5 +1,6 @@
---
title: Learning Poems
+subtitle: Verse you can carry anywhere
slug: learning-poems
date: 2021-08-23
author: Stefan Imhoff
diff --git a/src/content/journal/2021/new-website-2021.mdx b/src/content/journal/2021/new-website-2021.mdx
index 3f9d8db..a35ebab 100644
--- a/src/content/journal/2021/new-website-2021.mdx
+++ b/src/content/journal/2021/new-website-2021.mdx
@@ -1,5 +1,6 @@
---
title: New Website 2021
+subtitle: Faster site, simpler stack, happier writer
slug: new-website-2021
date: 2021-04-24
author: Stefan Imhoff
diff --git a/src/content/journal/2021/processing-information-into-notes.mdx b/src/content/journal/2021/processing-information-into-notes.mdx
index f758674..3188a03 100644
--- a/src/content/journal/2021/processing-information-into-notes.mdx
+++ b/src/content/journal/2021/processing-information-into-notes.mdx
@@ -1,5 +1,6 @@
---
title: How I Process Information Into Notes
+subtitle: Turn what you read into what you remember
slug: processing-information-into-notes
date: 2021-05-13
author: Stefan Imhoff
diff --git a/src/content/journal/2021/the-decentralized-web-1-why-do-we-need-it.mdx b/src/content/journal/2021/the-decentralized-web-1-why-do-we-need-it.mdx
index 5e2629f..003b856 100644
--- a/src/content/journal/2021/the-decentralized-web-1-why-do-we-need-it.mdx
+++ b/src/content/journal/2021/the-decentralized-web-1-why-do-we-need-it.mdx
@@ -1,5 +1,6 @@
---
-title: "The Decentralized Web: Why Do We Need It?"
+title: The Decentralized Web
+subtitle: Why Do We Need It?
slug: the-decentralized-web-1-why-do-we-need-it
date: 2021-10-25
author: Stefan Imhoff
diff --git a/src/content/journal/2021/the-decentralized-web-2-the-wild-west-web.mdx b/src/content/journal/2021/the-decentralized-web-2-the-wild-west-web.mdx
index 9cb6b88..f07d98d 100644
--- a/src/content/journal/2021/the-decentralized-web-2-the-wild-west-web.mdx
+++ b/src/content/journal/2021/the-decentralized-web-2-the-wild-west-web.mdx
@@ -1,5 +1,6 @@
---
-title: "The Decentralized Web: The Wild West Web"
+title: The Decentralized Web
+subtitle: The Wild West Web
slug: the-decentralized-web-2-the-wild-west-web
date: 2021-11-01
author: Stefan Imhoff
diff --git a/src/content/journal/2021/the-decentralized-web-3-develop-and-publish-a-website.mdx b/src/content/journal/2021/the-decentralized-web-3-develop-and-publish-a-website.mdx
index 1b29410..ddb4858 100644
--- a/src/content/journal/2021/the-decentralized-web-3-develop-and-publish-a-website.mdx
+++ b/src/content/journal/2021/the-decentralized-web-3-develop-and-publish-a-website.mdx
@@ -1,5 +1,6 @@
---
-title: "The Decentralized Web: Develop and Publish a Website"
+title: The Decentralized Web
+subtitle: Develop and Publish a Website
slug: the-decentralized-web-3-develop-and-publish-a-website
date: 2021-11-08
author: Stefan Imhoff
diff --git a/src/content/journal/2021/the-old-man-on-the-bench.mdx b/src/content/journal/2021/the-old-man-on-the-bench.mdx
index 2531e08..164bfaf 100644
--- a/src/content/journal/2021/the-old-man-on-the-bench.mdx
+++ b/src/content/journal/2021/the-old-man-on-the-bench.mdx
@@ -1,5 +1,6 @@
---
title: The Old Man on the Bench
+subtitle: A quiet friendship found on a forest path
slug: the-old-man-on-the-bench
date: 2021-08-31
author: Stefan Imhoff
diff --git a/src/content/journal/2021/using-readwise-with-obsidian-for-note-talking.mdx b/src/content/journal/2021/using-readwise-with-obsidian-for-note-talking.mdx
index 5d1aa34..2463405 100644
--- a/src/content/journal/2021/using-readwise-with-obsidian-for-note-talking.mdx
+++ b/src/content/journal/2021/using-readwise-with-obsidian-for-note-talking.mdx
@@ -1,5 +1,6 @@
---
title: Using Readwise with Obsidian for Note-Talking
+subtitle: Make your highlights work for you
slug: using-readwise-with-obsidian-for-note-talking
date: 2021-09-14
author: Stefan Imhoff
diff --git a/src/content/journal/2021/web-developer-work-environment-1.mdx b/src/content/journal/2021/web-developer-work-environment-1.mdx
index 21a9388..941ef7a 100644
--- a/src/content/journal/2021/web-developer-work-environment-1.mdx
+++ b/src/content/journal/2021/web-developer-work-environment-1.mdx
@@ -1,5 +1,6 @@
---
-title: "Setting Up a Web Developer Work Environment: Terminal, Zsh, and TMUX"
+title: Setting Up a Web Developer Work Environment
+subtitle: Terminal, Zsh, and TMUX
slug: web-developer-work-environment-1
date: 2021-12-20
author: Stefan Imhoff
diff --git a/src/content/journal/2021/web-developer-work-environment-2.mdx b/src/content/journal/2021/web-developer-work-environment-2.mdx
index 86fe906..21a5c8f 100644
--- a/src/content/journal/2021/web-developer-work-environment-2.mdx
+++ b/src/content/journal/2021/web-developer-work-environment-2.mdx
@@ -1,5 +1,6 @@
---
-title: "Setting Up a Web Developer Work Environment: Neovim"
+title: Setting Up a Web Developer Work Environment
+subtitle: Neovim
slug: web-developer-work-environment-2
date: 2021-12-23
author: Stefan Imhoff
diff --git a/src/content/journal/2022/artificial-intelligence-1-introduction.mdx b/src/content/journal/2022/artificial-intelligence-1-introduction.mdx
index c8d4873..54b5ed8 100644
--- a/src/content/journal/2022/artificial-intelligence-1-introduction.mdx
+++ b/src/content/journal/2022/artificial-intelligence-1-introduction.mdx
@@ -1,5 +1,6 @@
---
-title: "The Advent of AI: Introduction"
+title: The Advent of AI
+subtitle: Introduction
slug: artificial-intelligence-1-introduction
date: 2022-12-14
author: Stefan Imhoff
diff --git a/src/content/journal/2022/artificial-intelligence-2-text-generation.mdx b/src/content/journal/2022/artificial-intelligence-2-text-generation.mdx
index 58f9060..91dfa4f 100644
--- a/src/content/journal/2022/artificial-intelligence-2-text-generation.mdx
+++ b/src/content/journal/2022/artificial-intelligence-2-text-generation.mdx
@@ -1,5 +1,6 @@
---
-title: "The Advent of AI: Text Generation"
+title: The Advent of AI
+subtitle: Text Generation
slug: artificial-intelligence-2-text-generation
date: 2022-12-17
author: Stefan Imhoff
diff --git a/src/content/journal/2022/artificial-intelligence-3-text-to-image-generation.mdx b/src/content/journal/2022/artificial-intelligence-3-text-to-image-generation.mdx
index 44a9131..aba6473 100644
--- a/src/content/journal/2022/artificial-intelligence-3-text-to-image-generation.mdx
+++ b/src/content/journal/2022/artificial-intelligence-3-text-to-image-generation.mdx
@@ -1,5 +1,6 @@
---
-title: "The Advent of AI: Text-to-Image Generation"
+title: The Advent of AI
+subtitle: Text-to-Image Generation
slug: artificial-intelligence-3-text-to-image-generation
date: 2022-12-21
author: Stefan Imhoff
diff --git a/src/content/journal/2022/artificial-intelligence-4-getting-started.mdx b/src/content/journal/2022/artificial-intelligence-4-getting-started.mdx
index cb44caa..e07aa99 100644
--- a/src/content/journal/2022/artificial-intelligence-4-getting-started.mdx
+++ b/src/content/journal/2022/artificial-intelligence-4-getting-started.mdx
@@ -1,5 +1,6 @@
---
-title: "The Advent of AI: Getting Started with Text-to-Image Generation"
+title: The Advent of AI
+subtitle: Getting Started with Text-to-Image Generation
slug: artificial-intelligence-4-getting-started
date: 2022-12-24
author: Stefan Imhoff
diff --git a/src/content/journal/2022/civil-war-truth-1-introduction.mdx b/src/content/journal/2022/civil-war-truth-1-introduction.mdx
index 78e6348..f54a951 100644
--- a/src/content/journal/2022/civil-war-truth-1-introduction.mdx
+++ b/src/content/journal/2022/civil-war-truth-1-introduction.mdx
@@ -1,5 +1,6 @@
---
-title: "Civil War for Truth: Introduction"
+title: Civil War for Truth
+subtitle: Introduction
slug: civil-war-truth-1-introduction
author: Stefan Imhoff
date: 2022-06-06
diff --git a/src/content/journal/2022/civil-war-truth-2-corporatism-technocracy.mdx b/src/content/journal/2022/civil-war-truth-2-corporatism-technocracy.mdx
index 904ad68..7a41f2c 100644
--- a/src/content/journal/2022/civil-war-truth-2-corporatism-technocracy.mdx
+++ b/src/content/journal/2022/civil-war-truth-2-corporatism-technocracy.mdx
@@ -1,5 +1,6 @@
---
-title: "Civil War for Truth: Corporatism and Technocracy"
+title: Civil War for Truth
+subtitle: Corporatism and Technocracy
slug: civil-war-truth-2-corporatism-technocracy
date: 2022-06-13
author: Stefan Imhoff
diff --git a/src/content/journal/2022/civil-war-truth-3-political-division.mdx b/src/content/journal/2022/civil-war-truth-3-political-division.mdx
index 7a7a618..63c74e1 100644
--- a/src/content/journal/2022/civil-war-truth-3-political-division.mdx
+++ b/src/content/journal/2022/civil-war-truth-3-political-division.mdx
@@ -1,5 +1,6 @@
---
-title: "Civil War for Truth: Political Division"
+title: Civil War for Truth
+subtitle: Political Division
slug: civil-war-truth-3-political-division
date: 2022-06-20
author: Stefan Imhoff
diff --git a/src/content/journal/2022/civil-war-truth-4-media-journalism.mdx b/src/content/journal/2022/civil-war-truth-4-media-journalism.mdx
index e51e62a..4e77456 100644
--- a/src/content/journal/2022/civil-war-truth-4-media-journalism.mdx
+++ b/src/content/journal/2022/civil-war-truth-4-media-journalism.mdx
@@ -1,5 +1,6 @@
---
-title: "Civil War for Truth: Media and Journalism"
+title: Civil War for Truth
+subtitle: Media and Journalism
slug: civil-war-truth-4-media-journalism
date: 2022-06-27
author: Stefan Imhoff
diff --git a/src/content/journal/2022/civil-war-truth-5-academia.mdx b/src/content/journal/2022/civil-war-truth-5-academia.mdx
index 8f0a030..ad7562c 100644
--- a/src/content/journal/2022/civil-war-truth-5-academia.mdx
+++ b/src/content/journal/2022/civil-war-truth-5-academia.mdx
@@ -1,5 +1,6 @@
---
-title: "Civil War for Truth: Academia"
+title: Civil War for Truth
+subtitle: Academia
slug: civil-war-truth-5-academia
date: 2022-07-04
author: Stefan Imhoff
diff --git a/src/content/journal/2022/civil-war-truth-6-science.mdx b/src/content/journal/2022/civil-war-truth-6-science.mdx
index 1ed166d..400daa5 100644
--- a/src/content/journal/2022/civil-war-truth-6-science.mdx
+++ b/src/content/journal/2022/civil-war-truth-6-science.mdx
@@ -1,5 +1,6 @@
---
-title: "Civil War for Truth: Science"
+title: Civil War for Truth
+subtitle: Science
slug: civil-war-truth-6-science
date: 2022-07-11
author: Stefan Imhoff
diff --git a/src/content/journal/2022/civil-war-truth-7-conclusion.mdx b/src/content/journal/2022/civil-war-truth-7-conclusion.mdx
index cb4473f..1ee6e5b 100644
--- a/src/content/journal/2022/civil-war-truth-7-conclusion.mdx
+++ b/src/content/journal/2022/civil-war-truth-7-conclusion.mdx
@@ -1,5 +1,6 @@
---
-title: "Civil War for Truth: Conclusion"
+title: Civil War for Truth
+subtitle: Conclusion
slug: civil-war-truth-7-conclusion
date: 2022-07-18
author: Stefan Imhoff
diff --git a/src/content/journal/2022/dreaming-of-the-old-normal.mdx b/src/content/journal/2022/dreaming-of-the-old-normal.mdx
index adea5a4..11a9101 100644
--- a/src/content/journal/2022/dreaming-of-the-old-normal.mdx
+++ b/src/content/journal/2022/dreaming-of-the-old-normal.mdx
@@ -1,5 +1,6 @@
---
title: Dreaming of the Old Normal
+subtitle: A portrait of normalcy, drawn from memory
slug: dreaming-of-the-old-normal
date: 2022-01-06
author: Stefan Imhoff
diff --git a/src/content/journal/2022/i-counted-everything-i-own.mdx b/src/content/journal/2022/i-counted-everything-i-own.mdx
index b1d41c1..ac9834a 100644
--- a/src/content/journal/2022/i-counted-everything-i-own.mdx
+++ b/src/content/journal/2022/i-counted-everything-i-own.mdx
@@ -1,5 +1,6 @@
---
title: I Counted Everything I Own
+subtitle: Minimalism, measured
slug: i-counted-everything-i-own
date: 2022-01-25
updated: 2023-06-07
diff --git a/src/content/journal/2022/manage-references-for-note-taking.mdx b/src/content/journal/2022/manage-references-for-note-taking.mdx
index 79f2396..0ba9ab9 100644
--- a/src/content/journal/2022/manage-references-for-note-taking.mdx
+++ b/src/content/journal/2022/manage-references-for-note-taking.mdx
@@ -1,6 +1,6 @@
---
title: Manage References for Note-Taking
-slug: manage-references-for-note-taking
+subtitle: A sane system for finding and citing what you read
date: 2022-04-22
updated: 2022-04-30
author: Stefan Imhoff
diff --git a/src/content/journal/2022/rss-news-feed.mdx b/src/content/journal/2022/rss-news-feed.mdx
index 601cc65..7a19106 100644
--- a/src/content/journal/2022/rss-news-feed.mdx
+++ b/src/content/journal/2022/rss-news-feed.mdx
@@ -1,5 +1,6 @@
---
title: The Return of the News Feed
+subtitle: The case for RSS in the age of algorithmic feeds
slug: rss-news-feed
date: 2022-11-05
author: Stefan Imhoff
diff --git a/src/content/journal/2022/template-ia-writer-nanzan.mdx b/src/content/journal/2022/template-ia-writer-nanzan.mdx
index c99027d..a31a32b 100644
--- a/src/content/journal/2022/template-ia-writer-nanzan.mdx
+++ b/src/content/journal/2022/template-ia-writer-nanzan.mdx
@@ -1,5 +1,6 @@
---
-title: iA Writer Template Nanzan
+title: iA Writer Template
+subtitle: Nanzan
slug: template-ia-writer-nanzan
author: Stefan Imhoff
date: 2022-03-17
diff --git a/src/content/journal/2022/template-ia-writer-shibui.mdx b/src/content/journal/2022/template-ia-writer-shibui.mdx
index 25259ae..9d7e6d0 100644
--- a/src/content/journal/2022/template-ia-writer-shibui.mdx
+++ b/src/content/journal/2022/template-ia-writer-shibui.mdx
@@ -1,5 +1,6 @@
---
-title: iA Writer Template Shibui
+title: iA Writer Template
+subtitle: Shibui
slug: template-ia-writer-shibui
author: Stefan Imhoff
date: 2022-03-18
diff --git a/src/content/journal/2022/tools-for-better-writing.mdx b/src/content/journal/2022/tools-for-better-writing.mdx
index f0a5fd2..920c2eb 100644
--- a/src/content/journal/2022/tools-for-better-writing.mdx
+++ b/src/content/journal/2022/tools-for-better-writing.mdx
@@ -1,5 +1,6 @@
---
title: Tools for Better Writing
+subtitle: The essential toolkit I rely on for clearer, cleaner, more effective writing
slug: tools-for-better-writing
date: 2022-09-09
author: Stefan Imhoff
diff --git a/src/content/journal/2023/shokunin.mdx b/src/content/journal/2023/shokunin.mdx
index cd026f8..36f5658 100644
--- a/src/content/journal/2023/shokunin.mdx
+++ b/src/content/journal/2023/shokunin.mdx
@@ -1,5 +1,6 @@
---
-title: "Shokunin: The Spirit of an Artisan"
+title: Shokunin
+subtitle: The Spirit of an Artisan
slug: shokunin
date: 2023-03-08
updated: 2024-02-10
diff --git a/src/content/journal/2023/thomas-sowell.mdx b/src/content/journal/2023/thomas-sowell.mdx
index 60fc880..8506562 100644
--- a/src/content/journal/2023/thomas-sowell.mdx
+++ b/src/content/journal/2023/thomas-sowell.mdx
@@ -1,5 +1,6 @@
---
-title: "Discovering Thomas Sowell: The Voice That Challenges Conventional Thinking"
+title: Discovering Thomas Sowell
+subtitle: The Voice That Challenges Conventional Thinking
slug: thomas-sowell
date: 2023-10-29
author: Stefan Imhoff
diff --git a/src/content/journal/2023/website-relaunch-astro-preact-tailwind.mdx b/src/content/journal/2023/website-relaunch-2023.mdx
similarity index 96%
rename from src/content/journal/2023/website-relaunch-astro-preact-tailwind.mdx
rename to src/content/journal/2023/website-relaunch-2023.mdx
index 34ae4d5..aff1f6f 100644
--- a/src/content/journal/2023/website-relaunch-astro-preact-tailwind.mdx
+++ b/src/content/journal/2023/website-relaunch-2023.mdx
@@ -1,6 +1,7 @@
---
-title: Website Relaunch With Astro, Tailwind CSS, and Preact
-slug: website-relaunch-astro-preact-tailwind
+title: Website Relaunch 2023
+subtitle: How I built my personal website using Astro, Tailwind CSS, and Preact
+slug: website-relaunch-2023
date: 2023-06-16
author: Stefan Imhoff
description: How I built my personal website using Astro, Tailwind CSS, and AI improving the information architecture, content, and design.
diff --git a/src/content/journal/2024/beyond-the-bookshelf-1.mdx b/src/content/journal/2024/beyond-the-bookshelf-1.mdx
index 51ee0c7..bdb7bf1 100644
--- a/src/content/journal/2024/beyond-the-bookshelf-1.mdx
+++ b/src/content/journal/2024/beyond-the-bookshelf-1.mdx
@@ -1,5 +1,6 @@
---
-title: "Beyond the Bookshelf: Rediscovering the Magic of Reading in a Digital Age"
+title: Beyond the Bookshelf
+subtitle: Rediscovering the Magic of Reading in a Digital Age
slug: beyond-the-bookshelf-1
date: 2024-12-20
author: Stefan Imhoff
diff --git a/src/content/journal/2024/beyond-the-bookshelf-2-books-2024.mdx b/src/content/journal/2024/beyond-the-bookshelf-2-books-2024.mdx
index 6e9c170..1dac8d4 100644
--- a/src/content/journal/2024/beyond-the-bookshelf-2-books-2024.mdx
+++ b/src/content/journal/2024/beyond-the-bookshelf-2-books-2024.mdx
@@ -1,5 +1,6 @@
---
-title: "Beyond the Bookshelf: My Reading Journey of 2024"
+title: Beyond the Bookshelf
+subtitle: My Reading Journey of 2024
slug: beyond-the-bookshelf-2-books-2024
date: 2024-12-27
author: Stefan Imhoff
diff --git a/src/content/journal/2024/raycast.mdx b/src/content/journal/2024/raycast.mdx
index 149becc..14aa3ab 100644
--- a/src/content/journal/2024/raycast.mdx
+++ b/src/content/journal/2024/raycast.mdx
@@ -1,5 +1,6 @@
---
-title: "Raycast: The Must-Have Productivity App for macOS"
+title: Raycast
+subtitle: The Must-Have Productivity App for macOS
slug: raycast
date: 2024-01-19
updated: 2025-07-08
diff --git a/src/content/journal/2025/15-years-xing.mdx b/src/content/journal/2025/15-years-xing.mdx
index 88b1a01..2d6f8aa 100644
--- a/src/content/journal/2025/15-years-xing.mdx
+++ b/src/content/journal/2025/15-years-xing.mdx
@@ -1,5 +1,6 @@
---
-title: "15 Years at XING: Reflections and a Farewell"
+title: 15 Years at XING
+subtitle: Reflections and a Farewell
slug: 15-years-xing
date: 2025-12-15
updated: 2025-12-16
diff --git a/src/content/journal/2025/from-typewriter-to-split-keyboard.mdx b/src/content/journal/2025/from-typewriter-to-split-keyboard.mdx
index 746e200..1f59873 100644
--- a/src/content/journal/2025/from-typewriter-to-split-keyboard.mdx
+++ b/src/content/journal/2025/from-typewriter-to-split-keyboard.mdx
@@ -1,5 +1,6 @@
---
-title: "From Typewriter to Split Keyboard: How I Fell in Love with Typing"
+title: From Typewriter to Split Keyboard
+subtitle: How I Fell in Love with Typing
slug: from-typewriter-to-split-keyboard
date: 2025-08-04
updated: 2025-12-19
diff --git a/src/content/journal/2025/fuck-you-sonos.mdx b/src/content/journal/2025/fuck-you-sonos.mdx
index 4f94c1f..192a3c7 100644
--- a/src/content/journal/2025/fuck-you-sonos.mdx
+++ b/src/content/journal/2025/fuck-you-sonos.mdx
@@ -1,5 +1,6 @@
---
title: Fuck you, Sonos
+subtitle: Journey of Disappointment and Search for New Audio Solutions
slug: fuck-you-sonos
date: 2025-04-30
author: Stefan Imhoff
diff --git a/src/content/journal/2025/modern-atlas-shrugged-1-signs-of-decline.mdx b/src/content/journal/2025/modern-atlas-shrugged-1-signs-of-decline.mdx
index 1fff3a5..28bfa9b 100644
--- a/src/content/journal/2025/modern-atlas-shrugged-1-signs-of-decline.mdx
+++ b/src/content/journal/2025/modern-atlas-shrugged-1-signs-of-decline.mdx
@@ -1,5 +1,6 @@
---
-title: "The Modern Atlas Shrugged: The Signs of Decline"
+title: The Modern Atlas Shrugged
+subtitle: The Signs of Decline
slug: modern-atlas-shrugged-1-signs-of-decline
date: 2025-05-19
author: Stefan Imhoff
diff --git a/src/content/journal/2025/modern-atlas-shrugged-2-looters-in-action.mdx b/src/content/journal/2025/modern-atlas-shrugged-2-looters-in-action.mdx
index bd7db9b..c8ea9e3 100644
--- a/src/content/journal/2025/modern-atlas-shrugged-2-looters-in-action.mdx
+++ b/src/content/journal/2025/modern-atlas-shrugged-2-looters-in-action.mdx
@@ -1,5 +1,6 @@
---
-title: "The Modern Atlas Shrugged: The Looters in Action"
+title: The Modern Atlas Shrugged
+subtitle: The Looters in Action
slug: modern-atlas-shrugged-2-looters-in-action
date: 2025-05-26
author: Stefan Imhoff
diff --git a/src/content/journal/2025/modern-atlas-shrugged-3-strike.mdx b/src/content/journal/2025/modern-atlas-shrugged-3-strike.mdx
index 9ed7a19..711fb0f 100644
--- a/src/content/journal/2025/modern-atlas-shrugged-3-strike.mdx
+++ b/src/content/journal/2025/modern-atlas-shrugged-3-strike.mdx
@@ -1,5 +1,6 @@
---
-title: "The Modern Atlas Shrugged: The Strike"
+title: The Modern Atlas Shrugged
+subtitle: The Strike
slug: modern-atlas-shrugged-3-strike
date: 2025-06-02
author: Stefan Imhoff
diff --git a/src/content/journal/2025/note-taking-obsidian-readwise-ai.mdx b/src/content/journal/2025/note-taking-obsidian-readwise-ai.mdx
index f98ef1f..003e431 100644
--- a/src/content/journal/2025/note-taking-obsidian-readwise-ai.mdx
+++ b/src/content/journal/2025/note-taking-obsidian-readwise-ai.mdx
@@ -1,5 +1,6 @@
---
-title: Working with Obsidian, Readwise, and AI to Create Notes
+title: My 2025 Note-Taking System
+subtitle: Obsidian, Readwise, and AI
slug: note-taking-obsidian-readwise-ai
date: 2025-02-16
author: Stefan Imhoff
diff --git a/src/content/journal/2025/ok-boomer.mdx b/src/content/journal/2025/ok-boomer.mdx
index e0f1c34..0aa5b5f 100644
--- a/src/content/journal/2025/ok-boomer.mdx
+++ b/src/content/journal/2025/ok-boomer.mdx
@@ -1,5 +1,6 @@
---
-title: "OK, Boomer: A Post-War Psychoanalysis"
+title: OK, Boomer
+subtitle: A Post-War Psychoanalysis
slug: ok-boomer
date: 2025-11-28
updated: 2025-12-19
diff --git a/src/pages/[...slug].astro b/src/pages/[...slug].astro
index 43d7ef4..6fb91fd 100644
--- a/src/pages/[...slug].astro
+++ b/src/pages/[...slug].astro
@@ -13,7 +13,7 @@ import GridLayout from '../layouts/GridLayout.astro';
import Image from '../components/Image.astro';
import ListItem from '../components/ListItem.astro';
import OrderedList from '../components/OrderedList.astro';
-import PageTitle from '../components/PageTitle.astro';
+import JournalTitle from '../components/JournalTitle.astro';
import Pagination from '../components/Pagination.astro';
import Tag from '../components/Tag.astro';
import TextLink from '../components/TextLink.astro';
@@ -51,6 +51,7 @@ const seriesEntries: Journal[] = await getCollection('journal', ({ data }: Journ
seriesEntries.sort(sortByDate).reverse();
const title = entry.data.title;
+const subtitle = entry.data.subtitle;
const description = entry.data.description;
const schema = JSON.stringify({
@@ -84,16 +85,16 @@ const schema = JSON.stringify({
innerGrid
nofollow={entry.data.nofollow}
noindex={entry.data.noindex}
- title={title}
+ title={subtitle ? `${title}: ${subtitle}` : title}
>
-
+
{entry.data.title}
-
+
{
entry.data.cover && (
About Me
diff --git a/src/pages/rss.xml.js b/src/pages/rss.xml.js
index 2cff9c2..457ba9d 100644
--- a/src/pages/rss.xml.js
+++ b/src/pages/rss.xml.js
@@ -26,6 +26,7 @@ export async function GET(context) {
},
items: [
...journal.map((post) => {
+ const { title, subtitle, date, description, cover } = post.data;
// Filter out import statements from content
const contentWithoutImports = post.body
.split('\n')
@@ -52,26 +53,24 @@ export async function GET(context) {
});
// Logic to determine image URL
- const isWebp =
- post.data.cover.startsWith('/assets/images/cover/') &&
- post.data.cover.endsWith('.webp');
+ const isWebp = cover.startsWith('/assets/images/cover/') && cover.endsWith('.webp');
const imgUrl = isWebp
- ? post.data.cover
+ ? cover
.replace('/assets/images/cover/', '/assets/images/thumbnail/')
.replace(/\.webp$/, '.jpg')
: '/assets/images/thumbnail/bonsai.jpg';
return {
- title: post.data.title,
- pubDate: post.data.date,
- description: post.data.description,
+ title: subtitle ? `${title}: ${subtitle}` : title,
+ pubDate: date,
+ description: description,
link: `/${post.slug}/`,
content: sanitizedContent,
enclosure: {
url:
site.url +
(isWebp
- ? post.data.cover
+ ? cover
.replace('/assets/images/cover/', '/assets/images/og/')
.replace(/\.webp$/, '.jpg')
: '/assets/images/og/bonsai.jpg'),
diff --git a/src/schema/journal.ts b/src/schema/journal.ts
index 7bf75d0..fa3024b 100644
--- a/src/schema/journal.ts
+++ b/src/schema/journal.ts
@@ -3,6 +3,7 @@ import { defineCollection, z } from 'astro:content';
export const journal = defineCollection({
schema: z.object({
title: z.string(),
+ subtitle: z.string().optional(),
draft: z.boolean().optional().default(false),
featured: z.boolean().optional(),
author: z.string().default('Stefan Imhoff'),
diff --git a/tailwind.config.cjs b/tailwind.config.cjs
index 3c93d0a..1cac808 100644
--- a/tailwind.config.cjs
+++ b/tailwind.config.cjs
@@ -115,7 +115,7 @@ module.exports = {
20: 'clamp(8.916rem, 17.85vw, 10.699rem)',
column: '6.9375vw',
layout: 'clamp(1.5rem, 6.9375vw, 4.5rem)',
- gap: 'clamp(1.5rem, 6.9375vw, 6rem)',
+ gap: 'clamp(1.5rem, 3.46875vw, 3rem)',
halfgap: 'calc(clamp(1.5rem, 6.9375vw, 6rem) / 2)',
icon: '24px',
'icon-small': '20px',