mirror of
https://github.com/kogakure/website-astro-stefanimhoff.de.git
synced 2026-02-03 12:05:28 +00:00
feat: add subtitle and change photo alignment
This commit is contained in:
committed by
Stefan Imhoff
parent
eaa55ad8e1
commit
d0460fe6f9
@@ -9,7 +9,6 @@ interface Props {
|
|||||||
import { pickTwoRandomColors } from '../utils';
|
import { pickTwoRandomColors } from '../utils';
|
||||||
import Link from '../components/Link.astro';
|
import Link from '../components/Link.astro';
|
||||||
import Subsubheadline from './Subsubheadline.astro';
|
import Subsubheadline from './Subsubheadline.astro';
|
||||||
import ThemeBox from './ThemeBox.astro';
|
|
||||||
|
|
||||||
const { entries } = Astro.props;
|
const { entries } = Astro.props;
|
||||||
---
|
---
|
||||||
@@ -55,7 +54,7 @@ const { entries } = Astro.props;
|
|||||||
</div>
|
</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">
|
<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">
|
<Subsubheadline as="h2" class="!m-0 leading-tight">
|
||||||
{data.title}
|
{data.subtitle ? `${data.title}: ${data.subtitle}` : data.title}
|
||||||
</Subsubheadline>
|
</Subsubheadline>
|
||||||
</div>
|
</div>
|
||||||
</Link>
|
</Link>
|
||||||
|
|||||||
28
src/components/JournalTitle.astro
Normal file
28
src/components/JournalTitle.astro
Normal 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>
|
||||||
@@ -1,5 +1,6 @@
|
|||||||
---
|
---
|
||||||
title: "GTD: Getting Things Done"
|
title: GTD
|
||||||
|
subtitle: Getting Things Done
|
||||||
slug: gtd
|
slug: gtd
|
||||||
author: Stefan Imhoff
|
author: Stefan Imhoff
|
||||||
date: 2007-11-24
|
date: 2007-11-24
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
---
|
---
|
||||||
title: Colors of Japan
|
title: Colors of Japan
|
||||||
|
subtitle: Historic hues from kimono to samurai armor, packaged for modern design
|
||||||
slug: japanese-colors
|
slug: japanese-colors
|
||||||
author: Stefan Imhoff
|
author: Stefan Imhoff
|
||||||
date: 2007-12-08
|
date: 2007-12-08
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
---
|
---
|
||||||
title: Koi Design
|
title: Koi Design
|
||||||
|
subtitle: Translating traditional tattoo art into UI
|
||||||
slug: koi-design
|
slug: koi-design
|
||||||
author: Stefan Imhoff
|
author: Stefan Imhoff
|
||||||
date: 2007-06-02
|
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 Motif’s in Japanese Tattoo" /> and <ProductLink asin="0764312014" text="Bushido: Legacies of the Japanese Tattoo" />.
|
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 Motif’s in Japanese Tattoo" /> and <ProductLink asin="0764312014" text="Bushido: Legacies of the Japanese Tattoo" />.
|
||||||
|
|
||||||
<Bookshelf>
|
<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" />
|
<AmazonBook asin="0764312014" alt="Bushido" />
|
||||||
</Bookshelf>
|
</Bookshelf>
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
---
|
---
|
||||||
title: Git
|
title: Git
|
||||||
|
subtitle: Your Git learning playlist
|
||||||
slug: git
|
slug: git
|
||||||
author: Stefan Imhoff
|
author: Stefan Imhoff
|
||||||
date: 2009-02-10
|
date: 2009-02-10
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
---
|
---
|
||||||
title: GitWeb Theme
|
title: GitWeb Theme
|
||||||
|
subtitle: Because the default GitWeb theme hurt my eyes
|
||||||
slug: gitweb-theme
|
slug: gitweb-theme
|
||||||
author: Stefan Imhoff
|
author: Stefan Imhoff
|
||||||
date: 2009-02-19
|
date: 2009-02-19
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
---
|
---
|
||||||
title: HOME
|
title: HOME
|
||||||
|
subtitle: A love letter to the planet
|
||||||
slug: home-documentary
|
slug: home-documentary
|
||||||
author: Stefan Imhoff
|
author: Stefan Imhoff
|
||||||
date: 2009-06-15
|
date: 2009-06-15
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
---
|
---
|
||||||
title: Rework
|
title: Rework
|
||||||
|
subtitle: A sharp, illustrated manifesto for working smarter, not bigger
|
||||||
slug: rework
|
slug: rework
|
||||||
author: Stefan Imhoff
|
author: Stefan Imhoff
|
||||||
date: 2010-04-27
|
date: 2010-04-27
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
---
|
---
|
||||||
title: Vim
|
title: Vim
|
||||||
|
subtitle: Make text bend to your will
|
||||||
slug: vim
|
slug: vim
|
||||||
author: Stefan Imhoff
|
author: Stefan Imhoff
|
||||||
date: 2010-10-29
|
date: 2010-10-29
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
---
|
---
|
||||||
title: Django Article
|
title: Django Article
|
||||||
|
subtitle: Apparently they still print things and I’m in one of them
|
||||||
slug: webstandards-magazine-django
|
slug: webstandards-magazine-django
|
||||||
author: Stefan Imhoff
|
author: Stefan Imhoff
|
||||||
date: 2010-09-21
|
date: 2010-09-21
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
---
|
---
|
||||||
title: Decodeunicode
|
title: Decodeunicode
|
||||||
|
subtitle: All the world’s characters, one remarkable book
|
||||||
slug: decodeunicode
|
slug: decodeunicode
|
||||||
author: Stefan Imhoff
|
author: Stefan Imhoff
|
||||||
date: 2011-06-02
|
date: 2011-06-02
|
||||||
|
|||||||
@@ -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
|
slug: gulp-tutorial-1-intro-setup
|
||||||
author: Stefan Imhoff
|
author: Stefan Imhoff
|
||||||
date: 2014-10-18
|
date: 2014-10-18
|
||||||
|
|||||||
@@ -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
|
slug: gulp-tutorial-10-generating-sprites
|
||||||
author: Stefan Imhoff
|
author: Stefan Imhoff
|
||||||
date: 2014-10-27
|
date: 2014-10-27
|
||||||
|
|||||||
@@ -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
|
slug: gulp-tutorial-11-production-build-server-and-jekyll
|
||||||
author: Stefan Imhoff
|
author: Stefan Imhoff
|
||||||
date: 2014-10-28
|
date: 2014-10-28
|
||||||
|
|||||||
@@ -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
|
slug: gulp-tutorial-12-optimize-css-javascript-images-and-html
|
||||||
author: Stefan Imhoff
|
author: Stefan Imhoff
|
||||||
date: 2014-10-29
|
date: 2014-10-29
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
---
|
---
|
||||||
title: "Introduction to Gulp.js 13: Revisioning"
|
title: Introduction to Gulp.js 13
|
||||||
|
subtitle: Revisioning
|
||||||
slug: gulp-tutorial-13-revisioning
|
slug: gulp-tutorial-13-revisioning
|
||||||
author: Stefan Imhoff
|
author: Stefan Imhoff
|
||||||
date: 2014-10-30
|
date: 2014-10-30
|
||||||
|
|||||||
@@ -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
|
slug: gulp-tutorial-14-deploying-the-website
|
||||||
author: Stefan Imhoff
|
author: Stefan Imhoff
|
||||||
date: 2014-10-31
|
date: 2014-10-31
|
||||||
|
|||||||
@@ -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
|
slug: gulp-tutorial-15-performance-improvements-webp-gzip
|
||||||
author: Stefan Imhoff
|
author: Stefan Imhoff
|
||||||
date: 2014-12-21
|
date: 2014-12-21
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
---
|
---
|
||||||
title: "Introduction to Gulp.js 16: PostCSS"
|
title: Introduction to Gulp.js 16
|
||||||
|
subtitle: PostCSS
|
||||||
slug: gulp-tutorial-16-postcss
|
slug: gulp-tutorial-16-postcss
|
||||||
author: Stefan Imhoff
|
author: Stefan Imhoff
|
||||||
date: 2014-12-30
|
date: 2014-12-30
|
||||||
|
|||||||
@@ -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
|
slug: gulp-tutorial-2-development-server-browsersync-configuration
|
||||||
author: Stefan Imhoff
|
author: Stefan Imhoff
|
||||||
date: 2014-10-19
|
date: 2014-10-19
|
||||||
|
|||||||
@@ -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
|
slug: gulp-tutorial-3-build-clean-jekyll
|
||||||
author: Stefan Imhoff
|
author: Stefan Imhoff
|
||||||
date: 2014-10-20
|
date: 2014-10-20
|
||||||
|
|||||||
@@ -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
|
slug: gulp-tutorial-4-css-generation-sass
|
||||||
author: Stefan Imhoff
|
author: Stefan Imhoff
|
||||||
date: 2014-10-21
|
date: 2014-10-21
|
||||||
|
|||||||
@@ -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
|
slug: gulp-tutorial-5-javascripts-browserify
|
||||||
author: Stefan Imhoff
|
author: Stefan Imhoff
|
||||||
date: 2014-10-22
|
date: 2014-10-22
|
||||||
|
|||||||
@@ -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
|
slug: gulp-tutorial-6-images-vector-fonts
|
||||||
author: Stefan Imhoff
|
author: Stefan Imhoff
|
||||||
date: 2014-10-23
|
date: 2014-10-23
|
||||||
|
|||||||
@@ -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
|
slug: gulp-tutorial-7-base64
|
||||||
author: Stefan Imhoff
|
author: Stefan Imhoff
|
||||||
date: 2014-10-24
|
date: 2014-10-24
|
||||||
|
|||||||
@@ -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
|
slug: gulp-tutorial-8-watch
|
||||||
author: Stefan Imhoff
|
author: Stefan Imhoff
|
||||||
date: 2014-10-25
|
date: 2014-10-25
|
||||||
|
|||||||
@@ -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
|
slug: gulp-tutorial-9-linting-scss-and-javascript
|
||||||
author: Stefan Imhoff
|
author: Stefan Imhoff
|
||||||
date: 2014-10-26
|
date: 2014-10-26
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
---
|
---
|
||||||
title: John Seymour’s Books on Self-Sufficiency
|
title: John Seymour’s Books on Self-Sufficiency
|
||||||
|
subtitle: Self-sufficiency, beautifully explained
|
||||||
slug: john-seymour-books
|
slug: john-seymour-books
|
||||||
author: Stefan Imhoff
|
author: Stefan Imhoff
|
||||||
date: 2014-08-03
|
date: 2014-08-03
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
---
|
---
|
||||||
title: Design of My New Logo
|
title: Design of My New Logo
|
||||||
|
subtitle: From sketches to seal
|
||||||
slug: logo-design
|
slug: logo-design
|
||||||
author: Stefan Imhoff
|
author: Stefan Imhoff
|
||||||
date: 2014-04-18
|
date: 2014-04-18
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
---
|
---
|
||||||
title: Typography of My Website
|
title: Typography of My Website
|
||||||
|
subtitle: Type first, everything else follows
|
||||||
slug: website-typography
|
slug: website-typography
|
||||||
author: Stefan Imhoff
|
author: Stefan Imhoff
|
||||||
date: 2014-06-19
|
date: 2014-06-19
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
---
|
---
|
||||||
title: Calisthenics
|
title: Calisthenics
|
||||||
|
subtitle: Strong with nothing but gravity
|
||||||
slug: calisthenics
|
slug: calisthenics
|
||||||
author: Stefan Imhoff
|
author: Stefan Imhoff
|
||||||
date: 2015-05-19
|
date: 2015-05-19
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
---
|
---
|
||||||
title: Human
|
title: Human
|
||||||
|
subtitle: The world, looking back at itself
|
||||||
slug: human-documentary
|
slug: human-documentary
|
||||||
author: Stefan Imhoff
|
author: Stefan Imhoff
|
||||||
date: 2015-09-29
|
date: 2015-09-29
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
---
|
---
|
||||||
title: Motivational Video
|
title: Motivational Video
|
||||||
|
subtitle: Every quote, finally sourced
|
||||||
slug: motivational-video
|
slug: motivational-video
|
||||||
author: Stefan Imhoff
|
author: Stefan Imhoff
|
||||||
date: 2015-08-14
|
date: 2015-08-14
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
---
|
---
|
||||||
title: Underwear
|
title: Underwear
|
||||||
|
subtitle: A warm, beautifully crafted series about craft, character, and quiet excellence
|
||||||
slug: japanese-netflix-tv-show-underwear
|
slug: japanese-netflix-tv-show-underwear
|
||||||
author: Stefan Imhoff
|
author: Stefan Imhoff
|
||||||
date: 2016-02-12
|
date: 2016-02-12
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
---
|
---
|
||||||
title: Self-Defense in the Age of Attention
|
title: Self-Defense in the Age of Attention
|
||||||
|
subtitle: A simple playbook to protect your time, attention, and mental bandwidth
|
||||||
slug: attention
|
slug: attention
|
||||||
author: Stefan Imhoff
|
author: Stefan Imhoff
|
||||||
date: 2017-11-03T08:00:00+01:00
|
date: 2017-11-03T08:00:00+01:00
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
---
|
---
|
||||||
title: I Wrote a Book in GitBook
|
title: I Wrote a Book in GitBook
|
||||||
|
subtitle: 18 years of notes, now a book
|
||||||
slug: gitbook
|
slug: gitbook
|
||||||
author: Stefan Imhoff
|
author: Stefan Imhoff
|
||||||
date: 2017-06-27
|
date: 2017-06-27
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
---
|
---
|
||||||
title: Minimalism
|
title: Minimalism
|
||||||
|
subtitle: Less, but better—and on purpose
|
||||||
slug: minimalism
|
slug: minimalism
|
||||||
author: Stefan Imhoff
|
author: Stefan Imhoff
|
||||||
date: 2017-06-07
|
date: 2017-06-07
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
---
|
---
|
||||||
title: Morning Routine
|
title: Morning Routine
|
||||||
|
subtitle: Win the morning, win the day
|
||||||
slug: morning-routine
|
slug: morning-routine
|
||||||
date: 2018-09-08
|
date: 2018-09-08
|
||||||
updated: 2025-02-10
|
updated: 2025-02-10
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
---
|
---
|
||||||
title: How to Store Information
|
title: How to Store Information
|
||||||
|
subtitle: Keep what counts, where you’ll find it
|
||||||
slug: storing-information
|
slug: storing-information
|
||||||
date: 2018-10-03
|
date: 2018-10-03
|
||||||
author: Stefan Imhoff
|
author: Stefan Imhoff
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
---
|
---
|
||||||
title: 101 Things You Can Do While Being on Lockdown
|
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
|
slug: 101-things-you-can-do
|
||||||
date: 2020-03-28
|
date: 2020-03-28
|
||||||
author: Stefan Imhoff
|
author: Stefan Imhoff
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
---
|
---
|
||||||
title: Apps, Tools & Services
|
title: Apps, Tools & Services
|
||||||
|
subtitle: My everyday apps, all in one place
|
||||||
slug: apps-tools-services
|
slug: apps-tools-services
|
||||||
date: 2020-04-18T10:00:00+02:00
|
date: 2020-04-18T10:00:00+02:00
|
||||||
updated: 2025-01-06
|
updated: 2025-01-06
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
---
|
---
|
||||||
title: Best of 2020
|
title: Best of 2020
|
||||||
|
subtitle: The year’s most compelling rabbit holes
|
||||||
slug: best-of-2020
|
slug: best-of-2020
|
||||||
date: 2020-12-22
|
date: 2020-12-22
|
||||||
author: Stefan Imhoff
|
author: Stefan Imhoff
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
---
|
---
|
||||||
title: Everyday Carry
|
title: Everyday Carry
|
||||||
|
subtitle: What’s in my pockets (and why)
|
||||||
slug: everyday-carry
|
slug: everyday-carry
|
||||||
date: 2020-03-14
|
date: 2020-03-14
|
||||||
updated: 2023-06-09
|
updated: 2023-06-09
|
||||||
|
|||||||
@@ -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
|
date: 2020-07-21
|
||||||
slug: new-website-2020-design
|
slug: new-website-2020-design
|
||||||
author: Stefan Imhoff
|
author: Stefan Imhoff
|
||||||
|
|||||||
@@ -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
|
slug: new-website-2020-development
|
||||||
date: 2020-07-28
|
date: 2020-07-28
|
||||||
author: Stefan Imhoff
|
author: Stefan Imhoff
|
||||||
|
|||||||
@@ -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
|
slug: new-website-2020-inspiration
|
||||||
date: 2020-07-14
|
date: 2020-07-14
|
||||||
author: Stefan Imhoff
|
author: Stefan Imhoff
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
---
|
---
|
||||||
title: New Website 2020
|
title: New Website 2020
|
||||||
|
subtitle: After 250 hours, a complete rebuild—design, code, and content
|
||||||
slug: new-website-2020
|
slug: new-website-2020
|
||||||
date: 2020-07-07
|
date: 2020-07-07
|
||||||
author: Stefan Imhoff
|
author: Stefan Imhoff
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
---
|
---
|
||||||
title: Tools I Use For Note-Taking
|
title: Tools I Use For Note-Taking
|
||||||
|
subtitle: Notes built for connection, not clutter
|
||||||
slug: tools-i-use-for-note-taking
|
slug: tools-i-use-for-note-taking
|
||||||
date: 2020-09-03
|
date: 2020-09-03
|
||||||
author: Stefan Imhoff
|
author: Stefan Imhoff
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
---
|
---
|
||||||
title: Zettelkasten Note-Taking Method With DEVONthink
|
title: Zettelkasten Note-Taking Method With DEVONthink
|
||||||
|
subtitle: Build a Zettelkasten that lasts
|
||||||
slug: zettelkasten-note-taking-devonthink
|
slug: zettelkasten-note-taking-devonthink
|
||||||
date: 2020-05-18
|
date: 2020-05-18
|
||||||
author: Stefan Imhoff
|
author: Stefan Imhoff
|
||||||
|
|||||||
@@ -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
|
slug: devonthink-obsidian-for-note-taking
|
||||||
date: 2021-07-23
|
date: 2021-07-23
|
||||||
author: Stefan Imhoff
|
author: Stefan Imhoff
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
---
|
---
|
||||||
title: How to Prepare for the Worst Case
|
title: How to Prepare for the Worst Case
|
||||||
|
subtitle: Plan now, panic less later
|
||||||
slug: how-to-prepare-for-the-worst-case
|
slug: how-to-prepare-for-the-worst-case
|
||||||
date: 2021-11-19
|
date: 2021-11-19
|
||||||
author: Stefan Imhoff
|
author: Stefan Imhoff
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
---
|
---
|
||||||
title: If— Guidance for a Virtuous, Stoic Life
|
title: If— Guidance for a Virtuous, Stoic Life
|
||||||
|
subtitle: A Modern Interpretation of Rudyard Kipling’s Great Poem
|
||||||
slug: interpretation-if
|
slug: interpretation-if
|
||||||
date: 2021-12-13
|
date: 2021-12-13
|
||||||
author: Stefan Imhoff
|
author: Stefan Imhoff
|
||||||
|
|||||||
@@ -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
|
slug: interpretation-the-gods-of-the-copybook-headings
|
||||||
date: 2021-06-12
|
date: 2021-06-12
|
||||||
author: Stefan Imhoff
|
author: Stefan Imhoff
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
---
|
---
|
||||||
title: Learning Poems
|
title: Learning Poems
|
||||||
|
subtitle: Verse you can carry anywhere
|
||||||
slug: learning-poems
|
slug: learning-poems
|
||||||
date: 2021-08-23
|
date: 2021-08-23
|
||||||
author: Stefan Imhoff
|
author: Stefan Imhoff
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
---
|
---
|
||||||
title: New Website 2021
|
title: New Website 2021
|
||||||
|
subtitle: Faster site, simpler stack, happier writer
|
||||||
slug: new-website-2021
|
slug: new-website-2021
|
||||||
date: 2021-04-24
|
date: 2021-04-24
|
||||||
author: Stefan Imhoff
|
author: Stefan Imhoff
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
---
|
---
|
||||||
title: How I Process Information Into Notes
|
title: How I Process Information Into Notes
|
||||||
|
subtitle: Turn what you read into what you remember
|
||||||
slug: processing-information-into-notes
|
slug: processing-information-into-notes
|
||||||
date: 2021-05-13
|
date: 2021-05-13
|
||||||
author: Stefan Imhoff
|
author: Stefan Imhoff
|
||||||
|
|||||||
@@ -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
|
slug: the-decentralized-web-1-why-do-we-need-it
|
||||||
date: 2021-10-25
|
date: 2021-10-25
|
||||||
author: Stefan Imhoff
|
author: Stefan Imhoff
|
||||||
|
|||||||
@@ -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
|
slug: the-decentralized-web-2-the-wild-west-web
|
||||||
date: 2021-11-01
|
date: 2021-11-01
|
||||||
author: Stefan Imhoff
|
author: Stefan Imhoff
|
||||||
|
|||||||
@@ -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
|
slug: the-decentralized-web-3-develop-and-publish-a-website
|
||||||
date: 2021-11-08
|
date: 2021-11-08
|
||||||
author: Stefan Imhoff
|
author: Stefan Imhoff
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
---
|
---
|
||||||
title: The Old Man on the Bench
|
title: The Old Man on the Bench
|
||||||
|
subtitle: A quiet friendship found on a forest path
|
||||||
slug: the-old-man-on-the-bench
|
slug: the-old-man-on-the-bench
|
||||||
date: 2021-08-31
|
date: 2021-08-31
|
||||||
author: Stefan Imhoff
|
author: Stefan Imhoff
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
---
|
---
|
||||||
title: Using Readwise with Obsidian for Note-Talking
|
title: Using Readwise with Obsidian for Note-Talking
|
||||||
|
subtitle: Make your highlights work for you
|
||||||
slug: using-readwise-with-obsidian-for-note-talking
|
slug: using-readwise-with-obsidian-for-note-talking
|
||||||
date: 2021-09-14
|
date: 2021-09-14
|
||||||
author: Stefan Imhoff
|
author: Stefan Imhoff
|
||||||
|
|||||||
@@ -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
|
slug: web-developer-work-environment-1
|
||||||
date: 2021-12-20
|
date: 2021-12-20
|
||||||
author: Stefan Imhoff
|
author: Stefan Imhoff
|
||||||
|
|||||||
@@ -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
|
slug: web-developer-work-environment-2
|
||||||
date: 2021-12-23
|
date: 2021-12-23
|
||||||
author: Stefan Imhoff
|
author: Stefan Imhoff
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
---
|
---
|
||||||
title: "The Advent of AI: Introduction"
|
title: The Advent of AI
|
||||||
|
subtitle: Introduction
|
||||||
slug: artificial-intelligence-1-introduction
|
slug: artificial-intelligence-1-introduction
|
||||||
date: 2022-12-14
|
date: 2022-12-14
|
||||||
author: Stefan Imhoff
|
author: Stefan Imhoff
|
||||||
|
|||||||
@@ -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
|
slug: artificial-intelligence-2-text-generation
|
||||||
date: 2022-12-17
|
date: 2022-12-17
|
||||||
author: Stefan Imhoff
|
author: Stefan Imhoff
|
||||||
|
|||||||
@@ -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
|
slug: artificial-intelligence-3-text-to-image-generation
|
||||||
date: 2022-12-21
|
date: 2022-12-21
|
||||||
author: Stefan Imhoff
|
author: Stefan Imhoff
|
||||||
|
|||||||
@@ -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
|
slug: artificial-intelligence-4-getting-started
|
||||||
date: 2022-12-24
|
date: 2022-12-24
|
||||||
author: Stefan Imhoff
|
author: Stefan Imhoff
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
---
|
---
|
||||||
title: "Civil War for Truth: Introduction"
|
title: Civil War for Truth
|
||||||
|
subtitle: Introduction
|
||||||
slug: civil-war-truth-1-introduction
|
slug: civil-war-truth-1-introduction
|
||||||
author: Stefan Imhoff
|
author: Stefan Imhoff
|
||||||
date: 2022-06-06
|
date: 2022-06-06
|
||||||
|
|||||||
@@ -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
|
slug: civil-war-truth-2-corporatism-technocracy
|
||||||
date: 2022-06-13
|
date: 2022-06-13
|
||||||
author: Stefan Imhoff
|
author: Stefan Imhoff
|
||||||
|
|||||||
@@ -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
|
slug: civil-war-truth-3-political-division
|
||||||
date: 2022-06-20
|
date: 2022-06-20
|
||||||
author: Stefan Imhoff
|
author: Stefan Imhoff
|
||||||
|
|||||||
@@ -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
|
slug: civil-war-truth-4-media-journalism
|
||||||
date: 2022-06-27
|
date: 2022-06-27
|
||||||
author: Stefan Imhoff
|
author: Stefan Imhoff
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
---
|
---
|
||||||
title: "Civil War for Truth: Academia"
|
title: Civil War for Truth
|
||||||
|
subtitle: Academia
|
||||||
slug: civil-war-truth-5-academia
|
slug: civil-war-truth-5-academia
|
||||||
date: 2022-07-04
|
date: 2022-07-04
|
||||||
author: Stefan Imhoff
|
author: Stefan Imhoff
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
---
|
---
|
||||||
title: "Civil War for Truth: Science"
|
title: Civil War for Truth
|
||||||
|
subtitle: Science
|
||||||
slug: civil-war-truth-6-science
|
slug: civil-war-truth-6-science
|
||||||
date: 2022-07-11
|
date: 2022-07-11
|
||||||
author: Stefan Imhoff
|
author: Stefan Imhoff
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
---
|
---
|
||||||
title: "Civil War for Truth: Conclusion"
|
title: Civil War for Truth
|
||||||
|
subtitle: Conclusion
|
||||||
slug: civil-war-truth-7-conclusion
|
slug: civil-war-truth-7-conclusion
|
||||||
date: 2022-07-18
|
date: 2022-07-18
|
||||||
author: Stefan Imhoff
|
author: Stefan Imhoff
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
---
|
---
|
||||||
title: Dreaming of the Old Normal
|
title: Dreaming of the Old Normal
|
||||||
|
subtitle: A portrait of normalcy, drawn from memory
|
||||||
slug: dreaming-of-the-old-normal
|
slug: dreaming-of-the-old-normal
|
||||||
date: 2022-01-06
|
date: 2022-01-06
|
||||||
author: Stefan Imhoff
|
author: Stefan Imhoff
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
---
|
---
|
||||||
title: I Counted Everything I Own
|
title: I Counted Everything I Own
|
||||||
|
subtitle: Minimalism, measured
|
||||||
slug: i-counted-everything-i-own
|
slug: i-counted-everything-i-own
|
||||||
date: 2022-01-25
|
date: 2022-01-25
|
||||||
updated: 2023-06-07
|
updated: 2023-06-07
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
---
|
---
|
||||||
title: Manage References for Note-Taking
|
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
|
date: 2022-04-22
|
||||||
updated: 2022-04-30
|
updated: 2022-04-30
|
||||||
author: Stefan Imhoff
|
author: Stefan Imhoff
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
---
|
---
|
||||||
title: The Return of the News Feed
|
title: The Return of the News Feed
|
||||||
|
subtitle: The case for RSS in the age of algorithmic feeds
|
||||||
slug: rss-news-feed
|
slug: rss-news-feed
|
||||||
date: 2022-11-05
|
date: 2022-11-05
|
||||||
author: Stefan Imhoff
|
author: Stefan Imhoff
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
---
|
---
|
||||||
title: iA Writer Template Nanzan
|
title: iA Writer Template
|
||||||
|
subtitle: Nanzan
|
||||||
slug: template-ia-writer-nanzan
|
slug: template-ia-writer-nanzan
|
||||||
author: Stefan Imhoff
|
author: Stefan Imhoff
|
||||||
date: 2022-03-17
|
date: 2022-03-17
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
---
|
---
|
||||||
title: iA Writer Template Shibui
|
title: iA Writer Template
|
||||||
|
subtitle: Shibui
|
||||||
slug: template-ia-writer-shibui
|
slug: template-ia-writer-shibui
|
||||||
author: Stefan Imhoff
|
author: Stefan Imhoff
|
||||||
date: 2022-03-18
|
date: 2022-03-18
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
---
|
---
|
||||||
title: Tools for Better Writing
|
title: Tools for Better Writing
|
||||||
|
subtitle: The essential toolkit I rely on for clearer, cleaner, more effective writing
|
||||||
slug: tools-for-better-writing
|
slug: tools-for-better-writing
|
||||||
date: 2022-09-09
|
date: 2022-09-09
|
||||||
author: Stefan Imhoff
|
author: Stefan Imhoff
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
---
|
---
|
||||||
title: "Shokunin: The Spirit of an Artisan"
|
title: Shokunin
|
||||||
|
subtitle: The Spirit of an Artisan
|
||||||
slug: shokunin
|
slug: shokunin
|
||||||
date: 2023-03-08
|
date: 2023-03-08
|
||||||
updated: 2024-02-10
|
updated: 2024-02-10
|
||||||
|
|||||||
@@ -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
|
slug: thomas-sowell
|
||||||
date: 2023-10-29
|
date: 2023-10-29
|
||||||
author: Stefan Imhoff
|
author: Stefan Imhoff
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
---
|
---
|
||||||
title: Website Relaunch With Astro, Tailwind CSS, and Preact
|
title: Website Relaunch 2023
|
||||||
slug: website-relaunch-astro-preact-tailwind
|
subtitle: How I built my personal website using Astro, Tailwind CSS, and Preact
|
||||||
|
slug: website-relaunch-2023
|
||||||
date: 2023-06-16
|
date: 2023-06-16
|
||||||
author: Stefan Imhoff
|
author: Stefan Imhoff
|
||||||
description: How I built my personal website using Astro, Tailwind CSS, and AI improving the information architecture, content, and design.
|
description: How I built my personal website using Astro, Tailwind CSS, and AI improving the information architecture, content, and design.
|
||||||
@@ -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
|
slug: beyond-the-bookshelf-1
|
||||||
date: 2024-12-20
|
date: 2024-12-20
|
||||||
author: Stefan Imhoff
|
author: Stefan Imhoff
|
||||||
|
|||||||
@@ -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
|
slug: beyond-the-bookshelf-2-books-2024
|
||||||
date: 2024-12-27
|
date: 2024-12-27
|
||||||
author: Stefan Imhoff
|
author: Stefan Imhoff
|
||||||
|
|||||||
@@ -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
|
slug: raycast
|
||||||
date: 2024-01-19
|
date: 2024-01-19
|
||||||
updated: 2025-07-08
|
updated: 2025-07-08
|
||||||
|
|||||||
@@ -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
|
slug: 15-years-xing
|
||||||
date: 2025-12-15
|
date: 2025-12-15
|
||||||
updated: 2025-12-16
|
updated: 2025-12-16
|
||||||
|
|||||||
@@ -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
|
slug: from-typewriter-to-split-keyboard
|
||||||
date: 2025-08-04
|
date: 2025-08-04
|
||||||
updated: 2025-12-19
|
updated: 2025-12-19
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
---
|
---
|
||||||
title: Fuck you, Sonos
|
title: Fuck you, Sonos
|
||||||
|
subtitle: Journey of Disappointment and Search for New Audio Solutions
|
||||||
slug: fuck-you-sonos
|
slug: fuck-you-sonos
|
||||||
date: 2025-04-30
|
date: 2025-04-30
|
||||||
author: Stefan Imhoff
|
author: Stefan Imhoff
|
||||||
|
|||||||
@@ -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
|
slug: modern-atlas-shrugged-1-signs-of-decline
|
||||||
date: 2025-05-19
|
date: 2025-05-19
|
||||||
author: Stefan Imhoff
|
author: Stefan Imhoff
|
||||||
|
|||||||
@@ -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
|
slug: modern-atlas-shrugged-2-looters-in-action
|
||||||
date: 2025-05-26
|
date: 2025-05-26
|
||||||
author: Stefan Imhoff
|
author: Stefan Imhoff
|
||||||
|
|||||||
@@ -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
|
slug: modern-atlas-shrugged-3-strike
|
||||||
date: 2025-06-02
|
date: 2025-06-02
|
||||||
author: Stefan Imhoff
|
author: Stefan Imhoff
|
||||||
|
|||||||
@@ -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
|
slug: note-taking-obsidian-readwise-ai
|
||||||
date: 2025-02-16
|
date: 2025-02-16
|
||||||
author: Stefan Imhoff
|
author: Stefan Imhoff
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
---
|
---
|
||||||
title: "OK, Boomer: A Post-War Psychoanalysis"
|
title: OK, Boomer
|
||||||
|
subtitle: A Post-War Psychoanalysis
|
||||||
slug: ok-boomer
|
slug: ok-boomer
|
||||||
date: 2025-11-28
|
date: 2025-11-28
|
||||||
updated: 2025-12-19
|
updated: 2025-12-19
|
||||||
|
|||||||
@@ -13,7 +13,7 @@ import GridLayout from '../layouts/GridLayout.astro';
|
|||||||
import Image from '../components/Image.astro';
|
import Image from '../components/Image.astro';
|
||||||
import ListItem from '../components/ListItem.astro';
|
import ListItem from '../components/ListItem.astro';
|
||||||
import OrderedList from '../components/OrderedList.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 Pagination from '../components/Pagination.astro';
|
||||||
import Tag from '../components/Tag.astro';
|
import Tag from '../components/Tag.astro';
|
||||||
import TextLink from '../components/TextLink.astro';
|
import TextLink from '../components/TextLink.astro';
|
||||||
@@ -51,6 +51,7 @@ const seriesEntries: Journal[] = await getCollection('journal', ({ data }: Journ
|
|||||||
seriesEntries.sort(sortByDate).reverse();
|
seriesEntries.sort(sortByDate).reverse();
|
||||||
|
|
||||||
const title = entry.data.title;
|
const title = entry.data.title;
|
||||||
|
const subtitle = entry.data.subtitle;
|
||||||
const description = entry.data.description;
|
const description = entry.data.description;
|
||||||
|
|
||||||
const schema = JSON.stringify({
|
const schema = JSON.stringify({
|
||||||
@@ -84,16 +85,16 @@ const schema = JSON.stringify({
|
|||||||
innerGrid
|
innerGrid
|
||||||
nofollow={entry.data.nofollow}
|
nofollow={entry.data.nofollow}
|
||||||
noindex={entry.data.noindex}
|
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}
|
{entry.data.title}
|
||||||
</PageTitle>
|
</JournalTitle>
|
||||||
{
|
{
|
||||||
entry.data.cover && (
|
entry.data.cover && (
|
||||||
<Image
|
<Image
|
||||||
alt={entry.data.title}
|
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"
|
loading="eager"
|
||||||
src={entry.data.cover}
|
src={entry.data.cover}
|
||||||
fullHeight
|
fullHeight
|
||||||
|
|||||||
@@ -37,7 +37,7 @@ rssPosts.sort(sortMarkdownByDate);
|
|||||||
{site.title}
|
{site.title}
|
||||||
</PageTitle>
|
</PageTitle>
|
||||||
<div
|
<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
|
<Image
|
||||||
alt="Bonsai"
|
alt="Bonsai"
|
||||||
@@ -50,7 +50,7 @@ rssPosts.sort(sortMarkdownByDate);
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<article
|
<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>
|
<Headline>About Me</Headline>
|
||||||
<AboutMe components={mapping} />
|
<AboutMe components={mapping} />
|
||||||
|
|||||||
@@ -26,6 +26,7 @@ export async function GET(context) {
|
|||||||
},
|
},
|
||||||
items: [
|
items: [
|
||||||
...journal.map((post) => {
|
...journal.map((post) => {
|
||||||
|
const { title, subtitle, date, description, cover } = post.data;
|
||||||
// Filter out import statements from content
|
// Filter out import statements from content
|
||||||
const contentWithoutImports = post.body
|
const contentWithoutImports = post.body
|
||||||
.split('\n')
|
.split('\n')
|
||||||
@@ -52,26 +53,24 @@ export async function GET(context) {
|
|||||||
});
|
});
|
||||||
|
|
||||||
// Logic to determine image URL
|
// Logic to determine image URL
|
||||||
const isWebp =
|
const isWebp = cover.startsWith('/assets/images/cover/') && cover.endsWith('.webp');
|
||||||
post.data.cover.startsWith('/assets/images/cover/') &&
|
|
||||||
post.data.cover.endsWith('.webp');
|
|
||||||
const imgUrl = isWebp
|
const imgUrl = isWebp
|
||||||
? post.data.cover
|
? cover
|
||||||
.replace('/assets/images/cover/', '/assets/images/thumbnail/')
|
.replace('/assets/images/cover/', '/assets/images/thumbnail/')
|
||||||
.replace(/\.webp$/, '.jpg')
|
.replace(/\.webp$/, '.jpg')
|
||||||
: '/assets/images/thumbnail/bonsai.jpg';
|
: '/assets/images/thumbnail/bonsai.jpg';
|
||||||
|
|
||||||
return {
|
return {
|
||||||
title: post.data.title,
|
title: subtitle ? `${title}: ${subtitle}` : title,
|
||||||
pubDate: post.data.date,
|
pubDate: date,
|
||||||
description: post.data.description,
|
description: description,
|
||||||
link: `/${post.slug}/`,
|
link: `/${post.slug}/`,
|
||||||
content: sanitizedContent,
|
content: sanitizedContent,
|
||||||
enclosure: {
|
enclosure: {
|
||||||
url:
|
url:
|
||||||
site.url +
|
site.url +
|
||||||
(isWebp
|
(isWebp
|
||||||
? post.data.cover
|
? cover
|
||||||
.replace('/assets/images/cover/', '/assets/images/og/')
|
.replace('/assets/images/cover/', '/assets/images/og/')
|
||||||
.replace(/\.webp$/, '.jpg')
|
.replace(/\.webp$/, '.jpg')
|
||||||
: '/assets/images/og/bonsai.jpg'),
|
: '/assets/images/og/bonsai.jpg'),
|
||||||
|
|||||||
@@ -3,6 +3,7 @@ import { defineCollection, z } from 'astro:content';
|
|||||||
export const journal = defineCollection({
|
export const journal = defineCollection({
|
||||||
schema: z.object({
|
schema: z.object({
|
||||||
title: z.string(),
|
title: z.string(),
|
||||||
|
subtitle: z.string().optional(),
|
||||||
draft: z.boolean().optional().default(false),
|
draft: z.boolean().optional().default(false),
|
||||||
featured: z.boolean().optional(),
|
featured: z.boolean().optional(),
|
||||||
author: z.string().default('Stefan Imhoff'),
|
author: z.string().default('Stefan Imhoff'),
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user