<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Get Info: #ios</title>
    <description>Posts tagged “ios” — 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/ios/</link>
    <atom:link href="https://blog.gingerbeardman.com/tag/ios/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>iOS Low Data Mode reveals true app update sizes</title>
          <description>&lt;p&gt;An interesting side-effect of iOS Low Data Mode is that it shows you the exact size of an app update for your device, often a tiny fraction of the listed app size. This is because (delta) updates contain only the files that have changed. Even a first-time install is smaller due to app slicing/thinning containing only what is needed for that device.&lt;/p&gt;

&lt;p&gt;The larger size is the universal app size containing assets for all devices. It’s simpler and less confusing for everybody to see the same size.&lt;/p&gt;

&lt;p&gt;There are more screenshots at the comment links.&lt;/p&gt;

&lt;p class=&quot;tofigure&quot;&gt;&lt;img src=&quot;https://cdn.gingerbeardman.com/images/posts/low-data-mode.png&quot; alt=&quot;IMG&quot; title=&quot;eBay 6.220.0 update size for an iPhone XS running iOS 17&quot; /&gt;&lt;/p&gt;
</description>
          <author>by Matt Sephton</author>
          <pubDate>Wed, 06 Aug 2025 19:43:00 +0000</pubDate>
          <link>https://blog.gingerbeardman.com/2025/08/06/ios-low-data-mode-reveals-true-app-update-sizes/</link>
          <guid isPermaLink="true">https://blog.gingerbeardman.com/2025/08/06/ios-low-data-mode-reveals-true-app-update-sizes/</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>Abandoned project: firework builder puzzle game</title>
          <description>&lt;p&gt;I plan to occasionally list abandoned projects that I’ve decided not to take any further.&lt;/p&gt;

&lt;p&gt;This one is a prototype for a “firework builder” puzzle game. I was calling it Hanabi, the Japanese word for firework, but I’m not sure I would have stuck with that for the final name.&lt;/p&gt;

&lt;p&gt;It’s a visual programming-based puzzle video game along the lines of &lt;a href=&quot;https://en.wikipedia.org/wiki/Human_Resource_Machine&quot;&gt;Human Resource Machine&lt;/a&gt; and influenced by block-based visual programming language &lt;a href=&quot;https://en.wikipedia.org/wiki/Scratch_(programming_language)&quot;&gt;Scratch&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;I submitted it to the Draknek New Voices Puzzle Grant 2024, but was not selected. At the time of submission the core game logic had been proven, with a dozen or so block types supported, and I was learning how to program shaders as I had a very specific way I wanted to present the final firework animation. You can see the paper texture that I was generating using a shader in the video below. I had a dozen or so puzzles designed, including a heart shape which takes some thinking and combining of logic blocks to achieve!&lt;/p&gt;

&lt;p&gt;Whilst the prototype was an iOS app—mostly to benefit from rapid prototyping using SwiftUI and to get touch control and easy list management for free—the final game could have been on any platform. The challenge would be user interface, followed by puzzles and visual design.&lt;/p&gt;

&lt;p&gt;I gave up on the idea for a number of reasons, including but not limited to &lt;a href=&quot;/2025/04/15/when-playdate-stopped-being-fun/&quot;&gt;harassment&lt;/a&gt;.&lt;/p&gt;

&lt;hr /&gt;

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

&lt;p&gt;Below is the video I submitted with my entry, dated 2024-10-07. I narrate and run through the concept, complete example puzzles, and talk about the “woodblock print” style of fireworks I was planning and in the process of implementing.&lt;/p&gt;

&lt;lite-youtube style=&quot;aspect-ratio: 1124/2436;&quot; videoid=&quot;APMvQ-jVTwM&quot; params=&quot;start=0&amp;amp;modestbranding=2&quot;&gt;
&lt;/lite-youtube&gt;
</description>
          <author>by Matt Sephton</author>
          <pubDate>Wed, 23 Apr 2025 21:39:00 +0000</pubDate>
          <link>https://blog.gingerbeardman.com/2025/04/23/abandoned-project-firework-builder-puzzle-game/</link>
          <guid isPermaLink="true">https://blog.gingerbeardman.com/2025/04/23/abandoned-project-firework-builder-puzzle-game/</guid>
        </item>
      
    
      
        <item>
          <title>Making games on iPhone/iPad using Lua &amp; Love2D</title>
          <description>&lt;p&gt;I wondered how feasible it is to make Love2D games “on the go” (on a train, in bed, etc). Often I want to try a quick sketch, work up a prototype, or simply verify an algorithm. I’m happy to say it’s possible!&lt;/p&gt;

&lt;hr /&gt;

&lt;h2 id=&quot;runners&quot;&gt;Runners&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Love2D Studio&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;Available since Jan 2024&lt;/li&gt;
  &lt;li&gt;Free &lt;a href=&quot;https://apps.apple.com/gb/app/love2d-studio/id6474188075&quot;&gt;apps.apple.com/gb/app/love2d-studio/id6474188075&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;this allows you to manage love files and run them on iPhone&lt;/li&gt;
  &lt;li&gt;Love2D errors can even be copied to the clipboard!&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Love2D Game Maker&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;Available since March 2024&lt;/li&gt;
  &lt;li&gt;Paid &lt;a href=&quot;https://apps.apple.com/gb/app/love2d-game-maker/id6476174098&quot;&gt;apps.apple.com/gb/app/love2d-game-maker/id6476174098&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;TestFlight &lt;a href=&quot;https://testflight.apple.com/join/bCLmQKfQ&quot;&gt;testflight.apple.com/join/bCLmQKfQ&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;from the creator of LuaLu (see below)&lt;/li&gt;
  &lt;li&gt;comes bundled with a handful of demo games&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.iamadman.com/products/love2d-gamemaker/love2d-game-maker-learn-to-create-the-classic-game-of-pong-in-10mins/&quot;&gt;Pong tutorial&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;hr /&gt;

&lt;h2 id=&quot;editors&quot;&gt;Editors&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Textastic&lt;/strong&gt; (since 2010)&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;Paid &lt;a href=&quot;https://apps.apple.com/gb/app/textastic-code-editor/id1049254261&quot;&gt;apps.apple.com/gb/app/textastic-code-editor/id1049254261&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;text editor with autocomplete and function picker&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Kodex&lt;/strong&gt; (since 2017)&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;Free &lt;a href=&quot;https://apps.apple.com/gb/app/kodex/id1038574481&quot;&gt;apps.apple.com/gb/app/kodex/id1038574481&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;text editor with minimap&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;GoCoEdit&lt;/strong&gt; (since 2016)&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;Paid &lt;a href=&quot;https://apps.apple.com/gb/app/gocoedit-code-text-editor/id869346854&quot;&gt;apps.apple.com/gb/app/gocoedit-code-text-editor/id869346854&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;text editor with autocomplete&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Runestone&lt;/strong&gt; (since 2022)&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;Free, limited &lt;a href=&quot;https://apps.apple.com/gb/app/runestone-text-editor/id1548193893&quot;&gt;apps.apple.com/gb/app/runestone-text-editor/id1548193893&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;text editor with clean user interface&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Lua IDE&lt;/strong&gt; (since Feb 2021)&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;Free &lt;a href=&quot;https://apps.apple.com/gb/app/lua-ide/id1549382090&quot;&gt;apps.apple.com/gb/app/lua-ide/id1549382090&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;this app provides QuickLook support for Lua files&lt;/li&gt;
  &lt;li&gt;at some point you’ll need to check the contents of a Lua file in Files app&lt;/li&gt;
  &lt;li&gt;it also features the full Lua docs (though I use a self-built version of Dash doc viewer)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;LuaLu&lt;/strong&gt; (since Apr 2013)&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;Free &lt;a href=&quot;https://apps.apple.com/gb/app/lualu-repl-learn-lua-coding/id638219114&quot;&gt;apps.apple.com/gb/app/lualu-repl-learn-lua-coding/id638219114&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;sometimes you just need a Lua &lt;a href=&quot;https://en.wikipedia.org/wiki/Read–eval–print_loop&quot;&gt;REPL&lt;/a&gt; prompt to figure out a formula or do a quick experiment&lt;/li&gt;
  &lt;li&gt;features solid debugging support&lt;/li&gt;
