Brennan's Gemini Blog

Home
About
Guide
smol.pub

My Gemini Publishing Workflow

.---..-----------------------------------------------..---.
|   ||.---------------------------------------------.||   |
| o ||| _0_o O/oo  _0_ \O/ _   _0_  O_0_o_O/ooO _0_ ||| o |
| _ |||O oo _0_ _0_o\O  _O/~'       O oo__0_ _0_o\O ||| _ |
|(_)|||_0_ \O oo        /)    _0_ \O_0_ \O oo       |||(_)|
|   |||---------------------------------------------|||   |
|.-.|||     __....------------------------....___   |||.-.|
| o |||---''                         _.--._      `  ||| o |
|`-'|||             _.--._          'O---O-'        |||`-'|
|   |||     _.--._ 'O---O-'_.--._  _.--._           |||   |
|.-.|||    'O---O-'       'O---O-''O---O-'          |||.-.|
| O |||__,,...,----------------------....___        ||| O |
|`-'||`---------------------------------------------'||`-'|
`---'`-----------------------------------------------'`---'
       _||_            It's Race Day            _||_
MJP   /____\ unless you look like my teams car /____\
                      get outta my face

This is how a piece of writing goes from being a draft on my laptop to published in my capsule.

1. Draft

Sometimes I write in the terminal, other times I use a IDE with a GUI:

Gram, my GUI editor of choice
Micro, for when I'm already in a terminal

Posts are drafted in Markdown and converted to Gemtext with a tool I built. Pages meant only for the capsule get written in Gemtext directly.

Markdown-to-Gemtext converter

2. Stage Locally

The capsule source lives in a git-tracked folder on my machine that mirrors the remote directory structure:

oldnet/pink/          →  ~/public_gemini/ on tilde.pink
  index.gmi           →  gemini://tilde.pink/~brennan/
  about.gmi           →  gemini://tilde.pink/~brennan/about.gmi
  guides/index.gmi    →  gemini://tilde.pink/~brennan/guides/
  gemlog/             →  dated gemlog posts
  poetry/             →  Gemini-only poems

Because the local tree mirrors the remote one, a link that works locally works on the capsule.

⚗️ GitLab Repository

3. Publish

One command, which can be ran from anywhere:

rsync -avz --exclude='.DS_Store' ~/Projects/brennan.day/oldnet/pink/ tilde.pink:public_gemini/

The flags:

`tilde.pink` resolves through my ~/.ssh/config, which sets the username and identity key:

Host tilde.pink
    HostName tilde.pink
    User brennan
    IdentityFile ~/.ssh/id_ed25519

Only changed files get transferred, so re-running the command after edits is fast and safe. I don't use --delete, so files that only exist on the server are never removed.

4. Verify

Opening the page in Lagrange is a quick check. But you can also run a raw protocol check without a client:

printf 'gemini://tilde.pink/~brennan/\r\n' | openssl s_client -connect tilde.pink:1965 -quiet -servername tilde.pink

A healthy capsule responds `20 text/gemini` followed by the page.

Conventions I Follow

Main Site
Gemini capsule
Contact

© 2026 Brennan Kenneth Brown. Content available under CC BY-SA