Subscribe: // plus Elsewhere
Added By: Feedage Forager Feedage Grade B rated
Language: English
app  boy  color  day  email  fever  fingers  game boy  game  icon  mint fever  mint  open  protocol  simple  string  tiled 
Rate this Feed
Rate this feedRate this feedRate this feedRate this feedRate this feed
Rate this feed 1 starRate this feed 2 starRate this feed 3 starRate this feed 4 starRate this feed 5 star

Comments (0)

Feed Details and Statistics Feed Statistics
Preview: // plus Elsewhere // plus Elsewhere

Last Build Date: Sun, 25 Mar 2018 01:45:30 GMT

Copyright: Copyright 2001-2018 Shaun Inman


Fri, 12 May 2017 17:55:00 GMT

Lately I’ve been having trouble with light-on-dark sites throwing me into a visual migraine. In tweeting with John Gruber about it (the problem is particularly aggressive on Daring Fireball for some reason), I stumbled upon the idea of using a CSS filter to invert() the entire html element and then revert img elements. Daring Fireball doesn’t have a unique identifier that I can target with a custom user stylesheet so JavaScript bookmarklet it is.

Just drag this Invert link into your bookmarks. Browsers really don’t like this JavaScript for some reason. You’ll need to add a bookmark for the current page and then edit the name and address manually. Here’s that JavaScript:

javascript:(function(){var id='si-invert-style';var s=document.getElementById(id); if(s){s.parentNode.removeChild(s)}else{s=document.createElement('style');;s.innerHTML='html{filter:invert();} img{filter:invert();}';document.head.appendChild(s);}})();

So scary. Enjoy!

Classic Consoles Board Book

Sun, 07 May 2017 16:53:00 GMT


A couple months ago Lincoln surprised us while reading to him by repeating back the word excavator. That’s a big word compared to his daily vocabulary (at the time) of mama, dada, and (ba)nana. It got me thinking. We have lots of books about construction vehicles but how often really is he going to find himself on a construction site? He spends time daily in our family room, if we’re going multisyllabic, let’s break out the Nintendos and the PlayStations!

I remembered a Kickstarter from a couple years ago where some guy was photographing video game consoles for the public domain. Turns out Evan Amos’s project was successfully funded and the Vanamo Online Game Museum is now well-stocked with beautiful photographs of most of the systems I wanted to include (it’s really only missing the Famicom Edition Game Boy micro).

Next I found a site that prints custom board books and started planning the book. Because the book was going to be a one-off for my son, I was able to focus on just the consoles that were meaningful to me. I also chose to focus on classic consoles because there’s a point around the PS2 era where all consoles became these generic black (or white) rectangles (I’m so happy Nintendo is trying to bring some playfulness back into their designs with the neon Switch).

I included the original Famicom as a jumping off point because we actually have a Famicom AV for its RCA out and its accessories include a keyboard (I wanted to include some general, non-videogame specific vocabulary in the book too). The original NES, Game Boy, and Super Nintendo were no brainer additions since I had each growing up. I included the original PlayStation because we have the last 3 generations of PlayStations hooked up currently but none are as iconic as the original. The Game Boy Advance has been my most played handheld the past couple of years (in its SP and micro incarnations). Finally I included the GameCube because OMG-how-cute-is-that-handle? and we have one hooked up with a Game Boy Player for playing Game Boy games on the big screen.

I also added a simple sidebar to the design to highlight interesting accessories or features of each system as well as that generation’s also-rans (or in the case of the PlayStation 2, the victor). Sorry Sega Genesis, you had some great games and amazing soundtracks but mine was a Nintendo household growing up.

I picked a photo of the NES Tetris cartridge board for the cover because I like puns and it created a nice lockup with the book title. (Another visual pun?). For the back, I just laid out a simple grid of featured consoles without labels so we can review our vocabulary after paging through.

Lincoln loves it. His favorite spread seems to be the gray brick Game Boy one, he keeps trying to pick the Game Boy up and out of the book. I took a bunch of photos for posterity before handing it over which is good because it already has a few dings and it’s only going to get more worn from love and use as the years go by. Much like the consoles it contains.

(image) (image) (image) (image) (image) (image) (image) (image)

Little Fingers

Sat, 04 Feb 2017 19:52:00 GMT

