Archive for the ‘Reviews’ Category

Review: In praise of Ring Fit Adventure

I bought my son Ring Fit Adventure as a reward for bringing home good grades. Little did I know that I would soon monopolize the game. Yes, he uses and loves it too, but only after school. For me, it is full of 2-10 minute exercise breaks perfect for pausing work and getting myself moving.

I recently left a position with a massive commute to a nearby city, ridiculous hours, and lots and lots of sitting. It completely broke up my routine, which had previously included a well considered mix of resistance, strength, flexibility, and aerobics (mixed with a bit of Restorative and Yin yoga, which are the bomb).

My fitness pre-job was hard earned. Lots of its early ramp-up was due to a mix of physical therapy and Wii Fit (or as I like to call it Wii Fiit). Despite the harsh criticism Wii Fit gets, it is an amazing tool for convalescence and several of its activities (most specifically boxing) can get a good heart rate and sweat going. I particularly love its quirky “yoga”, which opened me up to a much wider world of non-scare-quote yoga.

Wii Fit eventually evolved into Wii Fit Plus, which I have never played, mostly due to the fact that we own a bunch of Wii Fits and I never saw enough value to upgrade to the newer system. When the Switch debuted, I hoped they’d continue Nintendo’s fit tradition, and Nintendo finally delivered with Ring Fit Adventure. (Also, it tickles me silly that the Wii Fit trainers are now in Smash.)

Ring Fit Adventure is basically an interval training system based on jogging in place mixed with resistance training using a Pilates Ring and some minimal stretching. It doesn’t sound like much but it works brilliantly. If you regularly move a lot of iron around in your life, this isn’t going to do much for you but if you’re coming off six months of nearly complete inactivity and want to get back in shape to take advantage of more physicality, it’s perfect.

I find it’s never hard to build a sweat and get my heart moving for a good 20-60 minutes. In addition the game has incentivized many of my most hated activities (I’m looking at you, Mr. Squats) and turned them into something I am determined to conquer. Yes, being short means the travel of the thigh sensor may be occasionally tricky to detect (meaning deeper squats for me) but the pilates-style ring is deservedly the star of this show.

From what I can guess, it has some interior material that changes resistance as it bends to allow the system to detect interaction both pushing in and pulling out. There’s a larger-than-expected vocabulary of fitness activities you can incorporate using those two actions including overhead presses and pulls, forward and rear, and the star of the show, the engaged “ab-guard”, which when done correctly allows you to engage your gluts, abs, and shoulders, or basically all the things my PT regularly tells me to engage.

Technically this is a game and there’s some kind of irritating storyline about a picked-on pilates-ring and his steroid abuser ex, but you can ignore most of that and enjoy the beautiful tracks and vistas. There’s a bit of repetition from world to world and a “cheat” system that involves drinking lots of smoothies (because pure sugar is always what people trying to control insulin metabolisms want in their system, right?) but these, too, are minor issues.

Mostly, the game is great because it is, at least for me, hard and it ramps up its difficulty level to level. I’m savoring each “world” and I am in no hurry to finish.  Most recently, I spent time pushing and pulling blocks along a running track with my arms so I could run without falling into holes and by the end of the course, I felt it. For me, finding that physical edge and training to that point of exhaustion just before it’s too much is what makes a great workout.

No, the biggest issue is that we have the one Switch and occasionally my child wants to use his toy without his mom demanding 100% access through the day.

This isn’t a cheap hobby. A basic fully fitted Switch with dock will set you back $300. Add in a second pair of joycons, and that’s another $70-$80. The game alone is $80. And if you end up destroying the pilates ring (the “ring controller” or “ring con”) that’s $45 + shipping direct from Nintendo. (And if you do break that, chances are good you’ll have banged up a joycon as well.) Fortunately, our ring is doing well despite the abuse we have put it through. And we have, as yet, not flung any joycons across the room or into the TV.

Despite the price, most of the cost involves things we would have bought anyway or already own. They’re expensive but have proved to be a delight for the family.

