<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Get Info: #app</title>
    <description>Posts tagged “app” — Blog of independent game and app developer Matt Sephton. Featuring vintage Macintosh, game development, digital artwork, Japanese esoterica, video game reviews, hacks and tips, and much more.</description>
    <link>https://blog.gingerbeardman.com/tag/app/</link>
    <atom:link href="https://blog.gingerbeardman.com/tag/app/index.xml" rel="self" type="application/rss+xml"/>
    <pubDate>Wed, 01 Jul 2026 16:09:47 +0000</pubDate>
    <lastBuildDate>Wed, 01 Jul 2026 16:09:47 +0000</lastBuildDate>
    <generator>Jekyll v4.4.1</generator>

    
      
        <item>
          <title>Today I shipped 20 apps and a screensaver</title>
          <description>&lt;p&gt;Shipping software is &lt;em&gt;hard&lt;/em&gt;. My secret to doing it successfully is a combination of careful scoping, with strict avoidance of feature creep. But even then, it’s still insanely difficult to ship something.&lt;/p&gt;

&lt;p&gt;Shipping multiple pieces of software one after the other in quick succession would be an even more gruelling task. Nobody in their right mind would choose to do such a thing…&lt;em&gt;right?&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Right?&lt;/p&gt;

&lt;p&gt;I must have missed the memo because I’m shipping 20 apps and a screensaver…&lt;em&gt;today!&lt;/em&gt;&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;14 × macOS apps (Mac App Store)&lt;/li&gt;
  &lt;li&gt;3 × macOS apps (TestFlight)&lt;/li&gt;
  &lt;li&gt;2 × iOS apps (App Store)&lt;/li&gt;
  &lt;li&gt;1 × macOS app (GitHub download)&lt;/li&gt;
  &lt;li&gt;1 × macOS screensaver (Web download)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Get them at &lt;a href=&quot;https://www.gingerbeardman.com/apps/&quot;&gt;gingerbeardman.com/apps/&lt;/a&gt;&lt;/p&gt;

&lt;hr /&gt;

&lt;p&gt;&lt;a href=&quot;https://www.gingerbeardman.com/apps/&quot;&gt;&lt;img src=&quot;https://cdn.gingerbeardman.com/images/posts/wall-of-apps.png&quot; alt=&quot;IMG&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;hr /&gt;

&lt;h2 id=&quot;twenty&quot;&gt;Twenty!?&lt;/h2&gt;

&lt;p&gt;Yup. So I think it’s a bit of a myth that software takes huge teams to make. Some of the most successful software of all time was created by individuals: MacPaint, HyperCard, Minecraft, RollerCoaster Tycoon, BitTorrent, Stardew Valley, WinAmp, Flappy Bird, Vim, the World Wide Web, HTML, URLs, and HTTP (those last four by the same person, Tim Berners-Lee). Or perhaps it was made by power duos: Photoshop, Doom, Quake, Google, WhatsApp, Figma, Sensible Soccer. It’s still quite common today, especially in the indie scene, but perhaps it’s not talked about as much?&lt;/p&gt;

&lt;p&gt;I started making software in &lt;a href=&quot;https://blog.gingerbeardman.com/2025/03/14/digging-up-the-past-with-discmaster/&quot;&gt;1990 on the Atari ST, moved to Windows and the web in 1995&lt;/a&gt;, then to Macintosh in 2000, and iPhone in 2007. My apps and games have been &lt;a href=&quot;https://www.gingerbeardman.com/archive/tektonix/featured.htm&quot;&gt;featured in publications around the world&lt;/a&gt;, been &lt;a href=&quot;/2004/06/20/wire-hang-redux/&quot;&gt;downloaded millions of times,&lt;/a&gt; and &lt;a href=&quot;https://blog.gingerbeardman.com/2023/11/21/yoyozo-how-i-made-a-playdate-game-in-39kb/&quot;&gt;one of my games—which happens to be only 39 KB—received a “best game of the year” accolade alongside Mario and Zelda&lt;/a&gt;. The only time I wasn’t actively making and releasing software was during my time working for Apple as a Technology Evangelist, because they don’t allow it.&lt;/p&gt;

