Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
68 changes: 68 additions & 0 deletions CLAUDE.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,68 @@
# CLAUDE.md

This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.

## Project Overview

This is a personal portfolio and blog website built with Astro, deployed to GitHub Pages at [tehj.io](https://tehj.io). The site features blog posts, project showcases, and interactive labs.

## Development Commands

- `pnpm install` - Install dependencies (uses pnpm as package manager)
- `pnpm run dev` - Start development server with hot reload
- `pnpm run build` - Build the site for production
- `pnpm run preview` - Preview the built site locally

## Architecture

### Content Structure
- **Blog posts**: `src/content/blog/` - Markdown files with frontmatter
- **Projects**: `src/content/projects/` - Markdown files with frontmatter
- **Drafts**: `src/content/drafts/` - Unpublished content

### Content Collections
- Uses Astro's content collections with schema validation in `src/content/config.ts`
- Both blog and project collections use the same schema with title, description, pubDate, etc.

### Labs System
- **Static labs**: `public/labs/` - Self-contained HTML/CSS/JS applications
- Labs are served as static files and listed in `src/pages/labs/index.astro`
- Current labs include: Fasting Management, Temperament Quiz, Mortgage Calculator, Singapore Tax Calculator, Cortisol Management

### Framework & Styling
- **Astro** as the main framework with Vue components support
- **Tailwind CSS** for styling with typography and container queries plugins
- **MDX** for enhanced markdown support
- **Vue** for interactive components

### Integrations
- **Sitemap** for SEO
- **RSS feed** for blog content
- **Umami analytics** for tracking

## Key Directories

- `src/pages/` - Astro page components
- `src/layouts/` - Layout components (Layout.astro, BlogPost.astro)
- `src/components/` - Reusable components (Header, Footer, Intro, Links, ProjectListing)
- `src/styles/` - Global CSS and shared styles
- `public/` - Static assets including labs

## Content Management

- Blog and project files follow naming convention: `YYYY_MM_DD_Title.md`
- Frontmatter includes title, description, publication date, and optional hero image
- Drafts are stored in `src/content/drafts/` and not published

## Labs Development

Labs are standalone applications in the `public/labs/` directory. Each lab has:
- `index.html` - Main HTML file
- `app.js` - JavaScript functionality
- `style.css` - Lab-specific styling
- Shared CSS/JS available in `public/labs/shared.css` and `public/labs/shared.js`

To add a new lab:
1. Create a new directory in `public/labs/`
2. Add the lab files (index.html, app.js, style.css)
3. Update the labs array in `src/pages/labs/index.astro`
37 changes: 37 additions & 0 deletions src/content/blog/2025_12_31_Leadership_requires_rest.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
---
title: "Leadership requires rest"
description: "Many of the leaders around me are perpetually exhausted."
pubDate: "Dec 31 2025"
---

## Leaders are inevitably exhausted

Many of the leaders around me are perpetually exhausted. This seems to be part of the burden of leadership; a leader shoulders many burdens, and a servant leader - the penultimate kind of Christian leader - shoulders even more.

This seems like a problem to me. A leader bears many burdens, and thus is exhausted. A leader who is exhausted is expected to still bear many burdens, and therefore cannot lead effectively. This lack of effective leadership creates problems within the organization, which create burdens that bubble up to the leader. Is this not a vicious cycle?

The easy answer is that the leader should delegate, of course. I've listened enough to various leadership gurus to know this is an ideal. In reality, the leader does not always feel they can delegate, for many reasons. Sometimes there is simply no one to delegate to; they are the only one with the required skill or knowledge or position. Sometimes they do not trust their subordinates enough to delegate to them; there may be good reason for this too. And so on...

The hard answer, I think, involves rest.

## Rest is hard

Why is rest hard?

It's hard for leaders, because they have burdens that no one else does. Their actions - and in fact even their inaction - make a direct impact on the people they are leading and the things the organization achieves. To quote John Maxwell, leaders see more than their subordinates, and they see before. And when you do, often you feel more. More responsible, more worried, more... tired.

Often leaders are those within an organization who are simply better. They are often more capable, more passionate, more experienced... But leaders are human still. And humans need rest. (even if we have spent centuries trying to invent ways to avoid it)

The problem, if you ask a leader, is that this takes time, and time is a scarce resource.

## What is rest?

I think this is not wrong. Time is indeed a scarce resource. But I also think our perspective matters here.

Firstly, life is not made up only of our productive moments. Some simple and naive math; a worker who works hard for 5 years, and then is hospitalized for 1 year, could have just spent 1/6 of their time resting and probably be better off.

Secondly, rest is not being idle. Rest can look like writing a blog, or training a skill, or volunteering in the community. Rest can be productive, but probably in a different vein than work.

## Leaders need rest

So for leaders, I think the answer is rest. Every individual's rest is going to look different, but the need for rest is universal.
14 changes: 0 additions & 14 deletions src/content/drafts/blog/2025_03_14_Leadership_requires_rest.md

This file was deleted.

Loading