<?xml version="1.0" encoding="utf-8"?>
<!-- Generated by build.py from content/articles/: edit those, not this file. -->
<feed xmlns="http://www.w3.org/2005/Atom">
    <title>Derjyn</title>
    <subtitle>Quiet code, loud ideas</subtitle>
    <link rel="self" type="application/atom+xml" href="https://derjyn.github.io/feed.xml"/>
    <link rel="alternate" type="text/html" href="https://derjyn.github.io/"/>
    <id>https://derjyn.github.io/</id>
    <updated>2026-10-26T00:00:00Z</updated>
    <author><name>Derjyn</name></author>
    <entry>
        <title>Rebuilt: the new derjyn.github.io</title>
        <link rel="alternate" type="text/html" href="https://derjyn.github.io/articles/rebuilt.html"/>
        <id>https://derjyn.github.io/articles/rebuilt.html</id>
        <published>2026-10-26T00:00:00Z</published>
        <updated>2026-10-26T00:00:00Z</updated>
        <summary>What changed, how it was made, and what it borrows from.</summary>
        <category term="Site"/>
        <category term="Design"/>
        <category term="Corpus"/>
        <content type="html" xml:base="https://derjyn.github.io/articles/rebuilt.html">&lt;p&gt;This rebuild was long overdue. D3 Labs had been the site since 2016, and I wanted a more complete space: somewhere to showcase my projects, share my thoughts, and hand out loot I think others might enjoy.&lt;/p&gt;
&lt;p&gt;The site is new from the ground up: new look, new mark, new code underneath. This is the short tour of what changed and how it got here.&lt;/p&gt;
&lt;h2&gt;Built on Corpus&lt;/h2&gt;
&lt;p&gt;Every page here runs on Corpus, a raw CSS stack I&#x27;m building for small static sites: Detox resets the browser, Bones lays out the page, Flesh dresses it, and a skin gives it this look. No framework, no build step for the CSS, and the pages read fine with JavaScript off.&lt;/p&gt;
&lt;p&gt;Why build my own instead of grabbing an existing one? The practice, for one. It&#x27;s also my own opinionated design, and I don&#x27;t need the bloat that comes with the other &amp;quot;micro&amp;quot; frameworks.&lt;/p&gt;
&lt;p&gt;The site is also Corpus&#x27;s first real test. Anything this site needed that Corpus couldn&#x27;t do became a fix in Corpus, not a hack here.&lt;/p&gt;
&lt;h2&gt;The look: an instrument panel&lt;/h2&gt;
&lt;p&gt;The design is an industrial instrument panel with a retro display soul. It pulls from the cyberpunk genre in general, the books, films and games, and from my love of industrial UI. Every section is a module in a thin frame with a square node on each corner, a lamp and a name in its header, and an ID on the right. The nav keys are hardware keys with a lamp that lights on the section you&#x27;re in.&lt;/p&gt;
&lt;p&gt;It took seven moodboards to get here. The early ones put scanlines, grain and color fringing over everything, and they were hard to read. From the fifth board on, the retro effects touch display elements only (the wordmark, big numbers, images) and body text stays crisp.&lt;/p&gt;
&lt;h2&gt;Two grounds, one signal&lt;/h2&gt;
&lt;p&gt;There are two looks, flipped with the theme setting. Glass is near-black with a cool off-white ink and is the main one. Paper is a warm stone stock with near-black ink. Both share one palette, Vermilion: the vermilion signal marks what is live (the current key, lamps, the newest entry) and nothing else.&lt;/p&gt;
&lt;p&gt;Why vermilion? Several themes were tested, and it just felt right. Plus I love that general color mix. Two of the others, Sodium and Mosaic, made it as far as the last moodboard and lost.&lt;/p&gt;
&lt;h2&gt;The mark&lt;/h2&gt;
&lt;figure&gt;
    &lt;img src=&quot;../assets/img/avatar-512.png&quot; width=&quot;256&quot; height=&quot;256&quot; alt=&quot;The Derjyn mark on glass: three teeth on a stem and a flat-backed head with one tall vermilion eye, drawn in square pixels.&quot;&gt;
    &lt;figcaption&gt;The mark, drawn on a 16 by 16 grid.&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;The mark is the old derjyn.com prototype mark, redrawn on a 16 by 16 grid and picked from 23 drafts. Three teeth on a stem read as a mirrored E, the Ǝ in the stylized name, and the flat-backed head with its one tall eye reads as a D, a 3 and a cyclops skull at once. Turn it upright and it&#x27;s a plain skull.&lt;/p&gt;
