<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0">
    <channel>
        <title>Daniel Kiska - writing</title>
        <link>https://kse-design.pl/writing</link>
        <description>Notes from building and breaking things - security, data plumbing, AI tooling.</description>
        <lastBuildDate>Sat, 08 Aug 2026 16:48:40 GMT</lastBuildDate>
        <docs>https://validator.w3.org/feed/docs/rss2.html</docs>
        <generator>https://github.com/jpmonette/feed</generator>
        <language>en</language>
        <copyright>© 2026 Daniel Kiska</copyright>
        <item>
            <title><![CDATA[A blackbox VPN tunnel on WireGuard and Alpine]]></title>
            <link>https://kse-design.pl/writing/wireguard-blackbox</link>
            <guid isPermaLink="false">https://kse-design.pl/writing/wireguard-blackbox</guid>
            <pubDate>Mon, 13 Jul 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[Designing a portable, plug-in VPN appliance - WireGuard on Alpine Linux, small enough to reason about end to end.]]></description>
            <category>sec</category>
        </item>
        <item>
            <title><![CDATA[Making Claude prove the version exists]]></title>
            <link>https://kse-design.pl/writing/version-sentinel-design</link>
            <guid isPermaLink="false">https://kse-design.pl/writing/version-sentinel-design</guid>
            <pubDate>Sun, 05 Jul 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[The design of Version-Sentinel - a Claude Code hook that refuses dependency changes until the model cites a fresh registry check.]]></description>
            <category>sec</category>
            <category>data</category>
        </item>
        <item>
            <title><![CDATA[INT96: the Parquet timestamp that refuses to die]]></title>
            <link>https://kse-design.pl/writing/parquet-int96</link>
            <guid isPermaLink="false">https://kse-design.pl/writing/parquet-int96</guid>
            <pubDate>Sat, 20 Jun 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[Twelve bytes, two epochs, one endianness trap - parsing Parquet's deprecated INT96 timestamps in C# without shifting your data by whole eras.]]></description>
            <category>data</category>
        </item>
    </channel>
</rss>