<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Get Info: #opensource</title>
    <description>Posts tagged “opensource” — 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/opensource/</link>
    <atom:link href="https://blog.gingerbeardman.com/tag/opensource/index.xml" rel="self" type="application/rss+xml"/>
    <pubDate>Mon, 06 Jul 2026 14:37:40 +0000</pubDate>
    <lastBuildDate>Mon, 06 Jul 2026 14:37:40 +0000</lastBuildDate>
    <generator>Jekyll v4.4.1</generator>

    
      
        <item>
          <title>WebGL CRT Shader</title>
          <description>&lt;p&gt;I’m releasing my WebGL CRT Shader as open source.&lt;/p&gt;

&lt;p&gt;It creates a CRT/vintage TV effect so could be used in games, emulators, apps, demos, visuals, etc. It’s not a simulator just something that gives the same general old school vibe.&lt;/p&gt;

&lt;p&gt;As a WebGL shader, it runs on the device’s hardware GPU in the browser and renders to a &amp;lt;canvas&amp;gt; (or offscreen canvas). I currently use it with Three.js, and the demo below uses just a 2D canvas.&lt;/p&gt;

&lt;p&gt;It’s optimised to run well on low power devices as far back as iPhone XS, though I’m certain it can be optimised even further. &lt;a href=&quot;https://github.com/gingerbeardman/webgl-crt-shader/pulls&quot;&gt;PRs welcome&lt;/a&gt;! The easiest personal optimisation you might make would be removing processing of unused parameters.&lt;/p&gt;

&lt;p&gt;Is it scientifically correct? &lt;em&gt;Hell no.&lt;/em&gt; Does it look good? &lt;em&gt;Yes.&lt;/em&gt; Does it give you the feels? &lt;em&gt;Absolutely.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://github.com/gingerbeardman/webgl-crt-shader/&quot;&gt;github.com/gingerbeardman/webgl-crt-shader/&lt;/a&gt;&lt;/p&gt;

&lt;hr /&gt;

&lt;h2 id=&quot;history&quot;&gt;History&lt;/h2&gt;

&lt;p&gt;It began as a &lt;a href=&quot;https://bsky.app/profile/gingerbeardman.com/post/3lk2arnt4rc2o&quot;&gt;shader for Love2D&lt;/a&gt; at the beginning of 2025 (&lt;a href=&quot;https://gist.github.com/gingerbeardman/7392ee84fdb2e405d7437b5b12e4c12d&quot;&gt;here’s a gist of that one&lt;/a&gt;) and by the end of 2025 I had ported it to GLSL for a personal work-in-progress web game.&lt;/p&gt;

&lt;hr /&gt;

&lt;h2 id=&quot;live-demo&quot;&gt;Live Demo&lt;/h2&gt;

&lt;p&gt;Reach for the sliders!&lt;/p&gt;

&lt;p&gt;(You can scroll the demo horizontally on mobile)&lt;/p&gt;

&lt;div class=&quot;table-wrapper&quot;&gt;

  &lt;iframe src=&quot;https://gingerbeardman.github.io/webgl-crt-shader/&quot; width=&quot;740&quot; height=&quot;740&quot;&gt;