&lt;/ul&gt;

&lt;hr /&gt;

&lt;h2 id=&quot;other-lua-ide&quot;&gt;Other Lua IDE&lt;/h2&gt;

&lt;p&gt;If you’re into Lua but not into Love2D then you might try &lt;a href=&quot;https://codea.io&quot;&gt;Codea for iPad&lt;/a&gt;.&lt;/p&gt;
</description>
          <author>by Matt Sephton</author>
          <pubDate>Thu, 20 Feb 2025 07:37:00 +0000</pubDate>
          <link>https://blog.gingerbeardman.com/2025/02/20/making-games-on-iphone-ipad-using-lua-and-love2d/</link>
          <guid isPermaLink="true">https://blog.gingerbeardman.com/2025/02/20/making-games-on-iphone-ipad-using-lua-and-love2d/</guid>
        </item>
      
    
      
        <item>
          <title>Per-game skins in the Delta classic video game emulator for iOS</title>
          <description>&lt;p&gt;Apple recently changed the App Store rules to allow emulators, which means we’re now seeing emulators for classic video game consoles available for download! This is great news for a retro gamer like myself. &lt;a href=&quot;https://apps.apple.com/gb/app/delta-game-emulator/id1048524688&quot;&gt;Delta&lt;/a&gt; is one such emulator that currently focuses on Nintendo platforms: NES, Game Boy, Game Boy Color, SNES, N64 and DS.&lt;/p&gt;

&lt;p&gt;I thought it would be fun to play my favourite Nintendo DS game: &lt;a href=&quot;/2013/06/29/maboshi/&quot;&gt;MaBoShi&lt;/a&gt;. This is an odd choice of game for a few reasons, but it really tests what Delta and the melonDS emulation core can do.&lt;/p&gt;

&lt;p&gt;Immediately I noticed that the Nintendo DS emulation quality is high: MaBoShi’s mosaic transitions are shown, whereas in other emulators such as DraStic or DeSmuME they are not. That’s a good start!&lt;/p&gt;

&lt;p class=&quot;tofigure&quot;&gt;&lt;img src=&quot;https://cdn.gingerbeardman.com/images/posts/delta-maboshi-default.png&quot; alt=&quot;PNG&quot; title=&quot;Delta&apos;s default Nintendo DS skin—pretty nice! BUT&quot; /&gt;&lt;/p&gt;

&lt;hr /&gt;

&lt;h2 id=&quot;when-good-isnt-good-enough&quot;&gt;When good isn’t good enough&lt;/h2&gt;

&lt;p&gt;But, we can see some odd things about MaBoShi:&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;it is played with the DS rotated on its side&lt;/li&gt;
  &lt;li&gt;the second screen goes mostly unused&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;And there are some other things we can’t see:&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;it doesn’t use the touch screen&lt;/li&gt;
  &lt;li&gt;only the D-pad is used during play (and Start button to pause)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Usually, when I play this game in an emulator I activate single screen mode and forgo seeing the high score, which is no big deal as the game ends at 1 million and that’s always my goal.&lt;/p&gt;

&lt;p&gt;So I looked into the &lt;a href=&quot;https://faq.deltaemulator.com/using-delta/controller-skins&quot;&gt;Delta docs&lt;/a&gt; and &lt;a href=&quot;https://noah978.gitbook.io/delta-docs/skins&quot;&gt;skin docs&lt;/a&gt; and find that the options to show a single screen, or rotate it, are controlled by the skin (visual theme) you are using.&lt;/p&gt;

&lt;p&gt;Reading further into skins the capabilities seemed quite comprehensive, so I began to hatch a plan… &lt;em&gt;maybe I can create a custom skin just for MaBoShi&lt;/em&gt;?&lt;/p&gt;

&lt;hr /&gt;

&lt;h2 id=&quot;i-love-it-when-a-plan-comes-together&quot;&gt;I love it when a plan comes together&lt;/h2&gt;

&lt;p&gt;Here’s the feature list I came up with:&lt;/p&gt;
&lt;ol&gt;
  &lt;li&gt;show the main game screen&lt;/li&gt;
  &lt;li&gt;show only the score from the secondary screen&lt;/li&gt;
  &lt;li&gt;remove all controls other than the d-pad, start and delta button&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;I achieved this goal as follows:&lt;/p&gt;
&lt;ol&gt;
  &lt;li&gt;define two seperate screens to split the DS image&lt;/li&gt;
  &lt;li&gt;rotate each of the screens&lt;/li&gt;
  &lt;li&gt;overlap the screens so that only the score from the secondary screen is visible&lt;/li&gt;
  &lt;li&gt;rotate the d-pad direction controls&lt;/li&gt;
  &lt;li&gt;made the touch/game screen a big button&lt;/li&gt;
  &lt;li&gt;make empty space equivalent to nearest button&lt;/li&gt;
  &lt;li&gt;create a nice PDF to show the buttons visually&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;If you’re interested in the JSON associated with this skin, &lt;a href=&quot;https://gist.github.com/gingerbeardman/00a75a0675da8a98faa0812383eb822e&quot;&gt;here it is on GitHub&lt;/a&gt;.&lt;/p&gt;

&lt;hr /&gt;

&lt;h2 id=&quot;maximum-joy&quot;&gt;Maximum joy&lt;/h2&gt;

&lt;p&gt;Installation and download instructions are at the bottom of the page, but here’s the final skin:&lt;/p&gt;

&lt;p class=&quot;deltaskin&quot;&gt;&lt;img src=&quot;https://cdn.gingerbeardman.com/images/posts/delta-maboshi-deltaskin.png&quot; alt=&quot;PNG&quot; /&gt;&lt;/p&gt;

&lt;p class=&quot;tofigure&quot;&gt;&lt;img src=&quot;https://cdn.gingerbeardman.com/images/posts/delta-maboshi-deltaskin-instructions.png&quot; alt=&quot;PNG&quot; title=&quot;Game instructions are presented when the phone is in landscape&quot; /&gt;&lt;/p&gt;

&lt;hr /&gt;

&lt;h2 id=&quot;installation&quot;&gt;Installation&lt;/h2&gt;