As for Ring Fit Adventure, you shouldn’t have to wait for your report card to treat yourself or your kids to this. I suspect the adults will be playing it longer than the kids unless you treat some of its minigames as pass-and-play so you can enjoy it together.

I hope there will be follow-up fitness products but based on Wii Fit/Wii Fit Plus, Nintendo has a respectable heritage of a single, focused fitness title.

I’ve been waiting for great training and fitness innovation products that combines the Apple Watch and Apple TV but so far, nothing has grabbed me in the way that Wii Fit and Ring Fit Adventure have.

What about you? Any amazing finds?

Pedants love this one secret MBP trick: Nifty going out of business

I know, the post title sucks. I have to work harder on my clickbait headline writing. Anyway, if you own a MacBook Pro, check out Nifty’s going out of sale special. (“Last chance to buy – Nifty MiniDrive closing down… it is now time to close the chapter on Nifty. Thank you for being part of that journey with us. We have reduced all our stock to clear…”)

The Nifty “MiniDrive” (terrible name) is just an SD card adapter. You can pick one of those up just about anywhere for about three bucks fifty. It’s not hugely surprising that selling the same product for $40 plus shipping and handling wasn’t a solid business strategy.

The reason I’m recommending you plonk down $10 (or $12 with s/h in the US) is that the device works seamlessly with MacBook Pro (and, I suppose, Air, although I’ve never tried it in one). I have one in my 2015 MBP-Retina and like it very much.

The MiniDrive hides the card and lies completely flush with the unit. It’s basically invisible, adding what is essentially a slowish internal extra drive (hence the name) that you don’t have to remove when you put your laptop into your backpack.

Make sure you order the right one. A MBP-13 is not the same as a MBP Retina-13, and 13 and 15 are different sizes. I expect they won’t be in business much longer, so take a few moments and ensure that the unit you think you’re getting is the one you’re ordering. If they fold early, you’re out twelve bucks. If they deliver, you get a nice little feature for your system at a price that’s pretty reasonable.

objc App Architecture by Eidhof, Gallagher, and Kugler

The objc.io folk were kind enough to let me peek at their latest book, which provides an overview of iOS application design patterns in Swift. Anyone working in production code will be well served by keeping on top of the current art in these patterns.

The book introduces you to both the familiar (Model View Controller, better known as MVC and Model-View-ViewModel-Coordinator or MVVC) as well as less common architectures, which include Model-View-Controller+ViewState, ModelAdapter-ViewBinder, and Elm.  The latter group provides intriguing ways to establish view state and construction and communicate with your semantic model.

After an overview chapter, which explains and motivates each pattern, following chapters focus on exploring a single pattern. (There’s also a separate networking chapter that follows onto MVC and MVVC.) The authors carefully explain how you can incorporate each pattern into your code, considering design and testing, as well as related tasks like persistence. There are plentiful code examples and discussion that offer insights into each pattern’s benefits.

I have not had a chance to fully read the book yet, but what I’ve read has been clear and thoughtful. And yes, there are plenty of examples that tie back to RxSwift.

The book is extremely practical and sure to be of value to serious coders. It’s available from the objc.io site, priced at $49 for the basic eBook or paperback, or $99 which adds seven hours of in-depth video with live coding examples.

Book: Year of No Clutter

Year of No Clutter (Amazon, $9.99) felt like an aptly inspirational title to help motivate me to trim down my house. Like all techies and moms, I am surrounded by outdated equipment (that is occasionally useful) and boxes of “precious” artwork by my “artistically gifted” children, including single crayon scribbles on a page (post modernism) and several thousand RCA cables.

My kids lean towards hoarder tendencies. (“No, you can’t possibly throw that away. I drew it for you!” and “I won that precious partially-destroyed plastic trinket by playing carnival games all day!”). These I must fight with action, as reason goes only so far.

For me, I often lack the time to sort, organize, and toss my things that have become outdated, especially when there’s a real cost to replacing them when they’re eventually needed. (Quick, how many Firewire cables do you own? 30-pin iPod cables? I have too many, but sorting and disposing is hard.)

