How this was made

No framework, no build server, no database. This is plain HTML, CSS and JavaScript on GitHub Pages — the same free static hosting anybody gets with a repository — and a pile of Python that writes the pages before they ship.

Every number below is counted from the repository when this page is built, not typed in. That is the rule the whole site runs on: if a figure is on a page, something measured it.

260posts written
284pages published
114python scripts
53checks before a push
13github workflows
50,716lines behind it
1,735commits

What happens when I publish

A post is a file. Everything a reader sees is built from it, which means the pages can always be thrown away and made again — and are, on every publish. Here is the whole trip a post takes, from the file to your screen.

1 / 8

Everything, in one picture

The same trip, laid out at once: what is written by hand, what Python builds from it, what stands between the two, and what a reader finally opens. Every box names a real file in the repository — a check refuses this page if one of them stops existing.

WRITTEN BY HAND BUILT BY PYTHON WHAT A READER OPENS posts/ one file per post DATA STORES news.json status.json events.json AWS 路 Azure 路 GCP their own feeds status 路 releases 路 events .github/workflows 7 jobs on a clock re-read, rebuilt, committed sync_blog.py posts, index, feed, sitemap build_arch_post.py build_news_page.py build_status_page.py build_events_page.py build_sitemap.py sitemap.xml · robots.txt preflight.py 50 checks, a real browser a failure refuses the push Portfolio Blog 路 255 posts Intelligence What’s new Live status Cloud events GitHub Pages static files, no server nothing to restart passes site-footer.css 路 site-footer.js one bar, one theme, one menu on all 278 pages reader

scroll the diagram sideways →

How it stays current

7 of those 13 run on a clock, on GitHub’s machines rather than mine. They fetch, rebuild and commit on their own — the cloud pages are current whether or not I have opened a laptop. The rest run when something is pushed.

JobDoesWhen
doc-freshnessflag documentation going staleTuesdays, 07:00 UTC
healthrebuild the health reportdaily, 13:00 UTC
ingest-newsingest announcements, rebuild What’s newdaily, 05:10 UTC
refresh-aws-servicesrefresh the AWS service catalogueMondays, 06:00 UTC
refresh-eventsre-import events from the vendorsdaily, 05:40 UTC
statusfetch every cloud's incidents, rebuild Live statusevery hour
verify-eventsopen every event link, reconcile what is missingdaily, 06:20 UTC

What runs before anything ships

53 checks, in a real browser, on every push. They do not read the code — they open the pages and look: does the header hold still, does the music button actually play, does a filter filter, does every link still resolve, is each page asking for the current stylesheet. If one fails, the push is refused. It costs about twelve minutes, which is the price of not finding out from a reader.

Ask it anything

The terminal on the portfolio answers questions over these posts rather than from a model’s memory: the question is matched against what is actually written here, and the answer cites the post it came from. If nothing here covers it, it says so instead of inventing something.

Why it is built this way

Static files cannot be hacked through a plugin, cost nothing to serve, and load on a bad connection. Nothing here needs a server to be running, a subscription to be paid or a database to be backed up. In ten years these pages will open the same way, because they are just files.

The whole thing is public: github.com/katta698/katta698.github.io

How was your experience?
Your feedback helps improve this site.
PoorExcellent