&lt;p&gt;To install the skin you need to do a little bit of busy work, but boy is it worth it:&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;Install &lt;a href=&quot;&quot;&gt;Delta&lt;/a&gt; and get it running DS games (&lt;a href=&quot;https://www.youtube.com/watch?v=lV_QfVvXA-o&quot;&gt;check this video&lt;/a&gt;)&lt;/li&gt;
  &lt;li&gt;Create a folder called Delta in your iCloud Drive so you can easily store/retrieve some downloads&lt;/li&gt;
  &lt;li&gt;Download the following files:
    &lt;ul&gt;
      &lt;li&gt;&lt;a href=&quot;https://archive.org/download/maboshi-nintendo-ds/MaBoShi.nds.zip&quot;&gt;MaBoShi.nds.zip&lt;/a&gt; game file&lt;/li&gt;
      &lt;li&gt;&lt;a href=&quot;https://archive.org/download/maboshi-nintendo-ds/MaBoShi.jpg&quot;&gt;MaBoShi.jpg&lt;/a&gt; artwork&lt;/li&gt;
      &lt;li&gt;&lt;a href=&quot;https://cdn.gingerbeardman.com/files/NDS_MaBoShi.deltaskin&quot;&gt;MaBoShi.deltaskin&lt;/a&gt; custom skin&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;Open the .nds.zip game file in Delta&lt;/li&gt;
  &lt;li&gt;Tap and hold the game icon to show a menu&lt;/li&gt;
  &lt;li&gt;Choose “Change Artwork”&lt;/li&gt;
  &lt;li&gt;Select the .jpg you downloaded earlier&lt;/li&gt;
  &lt;li&gt;Choose “Change Controller Skin”&lt;/li&gt;
  &lt;li&gt;Select the skin using the + button and set it as both Portrait and Landscape skin for the game&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Check out &lt;a href=&quot;https://gamefaqs.gamespot.com/wii/946472-maboshis-arcade/faqs&quot;&gt;my MaBoShi Guide at GameFAQs&lt;/a&gt; to learn more about the game and how to play it. It’s essentially a one button game so isn’t affected by the lack of physical buttons.&lt;/p&gt;
</description>
          <author>by Matt Sephton</author>
          <pubDate>Thu, 18 Apr 2024 19:55:00 +0000</pubDate>
          <link>https://blog.gingerbeardman.com/2024/04/18/per-game-skins-in-the-delta-classic-video-game-emulator-for-ios/</link>
          <guid isPermaLink="true">https://blog.gingerbeardman.com/2024/04/18/per-game-skins-in-the-delta-classic-video-game-emulator-for-ios/</guid>
        </item>
      
    
      
        <item>
          <title>Going back to the old (pre-X) Twitter iOS app</title>
          <description>&lt;p&gt;There are two main ways to do this. As of 2025 I recommend the first one, using a tweaked app, but I’ll leave the second one up for the sake of history as it still works, albeit more limited in use.&lt;/p&gt;

&lt;hr /&gt;

&lt;h2 id=&quot;using-a-tweaked-app&quot;&gt;Using a tweaked app&lt;/h2&gt;

&lt;p&gt;My current recommended way of doing this to sideload a tweaked version of the Twitter/X app.&lt;/p&gt;

&lt;p&gt;You’ll need a tweaked Twitter.ipa and the version I use is &lt;a href=&quot;https://github.com/ghl3m0n/FuckElon&quot;&gt;a version by ghl3m0n&lt;/a&gt; that also replaces all X branding with the bird.&lt;/p&gt;

&lt;p&gt;Tweaked apps have additional plugins and extensions added to them. The most common and useful tweak is BHTwitter, which will block ads and most bots whilst enabling some extra features. The only real downside to tweaked apps is that they don’t support deep linking like the original apps, but you can use the bundled Safari extensions and/or &lt;a href=&quot;https://www.opener.link&quot;&gt;Opener app&lt;/a&gt; to work around that.&lt;/p&gt;

&lt;p&gt;Then you will need to pick a method of installing, using &lt;a href=&quot;https://altstore.io&quot;&gt;AltStore&lt;/a&gt;, &lt;a href=&quot;https://appdb.to&quot;&gt;appdb&lt;/a&gt;, &lt;a href=&quot;https://sidestore.io&quot;&gt;SideStore&lt;/a&gt;, &lt;a href=&quot;https://github.com/khcrysalis/Feather&quot;&gt;Feather&lt;/a&gt;, &lt;a href=&quot;https://sideloadly.io&quot;&gt;Sideloadly&lt;/a&gt;, or similar. Depending which method you choose you may have to reinstall or reactivate the app from time to time.&lt;/p&gt;

&lt;hr /&gt;

&lt;h2 id=&quot;using-an-old-version-of-the-app&quot;&gt;Using an old version of the app&lt;/h2&gt;

&lt;p&gt;Here’s how you can downgrade to an older version of Twitter (pre-X changes) and install it in a way that means &lt;em&gt;it will not be automatically updated&lt;/em&gt;.&lt;/p&gt;

&lt;figure class=&quot;img-with-caption&quot;&gt;
&lt;picture&gt;
  &lt;source srcset=&quot;https://cdn.gingerbeardman.com/images/posts/twitter-old-installed.avif&quot; type=&quot;image/avif&quot; /&gt;
  &lt;source srcset=&quot;https://cdn.gingerbeardman.com/images/posts/twitter-old-installed.webp&quot; type=&quot;image/webp&quot; /&gt;
  &lt;img src=&quot;https://cdn.gingerbeardman.com/images/posts/twitter-old-installed.png&quot; alt=&quot;&quot; title=&quot;&quot; loading=&quot;lazy&quot; /&gt;
&lt;/picture&gt;
&lt;figcaption class=&quot;caption&quot;&gt;Twitter 9.66 (858339189) running on an iPhone Xs just now&lt;/figcaption&gt;&lt;/figure&gt;

&lt;h3 id=&quot;downloading-the-old-version&quot;&gt;Downloading the old version&lt;/h3&gt;

&lt;p&gt;This is the trickiest part of the process as it requires installing some old software and following a guide. But don’t worry—it’s not that difficult! You’ll need access to an old version of iTunes (so it’s most easily done using Windows) and about 15 minutes to carry out the steps.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://github.com/qnblackcat/How-to-Downgrade-apps-on-AppStore-with-iTunes-and-Charles-Proxy&quot;&gt;Follow this great step-by-step tutorial&lt;/a&gt;. It might seem complicated but it is quite easy. A high level summary of what is involved in the guide is as follows:&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;Install old iTunes &amp;amp; Charles Proxy&lt;/li&gt;
  &lt;li&gt;Configure intercepting of the latest app download&lt;/li&gt;
  &lt;li&gt;Change the version of the app to be downloaded&lt;/li&gt;
  &lt;li&gt;Download the old version&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Notes:&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;id 858339189 (version 9.66) predates the rebrand to X&lt;/li&gt;
  &lt;li&gt;id 848443565 (version 9.7.2) predates Blue&lt;/li&gt;
  &lt;li&gt;id 840768123 (version 8.56) predates Spaces&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The result of this process is a completely legitimate .ipa file, tied to your Apple ID in exactly the same way that apps normally are. As such, the resulting file can be installed on your device and once installed would be no different to an app you’ve downloaded directly from the App Store. This also means that if you share your .ipa with somebody else they would need to log in to your account using your Apple ID to do so, which is undesirable. Best if they download their own! Send them this blog post.&lt;/p&gt;

&lt;h3 id=&quot;avoiding-updates&quot;&gt;Avoiding updates&lt;/h3&gt;

&lt;p&gt;If you install the .ipa file onto your phone using Finder, iTunes, Apple Configurator it will install just fine. But, because of the metadata that is included the .ipa, it will be checked for updates and automatically updated soon after installation. We need to go deeper.&lt;/p&gt;

&lt;p&gt;There is a little-known method of installing apps on an iOS device which will prevent it from being checked for updates. I discovered this method &lt;a href=&quot;/2016/07/19/how-to-prevent-an-individual-ios-app-from-updating-forever/&quot;&gt;back in 2016&lt;/a&gt; when I used it to downgrade the eBay and Gmail Inbox apps.&lt;/p&gt;

&lt;h3 id=&quot;installing-the-app&quot;&gt;Installing the app&lt;/h3&gt;

&lt;p&gt;Before we begin, you don’t need to remove the current app you’re using. But best to make sure to backup any data you need from it regardless! You may, or may not, need to login once the old version of the app is reinstalled.&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;Copy your backup of .ipa somewhere where you can work on it&lt;/li&gt;
  &lt;li&gt;Open the .ipa with Archive Utility to decompress it&lt;/li&gt;
  &lt;li&gt;Expand the resulting folder until you go into the Payload folder&lt;/li&gt;
  &lt;li&gt;You’ll see Twitter.app (on macOS the icon has a “no entry sign” because it’s an iOS app)&lt;/li&gt;
  &lt;li&gt;Connect your device&lt;/li&gt;
  &lt;li&gt;Open Apple Configurator (you might need to &lt;a href=&quot;https://archive.org/details/apple-configurator&quot;&gt;use an old version&lt;/a&gt;)&lt;/li&gt;
  &lt;li&gt;Double click on your device (missing this will mean you can’t do step 8)&lt;/li&gt;
  &lt;li&gt;Click Add &amp;gt; App &amp;gt; Choose from my Mac…&lt;/li&gt;
  &lt;li&gt;Confirm you want to overwrite the old app&lt;/li&gt;
  &lt;li&gt;Wait for the app to install on your device&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;You’re done!&lt;/p&gt;

&lt;p class=&quot;tofigure&quot;&gt;&lt;img src=&quot;https://cdn.gingerbeardman.com/images/posts/twitter-old-payload.png&quot; alt=&quot;PNG&quot; title=&quot;Locating the Twitter .ipa Payload&quot; /&gt;&lt;/p&gt;

&lt;h3 id=&quot;questions&quot;&gt;Questions&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Why can’t I add the app to my phone?&lt;/strong&gt;
    Either you missed step 7, or you need to &lt;a href=&quot;https://archive.org/details/apple-configurator&quot;&gt;use an older version of Apple Configurator&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why does downloading this way work?&lt;/strong&gt;
    iTunes used to be able to download apps this way, so we’re just persuading it to download a particular version. The app is attached to your Apple ID and totally legitimate, no funny business.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why does installing this way work?&lt;/strong&gt;
    Installing the payload directly means the App Store app has no record of the app being installed so it does not check for updates to it. You can confirm this by going to the App Store page for the app, where it will show it is yet to be downloaded.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Will the old app stop working at some point?&lt;/strong&gt;
    Eventually, yes. Older versions lack support for modern Twitter features but that can be a desirable feature depending on your point of view. But let’s enjoy the old experience for as long as we can.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Can I get help to do this?&lt;/strong&gt;
    No, sorry. You need to do it yourself for various reasons. It will take less than 1 hour to read all the steps, then follow them one-by-one.&lt;/p&gt;

&lt;p&gt;Long live the bird!&lt;/p&gt;
</description>
          <author>by Matt Sephton</author>
          <pubDate>Thu, 17 Aug 2023 18:39:00 +0000</pubDate>
          <link>https://blog.gingerbeardman.com/2023/08/17/going-back-to-the-old-pre-x-twitter-ios-app/</link>
          <guid isPermaLink="true">https://blog.gingerbeardman.com/2023/08/17/going-back-to-the-old-pre-x-twitter-ios-app/</guid>
        </item>
      
    
      
        <item>
          <title>Playing old 32-bit iOS games in 2021</title>
          <description>&lt;p&gt;With the introduction of iOS 11 in 2017 Apple stopped supporting 32-bit apps on iOS. This event came to be known as the app-ocalypse with users forced to stay on iOS 10 to keep their apps or upgrade and abandon them. I seem to remember I stuck around on iOS 10 for a while but eventually succumbed to the upgrade and said good by to a bunch of stuff.&lt;/p&gt;

&lt;p&gt;At this time, I was still managing my iPhone and app updates through iTunes, with a weird ritual of downloading the latest updates to my Mac. It was useful for keeping on top of what I had installed and deleting apps I was no longer interested in. Around the same time Llamasoft were disillusioned with the App Store and pulled all of their games.&lt;/p&gt;

&lt;p&gt;Anyway, I took one or both of those things as a sign to download and backup a couple of games in particular: Llamasoft’s &lt;a href=&quot;http://www.minotaurproject.co.uk/Minotaur/minotron.php&quot;&gt;Minotron: 2112&lt;/a&gt; and &lt;a href=&quot;http://www.minotaurproject.co.uk/Minotaur/gridrunner.php&quot;&gt;Gridrunner&lt;/a&gt;, part of their &lt;a href=&quot;http://www.minotaurproject.co.uk/Minotaur/minotaurprj2.php&quot;&gt;Minotaur Project&lt;/a&gt; series of games. I bought a few more from that series but I only kept my two favourites.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;/2021/03/08/two-old-llamasoft-iphone-and-ipad-games/&quot;&gt;Earlier this year&lt;/a&gt; I uploaded them to internet archive as an act of preservation. Somebody recently downloaded them and was trying to make them work on their devices, without much luck. It seemed that the apps were tied to my account and I’d have to share decrypted versions. I’d need an old device capable of running iOS 10 or older, and one susceptible to jailbreaking. I figured that would be a fun afternoon. Here’s the process I went through:&lt;/p&gt;

&lt;h2 id=&quot;restore-working-system&quot;&gt;Restore working system&lt;/h2&gt;

&lt;ol&gt;
  &lt;li&gt;Bought a used &lt;a href=&quot;https://en.wikipedia.org/wiki/IOS_10#Supported_devices&quot;&gt;device that supports iOS 10&lt;/a&gt; (or earlier, if you prefer)&lt;/li&gt;
  &lt;li&gt;Downgraded my device to iOS 10.3.3 using &lt;a href=&quot;https://github.com/rA9stuff/LeetDown&quot;&gt;leetdown&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;Installed &lt;a href=&quot;/2021/03/08/two-old-llamasoft-iphone-and-ipad-games/&quot;&gt;my two .ipa files&lt;/a&gt; using &lt;a href=&quot;https://support.apple.com/en-gb/apple-configurator&quot;&gt;Apple Configurator 2&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;Confirmed that the games work by playing a little of each&lt;/li&gt;
&lt;/ol&gt;

&lt;h2 id=&quot;jailbreaking-the-device&quot;&gt;Jailbreaking the device&lt;/h2&gt;

&lt;ol&gt;
  &lt;li&gt;Installed &lt;a href=&quot;https://github.com/SongXiaoXi/sockH3lix/releases/latest&quot;&gt;sockH3lix&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;Did jailbreak with sockH3lix (only takes a second or two!)&lt;/li&gt;
  &lt;li&gt;Noted that Cydia has been installed&lt;/li&gt;
  &lt;li&gt;Installed Clutch (took a couple of tries to find a &lt;a href=&quot;https://sharerepo.stkc.win/?repo=https://stek29.rocks/cyrepo/&quot;&gt;working repo&lt;/a&gt;)&lt;/li&gt;
&lt;/ol&gt;

&lt;h2 id=&quot;decrypt-the-minotron-game&quot;&gt;Decrypt the Minotron game&lt;/h2&gt;

&lt;ol&gt;
  &lt;li&gt;Installed &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;OpenSSH&lt;/code&gt; via Cydia&lt;/li&gt;
  &lt;li&gt;Logged in over SSH from my Mac&lt;/li&gt;
  &lt;li&gt;Ran &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Clutch -b uk.co.llamasoft.minotron&lt;/code&gt;&lt;/li&gt;
  &lt;li&gt;SFTP in from my Mac and copy the decrypted .ipa to my Mac&lt;/li&gt;
&lt;/ol&gt;

&lt;h2 id=&quot;video&quot;&gt;Video&lt;/h2&gt;

&lt;p&gt;I could capture the attract loop using QuickTime Player but for some reason the recording crashed whenever a sound was played.&lt;/p&gt;

&lt;lite-youtube style=&quot;aspect-ratio: 4/3;&quot; videoid=&quot;RZSjR4dIykU&quot; params=&quot;start=0&amp;amp;modestbranding=2&quot;&gt;
&lt;/lite-youtube&gt;

&lt;p&gt;And &lt;a href=&quot;https://www.instagram.com/p/CTwautQAXUp/&quot;&gt;here’s an Instagram video of me playing the main game&lt;/a&gt;, albeit quite badly is I’m only using one hand!&lt;/p&gt;

&lt;h2 id=&quot;gridrunner&quot;&gt;Gridrunner&lt;/h2&gt;

&lt;p&gt;For some reason Clutch and other decrypting apps don’t work for me with Gridrunner. Since then, &lt;a href=&quot;https://archive.org/details/gridrunner-ios&quot;&gt;somebody was kind enough to create a decrypted version and upload it to Internet Archive&lt;/a&gt;.&lt;/p&gt;
</description>
          <author>by Matt Sephton</author>
          <pubDate>Mon, 13 Sep 2021 23:59:00 +0000</pubDate>
          <link>https://blog.gingerbeardman.com/2021/09/13/playing-old-32-bit-ios-games-in-2021/</link>
          <guid isPermaLink="true">https://blog.gingerbeardman.com/2021/09/13/playing-old-32-bit-ios-games-in-2021/</guid>
        </item>
      
    
      
        <item>
          <title>About the interoperability of System 7 and iOS</title>
          <description>&lt;p&gt;It never fails to amaze me how at home System 7 feels on an iPad. In fact, I’d go so far as to say I’ve never felt more capable than when I’m using it this way. &lt;em&gt;What a time to be alive!&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Still, there are times when it makes sense to lean on the features of the host device to get your job done more easily. In this post I detail common tasks that involve “crossing the streams”.&lt;/p&gt;

&lt;hr /&gt;

&lt;h2 id=&quot;file-conversions&quot;&gt;File Conversions&lt;/h2&gt;

&lt;p&gt;When transferring files to/from System 7 you’re going to need to convert them to/from suitable formats to make your life easier. Below I’ve listed my approach to the most common file types. Of course, your task may differ but I hope this gives you some useful hints.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Bitmap files&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I use &lt;a href=&quot;https://pixaki.com&quot;&gt;Pixaki&lt;/a&gt; which is a fantastic native iPad app for creating pixel art. It will load either layered Photoshop or flat PNG files, both of which are easy to generate in System 7:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;PSD: Photoshop 3.0&lt;/li&gt;
  &lt;li&gt;PNG: GraphicConverter 4.1&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Vector files&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Dealing with vector artwork produced in the Deneba apps that I use is a little trickier. We have to jump use a stepping stone or two. First we export a file that keeps the vector data—I tend to choose Illustrator 88—and then we load that into the majestic FreeHand and export an EPS from there.&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;I88: Illustrator 88 (aka version 1.7)&lt;/li&gt;
  &lt;li&gt;EPS: FreeHand 3/4/5&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Textual data&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I generally type in Markdown so plain-text TXT files work just fine and require no conversion. Programming source code files such as C, Pascal, or otherwise also transfer without incident.&lt;/p&gt;

&lt;p&gt;You may have some luck with Rich Text RTF files, and also with some versions of the Microsoft Word DOC file format, to transfer formatted text both ways without having to convert it to other file formats.&lt;/p&gt;

&lt;p&gt;More exotic document formats will be trickier, but &lt;a href=&quot;https://www.libreoffice.org&quot;&gt;LibreOffice&lt;/a&gt; can open number of older formats as read-only files. Examples are: AppleWorks, ClarisWorks, Nisus Writer, WordPerfect, and more.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Tabular data&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Excel&lt;/em&gt; 4.0 has you covered for CSV, XLS and more.&lt;/p&gt;

&lt;hr /&gt;

&lt;h2 id=&quot;file-io&quot;&gt;File I/O&lt;/h2&gt;

&lt;p&gt;To get files out of System 7 simply drop them onto the File Sharing drive, open Files, and long press on the file to get a list of the available actions. The exact options that iOS will give you will depend on the apps you have installed. Don’t be a stranger over at the App Store!&lt;/p&gt;

&lt;hr /&gt;

&lt;h2 id=&quot;printing&quot;&gt;Printing&lt;/h2&gt;

&lt;p&gt;To print any type of document from System 7, I make use of software that allows printing to a PDF. It’s worth noting that the result is a bitmap PDF, not vector, but it’s good enough to get hold of a quick hardcopy.&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;PDF: Acrobat PDFWriter 3.0&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Of course, if you are working with vector files you’ll have a proper scalable vector PDF file that you can print in exactly the same way.&lt;/p&gt;

&lt;p&gt;Once the PDF is in File Sharing, use iOS to print it wirelessly to an AirPrint compatible printer.&lt;/p&gt;

&lt;hr /&gt;

&lt;h2 id=&quot;multitasking&quot;&gt;Multitasking&lt;/h2&gt;

&lt;p&gt;iOS is only a swipe away, so remember that you can access iOS apps and services and swipe System 7 away at any time.&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;strong&gt;Split View&lt;/strong&gt; (if you enabled it when building BasiliskII) for side-by-side browsing in Safari&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Slide Over&lt;/strong&gt; for quick access to Files, Photos, Safari, etc.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Background&lt;/strong&gt; to listen to Music or Podcasts&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Picture-in-Picture&lt;/strong&gt; for YouTube or other video playback&lt;/li&gt;
&lt;/ul&gt;

&lt;hr /&gt;

&lt;h2 id=&quot;downloading-files&quot;&gt;Downloading files&lt;/h2&gt;

&lt;p&gt;&lt;em&gt;Safari&lt;/em&gt; will let you download classic Macintosh file formats. Even though it doesn’t know how to handle them, they will automatically be saved on your iPad in Downloads.&lt;/p&gt;

&lt;p&gt;From there you can use Files to copy the file into BasiliskII’s File Sharing folder, or use the iOS Share Sheet to copy the file into BasiliskII and simultaneously open the emulator! Very handy. I use one or the other depending on my goal.&lt;/p&gt;

&lt;p&gt;Some file formats you are likely to come across:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;strong&gt;.hqx&lt;/strong&gt;—BinHex file&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;.bin&lt;/strong&gt;—MacBinary file&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;.sit&lt;/strong&gt;—StuffIt archive&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;.cpt&lt;/strong&gt;—CompactPro archive&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;.sea&lt;/strong&gt;—self-extracting archive&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The above files can be converted or extracted using StuffIt, MindExpander, or CompactPro. You might also see files with more than one extension, in which case don’t worry the file has been treated twice for good measure, you may have to open it twice in System 7 to get it into its final/original form.&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;strong&gt;.dsk&lt;/strong&gt;—disk image&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;.img&lt;/strong&gt;—disk image&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;.smi&lt;/strong&gt;—self-mounting disk image&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The above disk images can be mounted using StuffIt, ShrinkWrap, DiskCopy 6. You could also mount them in the BasiliskII interface, but I tend not to do so for disk images that I won’t have mounted for very long.&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;strong&gt;.iso&lt;/strong&gt;—standard CD-ROM disk image&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;.toast&lt;/strong&gt;—proprietary CD-ROM disk image&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The above optical disk images should be mounted using the BasiliskII settings interface (shown at first launch, or whenever you shake your device). Disks mounted in this way will be available at every boot, and can only be removed by shutting down the system and restarting the emulator.&lt;/p&gt;

&lt;h3 id=&quot;related-posts&quot;&gt;Related posts&lt;/h3&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;/2021/04/17/turning-an-ipad-pro-into-the-ultimate-classic-macintosh&quot;&gt;Turning an iPad Pro into the Ultimate Classic Macintosh&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;/2021/04/21/building-basiliskii-for-ios/&quot;&gt;How to install BasiliskII on your iPad&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;/2021/04/19/automating-interactions-using-apple-events/&quot;&gt;Exploring Custom Keyboards and Automation&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;/2021/03/28/changing-the-size-of-toolbar-items-using-resedit/&quot;&gt;Optimising Macintosh app toolbars for touch&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;/2021/04/24/macintosh-drawing-software-compared/&quot;&gt;Macintosh drawing software compared&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;/2021/04/25/mixing-external-tools-across-deneba-software/&quot;&gt;Mixing External Tools across Deneba software&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;/2021/04/30/my-system-7-software-choices/&quot;&gt;My System 7 software choices&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;About the interoperability of System 7 and iOS&lt;/li&gt;
&lt;/ul&gt;
</description>
          <author>by Matt Sephton</author>
          <pubDate>Mon, 03 May 2021 00:00:00 +0000</pubDate>
          <link>https://blog.gingerbeardman.com/2021/05/03/interoperability-of-system-7-and-ios/</link>
          <guid isPermaLink="true">https://blog.gingerbeardman.com/2021/05/03/interoperability-of-system-7-and-ios/</guid>
        </item>
      
    
      
        <item>
          <title>Two Old Llamasoft iPhone &amp; iPad games</title>
          <description>&lt;p&gt;Back in 2017 a large number of games and apps were rendered obsolete when iOS 11 removed 32-bit compatibility: the appocalypse. At that time I was still downloading apps into iTunes as backups, and seem to have put aside these two great Llamasoft games. What foresight!&lt;/p&gt;

&lt;p&gt;You should be able to side load them onto any jailbroken iOS device running iOS 10 or earlier, like an iPad mini (1st generation will be usable as-is; later generations may need to be downgraded), iPod touch (1st to 5th generation will be usable as-is; later generations may need to be downgraded) or similar iPhone.&lt;/p&gt;

&lt;p&gt;I’m still hoping for an easy way to play these on modern devices, so let me know if such a thing exists!&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://archive.org/details/minotron-2112&quot;&gt;Minotron: 2112&lt;/a&gt;  (iPhone, iPod touch &amp;amp; iPad)&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://archive.org/details/gridrunner-ios&quot;&gt;Gridrunner&lt;/a&gt; (iPhone, iPod touch &amp;amp; iPad)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;img src=&quot;https://cdn.gingerbeardman.com/images/posts/playing-old-32-bit-ios-games-in-2021.jpg&quot; alt=&quot;IMG&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Edit, 2021-09-13: I’ve added a decrypted version of Minotron that should be easier to install on a jailbroken device.&lt;/p&gt;

&lt;p&gt;Edit, 2025-02-06: I can’t remember when exactly, but a kind somebody provided me with a decrypted version of Gridrunner which I’ve now uploaded to its page.&lt;/p&gt;

&lt;p&gt;For more info on generating a decrypted IPA file: &lt;a href=&quot;/2021/09/13/playing-old-32-bit-ios-games-in-2021/&quot;&gt;/2021/09/13/playing-old-32-bit-ios-games-in-2021/&lt;/a&gt; &lt;/p&gt;
</description>
          <author>by Matt Sephton</author>
          <pubDate>Mon, 08 Mar 2021 00:00:00 +0000</pubDate>
          <link>https://blog.gingerbeardman.com/2021/03/08/two-old-llamasoft-iphone-and-ipad-games/</link>
          <guid isPermaLink="true">https://blog.gingerbeardman.com/2021/03/08/two-old-llamasoft-iphone-and-ipad-games/</guid>
        </item>
      
    
      
        <item>
          <title>Why is the iOS PayPal app so big?</title>
          <description>&lt;p&gt;The size reported on the App Store (204MB as of today for PayPal version 6.8.0) does not take into account App Thinning.&lt;/p&gt;

&lt;p&gt;The &lt;a href=&quot;http://developer.apple.com/library/content/documentation/IDEs/Conceptual/AppDistributionGuide/AppThinning/AppThinning.html&quot;&gt;App Thinning&lt;/a&gt; process only delivers the parts of the app required by the device. For example, the launch screen for iPad would not be downloaded onto my iPhone; and the 32-bit binary would not be downloaded on a 64-bit device. For my iPhone 6s, the actual installed size is 131.7MB (see &lt;em&gt;Settings &amp;gt; General &amp;gt; Storage &amp;amp; iCloud Storage &amp;gt; Manage Storage&lt;/em&gt;).&lt;/p&gt;

&lt;p&gt;If I download the PayPal app through iTunes it is delivered as a compressed .ipa archive of 85.8MB. I can inspect this archive as detailed in another answer of mine: &lt;a href=&quot;http://www.quora.com/What-is-the-iOS-url-scheme-for-Apples-Numbers-app&quot;&gt;What is the iOS url scheme for Apple’s Numbers app?&lt;/a&gt; Doing so I can see that the extracted app total of 152MB is composed as follows:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;https://miro.medium.com/max/1400/0*fcZ1UW9u2lGjdGKs.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;

&lt;p&gt;The &lt;a href=&quot;http://grandperspectiv.sourceforge.net/&quot;&gt;GrandPerspective app&lt;/a&gt; can also give a visual representation of the number of files that comprise the app and how they vary in size:&lt;/p&gt;

&lt;p class=&quot;tofigure&quot;&gt;&lt;img src=&quot;https://miro.medium.com/max/1400/0*hjm0UTia4RBEHqpp.png&quot; alt=&quot;&quot; title=&quot;Grand Perspective: a graphical representation of file sizes and quantity&quot; /&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Originally published at&lt;/em&gt; &lt;a href=&quot;https://www.quora.com/Why-is-the-iOS-Paypal-app-so-big-195-Mb&quot;&gt;&lt;em&gt;www.quora.com&lt;/em&gt;&lt;/a&gt;&lt;em&gt;.&lt;/em&gt;&lt;/p&gt;
</description>
          <author>by Matt Sephton</author>
          <pubDate>Thu, 26 Jan 2017 00:00:00 +0000</pubDate>
          <link>https://blog.gingerbeardman.com/2017/01/26/why-is-the-ios-paypal-app-so-big/</link>
          <guid isPermaLink="true">https://blog.gingerbeardman.com/2017/01/26/why-is-the-ios-paypal-app-so-big/</guid>
        </item>
      
    
      
        <item>
          <title>Look Up</title>
          <description>&lt;p&gt;One of my favourite little touches in macOS: &lt;a href=&quot;https://support.apple.com/kb/PH25145&quot;&gt;Look Up&lt;/a&gt;&lt;/p&gt;

&lt;p class=&quot;tofigure&quot;&gt;&lt;img src=&quot;https://miro.medium.com/max/1400/1*o0qDHgYheXx7f5-hIf7Fvw.png&quot; alt=&quot;PNG&quot; title=&quot;Example of the Context Menu in Safari showing “Look Up”&quot; /&gt;&lt;/p&gt;

&lt;p&gt;And don’t forget that you can add look up support for Emoji symbols using my &lt;a href=&quot;http://emojipedia.org/app/&quot;&gt;Emojipedia Dictionary&lt;/a&gt;.&lt;/p&gt;

&lt;h2 id=&quot;detecting-data&quot;&gt;Detecting Data&lt;/h2&gt;

&lt;p&gt;On iOS (since version 10) and macOS (since 10.5 Leopard) there’s a feature called &lt;a href=&quot;https://support.apple.com/kb/PH25702&quot;&gt;Data Detectors&lt;/a&gt; that helps recognise various forms of data in text, such as phone numbers, street addresses, contacts, and so on.&lt;/p&gt;

&lt;p&gt;A simple version of this is the use of capitalised words as markers to detect phrases during &lt;em&gt;Look Up&lt;/em&gt;. It’s not foolproof, as we can see in my video, but it works well more often than not.&lt;/p&gt;

&lt;lite-youtube style=&quot;aspect-ratio: 9/10;&quot; videoid=&quot;4yTATXHic_c&quot; params=&quot;start=0&amp;amp;modestbranding=2&quot;&gt;
&lt;/lite-youtube&gt;

</description>
          <author>by Matt Sephton</author>
          <pubDate>Thu, 08 Dec 2016 00:00:00 +0000</pubDate>
          <link>https://blog.gingerbeardman.com/2016/12/08/look-up/</link>
          <guid isPermaLink="true">https://blog.gingerbeardman.com/2016/12/08/look-up/</guid>
        </item>
      
    
      
        <item>
          <title>Apple Event: September 2016</title>
          <description>&lt;p&gt;This is my first iPhone launch since leaving Apple, and that’s the only excuse I need to take a guess as to what today’s announcement might feature.&lt;/p&gt;

&lt;p&gt;Given the amount of rumours and leaks, I think we’re set for a substantially improved iPhone 7 with no headphone socket—my guess is for reasons of waterproofing more than anything else. In addition to those changes the iPhone 7 plus will feature a dual lens camera plus the improved capabilities and photography it enables. The iPhone 7 plus might even have Apple Pencil support, a feature that I expect to reach all touch screen Apple devices as time goes on.&lt;/p&gt;

&lt;p&gt;With the removal of the 3.5mm socket we’re set to see wireless ear buds, perhaps using a custom, Apple-designed chipset to provide better-than-Bluetooth performance. Maybe with a cool name that somehow riffs on the Thunderbolt and Lightning to start a new lineage of wireless transfer protocols.&lt;/p&gt;

&lt;p&gt;If laptops are featured—and I’m not sure they will be—then it’ll be with speed bumps due you the latest Intel processors, and a new design including the configurable touch screen OLED bar in place of the row of function keys that has been leaked numerous times.&lt;/p&gt;

&lt;p&gt;So, that leaves us with the Apple Watch 2. This is rumoured to feature improved battery life and GPS. What better app to show that off with than the biggest game in the world right now: Pokémon Go? With a revised app the Watch could become your very own Pokémon Go Plus—notifying you when there’s something happening nearby. Game changer. Interestingly the standalone version of the Pokémon Go Plus controller hardware device was delayed from July to September and is iOS-only. I’m sure Apple would much rather feature their own device rather than one from Google/Nintendo.&lt;/p&gt;

&lt;p&gt;Well, that was fun!&lt;/p&gt;

&lt;p&gt;Less than one hour to go until the #AppleEvent&lt;/p&gt;
</description>
          <author>by Matt Sephton</author>
          <pubDate>Wed, 07 Sep 2016 00:00:00 +0000</pubDate>
          <link>https://blog.gingerbeardman.com/2016/09/07/apple-event-september-2016/</link>
          <guid isPermaLink="true">https://blog.gingerbeardman.com/2016/09/07/apple-event-september-2016/</guid>
        </item>
      
    
      
        <item>
          <title>How to prevent an individual iOS app from updating, forever</title>
          <description>&lt;blockquote&gt;
  &lt;p&gt;Note, August 2023: this method is outdated, for the latest &lt;a href=&quot;/2023/08/17/going-back-to-the-old-pre-x-twitter-ios-app/&quot;&gt;please see this newer blog post&lt;/a&gt;.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Change is the only constant. Nowhere is this more visible than on the App Store. &lt;a href=&quot;http://www.statista.com/statistics/258160/number-of-new-apps-submitted-to-the-itunes-store-per-month/&quot;&gt;Thousands of new apps and games appear every day&lt;/a&gt; and existing apps receive regular updates to add features and fix bugs. This will only accelerate further now that the App Store is firing on all cylinders and review times are &lt;a href=&quot;http://appreviewtimes.com&quot;&gt;measured in hours rather than days&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;But what if you want to continue to use an old version of an app for your own reasons? Perhaps the old version has a better user interface, or the new version has some bugs? I can remember both of these issues affecting me numerous times over the years. The eBay app is the example that springs to mind.&lt;/p&gt;

&lt;p&gt;General consensus of opinion is that the only thing you can do is switch off automatic updates in iOS and avoid updating that particular app manually, which is easier said than done.&lt;/p&gt;

&lt;h2 id=&quot;there-has-to-be-a-better-way&quot;&gt;There has to be a better way&lt;/h2&gt;

&lt;p&gt;It’s a little known fact that there is actually a way to install an old version of an app on your iOS device which will prevent it from being checked for updates. Read on to find out how this can be done. This tutorial uses eBay as the example app, but I’ve also carried out this process on Gmail, Instagram, VSCO and more.&lt;/p&gt;

&lt;p&gt;You will need:&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;good old iTunes,&lt;/li&gt;
  &lt;li&gt;the iOS device you want to install it on,&lt;/li&gt;
  &lt;li&gt;the USB cable for your iOS device.&lt;/li&gt;
  &lt;li&gt;a backup of the old version of the app as an .ipa file on your Mac. You’ll only have this if you use iTunes to sync your iOS device or download app updates. Have a look in your Time Machine or other backups in the following location:&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;~/Music/iTunes/iTunes Music/Mobile Applications&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;Warning: as part of this process you will be required to delete the current version of the app that you have installed on your iOS device. So be sure to backup any data from the app that is not stored in the cloud!&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2 id=&quot;enay&quot;&gt;eNay&lt;/h2&gt;

&lt;p&gt;eBay introduced a disastrous fourth version of &lt;a href=&quot;https://itunes.apple.com/gb/app/ebay-shop-search-buy-sell./id282614216?mt=8&quot;&gt;their app&lt;/a&gt; back in September 2015. It was a complete rewrite of the app that made it much more cumbersome to use, and was also missing key functionality and information that were present in the previous app. It was, understandably, &lt;a href=&quot;https://community.ebay.com/t5/eBay-Mobile-App-iOS/gp-p/Mobile-iOS&quot;&gt;met with a user revolt&lt;/a&gt;. eBay are now up to version 5.0 and it is arguably still not as good as the old version I like to use.&lt;/p&gt;

&lt;h2 id=&quot;vsc-no&quot;&gt;VSC-NO!&lt;/h2&gt;

&lt;p&gt;The photo editing app &lt;a href=&quot;https://itunes.apple.com/gb/app/vsco/id588013838?mt=8&quot;&gt;VSCO&lt;/a&gt; is another app that has enraged users with an update that destroys the usability of the app. Strangely enough that is also version 5.x and users are also outraged over the change.&lt;/p&gt;

&lt;h2 id=&quot;gfail&quot;&gt;Gfail&lt;/h2&gt;

&lt;p&gt;Yes again another disaserous version 5.x! This tim it is Gmail, the new version being very similar to the “Inbox by Gmail” app that has been bad and stayed bad for some time now. Gmail v5 is at one-star on the App Store.&lt;/p&gt;

&lt;h2 id=&quot;to-the-time-machine&quot;&gt;To the Time Machine!&lt;/h2&gt;

&lt;p&gt;Due to the fact I frequently do a manual update of all my apps through iTunes on my Mac, I had a backup of eBay 3.6.1 for iPhone and VCO 4.6.1 sitting in my Time Machine backup on my external drive.&lt;/p&gt;

&lt;h2 id=&quot;how-to-install-an-old-app-and-prevent-it-from-updating&quot;&gt;How to install an old app and prevent it from updating&lt;/h2&gt;

&lt;p&gt;Before we begin, remove the app you want to downgrade from your device by tapping and holding on it. Make sure to backup any data you need from it!&lt;/p&gt;

&lt;p&gt;This example uses the eBay app, but applies equally well to VSCO.&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;Copy your &lt;em&gt;backup&lt;/em&gt; of .ipa somewhere where you can work on it.&lt;/li&gt;
  &lt;li&gt;Open the .ipa with &lt;em&gt;Archive Utility&lt;/em&gt; to decompress it.&lt;/li&gt;
  &lt;li&gt;Expand the folder until you get to the &lt;em&gt;Payload&lt;/em&gt;.&lt;/li&gt;
  &lt;li&gt;Drop the &lt;em&gt;eBay.app from the Payload folder&lt;/em&gt; onto iTunes “My Apps”. It’s the one whose icon has a “no entry” on it.&lt;/li&gt;
  &lt;li&gt;If prompted, &lt;em&gt;replace the newer version&lt;/em&gt; of the app in iTunes (you can always download the latest version again from the App Store).&lt;/li&gt;
  &lt;li&gt;Check that iTunes recognises the app payload (for this to work apps must have been downloaded with an Apple ID that is authorised on this Mac). Don’t worry about the missing app icon, that’s OK.&lt;/li&gt;
  &lt;li&gt;Go into your iOS device screen, Apps section, find the app through search and press &lt;em&gt;Install&lt;/em&gt;.&lt;/li&gt;
  &lt;li&gt;&lt;em&gt;Apply&lt;/em&gt; changes to Sync, and you’re done!&lt;/li&gt;
&lt;/ol&gt;

&lt;h2 id=&quot;just-let-me-look-at-some-screenshots-to-figure-this-out-ok&quot;&gt;“Just let me look at some screenshots to figure this out”. OK!&lt;/h2&gt;

&lt;p&gt;&lt;img src=&quot;https://miro.medium.com/max/1520/1*gUV9EY1MRIoiXxbCDlTm7Q.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;https://miro.medium.com/max/1520/1*3Kwyf5B9csphNzx-3GH2IA.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;https://miro.medium.com/max/1520/1*Jf9vqIDutU0YZiuUMpXQ9g.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Steps 1, 2 &amp;amp; 3:&lt;/strong&gt; Work on a copy of your .ipa backup, extract it, find the payload app.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;https://miro.medium.com/max/1520/1*vLWOprl3ADFZ1YqrbWpL5w.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;https://miro.medium.com/max/1204/1*P1K_MTvZbHjCNdRpI21BeA.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;https://miro.medium.com/max/1520/1*6kOllWf4Bsvve3cBE1SRgw.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Steps 4, 5 &amp;amp; 6:&lt;/strong&gt; Drop the payload app onto iTunes, replace the newer version if prompted, check that the app is listed without an icon.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;https://miro.medium.com/max/1400/1*XjEi0Yc59GdO6uhiEJpMzQ.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 7:&lt;/strong&gt; Browse to the apps on your phone, find the app you just added, mark it for install. &lt;strong&gt;Step 8:&lt;/strong&gt; Sync, you’re done!&lt;/p&gt;

&lt;h2 id=&quot;so-how-does-this-work&quot;&gt;So how does this work?&lt;/h2&gt;

&lt;p&gt;What we are doing here is installing the app on the iOS device &lt;em&gt;without the associated app receipt&lt;/em&gt;, so the App Store app is not aware the old version is on the device and so will never prompt you to update it.&lt;/p&gt;

&lt;h2 id=&quot;how-do-i-undo-this-kind-of-install&quot;&gt;How do I undo this kind of install?&lt;/h2&gt;

&lt;p&gt;If you want to get things back to normal, simply delete the app from your iOS device and reinstall a newer version of the app without doing this trick.&lt;/p&gt;

&lt;h2 id=&quot;limitations&quot;&gt;Limitations&lt;/h2&gt;

&lt;p&gt;The one limitation of this is how long the developer will support the infrastructure that powers the old version of the app. For eBay this hasn’t been a problem to date, but there are no guarantees. Enjoy it whilst it lasts.&lt;/p&gt;

&lt;p&gt;Have fun keeping it old school! If you have any questions you as me on twitter @&lt;a href=&quot;https://twitter.com/gingerbeardman&quot;&gt;gingerbeardman&lt;/a&gt;.&lt;/p&gt;
</description>
          <author>by Matt Sephton</author>
          <pubDate>Tue, 19 Jul 2016 00:00:00 +0000</pubDate>
          <link>https://blog.gingerbeardman.com/2016/07/19/how-to-prevent-an-individual-ios-app-from-updating-forever/</link>
          <guid isPermaLink="true">https://blog.gingerbeardman.com/2016/07/19/how-to-prevent-an-individual-ios-app-from-updating-forever/</guid>
        </item>
      
    
      
        <item>
          <title>Review: ChuChu Rocket!</title>
          <description>&lt;p&gt;&lt;img src=&quot;https://64.media.tumblr.com/tumblr_lab0jaa6l61qbfpni.jpg&quot; alt=&quot;ChuChu Rocket!&quot; /&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The Dreamcast was the first truly online home video game console, and brought with it the first wave of fantastic online multi-player games that could be played on your TV. &lt;em&gt;ChuChu Rocket!&lt;/em&gt; was one of the best, an outstanding action puzzler with a glorious multi-player mode.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The aim of the game is to guide mice (“ChuChus”) around the screen into one or more goals (Rockets) whilst avoiding any cats (“KapuKapus”) that are roaming about. Both the mice and cats move in predictable ways - they always turn right when reaching a wall, they follow corners and they turn around when they encounter a dead end. The player places up to three arrows on the play field, which will direct anything that passes over them - both mice and cats. Arrows cannot be laid on top of other arrow or obstacles, and disappear over time and the oldest is removed if the player lays a fourth arrow. Special mice frequently appear, golden mice being worth many times more than regular mice and pink mice randomly changing gameplay in one of a number of ways. Such a simple premise quickly results in a maddening procession of mice and cats and all manner of confusion as players try to outwit each the positioning of arrows.&lt;/p&gt;

&lt;p&gt;Single player mode saw you play against the computer or in puzzle mode where you have to figure out the solution to puzzles by placing your arrows in the correct locations to get the mice to the exit, which was an excellent part of the game in itself. Local multi-player is an absolute riot and has to be seen to be believed - there simply aren’t many other games that are this much fun played with a few friends. Online multi-player was a great backup option to have as you’d never be short of people to play against. It’s something we’re used to these days with things like Xbox Live and as we have all grown up and got on with our own lives it’s often the preferred way to experience multi-player gaming.&lt;/p&gt;

&lt;p&gt;With the demise of the Dreamcast the game slowly faded away, briefly reentering the public eye a year later with a release on the Game Boy Advance. This handheld version matched the Dreamcast original feature for feature, with the exception of online play. However it did have slightly simplified graphics and an extra 2,5000 user-generated puzzles taken from the Dreamcast version’s online hub. There was a fan remake for the Atari ST which was an accurate but unofficial version of the game.&lt;/p&gt;

&lt;p&gt;Recently a version of the game was released on the App Store, but with features being spread across an iPhone version and an iPad version and it not feat as much content as the older GameBoy Advance version. It’s great to see such an original game get a new lease of life, but sad that it’s still missing important features from the original, showing just how far ahead of it’s time the Dreamcast was. Hopefully the iOS versions of the game will gain multi-player support in the future and finally give us the experience that was so enthralling those 10 years ago.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;This review is dedicated to my good friend Morgan, without whom I’d have never bought a Dreamcast. He will always be Mr Sega to me.&lt;/em&gt;&lt;/p&gt;

&lt;h2 id=&quot;links&quot;&gt;Links&lt;/h2&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;http://www.youtube.com/watch?v=WHBsA-PZXiA&quot;&gt;Watch the game on YouTube.com&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;http://www.mobygames.com/game/chuchu-rocket&quot;&gt;Find out more at mobygames.com&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;http://rg.atari.org/chuchu.htm&quot;&gt;Find out more about the Atari ST version at Atari.org&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
          <author>by Matt Sephton</author>
          <pubDate>Thu, 28 Oct 2010 14:01:00 +0000</pubDate>
          <link>https://blog.gingerbeardman.com/2010/10/28/chuchu-rocket/</link>
          <guid isPermaLink="true">https://blog.gingerbeardman.com/2010/10/28/chuchu-rocket/</guid>
        </item>
      
    

  </channel>
</rss>
