Tags: 2026, opinions

Manifesting into reality...

INS:

  • pocket notebooks and mechanical pencils
  • anti-manifestos
  • self-hosting where possible
  • copyparty
  • repair and restore old hardware
  • radio
  • USB 2.0 flash drives
  • trees
  • linux on vapes
  • compasses
  • family & friends
  • tech with wires and buttons
  • open source

OUTS:

  • the word "googling" / algorthmic search in general
  • mechanical keyboards
  • buying brand new if second hand is serviceable
  • discord invites
  • AI / Linda McMahon's A1
  • online
  • cloudflare
  • big tech™
  • open source

Tags: 2026, workshop

Author: Ana Meisel & Adam Jakab

Website workshop notes

Monday 30th of March at SET Social

1. Intro to source hut

Sourcehut is a free and open-source software development platform. It's an alternative to GitHub - it's more minimal, follows the Unix philosophy and has an email-driven workflow instead of pull requests. The platform is composed of several key services:

  • git.sr.ht: Git and Mercurial repository hosting.
  • builds.sr.ht: A powerful continuous integration (CI) service.
  • lists.sr.ht: Mailing lists for discussion and patch review.
  • todo.sr.ht: A lightweight, email-driven issue tracker.
  • pages.sr.ht: Static site hosting.

Reference: https://laoutaris.org/blog/sourcehut/

2. Intro to the website and structure

Our website is built using kiki as the renderer (tomotama.com/kiki) - "a tiny homepage construction kit with a small footprint". It grabs markup files and renders them as html pages using php. The current structure of the site is:

perma-website/
│
├── files/                    <- logo, favicon, assets
│   ├── favicon/
│   ├── images/
│   └── pcm-flower.png
│
├── layout/                   <- markup files for template pages
│   ├── 404.md
│   ├── 503.md
│   ├── delete.md
│   ├── dynamic.md
│   ├── error.md
│   ├── footer.md
│   ├── generate.md
│   ├── gophermap_template.md
│   └── page_template.md
│
├── library/
│   ├── build.php             <- functions used for building html pages
│   ├── gopher.php            <- converts gopher requests into a browsable instances
│   ├── interpreter.php       <- interpreter used for markup content
│   ├── page.php              <- generates a page
│   ├── rss.php               <- generates rss
│   ├── static.php            <- static site generation
│   └── utils.php             <- more content rendering functions
│
├── menus/
│   └── navmenu.md            <- menu content
│
├── pages/                    <- where our markup posts live!
│   ├── 07-07-2025.md
│   ├── 10-11-2025.md
│   ├── 30-06-2025.md
│   ├── about.md
│   └── help/                 <- documentation about kiki
│       ├── get_started.md
│       ├── programming.md
│       ├── start.md
│       ├── themes.md
│       └── user_guide.md
│
├── posts/                    <- generated html files live in here (don't touch)
│
├── themes/                   <- css files
│   └── onecolumn/
│       ├── page_layout.php
│       ├── style.css
│       └── WebPlus_HP_150_re.woff
│
├── .gitignore                <- files ignored by git
├── file_id.diz               <- shareware discription
├── index.html                <- generated html (don't touch)
├── index.php                 <- loads page
├── install.txt               <- kiki installation guide
├── LICENSE
├── README.md                 <- our readme
├── rss.xml
├── settings.php              <- define site base url, markup interpreter, theme, etc
└── site.tar.gz               <- tarball that holds our site for publishing

3. Cloning the repo

git clone https://git.sr.ht/~anmeisel/perma-website

4. Installing and running the website

a. install php:

on mac:

brew install php
# mbstring is typically included by default. If not, run:
sudo port install php php-mbstring

on linux:

sudo apt-get install php php-mbstring

b. run locally:

php -S localhost:8000 visit: localhost:8000/posts/home.html

c. if you want to view any changes you are making to the site you have to tell kiki that you are running the site locally:

change $site_base_url to http://localhost:8000/ in settings.php

d. generate your static pages using php index.php

5. Add your name to the attendance list

Open the pages/website-workshop.md, add your name to the bottom of the list, and save the file. (Make sure to add a new line that starts with the - symbol)

6. Optional: if you want to publish a post, you can create or edit your first markdown file

Make a new file in pages/

The name of the file should be that of your slug for consistency: [slug-title].md

Make sure you have your ((header)), meta information (title, published, etc) and ((content)). Use other .md files in the pages folder for reference.

Run php index.php to generate your html files and refresh the local site to view.

7. Commit your changes

git add pages/website-workshop.
git commit -m "Adam signed the website workshop attendance!"

8. Setup your SMTP credentials

If you don't already have SMTP credentials ready you can find guidance on how to get them for your provider on https://git-send-email.io

Open git configuration file for the repo in .git/config. Add the following section to it with your credentials.

[sendemail]
    smtpserver = mail.example.org
    smtpuser = you@example.org
    smtpencryption = ssl
    smtpserverport = 465

9. Submit your last commit for review

The following command will generate a patch for the last commit and send it to the mailing list.

git send-email --to="~anmeisel/public-inbox@lists.sr.ht" HEAD^

If all goes well you should see your patch land in the inbox! https://lists.sr.ht/~anmeisel/public-inbox

Futher dicussion

  • What can we use the website for?
  • How can we make it more accessible? Improve the readme?

Attendance

  • Adam J