Archive for the ‘How To’ Category

In which I learn to branch

Thanks, Joe Groff

  1. git clone your existing repo
  2. cd into the new clone
  3. git checkout -b NEWBRANCHNAME
  4. make your changes, edits, tweaks
  5. cd back to the primary clone folder top level (in the folder)
  6. git add .
  7. git commit -m "A meaningful commit statement"
  8. git push -u origin NEWBRANCHNAME
  9. Hop onto github and use the branch pop-up menu to select your branch
  10. Create your new pull request.

Optional step 11 is “hope you have not overwhelmed the team with your proposal backlog.”

Monetizing while staying the “Good Guys”: the Tao of Red Herring

Copyright Blue Ox. Do not reproduce without permission.

Copyright Blue Ox. Do not reproduce without permission.

Red Herring (Free with IAPs) is one of my favorite iOS games. It’s one of the few single-device iOS games out there that plays better with groups of people than solo. My kids and I regularly gather round an iPad, launch Red Herring, and share time puzzling out the latest daily challenge and game packs.

It couldn’t be simpler: sixteen words and three unknown categories. It’s up to you to figure out how to group those words together leaving four stray red herring “spoilers” that may include words that look like they should fit but don’t actually belong, like “spine”, “bone”, “skin”, and “heart” in the example at the top of this post. The puzzles are tricky, silly, funny, and demanding.

Each game typically takes a few minutes, although a really tough board may last as long as a quarter hour or more. Fan sites have sprung up that offer cheats and solutions, a testament to how loyal and rabid this game’s fanbase can be.

Red Herring is from the creator of 7 Little Words, Moxie, Monkey Wrench, and a few other apps, all aimed at a family-friendly audience. I first wrote about Red Herring a couple of years ago, finding it to be fun and engaging. Last week, I had the opportunity to sit down and talk with Joe Jordan of Blue Ox. We discussed what it takes to grow and retain this kind of loyal customer base and provide a constant stream of creative, one-of-a-kind puzzles.

Blue Ox’s offerings use a standardized model: they include a trial pack to get users hooked, daily free puzzles that acts as maintenance doses, and budget-friendly IAP puzzle packs. Unlike King’s Candy Crush series, Blue Ox’s free users never get to a point where puzzles become impassable or the game sets up the proposition: “Pay us or stop playing.”

Jordan assured me that Blue Ox treasures its free users. “The potential marketing exposure is tremendous. The more they play, the more they’ll tell their friends about it and the more they feel a kinship with us and our games,” he said. That balance between free games and paid makes it easy to transition from free customer to revenue stream. For me, it’s when we’re out for Family Game Night and I want to grab a big set of puzzles to work on. The packs aren’t expensive and they offer a solid game “hang time”.

“We feel very strongly about the value proposition, giving people a good value,” Jordan said. “We’re always happy to have users continue to play, even when they’re just playing the free one.” It’s a philosophy that started with founder and owner Chris York. “Even in internal discussions, he’s always got the viewpoint that we love the customers who only play our daily games and never buy anything from us. They’re always a positive thing and not a drag.”

From a developer’s point of view, Blue Ox’s “virtuous circle” is aspirational. “Our way of approaching customers and potential customers is to give them enough benefit to support us and feel good about what they’re giving money to, the game that they’re a part of, and they like to talk to other people and they perpetuate that forward.”

The IAP becomes a rewarding gratification rather than a game-cheat to keep moving forward. Free daily games ensure that each IAP pack is a positive choice, not a shake-down.

Maintaining the quality of those packs is another business necessity. Each one is hand crafted, typically by professional crossword puzzle designers. Blue Ox has built a network of game authors over time. They started with a few crossword experts and branched out using word-of-mouth recommendations to create an extended team of contractors.

“Our first puzzle writer outside the company was a gentleman in Wisconsin named Ray Hamel. He’s a trivia guru and he brought that to bear on 7 Little Words and was one of the first creators working on Red Herring puzzles. We also have Sarah Hayes, who has written a ton of puzzles for us who is one of the top UK crossword puzzle writers.”

(Hayes also holds the world record for running a marathon while dressed as a beer bottle. The record applies across all bottle types, not just beer.)

Creating the right purchasable content for your game can make or break your application. “We contract with new writers for a small puzzle group to get a sense of what they can do and like to do. It gives a sense of the kind of puzzles they come up with.” When they find the right fit, they expand the contracts to larger batches. Red Herring puzzles are typically purchased in groups and they can take a long time to perfect. “It can be a painstaking process, going back and forth until it’s just right.”

