summaryrefslogtreecommitdiff
path: root/site/content/blog
diff options
context:
space:
mode:
authorPaweł Redman <pawel.redman@gmail.com>2026-06-21 12:41:59 +0200
committerPaweł Redman <pawel.redman@gmail.com>2026-06-21 12:41:59 +0200
commitd84217fe5a0f389de8afcfacacd95b1c9dfd6eca (patch)
tree98f557c81ef4b5d0e75f08ef0a0ee693dd02a70a /site/content/blog
parent9775887a4e3197c19edd456f17e59352b636e11b (diff)
LicensingHEADmaster
Diffstat (limited to 'site/content/blog')
-rw-r--r--site/content/blog/typst_migration.typ48
1 files changed, 43 insertions, 5 deletions
diff --git a/site/content/blog/typst_migration.typ b/site/content/blog/typst_migration.typ
index 50d28cd..28ee708 100644
--- a/site/content/blog/typst_migration.typ
+++ b/site/content/blog/typst_migration.typ
@@ -1,12 +1,50 @@
-#import "/common.typ": post
+// SPDX-License-Identifier: CC-BY-SA-4.0
+// Copyright © Paweł Redman
+
+#import "/common.typ": post, link-self, img, static
#show: post.with(
title: "Migration to Typst",
- date: datetime(year: 2026, month: 6, day: 14),
+ date: datetime(year: 2026, month: 6, day: 18),
+)
+
+After #link-self("gsoc/index")[Google Summer of Code 2020], I began working for Nokia. As a full-time software engineer, I lost interest in programming as a hobby. Because I couldn't really blog about the cool stuff I was doing at work, this site was rotting for almost 6 years.
+
+#figure(
+ img(static("blog/site_before_typst.png")),
+ caption: [Rotting redman.xyz from before the migration],
)
+A DokuWiki update broke my #link("https://redman.xyz/git/opticks/")[custom theme], and at some point LaTeX stopped working too. I just couldn't be bothered to fix any of it.
+
+Two things changed my mind: #link("https://typst.app")[Typst] and AI.
+
+= Typst
+
+For the longest time, I was looking for a good and universal markup language. I tried:
+
+- Markdown, which is too limited.
+- reStructuredText, which is slightly less limited Markdown.
+- Wikitext, which is much less limited, but only because it counts raw HTML as "markup".
+- HTML, which is way too verbose for writing prose or math.
+- BBCode, which makes me feel old just for mentioning it.
+- #link-self("blog/latex_vs_typst")[LaTeX], the tenth circle of Hell.
+
+Also, all but LaTeX treat math as a second-class citizen. They require plugins, extra pain, and maintenance, and still use the TeX language anyway.
+
+#link("https://typst.app")[Typst] is so well-designed that every other markup immediately felt obsolete. It's as simple as Markdown for prose, yet seamlessly integrates advanced typesetting, equations, diagrams, and a proper scripting language. On top of that, compile times are measured in milliseconds.
+
+As of this writing, HTML output is still experimental. Even so, it's already the most pleasant way to write a personal blog I've ever experienced, and by a long shot.
+
+= AI
+
+Typst alone wouldn't be enough. I still had to convert tens of articles full of equations from Wikitext to Typst. This was an excellent use case for AI, though.
+
+LLMs are scarily good at coding if they're tightly constrained, especially when the work is very tedious. I started by writing common Typst code by hand so that every article would only have a minimal preamble that set everything up. Then I wrote a stub article. At that point, GPT 5.5 had enough context to mass-convert all my pages, making only a few minor mistakes in math. The whole process cost me \$6 and one afternoon.
+
+One important instruction I had in my `AGENTS.md` was: "keep text verbatim." LLMs like to fix typos and rephrase bad English, and I wanted to keep my articles 100% mine.
+
+This is a pattern I've been using very successfully for a while now. Write the hardest, least obvious 10% of code yourself and let the LLM do the remaining 90%. It's not blind vibe-coding if you know exactly where you're going.
-Loose thoughts:
+= The new site
-- Fully automatic DokuWiki -> Typst conversion using GPT 5.5
-- Finds typos \ No newline at end of file