&lt;p&gt;It&#x27;s only ever drawn at 16, 32, 64 or 128 pixels, so every cell lands on whole pixels and stays sharp.&lt;/p&gt;
&lt;p&gt;The name has its own font too. The stylized spelling started with me, a character map, and a lot of tinkering with ways to make &amp;quot;Derjyn&amp;quot; look cool; ƊƎƦĴҰŊ is where that landed. The wordmark text is the plain word &amp;quot;Derjyn&amp;quot;, so search, copy and paste, and screen readers all get the real word, but it&#x27;s set in a tiny custom font that draws it as ƊƎƦĴҰŊ.&lt;/p&gt;
&lt;h2&gt;The background&lt;/h2&gt;
&lt;p&gt;Behind the page is a live lattice: X-shaped arms around small nodes, faint at rest. Move the cursor and the arms along its path light up and slowly fade. Click on empty space and a ping ring runs out from the click. The content boxes block the rings and bounce weaker copies back, a little like ripples on water.&lt;/p&gt;
&lt;p&gt;Config switches it to Field, a dot grid with slow bands that part around the cursor, or turns it off. With Sound on, each mode has its own click sound, synthesized in an old little tool called &lt;a href=&quot;https://sfbgames.itch.io/chiptone&quot;&gt;ChipTone&lt;/a&gt;. Visitors don&#x27;t expect a site to make noise, so it&#x27;s off by default.&lt;/p&gt;
&lt;p&gt;With reduced motion set in your system, the background draws one still frame and nothing follows the cursor.&lt;/p&gt;
&lt;h2&gt;What&#x27;s next&lt;/h2&gt;
&lt;p&gt;Coming up in the Log: future plans, for the site and for the projects.&lt;/p&gt;</content>
    </entry>
    <entry>
        <title>Placeholder article three</title>
        <link rel="alternate" type="text/html" href="https://derjyn.github.io/articles/placeholder-three.html"/>
        <id>https://derjyn.github.io/articles/placeholder-three.html</id>
        <published>2026-10-25T00:00:00Z</published>
        <updated>2026-10-25T00:00:00Z</updated>
        <summary>A long one, to test reading in the panel.</summary>
        <category term="Prototype"/>
        <category term="Long"/>
        <content type="html" xml:base="https://derjyn.github.io/articles/placeholder-three.html">&lt;p class=&quot;scar&quot;&gt;&lt;strong&gt;Placeholder:&lt;/strong&gt; this article exists to test the article panel and is replaced before launch.&lt;/p&gt;
