diff options
| author | t <t@tjp.lol> | 2026-07-11 14:06:25 -0600 |
|---|---|---|
| committer | t <t@tjp.lol> | 2026-07-11 19:59:46 -0600 |
| commit | 6636567f9c4395e830f280e1cd0008a726c04286 (patch) | |
| tree | b844e1201de82f54f6b19065bae8e4b783f37642 | |
| parent | 48352c770a932bd628cc5eb22ea3b899b041c485 (diff) | |
Refresh site structure and copy
Simplify navigation and section copy, update feed presentation, and remove
the obsolete plain-HTML note.
| -rw-r--r-- | about/index.html.tmpl | 37 | ||||
| -rw-r--r-- | feed.xml.tmpl | 3 | ||||
| -rw-r--r-- | index.html.tmpl | 34 | ||||
| -rw-r--r-- | notes/_plain-html.md | 28 | ||||
| -rw-r--r-- | notes/index.html.tmpl | 12 | ||||
| -rw-r--r-- | projects/index.html.tmpl | 29 | ||||
| -rw-r--r-- | site.tmpl | 20 | ||||
| -rw-r--r-- | style.css | 3 | ||||
| -rw-r--r-- | weblog/index.html.tmpl | 3 |
9 files changed, 83 insertions, 86 deletions
diff --git a/about/index.html.tmpl b/about/index.html.tmpl index 065fdc3..b0c8e3c 100644 --- a/about/index.html.tmpl +++ b/about/index.html.tmpl @@ -13,33 +13,32 @@ {{template "header" .}} <main> <article class="post"> - <div class="post-head"> - <h1>About</h1> - </div> <div class="note-body"> - <p>I'm tjp — an elder-millennial software engineer living in Salt Lake City, Utah. I write mostly Python, spend too long in the terminal, and care about software that's small, legible, and built to last.</p> - <p>This site is where I keep my <a href="../weblog/index.html">writing</a>. If you want to reach me, <a href="mailto:t@tjp.lol">t@tjp.lol</a> is the best way.</p> - - <h2>Elsewhere</h2> - <ul> - <li><span class="mono">email</span> — <a href="mailto:t@tjp.lol">t@tjp.lol</a></li> - <li><span class="mono">code</span> — <a href="https://github.com/teepark">github.com/teepark</a></li> - <li><span class="mono">fedi</span> — <a href="https://tilde.zone/@tjpcc" rel="me">@tjpcc@tilde.zone</a></li> - <li><span class="mono">gemini</span> — <code>gemini://gemini.ctrl-c.club/~tjp/</code></li> - </ul> + <p>I'm tjp, a software engineer living in Salt Lake City, Utah. I write mostly code, supervise coding AIs, generally spend too long in the terminal, and care about software that's small, legible, and built to last.</p> + <p>This site is where I keep my <a href="{{rel .OutputPath "/weblog/"}}">writing</a>. If you want to reach me, <a href="mailto:t@tjp.lol">t@tjp.lol</a> is the best way.</p> </div> + <section> + <h2 class="sec">elsewhere</h2> + <ul class="links"> + <li><span class="k">email</span><a href="mailto:t@tjp.lol">t@tjp.lol</a></li> + <li><span class="k">code</span><a href="https://code.tjp.lol/">self-hosted cgit</a></li> + <li><span class="k">fedi</span><a href="https://tilde.zone/@tjpcc" rel="me">@tjpcc@tilde.zone</a></li> + <li><span class="k">gemini</span><a href="gemini://tjp.lol/">gemini://tjp.lol/</a></li> + </ul> + </section> + <div class="backlinks"> <h2>Colophon</h2> <div class="note-body"> - <p>This site is generated from Markdown and Go templates by Weft, with a single <a href="../style.css">stylesheet</a>. There is no JavaScript anywhere — not deferred, not optional, none. It renders identically with scripts disabled because there is nothing to disable.</p> + <p>This site is generated from Markdown and Go templates by <a href="https://code.tjp.lol/weft.git">Weft</a>, with a single <a href="../style.css">stylesheet</a>.</p> <ul> - <li><strong>Type:</strong> your system's UI font for prose, your system's monospace for headings and code. No web fonts, no network requests for type.</li> - <li><strong>Colour:</strong> light and dark themes via <code>prefers-color-scheme</code> — it follows your OS setting, in pure CSS.</li> + <li><strong>Type:</strong> system UI font for prose, system monospace for headings and code. No web fonts or network requests for type.</li> + <li><strong>Colour:</strong> light and dark themes via <code>prefers-color-scheme</code>. It follows your OS setting in CSS.</li> <li><strong>Weblog:</strong> published from Markdown as static HTML.</li> - <li><strong>Notes:</strong> authored in Obsidian, synced across my devices with Syncthing, published as static pages.</li> - <li><strong>Build:</strong> Weft recursively renders Markdown and Go templates. AI may assist with coding and batch refactoring, but not with published post prose.</li> - <li><strong>Hosting:</strong> static files. Nothing to run, nothing to patch.</li> + <li><strong>Notes:</strong> authored in Obsidian and neovim, synced across my devices with Syncthing, published <a href="{{rel .OutputPath "/notes/"}}">here</a> as static pages.</li> + <li><strong>Build:</strong> Weft recursively renders Markdown and Go templates. AI may assist with coding and batch refactoring, but never with any published post content.</li> + <li><strong>Hosting:</strong> static files self-hosted on a VPS.</li> <li><strong>Licence:</strong> content is <a href="https://creativecommons.org/licenses/by/4.0/">CC BY 4.0</a> unless a page says otherwise. Take it, remix it, just credit me.</li> </ul> </div> diff --git a/feed.xml.tmpl b/feed.xml.tmpl index 961ee41..c95aa53 100644 --- a/feed.xml.tmpl +++ b/feed.xml.tmpl @@ -15,6 +15,7 @@ <id>{{.CanonicalURL}}</id> <published>{{rfc3339 (index .Meta "post_date")}}</published> <updated>{{if index .Meta "updated"}}{{rfc3339 (index .Meta "updated")}}{{else}}{{rfc3339 (index .Meta "post_date")}}{{end}}</updated> - <content type="html">{{xml (joinSections .Sections)}}</content> + {{with .Sections}}<content type="html">{{xml (index . 0)}}</content> + {{end}} </entry>{{end}} </feed> diff --git a/index.html.tmpl b/index.html.tmpl index 83a9a4f..59a87e3 100644 --- a/index.html.tmpl +++ b/index.html.tmpl @@ -4,7 +4,7 @@ <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1"> <title>tjp.lol</title> -<meta name="description" content="Personal site of tjp — software engineer in Salt Lake City. Weblog, notes, projects."> +<meta name="description" content="tjp — software and stuff"> <link rel="stylesheet" href="style.css"> <link rel="alternate" type="application/atom+xml" title="tjp.lol" href="feed.xml"> </head> @@ -14,8 +14,13 @@ {{template "header" .}} <main> <section class="intro"> - <p>Welcome in. This site is my writing desk: weblog posts moving over from my <span class="mono">gemini://</span> capsule, plus a public cut of the notes I keep in Obsidian and sync across my machines with Syncthing.</p> - <p>Plain HTML and CSS. No JavaScript, no tracking — it reads exactly the same with scripts turned off. That's the point.</p> + <p>Welcome to my web space. This site is my writing desk: some random pages, weblog posts, and a public cut of the notes I keep synced across my machines.</p> + <p>Plain HTML and CSS. No Javascript, no tracking.</p> + <p>My interests are a bit all over the place, but around this site you can also find:</p> + <ul> + <li><a href="https://code.tjp.lol">open source code repos</a></li> + <li><a href="https://film.tjp.lol">a gallery of film photography</a></li> + </ul> </section> <section> @@ -23,23 +28,16 @@ {{$posts := sortPages (index .Pages "weblog") "post_date"}}{{with $posts}}<ul class="posts"> {{range slicePages . 0 5}}<li><time datetime="{{date (index .Meta "post_date") "2006-01-02"}}">{{date (index .Meta "post_date") "2006-01-02"}}</time><a href="{{rel "index.html" .OutputPath}}">{{.Title}}</a></li>{{end}} </ul> - {{end}}<p style="margin-top:.9rem;font-size:.9rem;"><a href="weblog/index.html">all posts →</a></p> + {{end}}<p style="margin-top:.9rem;font-size:.9rem;"><a href="/weblog/">all posts →</a></p> </section> - <div class="cols"> - <section> - <h2 class="sec">elsewhere</h2> - <ul class="links"> - <li><span class="k">email</span><a href="mailto:t@tjp.lol">t@tjp.lol</a></li> - <li><span class="k">code</span><a href="https://github.com/teepark">github.com/teepark</a></li> - <li><span class="k">fedi</span><a href="https://tilde.zone/@tjpcc" rel="me">@tjpcc@tilde.zone</a></li> - <li><span class="k">gemini</span><a href="about/index.html">gemini://…/~tjp</a></li> - </ul> - </section> - <!-- <section> - <h2 class="sec">from the notes</h2> - </section> --> - </div> + <section> + <h2 class="sec">recently changed notes</h2> + {{$notes := sortPages (index .Pages "notes") "ModTime"}}{{with $notes}}<ul> + {{range slicePages . 0 5}}<li><a href="{{rel "index.html" .OutputPath}}">{{.Title}}</a></li>{{end}} + </ul> + {{end}}<p style="margin-top:.9rem;font-size:.9rem;"><a href="/notes/">notes →</a></p> + </section> </main> {{template "footer" .}} diff --git a/notes/_plain-html.md b/notes/_plain-html.md deleted file mode 100644 index 6d6e078..0000000 --- a/notes/_plain-html.md +++ /dev/null @@ -1,28 +0,0 @@ ---- -description: A note on writing plain, durable HTML. -planted: 2024-08-11 -tended: 2026-05-30 ---- -# The case for plain HTML - -*A note, not an essay — expect it to change. This page shows how a wiki note reads: internal wiki links render as underlined-dotted links, and a backlinks panel sits at the bottom.* - -A hand-written HTML page is the most durable document format I know of that still looks like a document. It has no runtime, no dependencies, and no version that can go out of date. A file I wrote in 2004 opens today, pixel-for-pixel, in a browser that didn't exist then. - -This connects to [Gemtext & the small web](index.html) — both are bets that *constraint outlives capability*. See also [How I take notes](index.html) for why I keep the source in plain text. - -## Things I no longer do - -- Reach for a framework before there's a second page. -- Add a build step to save five keystrokes. -- Load a web font when the reader already owns a good one. - -## The test - -Turn JavaScript off. If the page is worse, I've added fragility I have to maintain forever. If it's identical, I'm done. This whole site passes that test — see the [colophon](../about/index.html). - -## Linked from - -- [Gemtext & the small web](index.html) -- [Home-lab & self-hosting](index.html) -- [Moving my weblog off Gemini (without leaving it)](../weblog/moving-off-gemini.html) diff --git a/notes/index.html.tmpl b/notes/index.html.tmpl index 468a466..848a087 100644 --- a/notes/index.html.tmpl +++ b/notes/index.html.tmpl @@ -4,7 +4,7 @@ <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1"> <title>Notes — tjp.lol</title> -<meta name="description" content="A public cut of my Obsidian notes — a small digital garden."> +<meta name="description" content="A public cut of my synced notes — a small digital garden."> <link rel="stylesheet" href="../style.css"> </head> <body> @@ -13,19 +13,23 @@ {{template "header" .}} <main> <section class="intro"> - <p>This is a digital garden — a public slice of the notes I keep in Obsidian. Unlike the <a href="../weblog/index.html">weblog</a>, these aren't essays. They're living pages: some are a paragraph, some are years old, most link to each other. Start anywhere and follow the threads.</p> + <p>This is a digital garden; a public slice of the persistent notes I keep synced across my devices.</p> </section> <section> <h2 class="sec">start here</h2> + <ul> + <li><a href="/notes/sync/recipes/">My Recipes</a></li> + <li><a href="/notes/sync/recipes/cocktails/">Cocktail Recipes</a></li> + </ul> </section> - <section> + <!--<section> <h2 class="sec">all notes</h2> {{$notes := sortPages (index .Pages "notes") "mod_time"}}{{with $notes}}<div class="note-index"> {{range .}}<a href="{{rel "notes/index.html" .OutputPath}}">{{.Title}}</a>{{end}} </div>{{end}} - </section> + </section>--> </main> {{template "footer" .}} diff --git a/projects/index.html.tmpl b/projects/index.html.tmpl index a99a10b..a6708c2 100644 --- a/projects/index.html.tmpl +++ b/projects/index.html.tmpl @@ -4,7 +4,7 @@ <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1"> <title>Projects — tjp.lol</title> -<meta name="description" content="Things tjp has built."> +<meta name="description" content="Projects I've built."> <link rel="stylesheet" href="../style.css"> </head> <body> @@ -13,15 +13,36 @@ {{template "header" .}} <main> <section class="intro"> - <p>Small things I've built and still maintain. Most live on <a href="https://github.com/teepark">GitHub</a>.</p> + <p>Things I've built. Some I even maintain!</p> + <p>Spread across a messy history of code forges.</p> </section> <section> - <h2 class="sec">maintained</h2> + <h2 class="sec">current</h2> + + <h3 class="sec">pantograph</h3> + <ul> + <li><a href="https://code.tjp.lol/pantograph.git"><span class="k">pantograph</span></a> - a minimal AI TUI agent in zig with extensions in lua (<a href="/pantograph">project page</a>)</li> + <li><a href="https://code.tjp.lol/libpantograph.git"><span class="k">libpantograph</span></a> - the zig agent SDK behind pantograph, with several other language bindings</li> + <li><a href="https://code.tjp.lol/panto-agent.git"><span class="k">panto-agent</span></a> - collection of baseline extensions bringing pantograph up to snuff as a coding agent</li> + </ul> + + <h3 class="sec">this site</h3> + <ul> + <li><a href="https://code.tjp.lol/weft.git"><span class="k">weft</span></a> - a small static site generator</li> + <li><a href="https://code.tjp.lol/tjp_lol.git"><span class="k">tjp.lol</span></a> - repo tracking the markdown and other sources; builds with weft</li> + </ul> + + <h3 class="sec">small web protocols</h3> + <ul> + <li><a href="https://code.tjp.lol/sliderule.git"><span class="k">sliderule</span></a> - Go tools for building for small web protocols</li> + <li><a href="https://code.tjp.lol/syw.git"><span class="k">show-your-work</span></a> - git repo browser built on sliderule</li> + <li><a href="https://code.tjp.lol/sr-71.git"><span class="k">sr-71</span></a> - fast, high flying server for small web protocols</li> + </ul> </section> <section> - <h2 class="sec">archived / for fun</h2> + <h2 class="sec">archived</h2> </section> </main> @@ -13,14 +13,14 @@ {{end}} {{define "header"}} <header class="site"> - <h1 class="brand"><a href="{{rel .OutputPath "index.html"}}">~tjp<span class="cur"> $_</span></a></h1> - {{if eq .OutputPath "index.html"}}<p class="tag">Elder-millennial software engineer in Salt Lake City, Utah. Writing about code, tools, and the small web.</p> + <h1 class="brand"><a href="{{rel .OutputPath "/"}}">~tjp<span class="cur"> $_</span></a></h1> + {{if eq .OutputPath "index.html"}}<p class="tag">Elder millennial in Salt Lake City, Utah.</p> {{end}}<nav class="main"> - <a href="{{rel .OutputPath "weblog/index.html"}}"{{if eq .OutputPath "weblog/index.html"}} aria-current="page"{{end}}>weblog</a> - <!-- <a href="{{rel .OutputPath "notes/index.html"}}"{{if eq .OutputPath "notes/index.html"}} aria-current="page"{{end}}>notes</a> --> - <a href="{{rel .OutputPath "projects/index.html"}}"{{if eq .OutputPath "projects/index.html"}} aria-current="page"{{end}}>projects</a> - <a href="{{rel .OutputPath "about/index.html"}}"{{if eq .OutputPath "about/index.html"}} aria-current="page"{{end}}>about</a> - <a href="{{rel .OutputPath "feed.xml"}}">feed</a> + <a href="{{rel .OutputPath "/about/"}}"{{if eq .OutputPath "about/index.html"}} aria-current="page"{{end}}>about</a> + <a href="{{rel .OutputPath "/weblog/"}}"{{if eq .OutputPath "weblog/index.html"}} aria-current="page"{{end}}>weblog</a> + <a href="{{rel .OutputPath "/notes/"}}"{{if eq .OutputPath "notes/index.html"}} aria-current="page"{{end}}>notes</a> + <a href="{{rel .OutputPath "/projects/"}}"{{if eq .OutputPath "projects/index.html"}} aria-current="page"{{end}}>projects</a> + <a href="{{rel .OutputPath "/feed.xml"}}">feed</a> </nav> </header> {{end}} @@ -60,8 +60,8 @@ <h1>{{.Title}}</h1> </div> - {{with index .Sections 0}}<div style="font-size:1.2em">{{.}}</div>{{end}} - {{joinSections (slice .Sections 1)}} + {{with .Sections}}{{with index . 0}}<div style="font-size:1.2em">{{.}}</div>{{end}} + {{joinSections (slice . 1)}}{{end}} </article> <nav class="post-nav"> @@ -73,7 +73,7 @@ {{template "footer" .}}{{end}} -{{define "note"}}{{template "head" .}}{{template "header" .}} +{{define "notes"}}{{template "head" .}}{{template "header" .}} <main> <article class="post"> <div class="post-head"> @@ -46,8 +46,9 @@ nav.main a[aria-current="page"]{color:var(--accent);} main{padding:1.4rem 0 1rem;} section{margin:2.2rem 0;} -h2.sec{font-size:.8rem; letter-spacing:.02em; color:var(--muted); font-weight:400; margin:0 0 .9rem;} +.sec{letter-spacing:.02em; color:var(--muted); font-weight:400; margin:0 0 .9rem;} h2.sec::before{content:"## "; color:var(--accent);} +h3.sec::before{content:"### "; color:var(--accent);} .intro p{margin:0 0 .9rem; font-size:1.06rem;} diff --git a/weblog/index.html.tmpl b/weblog/index.html.tmpl index 9d97024..9548c44 100644 --- a/weblog/index.html.tmpl +++ b/weblog/index.html.tmpl @@ -14,7 +14,8 @@ {{template "header" .}} <main> <section class="intro"> - <p>Longer-form writing. Most of these are migrating over from my Gemini capsule, so dates reflect the original posting. <a href="../feed.xml">Subscribe via RSS</a>.</p> + <p>Longer-form writing. The oldest posts originated on my Gemini capsule, so dates reflect the original posting.</p> + <p><a href="{{rel .OutputPath "/feed.xml"}}">Atom feed</a></p> </section> {{$posts := sortPages (index .Pages "weblog") "post_date"}}{{with $posts}}<section> |