Yesterday, after a quick Google, I wondered aloud on Twitter if there was a Mac app that could disable all keyboard and trackpad input via key command. There wasn’t so I made one. I call it Little Fingers.


Lincoln’s been under the weather and fussy so we’ve temporarily eased our no-screens approach to parenting and were watching some videogame and anime orchestral concert videos on YouTube. It was pretty chill except for when his little fingers would hit the trackpad or space bar pausing the video—or when he’d three-finger-swipe us out of fullscreen entirely.

During his next nap I did some digging and found some potentially promising APIs (CGEventTapCreate() and kCGEventMaskForAllEvents) and got to work. An hour or so later I had the foundation for Little Fingers. We tried it out a bit after dinner and success! I spent last night and a little time during his afternoon nap today putting together a basic 1.0.

Because Little Fingers intercepts all input to lockdown the keyboard and trackpad it requires explicit permission to use system-level Accessibility features. Apple doesn’t provide an especially user-friendly way to request this permission so the first launch experience leaves a bit to be desired. Sorry! (Working around this lacking workflow got Dropbox in a bit of hot water last year.)

I’d like to add a Launch at Login preference à la Day-O and tidy up and open source the code too (so people who might not be so familiar with my work can see for themselves that I’m not doing anything nefarious with the permissions the app requests). But that will all have to wait for another nap.

Update Little Fingers 1.1 introduces a Launch at Login preference. It also only listens for the events required to detect the global keyboard shortcut when not locked. And there’s now a public repository on GitHub so nervous nellies can confirm I’m not doing anything nefarious while listening for those events (and to point and laugh at my good-enough Swift code).

Little Fingers is offered free, as-is. I won’t be offering support or taking feature requests. That said, I hope Little Fingers treats you well.

Download Little Fingers.

Goodbye Mint, Goodbye Fever

Sat, 24 Dec 2016 15:04:00 GMT

The Short of It

As of today I’m officially suspending sales and support of Mint and Fever. But! As self-hosted software, absolutely nothing changes and you can continue using both Mint and Fever as you were yesterday.

If you purchased either in the past 60 days and would like a refund please email with your PayPal transaction ID and I’ll issue a refund.

The (Slightly) Longer Version

Ever since getting into game development, my attention and interest in Mint and Fever has noticeably waned. A decrease in my writing here left me with little reason to check my own Mint install and Fever proved a little too effective at weening me off compulsively checking feeds throughout the day.

In 2013, Retro Game Crunch committed to making a game a month. That same year I temporarily relocated to Denver to help care for my mom while she underwent cancer treatment. 2014 was a lost year, recovering from the trial that was 2013. In 2015, I started my next game (almost finished!). Late last year Leslie and I had a beautiful baby boy, now one. These things were not distractions. The baby and the new game and my next are where I will be focusing my energy going forward.

Over the course of developing Mint and Fever I’ve learned to avoid developing features I won’t personally use because I won’t notice when they break. It’s time I admit to myself that Mint and Fever are features I don’t use.

I am unbelievably grateful for everyone who found some utility, personal or professional, in these things that I built over the past decade. I also want to apologize to anyone who didn’t get their activation key in a timely manner or has had a pre-sale or support request go unanswered for too long. I hope Mint and Fever treat you well for as long as you continue to use them.


Thu, 03 Nov 2016 17:58:00 GMT