&lt;p&gt;This is the long one. It runs past a screen so the panel can show what reading a real article feels like: the panel grows with the text, the page scrolls, and the index stays in view beside it on a wide screen.&lt;/p&gt;
&lt;h2&gt;Why the panel grows&lt;/h2&gt;
&lt;p&gt;A box that scrolls inside a page that scrolls is hard to read in. The wheel moves one or the other depending on where the cursor sits, keyboard users have to find the inner box before they can scroll it, and a phone gives a long article almost no room. So the panel takes the article&#x27;s full height and the page does the scrolling.&lt;/p&gt;
&lt;p&gt;The trade-off is that a long article pushes the projects and the operator further down the page. The nav keys in the top bar get you there in one press.&lt;/p&gt;
&lt;h2&gt;How an article gets here&lt;/h2&gt;
&lt;p&gt;Each article is a Markdown file in &lt;code&gt;content/articles/&lt;/code&gt;. A build script turns it into its own page and adds it to the home page&#x27;s list, newest first. When the page loads, a small script fetches the first one, takes its article element and puts it in the panel. Picking another one does the same and sets the address to the article&#x27;s name, so the back button and shared links work.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Write the new article as a Markdown file in &lt;code&gt;content/articles/&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Run &lt;code&gt;uv run build.py&lt;/code&gt; and commit what it wrote.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2&gt;Without JavaScript&lt;/h2&gt;
&lt;p&gt;Every item in the list is a normal link to the article&#x27;s own page, so nothing breaks. The panel just shows a link to the newest article instead of the article itself.&lt;/p&gt;
&lt;h3&gt;A third-level heading&lt;/h3&gt;
&lt;p&gt;Headings inside an article step down a level in the panel, so the page keeps one outline: the section heading, then the article&#x27;s title, then its own headings.&lt;/p&gt;
&lt;p&gt;A last paragraph, so the end of the article sits well below the fold on most screens and the scroll has somewhere to go.&lt;/p&gt;</content>
    </entry>
    <entry>
        <title>Placeholder article two</title>
        <link rel="alternate" type="text/html" href="https://derjyn.github.io/articles/placeholder-two.html"/>
        <id>https://derjyn.github.io/articles/placeholder-two.html</id>
        <published>2026-10-20T00:00:00Z</published>
        <updated>2026-10-20T00:00:00Z</updated>
        <summary>Code, a quote and an image.</summary>
        <category term="Prototype"/>
        <category term="SVG"/>
        <content type="html" xml:base="https://derjyn.github.io/articles/placeholder-two.html">&lt;p class=&quot;scar&quot;&gt;&lt;strong&gt;Placeholder:&lt;/strong&gt; this article exists to test the article panel and is replaced before launch.&lt;/p&gt;
&lt;p&gt;This one carries the parts a real article uses: a subheading, code, a quote and an image with a path relative to this file, which the panel has to rewrite to keep working.&lt;/p&gt;
&lt;h2&gt;A subheading&lt;/h2&gt;
&lt;p&gt;Inline &lt;code&gt;code&lt;/code&gt; sits in the text; a block keeps its own width:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&amp;lt;feComposite in=&amp;quot;gray&amp;quot; in2=&amp;quot;bayer&amp;quot; operator=&amp;quot;arithmetic&amp;quot; k2=&amp;quot;1&amp;quot; k3=&amp;quot;1&amp;quot; k4=&amp;quot;-0.5&amp;quot;/&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;blockquote&gt;
&lt;p&gt;A quote, to see how Flesh&#x27;s quote reads in the skin.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;figure&gt;
    &lt;img class=&quot;dither&quot; src=&quot;../assets/img/planet.svg&quot; width=&quot;480&quot; height=&quot;320&quot; alt=&quot;A ringed planet rising over two mountain ridges, printed in ordered dither.&quot;&gt;
    &lt;figcaption&gt;An image with a relative path: it shows in the panel only if the path was rewritten.&lt;/figcaption&gt;
&lt;/figure&gt;</content>
    </entry>
    <entry>
        <title>Placeholder article one</title>
        <link rel="alternate" type="text/html" href="https://derjyn.github.io/articles/placeholder-one.html"/>
        <id>https://derjyn.github.io/articles/placeholder-one.html</id>
        <published>2026-10-12T00:00:00Z</published>
        <updated>2026-10-12T00:00:00Z</updated>
        <summary>The shortest possible article.</summary>
        <category term="Prototype"/>
        <content type="html" xml:base="https://derjyn.github.io/articles/placeholder-one.html">&lt;p class=&quot;scar&quot;&gt;&lt;strong&gt;Placeholder:&lt;/strong&gt; this article exists to test the article panel and is replaced before launch.&lt;/p&gt;
&lt;p&gt;One paragraph, so the panel shows what a very short article looks like.&lt;/p&gt;</content>
    </entry>
</feed>
