Mingming’s Blog (lmmsoft.github.io)
Project Overview
This is a Jekyll-powered GitHub Pages blog called “明明如月成长笔记” (Mingming’s Growth Notes) by lmm333. The blog is built using the Freshman21 theme and hosted at https://lmmsoft.github.io/. It contains articles dating back to 2006, covering diverse topics such as ACM competitions, travel experiences, life reflections, technical notes, and personal growth. The content is primarily in Chinese, with some English content.
The blog features extensive personal content including life experiences, technical articles, travel journals, and thoughts on various topics. It covers:
- ACM competitions (41 articles)
- Travel experiences (40 articles)
- Personal life (39 articles)
- Professional development in DevOps, CICD, and engineering efficiency
- Sports and fitness (particularly triathlon, running, and swimming)
- Technical tutorials and development notes
Project Structure
_posts/
- Contains dated blog posts following the formatYYYY-MM-DD-title.md
_drafts/
- Draft posts that are not yet published_includes/
,_layouts/
,_sass/
- Theme templates and stylingcss/main.scss
- Main CSS fileimages/
- Image assetsattachments/
- Additional file attachments- Root-level markdown files (a_home.md, b_about.md, etc.) - Static pages with prefixed naming for ordering
Building and Running
Local Development
- Install dependencies:
bundle install
- Build the site:
bundle exec jekyll build
- Serve with live preview:
bundle exec jekyll serve --host 0.0.0.0 --port 4000 --drafts --future --watch
- Or use the script:
_preview.sh
- Or use the script:
- Use
jekyll doctor
to check for configuration issues
Docker-based Development
- Build:
make build
ordocker run jekyll/jekyll:3.8.5 build
- Serve:
make serve
ordocker run -p 4000:4000 jekyll/jekyll:3.8.5 serve --host 0.0.0.0 --port 4000 --drafts --watch
Publishing Workflow
- Create drafts using
_new_draft.sh
- Preview drafts with
_preview.sh
- Publish to posts with
_publish.sh
(moves draft to_posts/
with correct date prefix)
Development Conventions
Post Naming
- Posts must follow the format
YYYY-MM-DD-title-with-dashes.md
- No underscores in the slug part of the filename
- Dates cannot be in the future (Jekyll ignores future-dated posts)
Content Structure
- Each post must include YAML front matter with layout, title, date, categories, and tags
- Use
<!--more-->
to specify excerpt break point - Apply Chinese typography formatting with
pangu
tool before publishing
Code Style
- Sass files use four-space indentation
- YAML front matter uses two-space indentation
- Markdown content with semantic headings and fenced code blocks
Commit Guidelines
- Use prefixes like
ADD:
,FIX:
,CHORE:
in commit messages - Keep commits focused on a single concern
- Include generated assets when necessary
Key Features
- Multi-language support (Chinese as default, with English, Japanese, Polish, Korean, Russian, Turkish, and Indonesian options)
- Responsive two-column layout (customizable to single column)
- Integrated analytics (Google Analytics GA4, Plausible.io, Busuanzi)
- Disqus comments support
- Category and tag organization
- RSS/Atom feeds
- Custom navigation with external links
- Blogroll section for linking to other blogs
Special Tools & Scripts
_new_draft.sh
- Create new draft posts_preview.sh
- Start local development server with drafts_publish.sh
- Move draft to published posts with correct date- Integration with
pangu
tool for Chinese typography - Use of
tekorrect
for article formatting
The blog represents a long-term digital diary of the author’s journey as a software engineer, athlete, and family person, documenting both technical and personal growth over nearly two decades.