My go-to solution has long been to put things into boxes and then move them downstairs into the crawlspace. From “memory boxes” to “stuff I don’t use any more”, it’s become a desperate habit of clearing out space.

If I could, I’d go on a rampage throwing things out. The physical and time commitments to make this happen have been overwhelmingly daunting.

Schaub’s book reflects a slightly contrasting reality in that she’s taking on a different kind of clutter. Her Hell Room(TM) represented a “disposophobic” reality, of her well intentioned safety net. She freely calls it a “giant ridiculous mess”. It was stuffed both with items of potential use and necessary memory.  Each hoarded item had a history, and a story, and a connection to her life.

Her memoir offers an amusing tale of the steps in letting go. It’s a record of catharsis and finding the things that actually matter. If you’ve ever looked at a pile of ancient soy sauce packets, trying to decide whether to organize them or toss them, her story will resonate with your experience.

The most interesting thing about the book are the discoveries, where removing surface levels of clutter revealed real treasures and memories, allowing them the priorities they deserved. From family silver to handwritten letters, decluttering has a tendency to hit us in the emotions.

Throughout, Shaub scatters useful little charts and how-to’s. Things you use on a regular basis should have a place to live, and a regimen to restore it to that place after use:

In sum, the book is a conglomeration of reminiscences, self-reflection, how-to, and coaching. There are some delightfully amusing bits and some parts that kind of slog. I particularly enjoyed the section on “The Weirdest Things I Own”. I enjoyed it as a “library read” but I don’t know if I’d purchase it for re-reading.

I probably won’t ever match my own Mom’s ideal of “When in doubt, throw it out”, but the more control I take over our clutter, the better we’ve been able to function as a family.  I want to own things, not have my things own me.

Dropbox’s very bad not okay UX on iOS

Consider this question for a second: why do people own Dropbox? So they can put stuff into it and grab stuff out. Sure, there are other features but that mission statement pretty much the bottom line for iOS use. So why is Dropbox’s iOS client so horrible?

Start with the main menu bar. After selecting an item that you want to open in another app, which of these icons do you tap? The garbage one is clearly wrong, but the ellipsis is a very muddy choice. This should obviously use the (user-facing) share/(developer-facing) actions icon instead.

Apple’s design team agrees.

Once tapped, what’s the next step for “Open in”? Move and copy make sense but you have to tap “Export”, which finally uses the actions icon to give the hint that you want to open the selected file in another application. Bad naming, although it does appear properly as the first action.

Once tapped, you next have to find “Open In”. I have a couple of blockers installed (which shouldn’t even appear in this action sheet), so you have to scroll right to find the right icon.

It’s only after I scroll right that I finally locate “Open In” and can start the progress of opening my file in an appropriate application.

To summarize:

  • The ellipsis is a bad choice. It should be the Action/Share icon and it should directly open the Action Sheet.
  • Rename and Move should be placed into a separate “File actions” menu, along with discard (the trash can). They don’t belong grouped with the Action/Share sheet, which has a specific and conventional meaning in iOS.
  • The app should use care, especially with known file extensions, to limit the options presented in the sheet. “Open In” should be about the only choice for an epub extension file, and the other actions should be constrained to the invoked context.
  • Dropbox made me sad.

In praise of Tile trackers

A friend (hi Charles!) sent me a couple of Tile products (one “slim” for my wallet, one “mate” for my keys) to test out. Like other tracking products on the market, you attach a tile to your belongings, register and name it with the app.

When you lose sight of your belongings, use the app to track it down. You can play a sound to help you find where in your backpack or purse it’s gotten to or use the app to find where it’s gone to on a map.

I’ve used and reviewed similar products in the past. Despite (and possibly because of) Tile’s “no self-service” design, it has provided the best user experience to date. The unit is small, easy to attach to things (the “mate” has a built-in hole), and extremely light.

Like other trackers, Tile uses crowdfinding to notify you when your tile shows up after it goes missing.

