<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title>Work on Jack Mordaunt</title>
		<link>https://jackmordaunt.com/work/</link>
		<description>Recent content in Work on Jack Mordaunt</description>
		<generator>Hugo</generator>
		<language>en</language>
		
		
		
		
			<lastBuildDate>Thu, 17 Jul 2025 00:00:00 +0000</lastBuildDate>
		
			<atom:link href="https://jackmordaunt.com/work/index.xml" rel="self" type="application/rss+xml" />
			<item>
				<title>Plato desktop client</title>
				<link>https://jackmordaunt.com/work/plato/</link>
				<pubDate>Thu, 17 Jul 2025 00:00:00 +0000</pubDate>
				<guid>https://jackmordaunt.com/work/plato/</guid>
				<description>&lt;div class=&#34;shots&#34;&gt;&#xA;  &lt;img src=&#34;https://jackmordaunt.com/images/Plato/PlatoHome.webp&#34; alt=&#34;The home window&#34; width=&#34;560&#34;&gt;&#xA;  &lt;img src=&#34;https://jackmordaunt.com/images/Plato/PlatoGame.webp&#34; alt=&#34;A game window&#34; width=&#34;560&#34;&gt;&#xA;  &lt;img src=&#34;https://jackmordaunt.com/images/Plato/PlatoMulti.webp&#34; alt=&#34;Several windows open at once&#34; width=&#34;560&#34;&gt;&#xA;&lt;/div&gt;&#xA;&lt;p&gt;A cross-platform desktop client for Plato&amp;rsquo;s games: a primary chat window&#xA;and any number of independent game windows, on Windows, macOS and Linux.&#xA;Built in Go with the Gio immediate-mode toolkit, and bound directly to&#xA;the C and C++ libraries it needed: ANGLE for OpenGL ES, V8 for the game&#xA;runtime, SQLite for state, libwebp for images. The product is&#xA;discontinued; the architecture is the part worth describing.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Sprig</title>
				<link>https://jackmordaunt.com/work/sprig/</link>
				<pubDate>Thu, 17 Mar 2022 00:00:00 +0000</pubDate>
				<guid>https://jackmordaunt.com/work/sprig/</guid>
				<description>&lt;div class=&#34;shots&#34;&gt;&#xA;  &lt;img src=&#34;https://jackmordaunt.com/images/sprig/sprig.webp&#34; alt=&#34;Sprig&#34; width=&#34;560&#34;&gt;&#xA;&lt;/div&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://git.sr.ht/~whereswaldon/sprig&#34;&gt;Sprig&lt;/a&gt; is a client for&#xA;&lt;a href=&#34;https://man.sr.ht/~whereswaldon/arborchat&#34;&gt;Arbor&lt;/a&gt;, a federated chat&#xA;platform, written in Go with Gio and shipped to five platforms from one&#xA;codebase. Its author has since put it on ice; the work below is from&#xA;2022.&lt;/p&gt;&#xA;&lt;h2 id=&#34;the-problem&#34;&gt;The problem&lt;/h2&gt;&#xA;&lt;p&gt;Sprig stored every chat message as its own file. Linux tolerated that.&#xA;Windows did not: reading thousands of small files at startup made the&#xA;client take seconds to open, and the cost grew with every conversation.&lt;/p&gt;</description>
			</item>
			<item>
				<title>icnsify</title>
				<link>https://jackmordaunt.com/work/icnsify/</link>
				<pubDate>Wed, 21 Feb 2018 00:00:00 +0000</pubDate>
				<guid>https://jackmordaunt.com/work/icnsify/</guid>
				<description>&lt;div class=&#34;shots&#34;&gt;&#xA;  &lt;img src=&#34;https://jackmordaunt.com/images/icnsify/icns-macos-preview.webp&#34; alt=&#34;The preview on macOS&#34; width=&#34;560&#34;&gt;&#xA;  &lt;img src=&#34;https://jackmordaunt.com/images/icnsify/icns-windows-preview.webp&#34; alt=&#34;The preview on Windows&#34; width=&#34;560&#34;&gt;&#xA;&lt;/div&gt;&#xA;&lt;p&gt;Apple&amp;rsquo;s &lt;code&gt;.icns&lt;/code&gt; format has one official tool, &lt;code&gt;iconutil&lt;/code&gt;, which runs&#xA;only on macOS, resists scripting, and wants a rigid folder of pre-sized&#xA;PNGs. icnsify replaces it with one command that runs anywhere:&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;brew install jackmordaunt/tap/icnsify&#xA;icnsify -i logo.png -o Icon.icns&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;It takes a single image, produces every size the format wants, converts&#xA;common formats on the way in, and pipes like a Unix tool. A small GUI&#xA;previews an &lt;code&gt;.icns&lt;/code&gt; on any operating system.&lt;/p&gt;</description>
			</item>
	</channel>
</rss>
