<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"><channel><title>serpentiel&apos;s blog</title><description>software engineering notes.</description><link>https://www.serpentiel.me/</link><item><title>You can&apos;t hand C a Go function</title><link>https://www.serpentiel.me/posts/you-cant-hand-c-a-go-function/</link><guid isPermaLink="true">https://www.serpentiel.me/posts/you-cant-hand-c-a-go-function/</guid><description>C wants a bare code address; a Go function is a closure. The pattern that works ships an integer and keeps the function at home.</description><pubDate>Tue, 28 Jul 2026 22:04:00 GMT</pubDate><category>go</category><category>cgo</category><category>betterglobekey</category></item><item><title>The architecture is a testing strategy</title><link>https://www.serpentiel.me/posts/architecture-is-a-testing-strategy/</link><guid isPermaLink="true">https://www.serpentiel.me/posts/architecture-is-a-testing-strategy/</guid><description>A third of betterglobekey is tests. In a cgo app, that number is an architectural choice, not a work ethic.</description><pubDate>Tue, 28 Jul 2026 14:41:00 GMT</pubDate><category>go</category><category>cgo</category><category>testing</category><category>betterglobekey</category></item><item><title>You don&apos;t need Xcode</title><link>https://www.serpentiel.me/posts/you-dont-need-xcode/</link><guid isPermaLink="true">https://www.serpentiel.me/posts/you-dont-need-xcode/</guid><description>A global event tap, an AppKit HUD, real macOS permissions — compiled by go build. The IDE was never the requirement.</description><pubDate>Mon, 27 Jul 2026 09:40:00 GMT</pubDate><category>go</category><category>cgo</category><category>macos</category><category>betterglobekey</category></item><item><title>Cycling is the wrong primitive</title><link>https://www.serpentiel.me/posts/cycling-is-the-wrong-primitive/</link><guid isPermaLink="true">https://www.serpentiel.me/posts/cycling-is-the-wrong-primitive/</guid><description>Four input sources, two used hourly. Why the Globe key needed a rework, and what betterglobekey does instead.</description><pubDate>Sun, 26 Jul 2026 15:44:00 GMT</pubDate><category>macos</category><category>betterglobekey</category></item><item><title>float64 is not an integer</title><link>https://www.serpentiel.me/posts/float64-is-not-an-integer/</link><guid isPermaLink="true">https://www.serpentiel.me/posts/float64-is-not-an-integer/</guid><description>Everyone knows JavaScript mangles big integers. Almost nobody checks whether Go does.</description><pubDate>Sat, 25 Jul 2026 17:18:00 GMT</pubDate><category>go</category><category>json</category></item><item><title>GitHub Apps can&apos;t upvote</title><link>https://www.serpentiel.me/posts/github-apps-cant-upvote/</link><guid isPermaLink="true">https://www.serpentiel.me/posts/github-apps-cant-upvote/</guid><description>A GraphQL mutation no permission can unlock.</description><pubDate>Wed, 22 Jul 2026 18:14:00 GMT</pubDate><category>github</category></item><item><title>Starting from scratch, again</title><link>https://www.serpentiel.me/posts/starting-from-scratch-again/</link><guid isPermaLink="true">https://www.serpentiel.me/posts/starting-from-scratch-again/</guid><description>New site again. Tradition.</description><pubDate>Wed, 08 Jul 2026 21:29:00 GMT</pubDate><category>meta</category></item></channel></rss>