A Red Herring puzzle has to be “unexpected, with relationships among all the different elements of the puzzles,” Jordan said. “We love misdirection: among the categories and between the categories and the red herrings. It has to be more than just, say, the position of a letter within a word or the number of letters that make up the word. There should be a deeper connection of the puzzle elements.”

I asked Jordan what makes a really good puzzle, and he provided several examples. About the puzzle at the top of this post, he wrote, “It is not complicated but it is elegant.”

And this next one? You might not expect to find Macaroni as a Penguin species or Fuseli as a red herring. “This puzzle has nice, discrete categories that require a certain amount of trivia knowledge (while avoiding esoterica). The fusilli/fuseli misdirection is somewhat rare – we’re not trying “gotcha” trickery – but it seems like it works here.”

Copyright Blue Ox. Do not reproduce without permission.

Copyright Blue Ox. Do not reproduce without permission.

Playing with sounds and word structure is another Red Herring trademark, as you see in the following example. “I’m a sucker for puzzles of this type, and I don’t see them enough,” Jordan says.

Copyright Blue Ox. Do not reproduce without permission.

Copyright Blue Ox. Do not reproduce without permission.

Here’s another of his favorites. Although the Jazz Greats may seem a little obvious, the Arthur Dent (Hitchhikers’s Guide to the Galaxy) and cat’s lives twists add a lovely resonance to the puzzle.

Copyright Blue Ox. Do not reproduce without permission.

Copyright Blue Ox. Do not reproduce without permission.

(There are just seven hills of Rome if you were wondering.)

From a programming point of view, there’s almost nothing in Red Herring that a competent coder couldn’t put out with a few weeks of effort and testing. The secret to its success isn’t its GUI or its graphics. Like the best of games, it’s a gateway to a larger experience. The solid puzzles behind the game are the basis of that experience.

Between its respectful balance of free-and-paid elements, and its commitment to ensuring high-quality puzzles, Blue Ox has evolved from a one-man effort to nearly a dozen employees servicing a core family of applications. If you’re starting your own games business, there are a lot worse business models you could follow and few that get it right more than this.

Screencasting AppleTV with join.me

Today, it occurred to me that I could use a web tool like join.me to share the contents of my headless Apple TV unit by broadcasting the QuickTime window I use. The free version of join.me offers reception for up to 10 people in an ad-hoc meeting, so I sent out a call for help and got a few people to pop in and offer feedback.

You join the meeting using a link supplied by the website. It took most testers a minute or two to hop in.

According to those testers, the results were fairly low quality and occasionally choppy. “It was clear at all times other than the choppiness,” one tester told me. Another said he got about 4fps at best. Artifacts were particularly noticeable during animation sequences:

Screen Shot 2015-11-09 at 6.44.55 PM

But during quieter moments, the screens were pretty readable:

Screen Shot 2015-11-09 at 6.46.00 PM

All in all? Not ideal, but promising.

Broadcasting a QuickTime screen this way isn’t limited to AppleTV, of course. QuickTime can render any iOS device screen for most modern lightning-based devices. So if you have an iPad app or iPhone utility you want to demonstrate in real circumstances using realworld interact, this is an interesting way to do so.

If you do give this approach a try, drop me a note and let me know how it goes for you. I suspect this will work best for screens that do little animation and are primarily text-based.

Thanks ajfoul, Lyle, Jonathan, David, August

Folderol FAQ: How do I delete color swatches?

Victor writes: “How do you remove color swatches from the swatch collection.”

Do you mean the ones in the system color picker? These?
Screen Shot 2015-11-08 at 9.27.18 AM
If so, follow these steps:

Click on the color picker tool (the dropper icon) and drag it to an empty square. Use the dropper to  “sample” the square

Screen Shot 2015-11-08 at 9.33.51 AM (2)
This  sample replaces the current color with “empty”
Screen Shot 2015-11-08 at 9.35.36 AM
Now drag the “empty” color on top of any swatch you want to delete
Screen Shot 2015-11-08 at 9.34.51 AM (2)
Boom, it’s gone:
Screen Shot 2015-11-08 at 9.36.58 AM
Thank you for buying folderol! Help spread the word. Write a review, tweet about the app, or share with your Facebook friends.

