Hello, habitat

The lab now has a blog — plain Markdown files in the repo that can carry live, interactive demos.

The lab now has a blog. Posts are plain Markdown files that live in this site’s repository — one file per post, committed like code, reviewed like code. No CMS, no database, nothing to sync: if it’s in the repo, it’s on the site.

Ordinary Markdown works the way you’d expect — emphasis, links, inline code, lists, and quotes:

The site grows by data, not by redesign.

Posts can carry live components

Because posts compile through the same pipeline as the rest of the site, a post can import any Svelte component and use it inline. Heavy demos stay behind a lazy container that mounts only when you scroll near it — the one below runs the same three.js engine as the mascots on the homepage, and it costs this page nothing until it enters view.

mascot / expressions
interactive demo
One resident of the field, live. The gaze follows your cursor; the buttons swap its expression.

For static visuals there is a figure container instead — same idea, no JavaScript:

The habitat, schematically: a horizon arc, and dots that ride it.

How a post is put together

Embedding a demo is one import and one tag:

<script>
	import Demo from '$lib/components/post/Demo.svelte';
</script>

<Demo
	label="mascot / expressions"
	load={() => import('$lib/demos/mascot-demo/MascotDemo.svelte')}
	height={300}
	wide
/>

Everything has a fixed home in the repo:

WhatWhere
Postssrc/lib/posts/*.svx
Post containerssrc/lib/components/post/
Demo implementationssrc/lib/demos/

Expect notes from both sides of the lab here — what we’re building, and what we’re finding out along the way.