Editing preference files in OS X 10.9 and 10.10

This is not a problem that most people will ever encounter, but ever since I upgraded to OS X 10.9 I’ve been having a terrible time with preference plist files (I typically need to edit these to test bugs in MacRabbit software). Prior to OS X Mavericks and Yosemite it was possible to edit a plist file, launch the application, and your changes would automatically be read in. Now, however, there’s some sort of system-wide caching system that makes it very difficult to work directly with plists.

If for whatever reason you need to modify a plist file, here’s how to do it:

  1. Copy the plist somewhere safe (like your Desktop)
  2. Pop open the Terminal and run this command (replacing com.macrabbit.Espresso with the name of the plist you are trying to edit:

    defaults delete com.macrabbit.Espresso
  3. Edit the copy of the plist that you made (I like to use PlistEdit Pro), then copy it back into your ~/Library/Preferences folder
  4. In Terminal, run this command:

    defaults read com.macrabbit.Espresso

And there you have it! Next time you open the app, your modified preferences will be available. Kind of a pain, but at least it’s still possible!

Hohokum, and the final three hidden eyes

My wife has been playing (and loving) Hohokum on our PS4; it’s a wonderfully quirky little game where you are a flying eyeball/snake/rainbow thing trying to find and free your fellow eyeball-snakes. Very unique artwork, some hilariously weird internal logic for some of the levels, and just generally lots of fun. We’d highly recommend it to anyone who enjoys games that aren’t focused on shooting, stabbing, or punching stuff.

One of the reasons she enjoyed the game is that there are eyeballs scattered throughout the levels that open up when you fly over them, and she’s a big fan of optional collectibles that force you to explore. However, having tracked down all but three of the eyeballs, she just about pulled out all of her hair trying to find the remaining ones. Sadly, the internet was completely without help to offer, so for several weeks Hohokum lay collecting virtual dust on the PS4 shelf.

This isn’t a walkthrough, but there are spoilers ahead! If you are having trouble finding the final three eyeballs in Hohokum, here’s your first hint:

They’re located in the original world (full of flying worm-things and pop-able “nuts”), where the one-eyed geezer is chalking down your progress opening eyeballs.

Not enough? Okay, how about this:

You can find the final three eyeballs behind three of the pop-able nuts.

“Arg!” I hear you cry. “But there’s about a million of those dang nuts to pop!” Aside from the fact that you might want to do it anyway (achievements come to those who are anal retentive, after all), don’t you enjoy the thrill of the chase? The sense of personal achievement that comes from digging through the haystack to find those final three needles? (Assuming, of course, that you didn’t give up in the floating logs level…wow was that one ever a pain in the butt.)

No?

Yeah, my wife and I don’t either. Life’s too short. So here you go, the locations of the final three eyes (click for full size images):

Hohokum Eye #1   Hohokum Eye #2   Hohokum Eye #3

Enjoy your time with Hohokum!

Mexican hot chocolate chip cookies

One hot day a few summers back we wandered down to the local ice cream counter and discovered something wonderful: Mexican hot chocolate ice cream. Mmmmm.

Flash forward a year or two and my wife decided that she was going to recreate the awesomeness of their ice cream in cookie form. After several delicious tests to balance out the spices and get the technique right, she landed on a recipe that has quickly become a favorite of friends and family around the Beck household.

And now we’re sharing it with you!

Mexican hot chocolate chip cookie recipe

(Adapted from the Nestle Toll House Mint Chocolate Delights recipe)

  • 2 cups all-purpose flour
  • 2/3 cup cocoa powder (my wife prefers Hersey’s Special Dark)
  • 1 teaspoon baking soda
  • 1/2 teaspoon salt
  • 1 teaspoon cinnamon
  • rounded 1/8 teaspoon chili powder
  • 1 cup butter (2 sticks)
  • 2/3 cup granulated sugar
  • 2/3 cup packed brown sugar
  • 1 teaspoon vanilla extract
  • 2 large eggs
  • 10 ounce package semi-sweet chocolate chips
  • Small bowl of cinnamon sugar

Preheat oven to 325 F.

Combine dry ingredients, stirring well.

Cream butter and sugars for 3 minutes, then beat in vanilla and eggs.

Add dry ingredients in two batches. (Scrape the bottom of the mixer! This is a dry, stiff cookie batter.)

Stir in chocolate chips with a stiff spoon.

Roll into balls by hand, then roll each ball in cinnamon sugar, covering completely. Place on a cookie sheet with 1-2 inches in between each (these cookies don’t spread out much).

Bake 10-11 minutes.

Custom file extensions and Espresso 2

A fair number of people write into MacRabbit support asking how to add support for a custom file extension to Espresso (common requests being for LESS or SCSS mapped to CSS, various templating languages mapped to HTML or PHP, etc.). Unfortunately, a number of articles persist online instructing people to modify the built-in language plug-ins that live inside the Espresso application, which is not a good method to accomplish this particular task because you lose your changes when you update Espresso (additionally, mucking around with the internal plug-ins can sometimes lead to really weird behavior; for instance, messing up the built-in CSS support can have wide-ranging implications on Espresso’s syntax coloring for all languages).

Adding support for custom file extensions is extremely easy, but is unfortunately not something you can currently do through the GUI. Here’s how to go about it:

  1. Create a folder named something memorable. For instance, if you are mapping .less to CSS you might call it “LESS-Standin”. Or if you are feeling capricious, perhaps “Snickersnack”.
  2. Drag and drop your new folder on the Espresso Dock icon to create a temporary project window
  3. Within your new project window, create a new file named Languages.xml
  4. Add the following code to your Languages.xml file and save the file:

    <?xml version="1.0" encoding="UTF-8"?>
    <settings>
        <language id="com.yourdomain.less-standin" hidden="true">
            <root-zone>language-root.css</root-zone>
    
            <name>LESS Standin</name>
    
            <detectors>
                <extension>less</extension>
            </detectors>
        </language>
    </settings>
    
  5. Convert the folder into a plug-in and install it (see below)

What you are doing is defining a new language for Espresso that references a pre-existing syntax. The things you will want to customize are the id attribute of the language element, the <root-zone> element, the <name> element, and your list of detectors.

You can find documentation for the available detectors in the Espresso plug-in development wiki, and here is a list of the most commonly-used root-zones that are included as of Espresso 2.1:

  • CSS: language-root.css
  • HTML: language-root.html
  • XML: language-root.xml
  • PHP: language-root.html.with-php
  • JavaScript: language-root.js
  • Markdown: language-root.markdown
  • Python: language-root.python
  • Ruby: language-root.ruby

If you wish for your language stand-in to show up in the View→Languages menu, remove the hidden="true" attribute from the language element. Also note that you can add multiple items within the <detectors> block in order to define multiple file extensions to map to the same language (so in the example above, you could add <extension>scss</extension> in order to map both LESS and SCSS to the built-in CSS parsing within the same plug-in).

Installing your new plug-in

You have a couple of ways you can install your new plug-in:

  1. Simply add a .sugar file extension to the folder you created, and double click to install it. This is a good option if you don’t expect to add support for other file extensions, since it’s straight forward and easy.
  2. Open up the Terminal and execute the following command (replacing the path to point to your new folder):

    cd ~/Library/Application\ Support/Espresso/Sugars
    ln -s PATH/TO/LESS-Standin LESS-Standin.sugar
    

The latter option will create a symbolic link pointing to your folder, which allows you to easily modify your Languages.xml file down the road.

After installing your plug-in with either of the methods above, relaunch Espresso and you should be good to go!

First impressions of Mojang’s Scrolls

When I was but a lad, my aunt introduced me to a little card game called Magic: The Gathering. And down that rabbit hole I went. Magic’s not perfect (and I haven’t purchased a card in years, at this point), but it certainly has provided me with years of entertainment and is a go-to game for some of the people I play games with to this day.

However, as the years went by, people I played Magic with tended to drift apart. College killed the hobby for me for a while, until I moved into a house with a few guys and discovered most of them had played when they were young. Then we graduated college, and now one of those guys is in Texas, another is just getting married, and I’ve got a baby on the way. All of which makes getting together for a game day every so slightly more difficult than when we could walk down the hall and say, “Hey, want to play a game of Magic?”

For years I have been trying one online TCG after another (or collectable card game, as some of them prefer to be called, since not all feature trading), but have been unable to find a fix worth replacing my Magic addiction with. So when I saw the announcements about Scrolls from the makers of Minecraft, I was highly intrigued. A game that isn’t pay-to-win? Tactical board game elements? Cards that transform into little animated characters? Sign me up!

Scrolls is now available for purchase in “public beta” form (whatever that means; frankly, once you start charging money you are providing a product no matter what you call it), and I have been playing it for the past few days to see if it will scratch my CCG itch.

Unfortunately, the short answer is “probably not so much.” While Scrolls is interesting, there are a number of flaws that are embedded deeply enough in the core gameplay that no amount of beta tweaking is likely to fix them.

(On the other hand, keep in mind that this is not really a review of Scrolls, because we are still very early in its lifecycle and Mojang has shown before that they are perfectly happy to charge for a very rough product, and then turn it into a completely different game by the time they proclaim it out of beta. So take these comments with a grain of salt, since they may well only apply to the game at the time of this writing.)

The curse of the starter deck

When you first launch Scrolls (after purchasing it), you will find yourself facing a choice in which starter deck to begin the game with. The choices are growth (lots of creatures), energy (machines and direct damage), or order (fewer creatures, more buffs). I chose growth, because who doesn’t like hordes of beasties?

Unfortunately, the growth starter deck at least is terrible (I can’t speak for the other, but strongly suspect them to be similar). It seems like Mojang opted for decks that provide a solid basis of cards representing the various things you can do with a given faction, rather than focusing the deck on a particular theme (the way I’m used to with Magic preconstructed decks). The good part about this is that once I accrue more cards (a lot more cards) I will have a good basis for deck-building faster.

The bad part about this is that the deck has so little internal synergy my first few games boiled down to more luck of the draw than anything else.

Take, for instance, this card (one of the few cards of which the growth starter deck contains the maximum three copies you could ever need):

Scrolls: Junkyard

At first glance, this appears to be a pretty neat card. It only costs one resource (the prominent top number). It has three defense, so provides a nice little barrier between your idols (the back row you have to protect) and your opponent’s low-power creatures. And every rat you play gets an extra health! Sounds like the perfect first-turn play, to me.

Except that the starter deck contains no rats. (At this point, I’m not sure if there are any rats in the initial batch of cards at all; I’ve never seen one in any of the cards I’ve purchased, or any of the bouts I’ve fought. I assume they must be out there, though, or why does this exist?)

Similarly, one of the “rare” cards included in the starter is a wolf who gains power based on how many other wolves you have in play, but because there are so many non-wolf cards it’s very difficult to get that synergy working correctly.

Taken alone, none of the cards in the starter are bad (I can see a use for most of them, if only I had the cards to support them), but taken together the whole thing plays poorly and with very little synergy.

Interesting decisions abound

Okay, so I was disappointed in the starter, but after playing at least a couple hours daily over the past week (and spending the 2,000 “gold” that the game provides you to start out), I was able to tweak the preconstructed deck just enough that it began to work a bit smoother (good-bye, Junkyard!). At this point, I started becoming familiar with the things that Scrolls does well. In particular, it provides a number of interesting decisions:

  • On a given turn, you can discard one of your cards in order to permanently increase the resources you have to spend on other cards. This leads to fun decisions in the early game (“Do I save this super-expensive, context-specific card in hopes that I can play it at the perfect time later, or transform it into a resource so I can play my low- and moderate-cost cards now?”)
  • On a given turn, you can discard one of your cards in order to draw two additional cards. However, this is mutually exclusive with sacrificing a card for resources.
  • After you get some creatures onto the battlefield, you have to decide where to move them. Most creatures have a cooldown value of at least two, which means the majority of them will only be attacking every other turn. Additionally, creatures can only move one square per turn. This can lead to some tricky tactical choices; do I spend two turns of movement to position my creature so my opponent can’t take it out on his next turn even if it results in a sub-optimal attack? Or do I chump block with it, and hope that something better comes up?
  • Anticipating your opponent. This is part and parcel of the tactical board play, but being able to predict what your opponent will want to attack is key to setting up your own attacks.
  • Timing (both of cards you play and movement) is very important. I have several times screwed myself up by moving a creature, sacrificing a card to draw two more, and discovering had I done that in the opposite order I would have had a far more optimal play.

All of this adds up to solving some of my least favorite parts of Magic: no lack of resources due to bad card draw, no turns where you’re just killing time hoping the one card you draw will make a difference, and no getting stuck with nothing in your hand and no way to refill it.

The flip side of tactical decisions

Unfortunately, there is a downside to all those tactical decisions that I love so much, and that is games that last quite a lot longer. Part of this is simply that you’ve got a lot of cards in your deck (50), so as long as one player doesn’t completely neglect to draw cards odds are good you’ll be able to pull something out to thwart at least some of your opponent’s schemes.

Additionally, because the game is so tactical, if one player gains a sufficient advantage in cards on the board, the end can be effectively decided long before the third idol falls. The card pool helps alleviate this somewhat by offering several things that can unexpectedly flip the game your way (creatures that attack the turn they come out, low amounts of distributed direct damage, etc.), but at least so far most of the games I have played have had a very clear winner by the mid-game and destroying the final one or two idols is mostly busywork as the winning player waits for their cooldowns to drop, which makes the game feel even longer.

Asynchronous play

Scrolls is fully asynchronous; on your opponent’s turn, you will spend your time passively watching whatever they decide to do. On yours, they’ll return the favor. This is extremely common in online CCGs, of course (playing Magic online takes forever, for instance, because both players have to be constantly opting out of responses whenever one player does something; in an asynchronous game this is a non-issue). However, it also reduces your investment in the game because if your opponent wants to take forever pondering the many decisions available to them, you might as well go out to coffee in the meantime.

Plus so far as I can tell, you can’t participate in anything except real-time matches, and the ability to participate in more leisurely games is about the only main upside to asynchronous play, so far as I am concerned.

Putting the “T” in TCG

While designing Scrolls, Mojang clearly was very interested in promoting a trading culture. There are basically three ways to get cards:

  1. Random singletons and packs (buying in a pack guarantees a seven commons, two uncommons, and one rare, whereas singletons are completely luck of the draw) for in-game gold. You get gold for playing matches, be they against other people, the AI, or the special “trials” that pit you against themed opponent AI (you can also “sell” cards back to the system, for a very small return)
  2. Six non-random cards that refresh weekly (two of each rarity) for either gold or “shards” (shards are purchased with actual money)
  3. Trading with other players

Of course you’ll notice that it is not possible to “pay to win” since the bulk of your cards will be purchased with gold (unless you can trade shards for gold with other players, which I have not investigated). This is good, because everyone is theoretically on an even playing field where your card collection is based more on how much time you’ve spent on the game than how much disposable income you have. But it is also bad, because it means that as the game gets older, it will be harder and harder for new players to collect a competitive set of cards without spending truly phenomenal amounts of time, either playing matches for gold or engaging in trades.

For me, this is a solid black mark against Scrolls because spending a bunch of time and energy trading has never been something I am interested in (not to mention the difficulty in figuring out what cards are worth, which requires up-to-date knowledge of the market and meta).

Idoling the time away

Coming away from my first brush with Scrolls, I get the feeling that this is a game that has been released at the wrong time in my life. I suspect that had it been release when I was younger, I would have loved it to pieces and spent far more time and money obsessing over it than I should. However, as I have grown older, my patience with games that demand huge chunks of my time in order to succeed has dwindled. I dislike arbitrary rarity schemes and the massive investment in time trading that they require to accrue a decent collection.

Oddly, although I find Scrolls’ theme to be one of the more unique fantasy worlds I’ve come across in a CCG recently, it ultimately leaves me flat. The idea that a bunch of people are wandering around with a giant collection of magic scrolls on their back just waiting to throw down is even less believable than things like Pokémon (which is saying something). Although the energy faction has some really quirky, interesting creatures, growth and order both feel very ho-hum to me (“wolves, and Vikings, and ducal liegemen…oh my?”).

In short, Scrolls demands a large chunk of my time, but the payout simply does not seem worth it. I will probably continue to try it on and off, and keep a general eye on its development, but at the moment it feels like something to idle away the time while I wait for Hearthstone or one of the other upcoming digital CCGs to fill the hole in my life left by Magic.

Goodbye, Nal

A little under three years ago, my wife and I decided that we wanted a pet, but unfortunately while she loves cats I am deathly allergic. I suggested rats, but they live such short lives that she didn’t want to go that route. We settled finally on a hedgehog, since based on our research it looked like they could live up to five to seven years. After being on a waiting list for several months, we were finally able to go claim our little girl: an African pygmy hedgehog we named Nal (which means “needle” in Norwegian).

The day we brought Nal home, she was not a happy hedgehog. Taking her out of the cage for the first time was a trick (we had to wear gloves, since we hadn’t figured out the art of hedgehog handling yet), and after we got her out she sat in my wife’s lap for a good fifteen minutes, balled up, hissing, and clicking:

Nal's first outing

We tried to tempt her with mealworms, but she was having none of it! Being in a new place with strange new people and smells was absolutely not alright by her. After a long wait, though, she finally uncurled and we started to get to know her properly. By the time we put her back in her cage, she was still tentative about us, but willing to let us see her face:

Nal uncurls

Ever so slowly, Nal started to get used to us. She absolutely refused to be out and about in her cage with us in the room, so we never got to see her run in her wheel (although she pooped all over it enough times that we knew she enjoyed it), but after a year and a half or so she started coming out of her how-dare-you-just-picked-me-up funk quicker and quicker. For the past several months, she sometimes would come out of her cage without even hissing, although she always expressed her displeasure as we took her house off her.

She particularly opened up once we bought our house. For some reason, the move to the new house really made Nal happy, even though it also coincided with her coming down with mites, causing her discomfort and some quill loss (thankfully easily treated, despite a traumatic visit to the vet; Nal may have grown comfortable with us, but other people touching her was not okay in the least).

Nal sleepingNal, we discovered, was possessed of a strong personality. She loved to explore (her jaunts in the out of doors were things she particularly enjoyed), would tolerate petting if we provided a place for her to hide her face, and vastly preferred mountain climbing up human legs to being picked up. She hated baths, and would burrow under any scrap of fabric she could find:

Nal burrowing

Nal anointingFor quite a while we thought the only treat Nal truly enjoyed was any bit of paper or cardboard that she could find and would then self-anoint with. However, almost purely by accident we also discovered that she would go absolutely ga ga for were bits of chicken, fresh corn, peas, or sunflower seeds:

Nal chowing down

Unfortunately, a few months ago Nal had a couple of seizures while we had her out, and when we took her to the vet they x-rayed her and told us it looked like she had a tumor. We started her on a regiment of meds twice a day, but the vet told us we did not have much time left.

Nal would hear none of it, though. We never saw her have another seizure, and she was a perfectly happy hog for long after the vet told us we could expect her to pass on. As a result of taking her out twice a day instead of just once, she grew more comfortable with us than ever and we started developing different routines (I would often serve as jungle gym and preventer-of-escapes-under-the-couch as she ran around on the floor, while my wife would spend more time cuddling with her).

Sadly, about a week ago Nal started to lose her balance, drastically dropped weight, and day by day lost control of her limbs. She finally stopped eating yesterday, and today I came into the office to find her on her side squeaking in distress; it was the first time I had ever seen her out in her cage when I got up in the morning, and the first time I’d ever heard her vocalize that way in distress.

Though betrayed by her body, Nal remained cantankerous and determined to face life on her own terms to the end. We will miss you dearly, Nal. Rest in peace.

Nal

Introducing my book log

I am pleased to introduce a new member to my little family of personal websites:

Ian Beck's Book Log
http://log.beckism.com/

It includes short reviews and complete plot summaries for the books that I am reading, with the goal being to post them as I read them. I created the site for a couple reasons:

  1. I read a lot of science fiction and fantasy, which means I read a lot of sequels. However, except for series that I have re-read countless times because I love them so much, I tend to forget what has happened. My book log is thus a resource for myself to look up the plot summary for books that I don’t want to re-read before I proceed in the series.
  2. I like sharing my opinions about books, but have never found a place conducive to doing so regularly (I’ve done it on this blog in the past, but since I wanted a resource for all the books I’m reading, it would have just polluted Beckism.com and caused me no end of trouble when it came to searching for old books).

In any case, if you enjoy science fiction or fantasy, check it out! Even if not, take a gander; it’s one of my nicer-looking sites, and I’d love to hear what you like (or don’t) about it.

I’m planning to post about some of the technical problems I ran into developing the site and how I addressed them, but I’ll leave that for another day. In the meantime, enjoy a couple of recommendations for great books, and some scathing commentary on the not-so-great ones!