&lt;p&gt;So I had a bunch of apps that I’d built for myself over the years, and friends kept encouraging me to release them. Making an app for yourself is one thing, but shipping an app to the public is much more difficult. If I was to release one app every month it would take me almost two years to release them all! Doing the &lt;em&gt;App Store Dance&lt;/em&gt; to that kind of beat is my idea of hell. So I decided to do it “once” for all my apps. It still took a couple of months to get them ready, and a further month to get them all approved. I do not advise anybody else do this, because it was painful. But I did it, and here we are!&lt;/p&gt;

&lt;h2 id=&quot;wth&quot;&gt;WTH!?&lt;/h2&gt;

&lt;p&gt;To ship this many apps at once I had to optimise my workflow to an unprecedented level: Xcode projects set up as similarly as possible to reduce cognitive load, shell scripts to automate common build and test tasks, a script to generate changelogs ready for submission, another to automate incremental website builds based on changed files, and one more to generate screenshots of my screenshots, followed by &lt;a href=&quot;https://asccli.app&quot;&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;asc&lt;/code&gt;&lt;/a&gt; to automate uploading data to App Store Connect.&lt;/p&gt;

&lt;p&gt;Code hygiene got the same treatment. I ran &lt;a href=&quot;https://github.com/peripheryapp/periphery&quot;&gt;Periphery&lt;/a&gt; across every project to find and remove dead/unused code, which shrinks the binary. Then &lt;a href=&quot;https://github.com/kucherenko/jscpd&quot;&gt;jscpd&lt;/a&gt; to spot copy-paste duplication or similar code sections and refactor them into shared helpers, which can sometimes &lt;em&gt;increases&lt;/em&gt; binary size slightly, but it’s a price worth paying for maintainability across so many codebases. There are several Xcode/compiler optimisations that can help strip unused data from the final binary, if you’re careful. I also “cheat” by adding only the largest icon size to macOS apps to avoid over 100 KB of additional icon size variations.&lt;/p&gt;