![screenshot](https://cdn.gingerbeardman.com/images/posts/glsl-web-crt-shader.png)
&lt;/iframe&gt;

&lt;/div&gt;

&lt;p&gt;^ Screenshot is Pico-8 classic &lt;a href=&quot;https://www.lexaloffle.com/bbs/?tid=3547&quot;&gt;Worm Nom Nom&lt;/a&gt; by Tic Tac Toad (kometbomb + iLKke) 🌸🍏🎩🐛💩&lt;/p&gt;
</description>
          <author>by Matt Sephton</author>
          <pubDate>Sun, 04 Jan 2026 17:44:00 +0000</pubDate>
          <link>https://blog.gingerbeardman.com/2026/01/04/webgl-crt-shader/</link>
          <guid isPermaLink="true">https://blog.gingerbeardman.com/2026/01/04/webgl-crt-shader/</guid>
        </item>
      
    
      
        <item>
          <title>Monokai Pro Vibrant theme for Nova editor</title>
          <description>&lt;p&gt;I neglected to blog about this in October 2024, so here it is now.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://github.com/gingerbeardman/Monokai-Pro-Vibrant.novaextension/releases/&quot;&gt;Monokai Pro Vibrant&lt;/a&gt; is my fork of the &lt;a href=&quot;https://github.com/keisto/Monokai-Pro.novaextension&quot;&gt;unofficial Monokai Pro theme&lt;/a&gt; for &lt;a href=&quot;https://nova.app&quot;&gt;Nova&lt;/a&gt; editor, by Tony Keiser.&lt;/p&gt;

&lt;p&gt;My fork has a few quality of life changes:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Theme Vibrancy is enabled, making focused and unfocused windows more distinguishable&lt;/li&gt;
  &lt;li&gt;Colour tweaks improve contrast when highlighting found instances of search terms&lt;/li&gt;
  &lt;li&gt;Comments are now &lt;em&gt;italicised&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I use the Spectrum variation of the theme with the &lt;a href=&quot;https://github.com/IBM/plex/releases/tag/%40ibm%2Fplex-mono%401.1.0&quot;&gt;IBM Plex Mono&lt;/a&gt; font to great effect.&lt;/p&gt;

&lt;p&gt;Since late-2025 I’m now using font &lt;a href=&quot;https://mass-driver.com/trial-fonts&quot;&gt;MD IO Trial&lt;/a&gt; (free for personal use).&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;https://cdn.gingerbeardman.com/images/posts/nova-monokai-pro-vibrant.png&quot; alt=&quot;IMG&quot; /&gt;&lt;/p&gt;

&lt;hr /&gt;

&lt;h2 id=&quot;monokai-pro&quot;&gt;Monokai Pro&lt;/h2&gt;

&lt;p&gt;The original &lt;a href=&quot;https://monokai.pro&quot;&gt;Monokai Pro&lt;/a&gt; theme by Wimer Hazenberg is not free, so I would encourage you to buy a licence even if you’re using an unofficial port or modification of the theme. It’s only right to support software developers. You can get a licence to use Monokai Pro from the original creator: &lt;a href=&quot;https://monokai.pro&quot;&gt;monokai.pro&lt;/a&gt;&lt;/p&gt;

&lt;hr /&gt;

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

&lt;p&gt;I filed a &lt;a href=&quot;https://github.com/keisto/Monokai-Pro.novaextension/pull/9&quot;&gt;PR for these changes&lt;/a&gt;, but it has not yet been accepted. I’m not comfortable distributing this on the official extension gallery at this time. So grab it from GitHub:&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://github.com/gingerbeardman/Monokai-Pro-Vibrant.novaextension/releases/&quot;&gt;github.com/gingerbeardman/Monokai-Pro-Vibrant.novaextension/releases/&lt;/a&gt;&lt;/p&gt;
</description>
          <author>by Matt Sephton</author>
          <pubDate>Wed, 14 May 2025 19:50:00 +0000</pubDate>
          <link>https://blog.gingerbeardman.com/2025/05/14/monokai-pro-vibrant-theme-for-nova-editor/</link>
          <guid isPermaLink="true">https://blog.gingerbeardman.com/2025/05/14/monokai-pro-vibrant-theme-for-nova-editor/</guid>
        </item>
      
    
      
        <item>
          <title>Stapler: I remade a 32 year old classic Macintosh app</title>
          <description>&lt;blockquote&gt;
  &lt;p&gt;The latest version of this app is now available as a free download on the Mac App Store.&lt;br /&gt;
More info on my apps website at: &lt;a href=&quot;https://www.gingerbeardman.com/apps/stapler&quot;&gt;gingerbeardman.com/apps/stapler/&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;A couple of days ago I was &lt;a href=&quot;https://news.ycombinator.com/item?id=41192547&quot;&gt;reading on Hacker News about a feature in some &lt;em&gt;Linux&lt;/em&gt; window managers where they allow collections of tabs from different apps&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;This reminded me of &lt;em&gt;BeOS&lt;/em&gt;, but at the same time it reminded me of an app from 1992 for classic Macintosh called &lt;a href=&quot;https://macintoshgarden.org/apps/stapler-11&quot;&gt;&lt;em&gt;Stapler&lt;/em&gt;&lt;/a&gt;, and how &lt;a href=&quot;https://twitter.com/gingerbeardman/status/1590051288951443456&quot;&gt;I’d talked about that&lt;/a&gt; and &lt;a href=&quot;https://twitter.com/gingerbeardman/status/1596573654674034691&quot;&gt;it’s one-time spiritual successor&lt;/a&gt;, &lt;a href=&quot;http://hasseg.org/launchList/&quot;&gt;&lt;em&gt;LaunchList&lt;/em&gt;&lt;/a&gt;, in the past. These were both similar apps that allowed you to collect and launch all the apps, files, folders, documents, related to a specific task, thus saving time. Or as Ali Rantakari so succinctly put it in 2009: “&lt;a href=&quot;http://hasseg.org/blog/post/249/launching-lots-of-stuff-at-once-on-your-mac/&quot;&gt;Opening a Bunch of Stuff at Once on Your Mac&lt;/a&gt;”.&lt;/p&gt;

&lt;p&gt;So over the past day or so I built my own take on this concept for modern macOS!&lt;/p&gt;

&lt;p&gt;Whilst my app is inspired by both Stapler (right down to the name) and LaunchList, my app adds improvements and features of its own and is more of a hybrid of both. For example, Stapler didn’t have drag and drop and LaunchList didn’t have zero-click auto-launch. My goal was to keep it as simple as possible, but no simpler. To that end, there are no preferences or settings in the app.&lt;/p&gt;

&lt;hr /&gt;

&lt;p class=&quot;tofigure&quot;&gt;&lt;img src=&quot;https://cdn.gingerbeardman.com/images/posts/stapler.png&quot; alt=&quot;PNG&quot; title=&quot;Stapler, for modern macOS (12.0 or newer)&quot; /&gt;&lt;/p&gt;

&lt;hr /&gt;

&lt;h2 id=&quot;tell-me-more&quot;&gt;Tell me more&lt;/h2&gt;

&lt;p&gt;The idea is you set up a Stapler Document per project containing related apps, files, folders, etc. Then you can open them all at once by launching the single document. Each document contains a list of aliases that can be managed, inspected, launched using the app. The key time-saver is that if you launch a Stapler Document directly, all the items in its list will automatically be launched. Cool!&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Work: text editor, run current game, pixel art editor, bitmap font app, todo list&lt;/li&gt;
  &lt;li&gt;Play: Music app, Hacker News app, Twitter app, script to position windows&lt;/li&gt;
  &lt;li&gt;Movie: run Caffeine to keep your computer on, shortcut to put displays to sleep&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It’s an odd way of thinking about working on a computer—it’s task-based rather than app-based or document-based. Indeed, some might say it’s an outdated way of approaching things. But I’m always &lt;a href=&quot;https://www.youtube.com/playlist?list=PLfF-zlMNYMd_ZioGb0BKdqwWnx0wCDSgU&quot;&gt;banging the drum&lt;/a&gt; about there being so much good stuff that was prematurely left behind along with the memories of System 7 (&lt;a href=&quot;/2021/04/17/turning-an-ipad-pro-into-the-ultimate-classic-macintosh/&quot;&gt;though I still use that&lt;/a&gt;), BeOS, OS/2, Amiga Workbench, GEM and the many alternative desktops of Atari ST, etc. So I thought I’d see if I could walk the walk as well as talk the talk.&lt;/p&gt;

&lt;h2 id=&quot;details&quot;&gt;Details&lt;/h2&gt;

&lt;p&gt;It’s written in Swift and SwiftUI and weighs in at 640KB, about one third of which is a multitude of icon files at many different sizes and resolutions. By creating a Document-Based App you get a ton of functionality for free, such as document/tab/window management, undo/redo (though I still needed to watch for it and refresh the app window), and much more.&lt;/p&gt;

&lt;p&gt;The editor is a native macOS window that’s kind of like list view in a file manager, or a spreadsheet, or a little folder…depending on your point of view. Plus some menu commands and keyboard equivalents. You can have multiple windows open at once, for example one window each for all your common tasks, giving you the ability to launch full tasks or parts of them with minimal effort.&lt;/p&gt;

&lt;p&gt;The items in each list are macOS &lt;a href=&quot;https://eclecticlight.co/2020/05/21/bookmarks-a-type-of-alias-their-access-and-use/&quot;&gt;bookmarks&lt;/a&gt; (sometimes: security scoped bookmarks) which are a type of authorised/verified/secure alias (in fact, they’re still called aliases in the code) that have been around for about 10–15 years. They contain the path plus a bunch more info. As macOS becomes more locked-down the recommended way of accessing files is to retrieve these bookmarks through the normal layers of system permissions and security. Without the bookmarks, for example just using plain text paths, I would not be able to show the full images in Quick Look or easily launch the list items. A key benefit is that the bookmark will still resolve if the file is moved somewhere else on the same disk, or even to a different volume!&lt;/p&gt;

&lt;p&gt;I store the items as JSON in the saved file, simply because I prefer it to XML (which is the main/default option). I wanted the files to still be human readable and editable to a degree.&lt;/p&gt;

&lt;p&gt;The files are launched using the default app specified by that file, so it can be changed on a per-file basis. Individual images might open in an image editor, image viewer, app to run OCR, script to run OCR on it, etc.&lt;/p&gt;

&lt;p&gt;Dealing with files was both cool and annoying, cool that you can get the bookmarks to files so easily, but annoying that you have to jump through so many hoops to work around the security and sandbox protections and end up having to do file requests in a long-winded way, and then there’s having to tweak plist entries to give the app just the right permissions. I’m using some features of SwiftUI that mean the app can’t run on anything before macOS 14 Sonoma. All-in-all I’d say modern macOS development is a bit of a mixed bag. Take it or leave it.&lt;/p&gt;

&lt;h2 id=&quot;bonus-tip&quot;&gt;Bonus tip&lt;/h2&gt;

&lt;p&gt;Make sure to &lt;em&gt;uncheck&lt;/em&gt;: &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;System Settings&lt;/code&gt; &amp;gt; &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Desktop &amp;amp; Dock&lt;/code&gt; &amp;gt; &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Windows&lt;/code&gt; &amp;gt; &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Close windows when quitting an application&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Then leave the windows of an app open as you quit it. When you next launch the app its windows will restore to their previous size and position. If you close the windows first, then the app will restore to having no windows open.&lt;/p&gt;

&lt;hr /&gt;

&lt;blockquote&gt;
  &lt;h2 id=&quot;thanks&quot;&gt;Thanks&lt;/h2&gt;

  &lt;p&gt;My good friend Dave Roberts (Serendipity App Company) for brainstorming why it was so damned difficult to get the app to react differently when a document was opened from Finder. Rip it up and start again! To Dustin Mierau for kickstarting this trend of remaking forgotten old apps for modern macOS. And eternal thanks to &lt;a href=&quot;https://twitter.com/chrispatterson/status/1822396663425532259&quot;&gt;Chris Patterson&lt;/a&gt; and Ali Rantakari for their apps.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;hr /&gt;

&lt;h2 id=&quot;since-launch&quot;&gt;Since launch&lt;/h2&gt;

&lt;ul&gt;
  &lt;li&gt;support added for macOS 12 and newer (was originally macOS 14 and newer)&lt;/li&gt;
  &lt;li&gt;new features added&lt;/li&gt;
  &lt;li&gt;omissions addressed&lt;/li&gt;
  &lt;li&gt;bug fixes&lt;/li&gt;
  &lt;li&gt;new icon on the way&lt;/li&gt;
&lt;/ul&gt;

&lt;hr /&gt;

&lt;h2 id=&quot;elsewhere&quot;&gt;Elsewhere&lt;/h2&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://news.ycombinator.com/item?id=41212193&quot;&gt;Hacker News&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://tidbits.com/2024/09/02/appbits-stapler-opens-multiple-apps-documents-and-folders/&quot;&gt;TidBits&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
          <author>by Matt Sephton</author>
          <pubDate>Sat, 10 Aug 2024 21:00:00 +0000</pubDate>
          <link>https://blog.gingerbeardman.com/2024/08/10/stapler-i-remade-a-32-year-old-classic-macintosh-app/</link>
          <guid isPermaLink="true">https://blog.gingerbeardman.com/2024/08/10/stapler-i-remade-a-32-year-old-classic-macintosh-app/</guid>
        </item>
      
    
      
        <item>
          <title>Piskel for Playdate</title>
          <description>&lt;p&gt;I just pushed some changes to my Playdate-centric fork of Piskel:&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://github.com/gingerbeardman/piskel-playdate/tree/dev-1047&quot;&gt;github.com/gingerbeardman/piskel-playdate/tree/dev-1047&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This fork:&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;can be used to build desktop apps on latest operating systems
    &lt;ul&gt;
      &lt;li&gt;updated to future-proof dependencies and build process&lt;/li&gt;
      &lt;li&gt;builds for Windows, Linux, macOS&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;has Playdate-specific features
    &lt;ul&gt;
      &lt;li&gt;get frame size from imagetable filename&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;has quality-of-life improvements
    &lt;ul&gt;
      &lt;li&gt;save keyboard shortcut will export PNG&lt;/li&gt;
      &lt;li&gt;ignore warnings preference&lt;/li&gt;
      &lt;li&gt;turns off animated preview by default&lt;/li&gt;
      &lt;li&gt;different window size and positioning&lt;/li&gt;
      &lt;li&gt;stops nagging if run in WebKit&lt;/li&gt;
      &lt;li&gt;modern macOS icon&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;adds useful community improvements
    &lt;ul&gt;
      &lt;li&gt;Outliner tool&lt;/li&gt;
      &lt;li&gt;Dither modifier keys&lt;/li&gt;
      &lt;li&gt;Keyboard cursor&lt;/li&gt;
      &lt;li&gt;Shift Palette Color Index Brush&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;adds new default Pencil tool
    &lt;ul&gt;
      &lt;li&gt;draws in the opposite color to that of the start pixel&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;hr /&gt;

&lt;h3 id=&quot;apple-silicon-support&quot;&gt;Apple silicon support&lt;/h3&gt;

&lt;p&gt;Check out the &lt;a href=&quot;https://github.com/gingerbeardman/piskel-playdate/blob/dev-1047/README.md&quot;&gt;readme&lt;/a&gt; for details on how to quickly generate a new build without having to build nw.js from scratch. It’s very easy! Thanks to &lt;a href=&quot;https://www.ayushmanchhabra.com&quot;&gt;Ayushman Chhabra&lt;/a&gt; for help and hints.&lt;/p&gt;

&lt;h3 id=&quot;image-table-support&quot;&gt;Image Table support&lt;/h3&gt;

&lt;p&gt;Most of the time I load Piskel and drop an image table (a sort of sprite sheet) on it. Having to manually enter frame/cell size dimensions got old really fast, so this was my main motivation for doing a custom build. It’s a simple hack that checks the file name and parses out the cell dimensions. Slightly more tricky was trigger changes to the import panel so that everything looked and worked as it should.&lt;/p&gt;

&lt;h3 id=&quot;ignore-warnings&quot;&gt;Ignore Warnings&lt;/h3&gt;
&lt;p&gt;After editing an image in Piskel the majority of the time I export it and then quit the app. The app always nags twice: firstly to make sure you wanted to “leave the site?” - a leftover from the fact this is a web tool at heart - and a secondly to make sure you want to “abandon unsaved changes?”. An option to ignore these warnings is such a time saver.&lt;/p&gt;

&lt;hr /&gt;

&lt;p&gt;I also took the opportunity to add some useful features developed by the community.&lt;/p&gt;

&lt;h3 id=&quot;outliner-tool&quot;&gt;Outliner tool&lt;/h3&gt;

&lt;p&gt;Thanks to &lt;a href=&quot;https://github.com/ElectricToy/piskel/pulls?q=is%3Apr+is%3Aclosed&quot;&gt;ElectricToy&lt;/a&gt; for this patch, it works like flood fill but only fills the outline of any pixels it hits. You can hold Cmd to do a slightly thicker outline including corners.&lt;/p&gt;

&lt;h3 id=&quot;dither-modifier-keys&quot;&gt;Dither modifier keys&lt;/h3&gt;

&lt;p&gt;Another one from &lt;a href=&quot;https://github.com/ElectricToy/piskel/pulls?q=is%3Apr+is%3Aclosed&quot;&gt;ElectricToy&lt;/a&gt;, this gives you 25% ad 75% dither patterns by holding modifier keys, in addition to the standard 50% checkerboard dither pattern.&lt;/p&gt;

&lt;h3 id=&quot;keyboard-cursor&quot;&gt;Keyboard cursor&lt;/h3&gt;

&lt;p&gt;I’m not sure how useful this really is, but I added it anyway. Thanks to &lt;a href=&quot;https://github.com/piskelapp/piskel/tree/keyboard-cursor&quot;&gt;juliandescottes&lt;/a&gt; for the patch. You can control the pixel cursor location using Alt+cursor, and space will activate the current tool at that location. I haven’t tried it but you could set up a game controller to use these keys and &lt;a href=&quot;https://readonlymemory.vg/the-making-of-speedball-2/&quot;&gt;draw like Dan Malone did&lt;/a&gt;!&lt;/p&gt;

&lt;h3 id=&quot;shift-palette-color-index-brush&quot;&gt;Shift Palette Color Index Brush&lt;/h3&gt;

&lt;p&gt;This tool allows you to do shading using neighbouring colours more easily. Thanks to &lt;a href=&quot;https://github.com/piskelapp/piskel/pull/887&quot;&gt;blurymind&lt;/a&gt;.&lt;/p&gt;

&lt;hr /&gt;

&lt;p&gt;And I even added a new tool myself!&lt;/p&gt;

&lt;h3 id=&quot;pencil-tool-new-default&quot;&gt;Pencil tool (new default)&lt;/h3&gt;

&lt;p&gt;Classic Macintosh style Pencil. Draws in the opposite color than that of the pixel the stroke begins on. If the stroke begins on transparent, or the secondary color, it draws in the primary color. If the stroke begins on the primary color, it draws in the secondary color. This minimizes the need to switch between selected colors. To draw in a single color you won’t need to change colors or tools at all.&lt;/p&gt;
</description>
          <author>by Matt Sephton</author>
          <pubDate>Wed, 10 May 2023 00:00:00 +0000</pubDate>
          <link>https://blog.gingerbeardman.com/2023/05/10/piskel-for-playdate/</link>
          <guid isPermaLink="true">https://blog.gingerbeardman.com/2023/05/10/piskel-for-playdate/</guid>
        </item>
      
    
      
        <item>
          <title>Iwata Asks Downloader</title>
          <description>&lt;p&gt;This tool downloads the Iwata Asks series of interviews, saving as Markdown and HTML with images. ePub files are optional and can be generated in a secondary post-process phase.&lt;/p&gt;

&lt;p&gt;I created this tool in Spring/Summer 2019 so that I could more easily read and search the Iwata Asks interviews.&lt;/p&gt;

&lt;p&gt;More details: &lt;a href=&quot;https://github.com/gingerbeardman/iwata-asks-downloader&quot; title=&quot;https://github.com/gingerbeardman/iwata-asks-downloader&quot;&gt;github.com/gingerbeardman/iwata-asks-downloader&lt;/a&gt;&lt;/p&gt;
</description>
          <author>by Matt Sephton</author>
          <pubDate>Sun, 05 Jan 2020 00:00:00 +0000</pubDate>
          <link>https://blog.gingerbeardman.com/2020/01/05/iwata-asks-downloader/</link>
          <guid isPermaLink="true">https://blog.gingerbeardman.com/2020/01/05/iwata-asks-downloader/</guid>
        </item>
      
    
      
        <item>
          <title>Emoji Dictionary 🤓 📖</title>
          <description>&lt;p&gt;One of my favourite features of Mac OS X is the ability to point the mouse cursor at a word and press &lt;em&gt;Command+Control+D&lt;/em&gt; to quickly see a popup definition courtesy of Dictionary.app:&lt;/p&gt;

&lt;p class=&quot;tofigure&quot;&gt;&lt;img src=&quot;https://miro.medium.com/max/804/1*z1FhHq7vt1X2oNOsnsH9xg.png&quot; alt=&quot;&quot; title=&quot;(you can also get this popup through a Force Click, or three-finger click/tap)&quot; /&gt;&lt;/p&gt;

&lt;p&gt;It annoys me when I use this feature on an Emoji and it doesn’t work. 😠&lt;/p&gt;

&lt;h2 id=&quot;diy&quot;&gt;D.I.Y.&lt;/h2&gt;

&lt;p&gt;During my job as a Technology Evangelist at Apple, I took great pride in learning as much as possible about the frameworks and tools that are provided to developers. One such toolkit allowed the creation of custom dictionaries for Mac OS X.&lt;/p&gt;

&lt;p&gt;So I thought it would be fun to use the Dictionary Development Kit to create a simple dictionary of Emoji and their meanings. It was! You can grab the finished dictionary here: &lt;a href=&quot;https://github.com/gingerbeardman/Emojipedia&quot;&gt;github.com/gingerbeardman/Emojipedia&lt;/a&gt;&lt;/p&gt;

&lt;p class=&quot;tofigure&quot;&gt;&lt;img src=&quot;https://miro.medium.com/max/1282/1*1zrc24g1nE6yyEVfjUHW5g.png&quot; alt=&quot;&quot; title=&quot; &quot; /&gt;&lt;/p&gt;

&lt;h1 id=&quot;how-it-works&quot;&gt;How it works&lt;/h1&gt;

&lt;p&gt;I grabbed a comprehensive list of &lt;a href=&quot;http://unicode.org/emoji/charts/emoji-list.html&quot;&gt;Emoji Data&lt;/a&gt; from the Unicode website, and then set about converting it. The process was as follows:&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;Convert Emoji Data table to plain text (select all &amp;amp; copy in Chrome).&lt;/li&gt;
  &lt;li&gt;Write some simple PHP to parse the text file and write out the XML.&lt;/li&gt;
  &lt;li&gt;Setup build process.&lt;/li&gt;
  &lt;li&gt;Test and repeat many times.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;For each Emoji I store the name and emoji itself, along with a list of keywords and aliases. That way you can search by word or theme and more easily find the emoji you’re looking for. I also list the keywords in the definition, which Dictionary.app automatically converts into hyperlinks allowing you to browse the Emojipedia dictionary just like a website.&lt;/p&gt;

&lt;h2 id=&quot;emojipedia&quot;&gt;Emojipedia&lt;/h2&gt;

&lt;p&gt;There’s only one place to go to find out information on any Emoji and that’s &lt;a href=&quot;http://emojipedia.org&quot;&gt;Emojipedia&lt;/a&gt;, a fantastic resource created by Jeremy Burge. I put a link to Emojipedia in every definition, so you can easily click through to find out more and continue learning about Emoji. I plan to work even closer with Emojipedia to include even more information in the dictionary file.&lt;/p&gt;

&lt;p class=&quot;tofigure&quot;&gt;&lt;img src=&quot;https://miro.medium.com/max/840/1*Pn7tHXghkM3yK1YPGJTBkQ.png&quot; alt=&quot;&quot; title=&quot; &quot; /&gt;&lt;/p&gt;

&lt;h2 id=&quot;for-hire&quot;&gt;For Hire&lt;/h2&gt;

&lt;p&gt;I offer a consultancy service that helps companies make better use of technology; from low level tools through to user interface and experience. &lt;a href=&quot;http://www.gingerbeardman.com&quot;&gt;Get in touch with me&lt;/a&gt; if you’d like to work together.&lt;/p&gt;

&lt;p&gt;It only remains for me to wish you a Happy &lt;a href=&quot;https://twitter.com/search?q=%23WorldEmojiDay&quot;&gt;#WorldEmojiDay&lt;/a&gt;! 🌍&lt;/p&gt;
</description>
          <author>by Matt Sephton</author>
          <pubDate>Sun, 17 Jul 2016 00:00:00 +0000</pubDate>
          <link>https://blog.gingerbeardman.com/2016/07/17/emoji-dictionary/</link>
          <guid isPermaLink="true">https://blog.gingerbeardman.com/2016/07/17/emoji-dictionary/</guid>
        </item>
      
    

  </channel>
</rss>
