feat: add subtitle and change photo alignment

This commit is contained in:
Stefan Imhoff
2026-01-29 16:45:07 +01:00
committed by Stefan Imhoff
parent eaa55ad8e1
commit d0460fe6f9
101 changed files with 198 additions and 74 deletions

View File

@@ -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;
</div>
<div class="absolute z-20 flex h-full w-full flex-col items-center justify-center p-10 text-center leading-tight text-white">
<Subsubheadline as="h2" class="!m-0 leading-tight">
{data.title}
{data.subtitle ? `${data.title}: ${data.subtitle}` : data.title}
</Subsubheadline>
</div>
</Link>

View File

@@ -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;
---
<div
class:list={[
'col-start-1 col-end-19 !mbe-0',
{
'col-start-2 col-end-3 md:col-start-3 md:col-end-17': grid === 'narrow',
'row-start-1': innerGrid,
'!col-start-2 !col-end-18 md:!col-start-3 md:!col-end-17': !innerGrid,
},
className,
]}
>
<Title class="!m-0 text-[clamp(2.25rem,_4.125vw,_4.125rem)]"><slot /></Title>
{subtitle && <Headline class="!m-0 text-shibui-400 dark:text-shibui-600">{subtitle}</Headline>}
</div>

View File

@@ -1,5 +1,6 @@
---
title: "GTD: Getting Things Done"
title: GTD
subtitle: Getting Things Done
slug: gtd
author: Stefan Imhoff
date: 2007-11-24

View File

@@ -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

View File

@@ -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: <ProductLink asin="9074822452" text="Tattoos from the Floating World: Ukiyo-e Motifs in Japanese Tattoo" /> and <ProductLink asin="0764312014" text="Bushido: Legacies of the Japanese Tattoo" />.
<Bookshelf>
<AmazonBook asin="9074822452" alt="Tattoos from the Floating World: Ukiyo-e Motifs in the Japanese Tattoo" />
<AmazonBook
asin="9074822452"
alt="Tattoos from the Floating World: Ukiyo-e Motifs in the Japanese Tattoo"
/>
<AmazonBook asin="0764312014" alt="Bushido" />
</Bookshelf>

View File

@@ -1,5 +1,6 @@
---
title: Git
subtitle: Your Git learning playlist
slug: git
author: Stefan Imhoff
date: 2009-02-10

View File

@@ -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

View File

@@ -1,5 +1,6 @@
---
title: HOME
subtitle: A love letter to the planet
slug: home-documentary
author: Stefan Imhoff
date: 2009-06-15

View File

@@ -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

View File

@@ -1,5 +1,6 @@
---
title: Vim
subtitle: Make text bend to your will
slug: vim
author: Stefan Imhoff
date: 2010-10-29

View File

@@ -1,5 +1,6 @@
---
title: Django Article
subtitle: Apparently they still print things and Im in one of them
slug: webstandards-magazine-django
author: Stefan Imhoff
date: 2010-09-21

View File

@@ -1,5 +1,6 @@
---
title: Decodeunicode
subtitle: All the worlds characters, one remarkable book
slug: decodeunicode
author: Stefan Imhoff
date: 2011-06-02

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -1,5 +1,6 @@
---
title: John Seymours Books on Self-Sufficiency
subtitle: Self-sufficiency, beautifully explained
slug: john-seymour-books
author: Stefan Imhoff
date: 2014-08-03

View File

@@ -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

View File

@@ -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

View File

@@ -1,5 +1,6 @@
---
title: Calisthenics
subtitle: Strong with nothing but gravity
slug: calisthenics
author: Stefan Imhoff
date: 2015-05-19

View File

@@ -1,5 +1,6 @@
---
title: Human
subtitle: The world, looking back at itself
slug: human-documentary
author: Stefan Imhoff
date: 2015-09-29

View File

@@ -1,5 +1,6 @@
---
title: Motivational Video
subtitle: Every quote, finally sourced
slug: motivational-video
author: Stefan Imhoff
date: 2015-08-14

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -1,5 +1,6 @@
---
title: Minimalism
subtitle: Less, but better—and on purpose
slug: minimalism
author: Stefan Imhoff
date: 2017-06-07

View File

@@ -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

View File

@@ -1,5 +1,6 @@
---
title: How to Store Information
subtitle: Keep what counts, where youll find it
slug: storing-information
date: 2018-10-03
author: Stefan Imhoff

View File

@@ -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

View File

@@ -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

View File

@@ -1,5 +1,6 @@
---
title: Best of 2020
subtitle: The years most compelling rabbit holes
slug: best-of-2020
date: 2020-12-22
author: Stefan Imhoff

View File

@@ -1,5 +1,6 @@
---
title: Everyday Carry
subtitle: Whats in my pockets (and why)
slug: everyday-carry
date: 2020-03-14
updated: 2023-06-09

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -1,5 +1,6 @@
---
title: If— Guidance for a Virtuous, Stoic Life
subtitle: A Modern Interpretation of Rudyard Kiplings Great Poem
slug: interpretation-if
date: 2021-12-13
author: Stefan Imhoff

View File

@@ -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

View File

@@ -1,5 +1,6 @@
---
title: Learning Poems
subtitle: Verse you can carry anywhere
slug: learning-poems
date: 2021-08-23
author: Stefan Imhoff

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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.

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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}
>
<PageTitle slot="title" class="!text-6">
<JournalTitle subtitle={entry.data.subtitle}>
{entry.data.title}
</PageTitle>
</JournalTitle>
{
entry.data.cover && (
<Image
alt={entry.data.title}
class="col-span-full aspect-video h-auto !mbe-0 xl:col-start-1 xl:col-end-14 3xl:col-end-13 print:hidden [&_img]:!w-full [&_img]:!max-w-none [&_img]:rounded-none xl:[&_img]:rounded-2 [&_picture]:!w-full [&_picture]:!max-w-none"
class="col-span-full aspect-video h-auto !mbe-0 md:col-start-3 md:col-end-17 xl:col-end-14 3xl:col-end-13 print:hidden [&_img]:!w-full [&_img]:!max-w-none [&_img]:rounded-none md:[&_img]:rounded-2 [&_picture]:!w-full [&_picture]:!max-w-none"
loading="eager"
src={entry.data.cover}
fullHeight

View File

@@ -37,7 +37,7 @@ rssPosts.sort(sortMarkdownByDate);
{site.title}
</PageTitle>
<div
class="col-start-1 col-end-19 md:col-start-1 md:col-end-11 xl:col-end-11 [&_div]:!border-x-0 [&_div]:!mbe-0 [&_div]:md:!border-s-0"
class="col-start-1 col-end-19 md:col-start-3 md:col-end-10 xl:col-end-12 [&_div]:!border-x-0 [&_div]:!mbe-0 [&_div]:md:!border-s-0"
>
<Image
alt="Bonsai"
@@ -50,7 +50,7 @@ rssPosts.sort(sortMarkdownByDate);
</div>
<article
class="col-start-2 col-end-18 row-start-3 self-center md:col-start-12 md:row-start-2 xl:col-start-13 xl:col-end-17"
class="col-start-2 col-end-18 row-start-3 self-center md:col-start-11 md:col-end-17 md:row-start-2 xl:col-start-13 xl:col-end-17"
>
<Headline>About Me</Headline>
<AboutMe components={mapping} />

View File

@@ -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'),

View File

@@ -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'),

Some files were not shown because too many files have changed in this diff Show More