&lt;p&gt;For the website I created a static site generator that uses a simple templating system to generate a static site for 20 apps, the whole thing is spat out in only 36ms. Each app has its own markdown content file with YAML front matter, markdown description for the press kit, privacy policy, RSS feed XML (managed by my app &lt;a href=&quot;https://www.gingerbeardman.com/apps/feedit/&quot;&gt;Feedit&lt;/a&gt;), maybe some FAQs, an SVG icon, and a bunch of screenshots in both light and dark mode. The press kit is zipped up on a full build and the static site is uploaded to my server over WebDAV. I even managed to hide a fun little mini game in there! The time and effort spent on this system over the last couple of months was roughly equivalent to building another app. But it was worth it.&lt;/p&gt;

&lt;p&gt;Most of my apps cost a small amount up front. That’s a way to show your appreciation for the time I spent making them. It also means I never need to use ads, tracking, or subscriptions to make it worth me doing this. After all making software is my job, not a hobby. All apps are actively maintained—if an app hasn’t been updated in a while, it means it has reached a stable state, rather than it being abandoned. Supporting older versions of macOS comes for free when you’re not tied to dependencies that have their own requirements and release schedule.&lt;/p&gt;

&lt;p&gt;Pricing is kept dead simple: $5, $10, or $15. Three tiers, no tricks, no “Pro” upsells, no subscriptions. Small utilities are $5, mid-size apps are $10, and the most capable or niche apps are $15. A couple are free, and there are some bundles to save money.&lt;/p&gt;

&lt;hr /&gt;

&lt;h2 id=&quot;fits-on-a-floppy&quot;&gt;Fits On A Floppy&lt;/h2&gt;

&lt;p&gt;Many of these apps are small enough to fit on a 1.44 MB floppy disk. Not as a gimmick but as a discipline. I use only native frameworks, avoid dependency bloat, and keep features focused. Writing small software is harder than writing big software because every line of code has to earn its place. But the result is apps that download in a blink, launch instantly, and respect your system resources. I don’t miss floppy disks, but I miss the mindset they demanded: that every byte matters, that constraints breed creativity, and that software should be light on its footprint.&lt;/p&gt;

&lt;p&gt;Read the full manifesto at &lt;a href=&quot;https://fitsonafloppy.com&quot;&gt;fitsonafloppy.com&lt;/a&gt; and &lt;em&gt;spread the word!&lt;/em&gt; ✨💾✨&lt;/p&gt;

&lt;hr /&gt;

&lt;h2 id=&quot;the-app-list&quot;&gt;The App List&lt;/h2&gt;

&lt;p&gt;These apps were all built to fill personal needs, but friends have encouraged me to release them for others to use. This is the bit where I was set to claim oldest app was about 8 years old, while the newest apps was about 8 days old. But sadly App Store Review got in the way, by rejecting my oldest app that I’ve had installed on my own phone since 2019 for being “too derivative” (I’ll revisit that and launch it another time), and they took longer to review the newest app than it did for me to develop it. Other fun rejections along the way: inappropriate use of the word “Safari” in an app for managing Safari browser tabs and bookmarks, and use of web server entitlements in a web server app, sending a video of me ejecting a physical CD-ROM drive, the list goes on. But you get the idea: these apps have taken a while to arrive.&lt;/p&gt;

&lt;p&gt;Anyway, here they are, have fun with them:&lt;/p&gt;

&lt;h3 id=&quot;barfly-macos&quot;&gt;&lt;a href=&quot;https://www.gingerbeardman.com/apps/barfly/&quot;&gt;Barfly&lt;/a&gt; &lt;span class=&quot;chip chip-macos&quot;&gt;macOS&lt;/span&gt;&lt;/h3&gt;

&lt;p&gt;Analytics for your itch.io games, right in the menu bar. Track views, downloads, and purchases with delta tracking across configurable time periods from one hour to one week. Refresh on a schedule and keep historic data.&lt;/p&gt;

&lt;h3 id=&quot;brutify-macos-testflight&quot;&gt;&lt;a href=&quot;https://www.gingerbeardman.com/apps/brutify/&quot;&gt;Brutify&lt;/a&gt; &lt;span class=&quot;chip chip-macos&quot;&gt;macOS&lt;/span&gt; &lt;span class=&quot;chip chip-testflight&quot;&gt;TestFlight&lt;/span&gt;&lt;/h3&gt;

&lt;p&gt;Lossless image optimisation using 14 engines running in parallel. Drop in images or folders and get perfectly optimised JPEG, PNG, GIF, and WebP assets without any quality loss. Fast, Slow, or Lossy modes to suit any workflow. A modern ImageOptim.&lt;/p&gt;

&lt;h3 id=&quot;ditto-macos&quot;&gt;&lt;a href=&quot;https://www.gingerbeardman.com/apps/ditto/&quot;&gt;Ditto&lt;/a&gt; &lt;span class=&quot;chip chip-macos&quot;&gt;macOS&lt;/span&gt;&lt;/h3&gt;

&lt;p&gt;Translate text without switching apps. Copy text twice with CMD+C and your clipboard is translated using Apple Translate or DeepL. Includes a floating window for real-time translation as you type. A DeepL alternative.&lt;/p&gt;

&lt;h3 id=&quot;dottie-macos-testflight&quot;&gt;&lt;a href=&quot;https://www.gingerbeardman.com/apps/dottie/&quot;&gt;Dottie&lt;/a&gt; &lt;span class=&quot;chip chip-macos&quot;&gt;macOS&lt;/span&gt; &lt;span class=&quot;chip chip-testflight&quot;&gt;TestFlight&lt;/span&gt;&lt;/h3&gt;

&lt;p&gt;A native Mac pixel art editor built from scratch. Drawing tools, layers with onion skinning, frame-based animation, custom palettes with Lospec import, and export to PNG, GIF, SVG, and sprite sheets. A native macOS alternative to Aseprite, Piskel, Pixen, etc.&lt;/p&gt;

&lt;h3 id=&quot;driveaway-macos&quot;&gt;&lt;a href=&quot;https://www.gingerbeardman.com/apps/driveaway/&quot;&gt;Driveaway&lt;/a&gt; &lt;span class=&quot;chip chip-macos&quot;&gt;macOS&lt;/span&gt;&lt;/h3&gt;

&lt;p&gt;Removes macOS metadata junk from external drives before you eject them. No more &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;.DS_Store&lt;/code&gt; files, Spotlight indexes, and AppleDouble resource forks cluttering up your USB drives and SD cards.&lt;/p&gt;

&lt;h3 id=&quot;eqer-macos&quot;&gt;&lt;a href=&quot;https://www.gingerbeardman.com/apps/eqer/&quot;&gt;EQer&lt;/a&gt; &lt;span class=&quot;chip chip-macos&quot;&gt;macOS&lt;/span&gt;&lt;/h3&gt;

&lt;p&gt;A system-wide 10-band equaliser that processes every app on your Mac in real time. Pick a preset, drag the curve, or paste your Audiogram and let it calculate the right listening curve for your hearing. Includes per-app control and dynamic range compression.&lt;/p&gt;

&lt;h3 id=&quot;feedit-macos&quot;&gt;&lt;a href=&quot;https://www.gingerbeardman.com/apps/feedit/&quot;&gt;Feedit&lt;/a&gt; &lt;span class=&quot;chip chip-macos&quot;&gt;macOS&lt;/span&gt;&lt;/h3&gt;

&lt;p&gt;An editor for creating, managing, and publishing RSS 2.0 feeds. Import existing feeds, edit every field, validate against the spec, and publish to a local folder or WebDAV server. Drafts, iCloud sync, and Find &amp;amp; Replace built in. An alternative to Feeder.&lt;/p&gt;

&lt;h3 id=&quot;hubble-macos&quot;&gt;&lt;a href=&quot;https://www.gingerbeardman.com/apps/hubble/&quot;&gt;Hubble&lt;/a&gt; &lt;span class=&quot;chip chip-macos&quot;&gt;macOS&lt;/span&gt;&lt;/h3&gt;

&lt;p&gt;Interactive USB topology viewer for macOS. See your complete device tree as a zoomable canvas with speed-coded cables, throttle warnings, power diagnostics, and hot-plug animations—all updating in real time.&lt;/p&gt;

&lt;h3 id=&quot;last-dance-macos-download&quot;&gt;&lt;a href=&quot;https://www.gingerbeardman.com/apps/last-dance/&quot;&gt;Last Dance&lt;/a&gt; &lt;span class=&quot;chip chip-macos&quot;&gt;macOS&lt;/span&gt; &lt;span class=&quot;chip chip-direct&quot;&gt;download&lt;/span&gt;&lt;/h3&gt;

&lt;p&gt;Solves a persistent macOS bug where SMB file sharing becomes unresponsive after restart. It automatically disables file sharing before shutdown and re-enables it at login. No worries.&lt;/p&gt;

&lt;h3 id=&quot;localmost-macos&quot;&gt;&lt;a href=&quot;https://www.gingerbeardman.com/apps/localmost/&quot;&gt;Localmost&lt;/a&gt; &lt;span class=&quot;chip chip-macos&quot;&gt;macOS&lt;/span&gt;&lt;/h3&gt;

&lt;p&gt;Spin up a local HTTP server by dragging a folder onto your menu bar. Multiple servers, automatic port assignment, access logs, and directory listings—all managed from a clean native interface.&lt;/p&gt;

&lt;h3 id=&quot;mojibaker-ios-free&quot;&gt;&lt;a href=&quot;https://www.gingerbeardman.com/apps/mojibaker/&quot;&gt;Mojibaker&lt;/a&gt; &lt;span class=&quot;chip chip-ios&quot;&gt;iOS&lt;/span&gt; &lt;span class=&quot;chip chip-free&quot;&gt;free&lt;/span&gt;&lt;/h3&gt;

&lt;p&gt;Create profile pictures with your choice of colours, gradients, images, then overlay emoji, genomji, memoji or stickers. Type a mood to get colour suggestions, compose your design, save presets, and export at high resolution.&lt;/p&gt;

&lt;h3 id=&quot;octoping-macos&quot;&gt;&lt;a href=&quot;https://www.gingerbeardman.com/apps/octoping/&quot;&gt;Octoping&lt;/a&gt; &lt;span class=&quot;chip chip-macos&quot;&gt;macOS&lt;/span&gt;&lt;/h3&gt;

&lt;p&gt;GitHub notifications in your Mac menu bar. See what needs attention, grouped by repository with colour-coded icons matching github.com. Mark items as read or open them in your browser.&lt;/p&gt;

&lt;h3 id=&quot;papertrail-ios&quot;&gt;&lt;a href=&quot;https://www.gingerbeardman.com/apps/papertrail/&quot;&gt;PaperTrail&lt;/a&gt; &lt;span class=&quot;chip chip-ios&quot;&gt;iOS&lt;/span&gt;&lt;/h3&gt;

&lt;p&gt;Full TaskPaper editing on iOS. Projects, tasks, notes, and tags with a powerful search query language, collapsible projects, widgets, and more. Syncs via iCloud and works with TaskPaper on Mac.&lt;/p&gt;

&lt;h3 id=&quot;seeports-macos&quot;&gt;&lt;a href=&quot;https://www.gingerbeardman.com/apps/seeports/&quot;&gt;Seeports&lt;/a&gt; &lt;span class=&quot;chip chip-macos&quot;&gt;macOS&lt;/span&gt;&lt;/h3&gt;

&lt;p&gt;Shows every TCP port listening on your Mac from the menu bar. Ports are automatically grouped by service—Docker, OrbStack, Kubernetes, and more. Copy a localhost URL, open in browser, search for info on unknown ports, or terminate a rogue process.&lt;/p&gt;

&lt;h3 id=&quot;spindle-macos-testflight&quot;&gt;&lt;a href=&quot;https://www.gingerbeardman.com/apps/spindle/&quot;&gt;Spindle&lt;/a&gt; &lt;span class=&quot;chip chip-macos&quot;&gt;macOS&lt;/span&gt; &lt;span class=&quot;chip chip-testflight&quot;&gt;TestFlight&lt;/span&gt;&lt;/h3&gt;

&lt;p&gt;Raw device access for byte-accurate CD and DVD extraction, with support for hybrid ISO 9660/HFS discs and triple hashing for verification. Rip from multiple drives simultaneously.&lt;/p&gt;

&lt;h3 id=&quot;stapler-macos-free&quot;&gt;&lt;a href=&quot;https://www.gingerbeardman.com/apps/stapler/&quot;&gt;Stapler&lt;/a&gt; &lt;span class=&quot;chip chip-macos&quot;&gt;macOS&lt;/span&gt; &lt;span class=&quot;chip chip-free&quot;&gt;free&lt;/span&gt;&lt;/h3&gt;

&lt;p&gt;Bundle related files into logical projects without moving anything. Opening a single &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;.stapled&lt;/code&gt; document opens your artwork, code, todo list, and your reference docs—all at once.&lt;/p&gt;

&lt;h3 id=&quot;tabulator-macos&quot;&gt;&lt;a href=&quot;https://www.gingerbeardman.com/apps/tabulator/&quot;&gt;Tabulator&lt;/a&gt; &lt;span class=&quot;chip chip-macos&quot;&gt;macOS&lt;/span&gt;&lt;/h3&gt;

&lt;p&gt;A bird’s-eye view of every Safari tab across local windows, tab groups, cloud tabs, and bookmarks. Search, sort, tag, export, and manage tabs from one place. Includes a vertical tabs mode, Safari extension to show open tab count, and automatic daily backup with easy restore.&lt;/p&gt;

&lt;h3 id=&quot;tsundoku-macos&quot;&gt;&lt;a href=&quot;https://www.gingerbeardman.com/apps/tsundoku/&quot;&gt;Tsundoku&lt;/a&gt; &lt;span class=&quot;chip chip-macos&quot;&gt;macOS&lt;/span&gt;&lt;/h3&gt;

&lt;p&gt;Quick access bookmarking for self-hosted services. A global hotkey captures the URL and title from your browser, suggests tags, and posts to Linkding, Raindrop, Shaarli, LinkAce, Karakeep, or Wallabag.&lt;/p&gt;

&lt;h3 id=&quot;vanishing-point-macos&quot;&gt;&lt;a href=&quot;https://www.gingerbeardman.com/apps/vanishing-point/&quot;&gt;Vanishing Point&lt;/a&gt; &lt;span class=&quot;chip chip-macos&quot;&gt;macOS&lt;/span&gt;&lt;/h3&gt;

&lt;p&gt;Perspective correction for photos and images. Four correction tools with Apple Vision auto-detection, 256+ aspect ratio presets, background removal via Vision framework, colour sampling, plus image adjustments. Export as PNG, JPG, or TIFF. QuickLook and Finder Thumbnails are supported.&lt;/p&gt;

&lt;h3 id=&quot;wavelet-macos&quot;&gt;&lt;a href=&quot;https://www.gingerbeardman.com/apps/wavelet/&quot;&gt;Wavelet&lt;/a&gt; &lt;span class=&quot;chip chip-macos&quot;&gt;macOS&lt;/span&gt;&lt;/h3&gt;

&lt;p&gt;Sound effect generator powered by synthesis, based on classic sfxr. One-click presets for laser zaps, coin pickups, explosions, and more. Layer multiple sounds with the built-in mixer and export as WAV, or as code in Lua, or Swift.&lt;/p&gt;

&lt;hr /&gt;

&lt;h3 id=&quot;fits-on-a-floppy-screensaver-macos-download-free&quot;&gt;&lt;a href=&quot;https://fitsonafloppy.com&quot;&gt;“Fits on a Floppy” Screensaver&lt;/a&gt; &lt;span class=&quot;chip chip-macos&quot;&gt;macOS&lt;/span&gt; &lt;span class=&quot;chip chip-direct&quot;&gt;download&lt;/span&gt; &lt;span class=&quot;chip chip-free&quot;&gt;free&lt;/span&gt;&lt;/h3&gt;

&lt;p&gt;And finally, technically, the 21st release: a macOS screen saver inspired by &lt;em&gt;After Dark&lt;/em&gt; and its classic &lt;em&gt;Flying Toasters&lt;/em&gt;. It features flying disks that do barrel rolls and spins as they drift across your screen. Thanks to my friend &lt;a href=&quot;https://jbmorley.co.uk/about/&quot;&gt;Jason Morley&lt;/a&gt; for the idea, which I built while waiting for App Store Review to finish processing the rest. To make this easier, I upgraded the old test harness I built for my &lt;a href=&quot;/2009/04/09/today-screensaver/&quot;&gt;&lt;em&gt;Today&lt;/em&gt; screensaver&lt;/a&gt; back in 2009.&lt;/p&gt;
</description>
          <author>by Matt Sephton</author>
          <pubDate>Fri, 17 Apr 2026 18:00:00 +0000</pubDate>
          <link>https://blog.gingerbeardman.com/2026/04/17/today-i-shipped-twenty-apps-and-a-screensaver/</link>
          <guid isPermaLink="true">https://blog.gingerbeardman.com/2026/04/17/today-i-shipped-twenty-apps-and-a-screensaver/</guid>
        </item>
      
    
      
        <item>
          <title>Abandoned project: multi-site shopping app</title>
          <description>&lt;p&gt;I order weird old stuff from Japan a few times a year: old magazines, CD-ROMs, digital watches, strategy guides, video games, playing cards, books, artwork and any other old tat that takes my fancy. The way this is usually done is by ordering through a proxy service that receives the goods on your behalf and combines and ships them to you at your convenience.&lt;/p&gt;

&lt;p&gt;There are many such proxy services, each with their own website, fee structure, shipping costs, and other pros and cons. I grew tired of tabs from these various sites cluttering up my browser, so I decided to build a bespoke app to manage them. I couldn’t find anything close, other than an app for Russians to more easily shop on AliExpress. So, in September 2024, I built the app I envisioned as a rapid prototype and called it &lt;em&gt;Otaku!&lt;/em&gt;&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;&lt;strong&gt;otaku&lt;/strong&gt; (n.) in Japan, a young person who is obsessed with computers or particular aspects of popular culture to the detriment of their social skills 🤓&lt;/p&gt;
&lt;/blockquote&gt;

&lt;hr /&gt;

&lt;h2 id=&quot;otaku&quot;&gt;Otaku!&lt;/h2&gt;

&lt;p&gt;The app itself is a customisable set of tabs—one per site—each containing a WebKit view, along with a detailed settings interface that includes an editable list of search terms. So, you could easily do common searches and there was no need to repeatedly type searches terms into each site as they would be automatically be entered when you switch to the tab. Add to that Custom CSS to hide parts of the sites, Google Translate to view some sites in your native language rather than Japanese, currency converter, and several other useful related tools rounded out a comprehensive app.&lt;/p&gt;

&lt;hr /&gt;

&lt;h2 id=&quot;postmortem&quot;&gt;Postmortem&lt;/h2&gt;

&lt;p&gt;It worked well, and I used it heavily for the duration of its development. it also gained a number of passionate users on TestFlight. My only criticism is that the specific design of the app and the unreliability of my naive WebKit implementation meant that whilst the existing friction was removed by facilitating easier multi-site management, new friction was introduced elsewhere in the user experience, and at the end of the day you’re still interacting with a bunch of websites of varying quality.&lt;/p&gt;

&lt;p&gt;A better solution might be somewhere in between, perhaps using a more modern popover interface paradigm to switch between tabs rather than the back and forth of the navigation controller. Then there are options to capture the results via API and present them in a unified way, but this opens up more questions and friction at the point you want to buy something. In short, it’s a difficult problem!&lt;/p&gt;

&lt;p&gt;SwiftUI is fun to work with, despite it throwing its hands up at several points and me having to revert to my last commit to get it back on track. I don’t really enjoy building iOS and macOS apps at this point in time, so Xcode became a bit of a chore and took a lot of the fun out of the project.&lt;/p&gt;

&lt;p&gt;After pushing several updates up to the &lt;a href=&quot;/2025/04/15/when-playdate-stopped-being-fun/&quot;&gt;middle of October&lt;/a&gt;, I then let that final build expire and have never wanted to push any update or new version.&lt;/p&gt;

&lt;p&gt;Thanks to all the users of this app for your valuable testing and feedback.&lt;/p&gt;

&lt;hr /&gt;

&lt;h2 id=&quot;video-demonstration&quot;&gt;Video Demonstration&lt;/h2&gt;

&lt;p&gt;Below is a video of sample app usage. I select a search term (Hanafuda) and then use it on the different tabs along bottom of the screen. I then switch to a different search term (花札) and use that across the same set of tabs. Notice that at no point did anything need to be typed.&lt;/p&gt;

&lt;lite-youtube style=&quot;aspect-ratio: 1124/2436;&quot; videoid=&quot;2p0aM3QJ_rc&quot; params=&quot;start=0&amp;amp;modestbranding=2&quot;&gt;
&lt;/lite-youtube&gt;
</description>
          <author>by Matt Sephton</author>
          <pubDate>Sat, 10 May 2025 17:35:00 +0000</pubDate>
          <link>https://blog.gingerbeardman.com/2025/05/10/abandoned-project-multi-site-shopping-app/</link>
          <guid isPermaLink="true">https://blog.gingerbeardman.com/2025/05/10/abandoned-project-multi-site-shopping-app/</guid>
        </item>
      
    
      
        <item>
          <title>Today screensaver</title>
          <description>&lt;p&gt;&lt;em&gt;Today&lt;/em&gt; is a Mac OS X screensaver inspired by &lt;a href=&quot;https://en.wikipedia.org/wiki/On_Kawara#Today_series&quot;&gt;On Kawara’s &lt;em&gt;Today Series&lt;/em&gt;&lt;/a&gt;—nearly 3,000 date paintings made over five decades, each a monochrome background with the current date inscribed on it in the language and calendrical conventions of wherever Kawara happened to be that day.&lt;/p&gt;

&lt;p&gt;The screensaver displays today’s date in the same spirit. It can show the date, time, or day of the week, on a background colour of your choosing—or a random one.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;https://www.gingerbeardman.com/today/today.png&quot; alt=&quot;Today screensaver&quot; /&gt;&lt;/p&gt;

&lt;h2 id=&quot;download&quot;&gt;Download&lt;/h2&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.gingerbeardman.com/today/&quot;&gt;gingerbeardman.com/today/&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
          <author>by Matt Sephton</author>
          <pubDate>Thu, 09 Apr 2009 12:00:00 +0000</pubDate>
          <link>https://blog.gingerbeardman.com/2009/04/09/today-screensaver/</link>
          <guid isPermaLink="true">https://blog.gingerbeardman.com/2009/04/09/today-screensaver/</guid>
        </item>
      
    

  </channel>
</rss>
