GV

GeezerVison

The World Wide Web, restored to 800 pixels of glory.

Home|About|Gaming cabinet|Archives|How it works|Starter sites

On this site

  • Sign in
  • ActionsCI/CD and automation
  • CodespacesCloud development environments
  • All Features
  • Documentation
  • Training
  • Certifications
  • Build with Copilot
  • Customize Copilot
  • Integrations
  • Trending repos
  • GitHub Sponsors
  • Developer articles
  • Enterprises

This view

  • Original page
  • New address

GeezerVison is showing github.com — GitHub - lyndsysimon/.com: My personal site, hosted on lyndsysimon.com. Inspired by kennethreitz/.com

BranchesTags
Open more actions menu

Latest commit

 

History

33 Commits
33 Commits

Folders and files

NameName
Last commit message
Last commit date
.github/workflows
.github/workflows
 
 
scripts
scripts
 
 
src
src
 
 
.build.yml
.build.yml
 
 
.gitignore
.gitignore
 
 
.python-version
.python-version
 
 
LICENSE.txt
LICENSE.txt
 
 
NOTICE.txt
NOTICE.txt
 
 
README.md
README.md
 
 
pyproject.toml
pyproject.toml
 
 
uv.lock
uv.lock
 
 
zensical.toml
zensical.toml
 
 

Repository files navigation

Lyndsy Simon's Blog

Source for lyndsysimon.com, built with Zensical. Content lives in src/, posts in src/posts/.

Writing a post

Add a Markdown file to src/posts/. It needs a date in the front matter, and the URL is derived from the post title unless a slug is given:

---
date: 2026-11-05
categories:
  - Software
slug: some_post   # optional; defaults to a slugified title
---

# Post title

The introduction, which is what shows up on the home page listing.

<!-- more -->

Everything after the `<!-- more -->` marker only appears on the post page.

The home page, /archive/, and /category/ are generated by the blog plugin — nothing has to be updated by hand. src/index.md is intentionally empty: it is the blog's entry point, so whatever it contains is printed above the newest post. The tags plugin is switched off and there is no /tags/ page; tags: in front matter is inert.

Diagrams

A fenced mermaid block is rendered to SVG by Pele, not Mermaid.js — Pele is ~270 kB gzipped against Mermaid's ~1.6 MB, has no dependencies, and themes from the site's CSS variables.

```mermaid
flowchart LR
  A[Start] --> B{Done?}
```

Pele is vendored at src/javascripts/pele.global.js (MIT, licence alongside it) and loaded lazily, so pages without a diagram never download it. The fence is emitted as <pre class="pele">; do not change that class to mermaid or Zensical's own handler starts fetching Mermaid from unpkg. A diagram Pele cannot parse falls back to showing its source as a code block.

Gotchas

  • blog_dir = "." and post_url_format = "posts/{slug}" together are what keep post URLs at /posts/<slug>/. Zensical looks for posts in <blog_dir>/posts/, so changing blog_dir to posts makes it find nothing at all, and dropping the prefix from post_url_format moves every post to /<slug>/. Both break published links.
  • Posts with a slug use it verbatim, which is how the older posts kept their underscore URLs from the MkDocs days. New posts without a slug get a hyphenated URL derived from the title.

Development

uv sync
uv run zensical serve -a 127.0.0.1:9124

Mission Control runs this as the "Blog" service on port 9124.

Building

uv run zensical build
python3 scripts/postprocess.py site
python3 scripts/check_links.py site

scripts/postprocess.py is not optional. The blog plugin emits every heading in a listing as <h2><a class="toclink">…</a></h2>, which both makes the title look like a link and, inside a post excerpt, turns the post's own subheadings into links. The script moves the anchor out to a small link icon after the heading text. It is idempotent and matches on the toclink class, so an upstream markup change degrades to "headings are plain text" rather than breaking the build.

Pushing to main runs the same build in GitHub Actions and deploys to GitHub Pages.

TODO

  • Set up RSS for the blog plugin
  • Write a plugin (or contibute support to Pygments) for OpenSCAD

About

My personal site, hosted on lyndsysimon.com. Inspired by kennethreitz/.com

Resources

Readme
Apache-2.0 license
Activity

Stars

0 stars

Watchers

0 watching

Forks

0 forks
Report repository

Releases

Packages

Used by

Contributors

Languages

You are visitor 01402520 — GeezerVison does not store the pages you look up.
Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required.