This is the story of Lincoln’s harrowing first Halloween. Long story short: Lincoln is doing great. We were discharged from the hospital yesterday, and today, while still a little dehydrated, he’s all hugs and giggles, his normal charming self. This is kind of a long story. And the details are painful. The Friday before last weekend I caught a nasty stomach virus. Despite quarantining myself to the bedroom, Leslie caught it by that Sunday night. Leslie ended up in the ER on Monday evening for dehydration and low potassium. During this sickness we had some unrelated plumbing issues. Then just as we were starting to reestablish our routine, I wrenched my back on Wednesday night. It took another two days before things started to feel normal again. On Saturday, Link was a little fussy but enjoyed our belated trip to pick up some pumpkins and vote early. Sunday, he napped a little longer than usual and had a low grade fever. By that night he had a 102.7° fever so we contacted his pediatrician who recommended alternating Tylenol/Advil and lukewarm baths to control the fever. Later that night his fever jumped to 103.8°. He threw up three times, all his personality and color drained from his face. His breath was quick and wheezing. We moved his crib into our room and kept a close watch through the night, eventually getting his fever down to around 101°. The next morning we visited his pediatrician as soon as they opened, expecting a simple ear infection, naively for sure. His ears were clear. They did a blood test, Link’s first stick of many, and discovered that both his platelets and hemoglobin were low. The platelets were 51k, down from the normal 150k. So they sent us to Hematology at the hospital downtown. We’d been to the hospital for blood tests before when he was first born because they were concerned about jaundice so we weren’t especially alarmed. At Erlanger, oncology and hematology share a department. It was Halloween so the ladies at the front desk were dressed as cowgirls. Ninja Turtles, super heroes, and Disney princesses roamed the halls, reverse trick-or-treating. Children with bare heads. One patient was dressed as Luigi (Baby Luigi, his mother explained, since he refused to wear the mustache). Our room had a dinosaur-shaped exam table. They pricked another finger. I promised Link that most Halloweens the blood was fake. And not his. After they dressed his finger we dubbed him Edward Bandaidhands. It was a short wait while the doctor examined his blood. His platelets had dropped again to 40k. They explained this was not an especially scary number but combined with his hemoglobin levels they were going to admit Lincoln over night and test his bone marrow in the morning. I felt my eyes dilate and my face scrunch up. They mentioned Leukemia. A resident, dressed as a boxer, came in to ask more questions. Pocahontas and another cowgirl came in and gave us meal cards and asked about what types of toys Link likes to play with. We waited some more. Link, still not himself, endured lots of hugs before finally falling asleep in my arms. We were assigned a room and relocated. We talked with Dr The Little Mermaid. Link needed an IV for fluids and eventually the anesthesia for tomorrow’s procedure. But cherubs have tiny, tiny veins. His most accessible ones were in his scalp but the first attempt failed to flush or draw, I don’t remember all the terms. They tried 3 or 4 other locations in his arms and wrists before calling in a nurse so experienced she still wore the traditional nurse’s cap. After over an hour total of poking Link had his first IV on the right side of his head. We dubbed him Linkutus of Borg and hugged him some more. Leslie stayed with Link while I drove home to collect clothes, medicine, his lovey Bun Bun (half bunny, half blanket), and have a good cry in the shower. On my way back I got halfway down the street before I turned around. That m[...]

Day-O 2

Thu, 20 Oct 2016 16:36:00 GMT


It’s been five years to the day since I released the original Day-O, a simple menu bar clock replacement with a simple icon and an equally simple fly-out calendar for your Mac.

So what’s new? Day-O now supports dark menu bars and transparency. I told you it was simple. (See the included readme.txt for a full list of changes and bug fixes.)

Day-O is offered free, as-is. I won’t be offering support or taking feature requests. That said, I hope Day-O treats you well.

Download Day-O 2. (If you’re on an older version of macOS you can still find the original Day-O here.)

The Littlest Playtester

Mon, 07 Dec 2015 17:28:00 GMT


Hello world! Lincoln Reese Jensen Inman born on December 7, 2015 at 12:28pm (9lb 5oz, 21in). Mommy and baby doing well.

And Game Boy Makes Three

Fri, 05 Jun 2015 00:02:00 GMT

Life moves fast. We’d always talked about children. When we first started dating we talked about life in the suburbs, matching minivans, basement game rooms. I may have even playfully promised to be the one to actually give birth. (This was supposed to be the future, right?) This, before even the font dates.

Life happened. Mint, Fever, Retro Game Crunch, for me. A Masters, a Doctorate, and teaching, for her. We travelled. All over the US, Reykjavik, London, Tokyo, Sydney, Melbourne, Belfast, Dublin. I spoke. She spoke. When one of us got tired of talking, would rather be doing, the other picked up the slack.

I spent the better part of 2013 in Denver helping my mom beat breast cancer. The girl and I had done the long distance thing before. For years out of college, chasing each other up and down the East Coast, always one step ahead or one step behind. Just because you can do something doesn’t mean you want to do something.

Life was catching up with us. One of the things I learned in Denver was that I can care for someone—and I mean really support them—and not lose who I am. My brother and I were born almost a decade apart. I was an only child until I wasn’t. I don’t think I’ll ever fully kick the resulting selfishness but I’ve made some good progress. It was a hard year, but it was also one of, if not the, most productive years of my life.

So we talked. We’d been talking. For years. It’s not that either of us needed convincing. It’s just, you know, life. We got comfortable being us. It was always one big project into the next. Earlier this year, we decided it was now or never. Neither of us is old but we’re getting older. “Lowest of the high risk”, the doctor said. So we tried, prepared ourselves for having to try for a while, and it happened. Quickly. We are ecstatic.


Who You Gonna Protocol

Tue, 30 Sep 2014 16:03:00 GMT

While building a map-to-rooms generator for my next game I wanted to be able to open some Tiled JSON files from the browser. Just linking directly to the file with the file: protocol would open the JSON in the browser. And (as far as I know) Tiled doesn’t provide its own custom protocol for opening its files. (I’m not prepared to declare all JSON files on my system Tiled files so setting Tiled to the default application for JSON files so I can double-click them in the Finder isn’t an option.)

Here’s how I defined my own custom protocol to open files in Tiled from the browser using a simple AppleScript app. (I know right!)

Open up AppleScript Editor and paste the following into the editor window:

on get_config()
    return {"Tiled", "tiled"} -- app name, protocol
end get_config

on open location url_
    set config_ to get_config()
    set app_ to item 1 of config_
    set protocol_ to item 2 of config_

    set start_ to (get length of protocol_) + 2 -- : then next character
    set end_ to length of url_
    set file_ to (get characters start_ thru end_ of url_ as string)

        ignoring application responses -- prevents hangs
            tell application app_
                open file_
            end tell
        end ignoring
    on error errStr
        display alert "Failed to open " & file_ & ": " & errStr
    end try
end open location

Then save it as an Application (it doesn’t matter where since you never need to open it manually). Back in the editor window click the Bundle Contents icon and then select “Reveal in Finder” from the gear contextual menu.

You should see your new app’s Contents folder. Open up Info.plist in a plain text editor. Add the following:



To the end of the file, right before the final:

Save Info.plist. That’s it. Now clicking a link in the browser with the tiled: protocol will open the desired file in Tiled.

eg. room

Changing the app and protocol are easy. Just change the app name and protocol strings in both the get_config() function in the AppleScript and in the nodes in Info.plist.


Sat, 06 Sep 2014 21:50:00 GMT

This old Foo Fighters song is in Drop-D tuning. Only, my low E-string barely stays in tune past the 7th fret when tuned normally. So how to reproduce that lovely drone without four finger chords that span five frets (ouch)? Drop the G-string down to F# and play with mostly open chords. Like so:

    Verse           Bridge         Chorus
    D/F# B/F# G/D                  B5 G5 D  A
e  ---------------|--------------|------------
b  -2----2----3---|-2-3-5-7-8----|-0--3--3--2-
F# -0----0----3---|-3-3-7-8-8--7-|-0--1--3--3-
D  -0-------------|-0-0-0-0-0--7-|----0--0----
A  ------2--------|------------0-|-2--------0-
E  -----------3---|--------------|----3-------

A couple hours and 8 tracks in GarageBand later (rhythm, lead, vocals, and falsetto, all doubled) I had this: Everlong.

Play Kero Blaster on a Mac

Sun, 25 May 2014 17:23:00 GMT

After thoroughly enjoying Kero Blaster on iOS (despite the on-screen buttons) I was curious about its free, PC-only prequel, Pink Hour. So I did some research and figured out a way to play it on the Mac without resorting to Bootcamp or a full Windows VM. This was tested on OS X Mavericks 10.9.3 on a 15” retina MacBook Pro.


Here we go!

Optional, preliminary step: Create a new standard User account (in System Preferences under Users & Groups). I just called mine “PC”. You might call it “Games”. The name doesn’t matter. None of this software should be harmful, I just didn’t want to clutter up my own User account.

First, download XQuartz (X11) and run the installer. Then download PlayOnMac and copy into your Applications folder. Launch PlayOnMac and go through the one-time Wizard which will download and install some Microsoft fonts. Finally, download the free Pink Hour or buy Kero Blaster from Playism. Unzip and launch the exe.

The PlayOnMac Wizard for automatic installation will appear. It will ask for the name of the application you are launching. It will appear to hang on installation but the game should launch in X11. I was able to use a PS4 controller connected over USB without any configuration or third-party tools.

In X11, go into its Preferences and check “Full-screen mode” under the Output tab. The game window will dissappear. Press command+option+a to toggle fullscreen mode. I haven’t been able to get either game to go “Fullscreen” in its Screen Size settings without crashing but found it playable at “Screen size x2”.

The next time you launch the game, the PlayOnMac Wizard will detect the old settings and offer to use them. Click Yes and you should be able to continue from your last auto-save. Rad.

PHP Color Replacement

Sat, 24 May 2014 15:29:00 GMT

I’ve received a few emails asking how I do the color replacement for the Remind web clip icon. It’s implemented two ways, the preview is performed client-side, but the web clip itself must be composed server-side. Both start with a single white image with transparency where the color will appear.


The preview is pretty simple. You can view source on the Remind form page and check the updateSample() function. It just takes the value of the color input, filters out any non-hexadecimal characters, and sets the background-color of the icon.

The web clip is almost as simple. The color is passed to a PHP script that creates a new image the same size as the icon, floods it with the color, then “stamps” it with the original icon.png. This is what icon.php looks like:

(color.php uses $_REQUEST because my form handler receives the color value in the $_POST data but icon.php receives it via a query string so it shows up in $_GET. $_REQUEST just contains the contents of both.)

And you can request a colored icon like so:




That’s all there is to it.


Mon, 19 May 2014 03:26:00 GMT

Saturday night Mr. Diesel Sweeties tweeted about wishing he could add a shortcut to his home screen that would compose a new email to a predefined address in a single click. You know, a shortcut for those emails you send yourself in the middle of the night.

Turns out mailto: links don’t work in Safari bookmarks. You could create a bookmark with url that contains a meta refresh or http header to redirect but you’d still have to launch Safari.


So I built a mini-app, Remind. Enter your email address, hit Create then add it to your Home Screen. You can optionally enter a default subject and customize the color of the icon (in case you have a few addresses you want quick access to).

That’s it. When you tap an instance of Remind it opens up Mail, creates a new message with the predefined email address and optional default subject, and you’re ready to go.

(image) Offloading my logo design to Helvetica Neue. Flip it, clip it, ship it.

How’s it work? I don’t store your email address (or subject) on my server. When you hit Create, the email and subject are composed into a url. The color (but not your email or subject) is posted to that url. When that url recieves post data, it displays instructions to Add to Home Screen. When it doesn’t receive post data (like when you open the shortcut), it simply redirects to a mailto: link with the email address and subject pulled from the url itself. It even works offline (of course, the email will sit in your Outbox until the next time you’re online).

Anyway, just a quick little Sunday afternoon project that I thought others might find useful too. Check it out!

Update Looks like @jbradforddillon beat Remind to the punch by almost 2 years with MailNote. Plus it’s open source so you can host your own. You know what they say, “Great minds should have searched Github first.”

Indieverse Interview

Thu, 17 Apr 2014 13:15:00 GMT

A little over a week ago I sat down with Rubén Lozano and Indieverse to talk about how I got into game development, my lack of process, and my favorite food.

Lessn + SIDB

Fri, 31 Jan 2014 02:43:00 GMT

While we were busy making six games in six months *cough*, PHP 5.5 was released and the mysql_* family of functions were officially deprecated. Deprecation is the last stop before complete removal from the language, so after the retina-fication of Fever my next priority was transitioning to a more modern MySQL API (or two).

I looked at how I was using MySQL across all my sites and web apps, took into consideration the original server requirements for each, and then create a lightweight database library, SIDB (included in Lessn 1.1).

Lessn is the simplest of my web apps (that uses MySQL; Unplayed just uses flat Markdown files), so it’s the first to get the new database library. Next up is Fever, with Mint facing a much more difficult transition (because of the bare mysql_* calls through its own and third-party Pepper’s source).

Download the latest version of Lessn, follow the installation (or update) instructions in the included README.txt, and let me know if you run into any database issues!

Update By request, Lessn is now on Github.

Automatic Conditional Retina Images

Fri, 24 Jan 2014 03:06:00 GMT

Shared this on Twitter over a year ago (!), forgot about it, then needed it recently and had no idea where I had posted it. JavaScript + mod_rewrite = @2x. For posterity.