How I Built a TIL Microblog to Save the Things I'd Otherwise Forget

Table of Contents(6 sections)
I learn small things constantly: a git flag I didn't know existed, a CSS trick that solves a layout problem, a Python one-liner that replaces five lines of boilerplate. I used to share these on Mastodon, but they'd get lost in the feed within hours. Writing a full blog post for each one felt like too much overhead.
The solution was a TIL (Today I Learned) section: shorter posts with less formatting, a separate RSS feed, and deliberately low friction for publishing.
The Setup
I added a /til/ route to my Next.js site. Each TIL post is a simple markdown file with minimal frontmatter:
---
title: "Use `git log --oneline --graph` for a compact commit tree"
date: 2026-03-15
tags: ["git"]
---
Running `git log --oneline --graph --all` shows a compact ASCII commit
graph in the terminal. I use this daily now instead of `git log`.
No summary, no hero image, no category: just a title, date, tag, and a few sentences. The low overhead is intentional. If writing a post takes more than two minutes, I won't do it.
Separate RSS Feed
One request I had: let people subscribe to TIL posts separately from full blog posts. In Next.js, I created a separate RSS feed endpoint:
// app/til/feed.xml/route.ts
export async function GET() {
const posts = getAllTilPosts();
const feed = generateFeed({
title: "TIL - Loc's Blog",
posts,
feedUrl: `${SITE_URL}/til/feed.xml`,
});
return new Response(feed, {
headers: { 'Content-Type': 'application/xml' },
});
}
This way, RSS subscribers can choose between everything or just the quick tips.
Automation With a Custom Rake Task
I created a script that generates a new TIL post template from the command line:
npm run til "git log --oneline graph"
This creates a new .md file with the date pre-filled, the title from the argument, and stub content that I just fill in. Removing friction was the key: if I had to remember the file naming convention and frontmatter format each time, I'd stop doing it.
The Philosophy
I stole this idea from Simon Willison's TIL blog. The insight is that most of what you learn isn't worth a full article but is worth writing down. A TIL section captures that middle ground. Over time, these small posts build into a surprisingly useful personal knowledge base.
What Changed
Since adding the TIL section, I write down things I would have let pass before. A fix for a Docker networking issue, a browser devtools trick, a shell alias I keep reusing: each one takes 30 seconds to write and saves me 10 minutes of re-figuring-it-out later.
The weekly mailing list integration is the next step: a brief summary of recent TILs that goes out alongside the regular newsletter.
Zustand vs Jotai State Management Comparison](/en/blog/zustand-vs-jotai-react-state-management)
You Might Also Like
- How I Generate Hero and OG Images for My Technical Blog Without Losing My Mind
- How to Build a Custom Playwright Reporter for Next.js Dashboards
- Next.js Middleware: Building Robust Authentication and Authorization
- TypeScript Alone Isn''t Enough: End-to-End Type Safety with Zod in Next.js
Frequently Asked Questions
Free In-Browser Developer Tools
Clean AI CLI logs, build cron expressions, decode JWTs, and calculate chmod permissions offline.
Related Articles

How I Built My Portfolio with Next.js, Contentlayer, and Git Submodules
Architecture breakdown of locionic.com: Next.js App Router, Contentlayer type-safe MDX, RSC payload optimization, and automated internal link meshes.
Read more
How I Generate Hero and OG Images for My Technical Blog Without Losing My Mind
I automated hero and OG image generation for my blog using Next.js and Puppeteer. Here's how I cut 30 minutes of manual work down to zero.
Read more
Handling Forms in Next.js 14: Server Actions vs Client Components
A deep dive into managing forms in Next.js 14 using Server Actions, useFormState, useFormStatus, and Zod for schema validation. Learn to build modern, progressive-enhanced forms without client-side JavaScript fatigue.
Read more