Dear Erica: Your book killed iBooks. Just kidding.

Ever since Apple introduced iBooks to the Mac, it has been an ongoing source of both frustration and utility. It offers an essential way for keeping on top of the Swift language both during beta periods and outside of them.

The Problem

Every now and then, however, this happens:

Screen Shot 2015-10-27 at 9.45.39 AM

You get stuck into a situation of endless “cannot downloads” in the Mac-based iBooks. (Everything seems to work right on iOS.) And it’s just a pain in the neck.

Searching for Solutions

At first I thought it was the iTunes Connect system, with content status updates. So I contacted iTC and they responded with this helpful email:

Screen Shot 2015-11-02 at 8.40.47 AM

I then contacted iTunes Store Customer Support and they responded with this helpful email:

Screen Shot 2015-11-02 at 8.42.24 AM

And that was about, oh say, a week or so ago. Nothing since then.

So I set out to search. I found any number of complaints about the problem, a few “solutions” but none of them worked for me. In the end, I had to merge together a few approaches to get iBooks to reset for me.

Steps to Take

Now, here’s the bad part. I’m going by memory. I didn’t take good notes because I just wanted the damned thing to work. So going from my imperfect memory, here’s more or less the steps I took. You may have to try re-ordering these because I’m not sure which sequence finally finally took after hours and hours of this stuff.

  • In iBooks, sign out. Store > Sign Out.
  • Quit out from iBooks.
  • In Terminal, ps -ax | grep -i BKAgentService, and kill -9 the process it finds.
  • Navigate to ~/Library/Containers and completely delete com.apple.BKAgentService. You might note that the so call “books that cannot download” actually appear in Data/Documents/iBooks/Books in some form. Deleting them here is pointless. (iBooks has a strange form of memory that will keep accessing the current state even after you delete this container, which is the biggest pain.)
  • Finally, (and I do know this is the final step), reboot. Do not log out/in or anything like that. Do the full reboot cycle.

When you log back in hopefully, you’ll be able to re-enter your credentials and not get the error that says “Library not found”. If you get that error, you’re usually farked. You can try to recreate the library, quit iBooks, and relaunch, but you’re usually back at the original state of “oh crap, it’s not working”.

Let me know

Please if you’re fixing things, keep notes because this was clearly not a one-time thing, and let me know the sequence that worked for you.

Converting the Swift Programming Language to PDF

An updated approach.

  1. Go to ~/Library/Containers/com.apple.BKAgentService/Data/Documents/iBooks/Books.
  2. Once there, locate the 881256329 epub folder. You must use a non-beta version of the book. Beta versions are DRM’ed. If your version appears to be DRM’ed (a holdover from the beta period), delete it in iBooks and re-download.
  3. Copy this epub folder to your desktop. Remove the epub extension, zip it, rename to epub. Apple uses a non-standard epub format, and these steps transform the book back to something Calibre can import and convert.
  4. Drag this epub into Calibre.
  5. Click Convert books, choose PDF.
  6. In Page Setup, select default output profile, set margins to 72 on each side
  7. In PDF Output, add printable TOC.
  8. Click OK and let the conversion start

Result:

Screen Shot 2015-10-28 at 4.34.56 PM

OS X Maps hint of the day

Want to grab the latest Maps data and don’t want to wait for updates? I’ve heard of a quick and easy solution, which is to delete ~/Library/Caches/GeoServices. This forces a cache flush and updates all your maps.

I noticed this might be especially handy today for those of you who use public transit in DC, Philly, Mexico City or Chicago.  Happy traveling all.

The ridiculous difficulty of getting aliased folders to update icons

psychedelic-volkswagen-1-927767-m

think I’ve got it down but not in a form that I could recommend anyone else using. Ever. Here are the steps that seem to work after massive googlage.

1. Update original (non-alias) icon as desired.

2. Delete aliases (Yes doctor, kill the patient)

3. Trash cache.

sudo /usr/bin/find /private/var/folders/ -name com.apple.dock.iconcache -exec rm {} \;
sudo /usr/bin/find /private/var/folders/ -name com.apple.iconservices -exec rm -rf {} \;
cd /Library/Caches/; sudo rm -rf com.apple.iconservices.store

4. Log out and back in or reboot computer. (No, really.)

5. Recreate the aliases or symbolic links.

For anyone who wants a good laugh, search the web for OS X alias icons won’t update.