Hello, the Laomei Blog
On this page
The blog is live. You will find three kinds of posts here: AI in practice (lessons and pitfalls from real client projects), product thinking (how small businesses can actually use AI well), and engineering notes (technology choices and implementation details).
This post doubles as a typography sample: headings, a table of contents, code blocks, tables, and quotes all appear below for future reference.
Why start a blog
We treat the blog as an extension of the product:
- Compounding knowledge — after each project, write down what is reusable; it beats oral tradition
- Building trust — the landing page tells you what we do, the blog tells you how we think
- Thinking in public — if you can't write it down, you haven't figured it out yet
Writing is not the record of thinking. Writing is thinking.
How this blog is built
Same stack as the main site: Next.js App Router + vinext (Vite build) + Tailwind CSS, deployed on Cloudflare Workers. Posts are just MDX files in the repo — git push, one deploy command, no admin panel, no database.
The content layout is dead simple:
content/blog/
zh/hello-laomei.mdx # Chinese post
en/hello-laomei.mdx # Same slug = automatic translation pairing
zh/why-ai-landing-page.mdx
Each post's metadata lives in its frontmatter:
---
title: Post title
date: 2026-10-20
description: One-line summary for the list page and SEO
tags: [Tag One, Tag Two]
draft: false # true keeps it offline
---
Code highlighting
Code blocks are rendered by Shiki with the GitHub Light theme, matching the clean light style of the site:
type Solution = {
title: string;
points: [string, string, string];
};
export function pitch(solution: Solution): string {
return `${solution.title}: ${solution.points.join(", ")}`;
}
Tables and lists
| Module | Choice | Notes |
|---|---|---|
| Framework | Next.js 16 | App Router, bilingual routes |
| Build | vinext + Vite | Targets Cloudflare Workers |
| Deploy | cf deploy | One command to build and ship |
A few writing conventions:
- Start headings at
##(theh1is rendered by the template) - Long posts should have three or more
##sections so the sidebar TOC appears - Pair translations by filename; a missing translation never blocks the other language
What's next
Topics already on the list: cold-starting a chatbot knowledge base, a minimal A/B testing setup for landing pages, and automating the weekly report with AI end to end. Tell us what you want to read via the email at the bottom of the page.
See you in the next post.