<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Eddy Luten</title>
    <link rel="alternate" href="https://luten.dev/" type="text/html" />
    <description>Recent content in luten.dev on Eddy Luten</description>
    <language>en-us</language>
    <managingEditor>eluten@pm.me (Eddy Luten)</managingEditor>
    <webMaster>eluten@pm.me (Eddy Luten)</webMaster>
    <copyright>© 2006-present Eddy Luten</copyright>
    <lastBuildDate>Tue, 07 Apr 2026 22:05:06 -0500</lastBuildDate>
    <atom:link href="https://luten.dev/feed.xml" rel="self" type="application/rss+xml" />
    <link rel="self" href="https://luten.dev/feed.xml" type="application/rss+xml" />
    <item>
      <title>mkdocs-alias-plugin 0.11.0 Release</title>
      <link>https://luten.dev/mkdocs-alias-plugin-0.11.0-release/</link>
      <pubDate>Mon, 09 Mar 2026 00:00:00 -0700</pubDate><author>eluten@pm.me (Eddy Luten)</author>
      <guid>https://luten.dev/mkdocs-alias-plugin-0.11.0-release/</guid>
      <description>&lt;p&gt;&lt;img src=&#34;https://luten.dev/images/pypi.png&#34; alt=&#34;pypi&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;The latest version, v0.11.0, of the mkdocs-alias-plugin is &lt;a href=&#34;https://github.com/EddyLuten/mkdocs-alias-plugin&#34;&gt;now available here&lt;/a&gt;. This new version adds the ability to use interwiki-style links, using the following syntax:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-md&#34; data-lang=&#34;md&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;[[w:Hypertext]]&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;or&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;[[w:Hypertext|The Article on Hypertext]]&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;or&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;[[w:Hypertext#History|The History of Hypertext]]&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;The prefix (&lt;code&gt;w:&lt;/code&gt; in the example) can be configured through the plugin&amp;rsquo;s options and can point to any external site.&lt;/p&gt;&#xA;&lt;p&gt;mkdocs-alias-plugin is an MkDocs plugin allowing links to your pages using a custom alias such as &lt;code&gt;[[my-alias]]&lt;/code&gt; or &lt;code&gt;[[my-alias|My Title]]&lt;/code&gt;.&lt;/p&gt;</description>
    </item>
    <item>
      <title>License Laundering a Copyleft Project</title>
      <link>https://luten.dev/license-laundering-a-copyleft-project/</link>
      <pubDate>Thu, 05 Mar 2026 00:00:00 -0600</pubDate><author>eluten@pm.me (Eddy Luten)</author>
      <guid>https://luten.dev/license-laundering-a-copyleft-project/</guid>
      <description>&lt;p&gt;&lt;img src=&#34;https://luten.dev/images/icy.jpg&#34; alt=&#34;An image of a branch covered in ice. Pretty cold.&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;&lt;span class=&#34;disclaimer&#34;&gt;Disclaimer: I am not a lawyer; this is not legal analysis, nor legal advice, just an opinion.&lt;/span&gt;&lt;/p&gt;&#xA;&lt;p&gt;Mark Pilgrim, the original creator of chardet &lt;a href=&#34;https://github.com/chardet/chardet/issues/327&#34;&gt;recently opened a GitHub issue&lt;/a&gt; on the project after he found that the project he started was relicensed under the MIT license from the original LGPL, a process generally referred to as &lt;a href=&#34;https://en.wikipedia.org/wiki/Licence_laundering&#34;&gt;license laundering&lt;/a&gt;. The current maintainer, Dan Blanchard, rewrote the project &amp;ldquo;from scratch&amp;rdquo; using Claude, changed its license, and &lt;a href=&#34;https://github.com/chardet/chardet/commit/dc43ec8f95b74458effd38f9c076a540c6990049#diff-c693279643b8cd5d248172d9c22cb7cf4ed163a3c98c8a3f69c2717edd3eacb7&#34;&gt;assigned the copyrights to himself&lt;/a&gt;, claiming this was an independent implementation done in a clean room environment.&lt;/p&gt;</description>
    </item>
    <item>
      <title>mkdocs-live-edit-plugin 0.4.0 Release</title>
      <link>https://luten.dev/mkdocs-live-edit-plugin-0.4.0-release/</link>
      <pubDate>Tue, 03 Mar 2026 00:00:00 -0700</pubDate><author>eluten@pm.me (Eddy Luten)</author>
      <guid>https://luten.dev/mkdocs-live-edit-plugin-0.4.0-release/</guid>
      <description>&lt;p&gt;&lt;img src=&#34;https://luten.dev/images/pypi.png&#34; alt=&#34;pypi&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;The latest version of the mkdocs-live-edit-plugin, v0.4.0, is now &lt;a href=&#34;https://pypi.org/project/mkdocs-live-edit-plugin/&#34;&gt;available here&lt;/a&gt; on PyPI!&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;Changes&lt;/strong&gt;:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Feature: support for custom documentation file directories through the new option user_docs_dir&lt;/li&gt;&#xA;&lt;li&gt;Bug fix: fix for a TypeError in the plugin config&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Furthermore, this latest version enables the usage of the &lt;a href=&#34;https://github.com/samrocketman/mkdocs-live-wysiwyg-plugin&#34;&gt;mkdocs-live-wysiwyg-plugin&lt;/a&gt;, which, as its name implies, replaces the plain textarea in mkdocs-live-edit-plugin with a WYSIWYG Markdown editor. This plugin uses mkdocs-live-edit-plugin as a dependency; pretty cool stuff!&lt;/p&gt;</description>
    </item>
    <item>
      <title>California AB-1043 Knock-On Effects</title>
      <link>https://luten.dev/california-ab-1043-knock-on-effects/</link>
      <pubDate>Mon, 02 Mar 2026 00:00:00 -0700</pubDate><author>eluten@pm.me (Eddy Luten)</author>
      <guid>https://luten.dev/california-ab-1043-knock-on-effects/</guid>
      <description>&lt;p&gt;&lt;img src=&#34;https://luten.dev/images/justice.jpg&#34; alt=&#34;&amp;ldquo;Justice isn&amp;rsquo;t blind, she carries a big stick&amp;rdquo; by Jason Rosenberg on Flickr&#34;&gt;&#xA;&lt;span style=&#34;font-size: 0.5em;&#34;&gt;Image Credit: &lt;a href=&#34;https://www.flickr.com/photos/20009658@N00/12069086054&#34;&gt;&amp;ldquo;Justice isn&amp;rsquo;t blind, she carries a big stick&amp;rdquo; by Jason Rosenberg on Flickr&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;&#xA;&lt;p&gt;&lt;span class=&#34;disclaimer&#34;&gt;Disclaimer: I am not a lawyer; this is not legal analysis, nor legal advice, just an opinion.&lt;/span&gt;&lt;/p&gt;&#xA;&lt;p&gt;The way too short and ambiguous &lt;a href=&#34;https://leginfo.legislature.ca.gov/faces/billTextClient.xhtml?bill_id=202520260AB1043&#34;&gt;California bill AB-1043&lt;/a&gt; seems to have the potential to do real damage to the software industry. It aims to consolidate age-verification at the operating system and application distribution levels seemingly without understanding what either actually are.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Super Basic SDFs</title>
      <link>https://luten.dev/super-basic-sdfs/</link>
      <pubDate>Sat, 28 Feb 2026 00:00:00 -0700</pubDate><author>eluten@pm.me (Eddy Luten)</author>
      <guid>https://luten.dev/super-basic-sdfs/</guid>
      <description>&lt;p&gt;&lt;img src=&#34;https://luten.dev/images/sdf-complex.png&#34; alt=&#34;A bunch of shapes generated using SDFs&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;In a recent experimental 2D gamedev project, I wanted to play around with drawing a bunch of game entities purely algorithmically rather than creating sprites for each of them. One important technique I ended up using was Signed Distance Fields (SDFs). In this post, I&amp;rsquo;ll go over the most basic implementation (we&amp;rsquo;ll draw a circle!) and explain how and why it works.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Kinesis Advantage 360: 2 Years In</title>
      <link>https://luten.dev/kinesis-advantage-360-2-years-in/</link>
      <pubDate>Thu, 26 Feb 2026 00:00:00 -0700</pubDate><author>eluten@pm.me (Eddy Luten)</author>
      <guid>https://luten.dev/kinesis-advantage-360-2-years-in/</guid>
      <description>&lt;p&gt;&lt;img src=&#34;https://luten.dev/images/kinesis-360.jpg&#34; alt=&#34;A bunch of notebooks&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;In December of 2023, due to carpal tunnel, I switched from my Happy Hacking Keyboard setup to a Kinesis Advantage 360. It&amp;rsquo;s been two years and change, and I haven&amp;rsquo;t looked back. Well, kind of.&lt;/p&gt;</description>
    </item>
    <item>
      <title>mkdocs-alias-plugin 0.10.0 Release</title>
      <link>https://luten.dev/mkdocs-alias-plugin-0.10.0-release/</link>
      <pubDate>Wed, 07 Jan 2026 00:00:00 -0700</pubDate><author>eluten@pm.me (Eddy Luten)</author>
      <guid>https://luten.dev/mkdocs-alias-plugin-0.10.0-release/</guid>
      <description>&lt;p&gt;&lt;img src=&#34;https://luten.dev/images/pypi.png&#34; alt=&#34;pypi&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;The latest version, v0.10.0, of the mkdocs-alias-plugin is &lt;a href=&#34;https://github.com/EddyLuten/mkdocs-alias-plugin&#34;&gt;now available here&lt;/a&gt;. This new version adds the ability to use aliases in Markdown footnotes, a great way to keep links short and organized.&lt;/p&gt;&#xA;&lt;p&gt;mkdocs-alias-plugin is an MkDocs plugin allowing links to your pages using a custom alias such as &lt;code&gt;[[my-alias]]&lt;/code&gt; or &lt;code&gt;[[my-alias|My Title]]&lt;/code&gt;.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Jekyll on sourcehut pages</title>
      <link>https://luten.dev/jekyll-on-sourcehut-pages/</link>
      <pubDate>Mon, 05 Jan 2026 00:00:00 -0700</pubDate><author>eluten@pm.me (Eddy Luten)</author>
      <guid>https://luten.dev/jekyll-on-sourcehut-pages/</guid>
      <description>&lt;p&gt;In a New Year&amp;rsquo;s resolution-driven &lt;a href=&#34;https://bsky.app/profile/luten.dev/post/3mbppjfme3s2s&#34;&gt;attempt to un-Microsoft-ify my life&lt;/a&gt;, I&amp;rsquo;m moving all of my repositories over from GitHub (owned by Microsoft) to sourcehut (owned by &lt;a href=&#34;https://drewdevault.com/&#34;&gt;some dude&lt;/a&gt;). This blog was the first repo to make the switch and was previously hosted via GitHub Pages, and now uses sourcehut pages instead. Here&amp;rsquo;s the config I created to make the CI-driven deployment work:&lt;/p&gt;</description>
    </item>
    <item>
      <title>The Books of 2025</title>
      <link>https://luten.dev/the-books-of-2025/</link>
      <pubDate>Tue, 30 Dec 2025 00:00:00 -0600</pubDate><author>eluten@pm.me (Eddy Luten)</author>
      <guid>https://luten.dev/the-books-of-2025/</guid>
      <description>&lt;p&gt;&lt;img src=&#34;https://luten.dev/images/books-2025.jpeg&#34; alt=&#34;A picture of the side of a book against a blurry background&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;This year I read a surprising (to me) amount of books: 21 according to my notes, 6 more than last year. Here they are, listed chronologically in reading order. I&amp;rsquo;ll also list my favorite reads towards the end of the post.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Copyleft From Now On</title>
      <link>https://luten.dev/copyleft-from-now-on/</link>
      <pubDate>Sun, 23 Feb 2025 00:00:00 -0600</pubDate><author>eluten@pm.me (Eddy Luten)</author>
      <guid>https://luten.dev/copyleft-from-now-on/</guid>
      <description>&lt;p&gt;&lt;img src=&#34;https://luten.dev/images/copyleft-header.png&#34; alt=&#34;A bunch of notebooks&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;I&amp;rsquo;ve been putting my work online in various formats for almost 20 years now. For most of that time, I&amp;rsquo;ve used extremely permissive licenses such as the MIT License to distribute my work in an attempt to promote usage and adoption. Now that I&amp;rsquo;m quite a bit older and experienced (you may say curmudgeony), let me tell you why I&amp;rsquo;m changing my tune and am adopting a Copyleft approach.&lt;/p&gt;&#xA;&lt;p&gt;In the past decade or so, I&amp;rsquo;ve noticed a widespread adoption of the MIT license, even by those who in the past opposed Open Source Software as a concept. &lt;strong&gt;Why the swing and why so extreme?&lt;/strong&gt; You&amp;rsquo;d think that those companies would slowly adopt Open Source rather than going all-in all at once. What&amp;rsquo;s going on?&lt;/p&gt;</description>
    </item>
  </channel>
</rss>