If your item isn’t where you last had it, select “Notify When Found” in the app and when any device in the Tile community simply passes by your missing item, you’ll automatically be notified of its most recent location. This feature works 100% anonymously and automatically to protect your privacy.

Over the weekend, my son and I visited a very large park. I slipped my keys into his backpack and used my app to keep an eye on how far ahead of me he had biked. He enjoyed his ride without constant “mom nag” but with a certain peace of mind for me. (Update: No, this would not have worked at a state park, you’d need a phone with GPS for that, but it was fine at an inner city park with lots of phones accompanying bikers, joggers, dog walkers, etc.)

For the most part, thankfully, I haven’t needed to use the Tile or its app. For the few times when I’ve needed it, it’s been right there for both  keychain and wallet, reducing my anxiety and making it easy to find my stuff.

Tile Mate and Slim cost $25 and $30 for a one pack, with discounts as you buy in quantity. You can purchase adhesive tape (for remote controls), iron-on pockets (for jackets), and zip straps (for your bike) to secure more items than just keys and wallets.

The batteries are guaranteed for a year, then you can “reTile” at a discounted price ($12/Tile original, $15/Tile mate, $21/Tile slim).

Yes, Tile is not cheap (especially if you buy single units) but I’ve been extremely impressed by the reliability, ease of use, and the accompanying application.

Programming Cozmo

Anki has been kind enough to let me play with their new Cozmo unit and explore their SDK. Cozmo is a wonderful device, developed by people who understand a lot of core principles about human interaction and engagement.

Cozmo is adorable. When it recognizes your face, it wriggles with happiness. It explores its environment. When it’s bored, it sets up a game to play with you. It can get “upset” and demand attention. It’s one of the most personable and delightful robots I’ve played with.

At its heart is a well-chosen collection of minimal elements. The unit can move around the room, with a 4-wheel/2-tread system. It includes an onboard forklift that can rise and fall, an OLED “face” that expresses emotion, and a camera system that ties into a computer vision system, which I believe is based on PIL, the Python Image Library. (Anki tells me that Cozmo’s vision system “does not use PIL or Python in any way, though the Python SDK interface uses PIL for decoding jpegs, drawing animations, etc.”)

Three lightweight blocks with easily-identified markings complete the Cozmo package, which Cozmo can tap, lift, stack, and roll.

Between its remarkable cuteness and its vision-based API, it’s a perfect system for introducing kids to programming. I was really excited to jump into the SDK and see how far I could push it.

Here is Anki’s “Hello World” code (more or less, I’ve tweaked it a little) from their first developer tutorial:

import sys
import cozmo

'''
Hello Human
Make Cozmo say 'Hello Human' in this simple
Cozmo SDK example program.
'''

def run(sdk_conn):
    robot = sdk_conn.wait_for_robot()
    robot.say_text("Hello Human").wait_for_completed()
    print("Success")

if __name__ == '__main__':
    cozmo.setup_basic_logging()    
    try:
        cozmo.connect(run)
    except cozmo.ConnectionError as err:
        sys.exit("Connection error ????: %s" % err)

Although simple, this “Hello World” includes quite a lot of implementation details that can scare off young learners. For comparison, here’s the start of Apple’s tutorial on Swift “Learn to Code”:

screen-shot-2016-12-12-at-11-45-24-am

There’s such a huge difference here. In Apple’s case, everything that Byte (the main character) does is limited to easy-to-understand, simple calls. The entire implementation is abstracted away, and all that’s left are instructions and very directed calls, which the student can put together, re-order, and explore with immediate feedback.

In Anki’s code, you’re presented with material that’s dealing with set-up, exceptions, asynchronous calls, and more. That is a huge amount of information to put in front of a learner, and to then say “ignore all of this”. Cozmo is underserved by this approach. Real life robots are always going to be a lot more fun to work with than on-screen animations. Cozmo deserved as simple a vocabulary as Byte. That difference set me on the road to create a proof of concept.

