Skip to content

Repository files navigation

Ministry of Fixing Civilisation

A GitHub Pages (Jekyll) site for one metric: lifetimes saved — how many human lifetimes each small screen problem wastes per year, and how easy it is to fix.

Every case is one markdown file in _cases/ with a structured napkin in its front matter: facts (cited), assumptions (low → likely → high), a difficulty-to-fix rating, and the owner + channel who can actually fix it. The site totals every case's range automatically on the home page.

Add a case

Drop a file in _cases/NNN-slug.md:

---
number: 3
title: "Short, punchy problem statement"
tagline: "One sentence a stranger instantly recognises."
difficulty: none        # none | trivial | easy | moderate | hard
lifetimes:
  low: 8                 # low estimate  (integer lifetimes/year)
  headline: 30           # best single estimate
  high: 60               # high estimate
facts:                   # knowable numbers — cited at face value, never sandbagged
  - label: Users
    value: "3.8 billion"
    source: "Source name, year"
    url: "https://…"
assumptions:             # unknowables — always a low/likely/high band
  - label: "What we can't measure"
    low: "0.5%"
    headline: "1%"
    high: "2%"
    note: "Optional caveat."
owner: "Who owns the code/product"
channel: "Where to file it"
---

Markdown body: the math, second-order effects, the fix, rebuttals pre-empted.
Use <p class="equation">A <span class="op">×</span> B <span class="eq">=</span>
<span class="out">result</span></p> for the napkin line (no MathJax on the site).

The metric formula (see methodology): lifetimes/year = (users × incidence × seconds × 365) ÷ (73 years in seconds). 73 years ≈ 2.3 billion seconds.

Run locally

bundle install
LANG=en_US.UTF-8 LC_ALL=en_US.UTF-8 bundle exec jekyll serve
# → http://127.0.0.1:4000/

The LANG export avoids a Ruby US-ASCII encoding error when Jekyll reads UTF-8 files; GitHub Pages' own build environment already runs UTF-8, so it isn't needed there.

Deploy → lifetimes.planetarycouncil.org

The repo is already configured for the subdomain: CNAME holds the hostname and _config.yml sets baseurl: "" (a domain root, not a /project path).

  1. Push to a GitHub repo:
    git remote add origin git@github.com:<user-or-org>/lifetimes.git
    git push -u origin main
  2. DNS — at the planetarycouncil.org provider, add:
    Type Name Value
    CNAME lifetimes <user-or-org>.github.io
  3. GitHub Pages — repo → Settings → Pages → Source: main / root. The custom domain should auto-populate from the CNAME file; tick Enforce HTTPS once the certificate provisions (can take a few minutes after DNS propagates).

Repo map

  • _cases/ — the case studies (one file each). This is the content.
  • _layouts/default.html (chrome) and case.html (renders the napkin).
  • assets/style.css — all styling, light/dark aware. Static file, not SCSS.
  • methodology.md — the four rules the napkins follow.
  • ROADMAP.md — how a case gets escalated to a real decision-maker (not on the site).
  • images/ — source posters.

About

Fixing UX of the civilisation, starting from BigTech

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages