Subscribe: ShaunInman.com // plus Elsewhere
http://www.shauninman.com/feed/made-fresh
Added By: Feedage Forager Feedage Grade B rated
Language: English
Tags:
app  color  day  email  fever  fingers  game  icon  mint fever  mint  new  night  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: ShaunInman.com // plus Elsewhere

ShaunInman.com // plus Elsewhere





Last Build Date: Sun, 26 Mar 2017 13:13:13 GMT

Copyright: Copyright 2001-2017 Shaun Inman
 



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.

(image)

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 refund@shauninman.com 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.




Harroween

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 morning while Link was still sleeping I drew a bunch of [...]



Day-O 2

Thu, 20 Oct 2016 16:36:00 GMT

(image)

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.)




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.

(image)




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)

    try
        ignoring application responses -- prevents hangs
            tell application app_
                activate
                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:

CFBundleURLTypes

    
        CFBundleURLName
        Tiled
        CFBundleURLSchemes
        
            tiled
        
    

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.




Everlong

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.

(image)

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 PlayOnMac.app 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.

(image)

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:

(image)
icon.php?color=ff0000

(image)
icon.php?color=00ff00

(image)
icon.php?color=0000ff

That’s all there is to it.




Remind

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.

(image)

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.




Fix Mavericks’ Power Button

Fri, 24 Jan 2014 03:02:00 GMT

In Mavericks, it seems like merely brushing the power button is enough to put a MacBook to sleep. This fix restores the pre-Mavericks behavior, presenting the Sleep/Restart/Shut Down dialog instead. And here’s how to get it to run on startup.




The Designologue Archive

Thu, 05 Dec 2013 05:40:00 GMT

Version 4.0 will probably never materialize. I’m okay with that now. But there was no sense in letting all the work I did on it go to waste. So tonight I ripped out all the participation functionality and launched it as a more modern archive. Here’s every image I ever designologued.




The Cancel Hanger

Sat, 19 Oct 2013 16:57:00 GMT

Are you about to start a new show on Netflix, Hulu, or Amazon? Heard great things only to find out it was canceled? Did the writers know it was coming and have enough time to conclude the story on their terms or did it all end on a cliffhanger? The Cancel Hanger hopes to have the (spoiler-free) answer.

The Pilot

A couple weeks ago I tweeted:

Is there a site that you can enter the name of a tv show and find out if it was cancelled on a cliffhanger? If not, there should be.

Turns out there wasn’t. That night I bought the domain name and slept on the idea. Two days later I had a few hours to myself to see if I could build a working proof of concept.

The Cliffhanger

Spoilers: I did. It was ugly but it worked. Searches hit the Cancel Hanger database first, if a match isn’t found, it searches TVRage. It will also do a background TVRage search if the search terms aren’t an exact match for an existing show.

It took another week or so of piecemeal tweaks to the search logic to get it where it is. Previously successful search terms are stored to speed up subsequent searches. Results are sorted by premiere date. It tries to be smart about shows from the same series like Star Trek, Law & Order, or Doctor Who.

TVRage can tell us if a show is ongoing or ended but when a show is canceled it doesn’t make a distinction between concluded or cliffhung. That’s where you come in! Whenever TVRage thinks a show was canceled (I’m almost positive The Sopranos and Lost were not canceled) you can sign in with Twitter and vote for concluded or cliffhung. And if you don’t know, there’s a handy Ask on Twitter link in case your friends and followers might.

The design is super bare-bones. I didn’t want users waiting for (relatively) huge JavaScript, CSS, or web font files to download for the answer to what is essentially a binary question: concluded or cliffhung?

The Finale

About a week ago I tweeted:

Built a thing piecemeal with stolen moments here & there. Now I want to release it but I just don’t have the time to support it right now :\

While that’s still mostly true, Retro Game Crunch released the complete version of Brains & Hearts on Thursday, so if this site blows up and takes down my entire server (unlikely but…) I should have a little bit of time over the next week to do something about it.

So check it out. And, if The Cancel Hanger doesn’t know if a show was concluded or cliffhung, don’t be shy about sharing the link on Twitter to get some answers!