In this effort, I’ve tried to develop a more engaging system of interaction that better mirrors the way kids learn. By creating high level abstractions, I wanted to support the same kind of learning as “Learn to Code”. Learn to Code begins with procedural calls, and then conditional ones, and moving on to iteration and functional abstraction, and so forth.

My yardstick of success has been, “can my son use these building blocks to express goals and master basic procedural and conditional code?” (I haven’t gotten him up to iteration yet.) So far, so good, actually.  Here is what my updated “Hello World” looks like for Cozmo, after creating a more structured entry into robot control functionality:

from Cozmo import *

# run, cozmo, run
def actions(cozmoLink):
    '''Specify actions for cozmo to run.'''
    
    # Fetch robot
    coz = Cozmo.robot(cozmoLink)

    # Say something
    coz.say("Hello Human")

Cozmo.startUp(actions)

Not quite as clean as “Learn to Code” but I think it’s a vast improvement on the original. Calls now go through a central Cozmo class. I’ve chunked together common behavior and I’ve abstracted away most implementation details, which are not of immediate interest to a student learner.

Although I haven’t had the time to really take this as far as I want, my Cozmo system can now talk, drive, turn, and engage (a little) with light cubes. What follows is a slightly more involved example. Cozmo runs several actions in sequence, and then conditionally responds to an interaction:

from Cozmo import *
from Colors import *

# Run, Cozmo, run
def actions(cozmoLink):
    '''Specify actions for cozmo to run.'''
    
    # Fetch robot
    coz = Cozmo.robot(cozmoLink)

    # Say something
    coz.say("Hello")

    # Drive a little
    coz.drive(time = 3, direction = Direction.forward)
    
    # Turn
    coz.turn(degrees = 180)
    
    # Drive a little more
    coz.drive(time = 3, direction = Direction.forward)

    # Light up a cube
    cube = coz.cube(0)
    cube.setColor(colorLime)
    
    # Tap it!
    coz.say("Tap it")    
    if cube.waitForTap():
        coz.say("You tapped it")
    else:
        coz.say("Why no tap?")
    cube.switchOff()

Cozmo.startUp(actions)

And here is a video showing Cozmo executing this code:

If you’d like to explore this a little further:

  • Here is a video showing the SDK feedback during that execution. You can see how the commands translate to base Cozmo directives.
  • I’ve left a bit of source code over at GitHub if you have a Cozmo or are just interested in my approach.

As you might expect, creating a usable student-focused learning system is time consuming and exhausting. On top of providing controlled functionality, what’s missing here is a lesson plan and a list of skills to master framed into “Let’s learn Python with Cozmo”. What’s here is just a sense of how that functionality might look when directed into more manageable chunks.

Given my time frame, I’ve focused more on “can this device be made student friendly” than producing an actual product. I believe my proof of concept shows that the right kind of engagement can support this kind of learning with this real-world robot.

The thing that appeals most to me about Cozmo from the start has been its rich computer vision capabilities. What I haven’t had a chance to really touch on yet is its high level features like “search for a cube”, “lift it and place it on another cube”, all of which are provided as building blocks in its existing API, and all of which are terrific touch points for a lesson plan.

I can easily see where I’d want to develop some new games with the robot, like lowering reaction time (it gets really hard under about three quarters of a second to tap that darn cube) and creating cube-to-cube sequences of light. I’d also love to discover whether I can extend detection to some leftovers my son brought home from our library’s 3D printer reject bin.

Cozmo does not offer a voice input SDK. It’s only real way to interact is through its cameras (and vision system) and through taps on its cubes. Even so, there’s a pretty rich basis to craft new ways to interact.

As for Anki’s built-ins, they’re quite rich. Cozmo can flip cubes, pull wheelies, and interact in a respectably rich range of physical and (via its face screen) emotional ways.

Even if you’re not programming the system, it’s a delightful toy. Add in the SDK though, and there’s a fantastic basis for learning.

Review: Man, I hate Cursive by Jim Benton

Screen Shot 2016-08-21 at 7scaled.58.09 PM

