<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
    <id>https://www.crumpledpaper.tech/</id>
    <title>Crumpled Paper</title>
    <updated>2026-06-21T00:00:00.000Z</updated>
    <generator>https://github.com/jpmonette/feed</generator>
    <author>
        <name>JP Hutchins</name>
        <uri>https://www.crumpledpaper.tech/</uri>
    </author>
    <link rel="alternate" href="https://www.crumpledpaper.tech/"/>
    <link rel="self" href="https://www.crumpledpaper.tech/atom.xml"/>
    <subtitle>Technical writing on software, firmware, and Python by JP Hutchins.</subtitle>
    <rights>© 2026 JP Hutchins</rights>
    <entry>
        <title type="html"><![CDATA[Static Blog Comments]]></title>
        <id>https://www.crumpledpaper.tech/2026-06-21-hello-fediverse</id>
        <link href="https://www.crumpledpaper.tech/2026-06-21-hello-fediverse"/>
        <updated>2026-06-21T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Today I learned how to setup fediverse webmentions + giscus comments
]]></summary>
        <author>
            <name>JP Hutchins</name>
        </author>
        <category label="TIL"/>
        <category label="webmentions"/>
        <category label="indieweb"/>
        <category label="fediverse"/>
        <category label="Bridgy Fed"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[The Fastest Python Struct?]]></title>
        <id>https://www.crumpledpaper.tech/2026-06-21-python-struct-profiling</id>
        <link href="https://www.crumpledpaper.tech/2026-06-21-python-struct-profiling"/>
        <updated>2026-06-21T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[An adventure in Python struct benchmarking: slotted class, NamedTuple, dataclass, attrs, msgspec, record-type, and a new C extension based on record-type and
msgspec. Focus is on import-time, type-construction, memory, and instantiation cost,
NOT DE/SERIALIZATION, including impact of mypyc
]]></summary>
        <author>
            <name>JP Hutchins</name>
        </author>
        <category label="types"/>
        <category label="python"/>
        <category label="CPython"/>
        <category label="struct"/>
        <category label="mypyc"/>
        <category label="functional programming"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[WSL2 for Firmware Development]]></title>
        <id>https://www.crumpledpaper.tech/2024-12-18-wsl2-for-firmware-development</id>
        <link href="https://www.crumpledpaper.tech/2024-12-18-wsl2-for-firmware-development"/>
        <updated>2024-12-18T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[This guide provides instructions for setting up an environment for developing,
debugging, and programming embedded systems firmware in the Windows Subsystem
for Linux (WSL2).
]]></summary>
        <author>
            <name>JP Hutchins</name>
        </author>
        <category label="firmware"/>
        <category label="wsl"/>
        <category label="tooling"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Enum Type Safety in C]]></title>
        <id>https://www.crumpledpaper.tech/2024-12-16-enum-type-safety-in-c</id>
        <link href="https://www.crumpledpaper.tech/2024-12-16-enum-type-safety-in-c"/>
        <updated>2024-12-16T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[C enums can guarantee exhaustive pattern matching at compile time.
]]></summary>
        <author>
            <name>JP Hutchins</name>
        </author>
        <category label="c"/>
        <category label="types"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Generic Request -> Response Protocol]]></title>
        <id>https://www.crumpledpaper.tech/2024-10-13-python-generic-request-response-protocol</id>
        <link href="https://www.crumpledpaper.tech/2024-10-13-python-generic-request-response-protocol"/>
        <updated>2024-10-13T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Python can provide 100% static type coverage for a transport by inferring
the Type of Response based on the Type of Request.
]]></summary>
        <author>
            <name>JP Hutchins</name>
        </author>
        <category label="python"/>
        <category label="types"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Comparing Firmware Development Environments]]></title>
        <id>https://www.crumpledpaper.tech/2024-10-10-firmware-development-environments</id>
        <link href="https://www.crumpledpaper.tech/2024-10-10-firmware-development-environments"/>
        <updated>2024-10-10T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[A comparison of developer experience and toolchain performance in Window 11,
WSL2, Ubuntu 24.04, and VMWare Workstation 17.
]]></summary>
        <author>
            <name>JP Hutchins</name>
        </author>
        <category label="firmware"/>
        <category label="tooling"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[GitHub Actions for the Python Package Index]]></title>
        <id>https://www.crumpledpaper.tech/2024-06-08-github-actions-for-pypi</id>
        <link href="https://www.crumpledpaper.tech/2024-06-08-github-actions-for-pypi"/>
        <updated>2024-06-08T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[A tutorial on mitigating security threats when distributing Python packages.
]]></summary>
        <author>
            <name>JP Hutchins</name>
        </author>
        <category label="python"/>
        <category label="ci-cd"/>
        <category label="security"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Building a Universally Portable Python App]]></title>
        <id>https://www.crumpledpaper.tech/2024-03-16-portable-python-app-1</id>
        <link href="https://www.crumpledpaper.tech/2024-03-16-portable-python-app-1"/>
        <updated>2024-03-16T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[The introductory post of a series about designing, building, and sharing
universally compatible software written in Python.
]]></summary>
        <author>
            <name>JP Hutchins</name>
        </author>
        <category label="python"/>
        <category label="packaging"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Astro Demo]]></title>
        <id>https://www.crumpledpaper.tech/2020-01-01-demoing-astro-features</id>
        <link href="https://www.crumpledpaper.tech/2020-01-01-demoing-astro-features"/>
        <updated>2020-01-01T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Demoing some of the Astro features like asides, semantic quotes/cites, math,
inline code, code blocks, etc.
]]></summary>
        <author>
            <name>JP Hutchins</name>
        </author>
        <category label="astro"/>
        <category label="demo"/>
    </entry>
</feed>