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.
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.
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.
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.
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.
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.
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:
Make Cozmo say 'Hello Human' in this simple
Cozmo SDK example program.
robot = sdk_conn.wait_for_robot()
if __name__ == '__main__':
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”:
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
'''Specify actions for cozmo to run.'''
# Fetch robot
coz = Cozmo.robot(cozmoLink)
# Say something
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
'''Specify actions for cozmo to run.'''
# Fetch robot
coz = Cozmo.robot(cozmoLink)
# Say something
# Drive a little
coz.drive(time = 3, direction = Direction.forward)
coz.turn(degrees = 180)
# Drive a little more
coz.drive(time = 3, direction = Direction.forward)
# Light up a cube
cube = coz.cube(0)
# Tap it!
coz.say("You tapped it")
coz.say("Why no tap?")
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.
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.
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.
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.
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.
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.
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.
Netgalley recently allowed me access to Sharon and David Bowers’ The Useful Book (Workman Publishing, $20) to see what I made of it.
For someone who holds DIY and “making” close to her heart, it’s a fun but imperfect find, featuring over a hundred practical how-to “skills” that you might not have picked up from traditional sources like Home Economics class or Wood Shop.
The book consists of two sections, one focusing on home skills, the latter on handyman ones. The page layout is easy to follow with sensible columns, lots of art, and simple step-by-step instructions. You can dive into a random page and grab some how-to without having to read from cover-to-cover.
I see this more as a gift book suitable for a coffee table than a much-loved reference. I found the coverage to be entertaining even when I disagreed with some of the suggested approaches or found them missing important details.
I warn you that some of the topics may seem a little underwhelming (“How to boil water” and “How to care for your (sewing) needles” spring to mind). The practical applications (“Superstitious folk wisdom advises that, to protect a child from evil spirits during sleep, a key must be slipped under his or her pillow”) may not exactly fit my corner of the DIY community.
For example, my physicist husband points out that there’s absolutely no reason to stick with cold water for boiled water (#1, “How to Boil Water”), as dissolved mineral danger is hyped up in his opinion. He adds that the reason you want to cover your pot is to prevent heat from escaping, and make your water boil faster, more than losing water content through steam.
I learned that I could have drained my tofu (#47, “How to Cook with Tofu”) — a step I have never taken and am unlikely to adopt even now, but was happy to learn about. (I use my hand to provide top-down pressure as I slice tofu sideways first before doing rows and columns.)
We like bright lights in our workspaces and are unlikely to swap them out for cost-saving lower wattage units (#177 “How to Slash Your Electricity Bill”)
This isn’t to say there isn’t good advice on-hand, like sanding rough spots when patching a wall but I do wish that they’d offered advice like checking the insideof a bike tire as well as looking at the outside for possible reasons why it went flat, a critical tip in goathead country.
If you’re looking for a nice housewarming gift for a new couple, this title could suit the bill. If you’re looking for a deeply geeky read, this probably isn’t going to be your cup of tea.