If you like good, stupid, subversive humor (and who among us does not?), consider pre-ordering Jim Benton‘s “Man, I Hate Cursive”.

Due out this October, this cartoon collection for “People and Advanced Bears” is silly, witty, and laugh-out-loud fun. It offers a collection of Benton’s more popular strips from Reddit, “shining a light on talking animals, relationships, fart jokes, and death” according to the book’s promo copy.

I liked it a lot. Admittedly, some of the humor leans off-color: it’s the kind of book you gift a friend, a fellow programmer, a geek, but not maybe your mom unless your mom is a friendly programmer geek, in which case, she’ll enjoy the laughs.

You’ll probably like it too, in which case, it’s excellent for leaving around on coffee tables if you’re a little uptight or in bathrooms, where its humor might be more appreciated during those deeply  philosophical times when you forget your iPad and don’t subscribe to the Ikea catalog.

Screen Shot 2016-08-21 at 7.57.05 PM

At just under a hundred pages, the book ended way too soon for me.  “Man, I Hate Cursive” is available for pre-order on Amazon ($11.07 paperback, $9.99) and will be published on October 18, 2016.

NetGalley provided me with a free copy of the book for this review.

Book Review: Post this Book

cover86411-medium

Sometimes there is such a thing as too many memes and kitten gifs. David Sinden and Nikalas Catlow breathe fresh air into social media feeds with #Post This Book  (Sourcebooks, $9.99, complete with built-in hashtag). This sweet inspirational book is suitable for tweens, teens, and even college students. It offers 150+ pages of ideas for tweeting, tumbling, facebooking, vine filming, and instagramming.

It’s not a book you read. Each page offers one or two ideas along with quick descriptions. You turn pages, you get inspired, you go out and express yourself using those ideas. Everything is simple, but well tweaked to connect with an audience and inspire a conversation.

Screen Shot 2016-06-26 at 7.56.15 PM

With kids and social media, there’s always tension between privacy and free expression, appropriateness and creativity. I’m pleased to say that in the time I spent flicking through pages in this book and showing examples to my kids, that I didn’t find anything objectionable or problematic.

The ideas in this book allow kids involve themselves in public fora (using anonymous nicks and handles, of course, because, you know, reality). At the same time they’re exploring their imaginations, they’re not crossing inappropriate lines that are so prevalent on Tumblr and beyond.

Screen Shot 2016-06-26 at 8.17.05 PM

This book’s projects offer positive ways to test the waters of social media. Whether brainstorming how to “zombify something unlikely”, videoing time lapsed “tidying up”, or creating “a tabletop obstacle course”, all the projects I read through were inspirational and fun.

#Post This Book goes on sale on July 1st from Sourcebooks. It’s a perfect “gift” book — for just 10 bucks, you can probably buy a small tin of colored pencils or markers to pair with it without breaking the bank.

I was given early access to the manuscript for this review courtesy of NetGalley and Sourcebooks.

Review: BetterTouchTool

I am a shortcut-addict. Right now my drugs of choice are the superb Keyboard Maestro and Apple’s built-in Spotlight. Now that I bought my new (well, new-ish refurbished) Macbook Pro, I’ve been frustrated by my trackpad and the limited vocabulary of available useful gestures and the overwhelming vocabulary of gestures I don’t think I’ll ever actually use.

While Safari’s pinch-to-overview tabs is nifty, it’s slow and annoying. I just want to flip between tabs and I don’t want to have to reposition my hands from their “scroll au natural” baseline.

Enter BetterTouchTool ($7, with adjustable pricing). It’s basically Keyboard Maestro for trackpads and within minutes, I was set up with my new touch-then-tap to flip tabs. It was exactly what I needed and my money was soon winging its way through Paypal.

Like Keyboard Maestro, you can set the scope of the gesture to be universal or a single app. It offers a wide range of gesture customization, and you can set it up to activate menu items, take screenshots, mimic the built-in gestures with different touch styles, and more.

If you want to give it a full test ride, the developer offers a 45 day try-before-you buy. For me, it solved a problem that needed solving, it worked, and I was sold.