Wednesday, January 29, 2014

Why I Chose SmartThings

A reader on my recent post on SmartThings comments to ask “What made you decide on this solution for home automation? What others did you consider?”  I thought this was a good question worthy of a full-on post to answer:

If Momma’s Happy…

I decided on SmartThings because it seemed to offer the best balance between "just works" and "hackable".    “Just Works” is going to be important for the WAF (Wife Acceptance Factor).  She needs to be able to turn things off and on manually or with her phone, and not worry about what crazy thing her dear husband has going on.  So far, I’d give SmartThings a B+ on this. Their devices pair up and work out-of-the-box with minimal fuss, and the app lets you do pretty sophisticated smarts by filling out a few wizard choices.  We’ve hooked up an Iris thermostat, and they keep a list of compatible devices beyond the ones for sale on the site.  The one issue we’ve had so far is adding one user to the account who already had another account set up.

I also looked into Iris (Lowes’ system), Vera, and HomeSeer.  Each had merits, but Iris seemed less “hackable”, while the others’s apps didn’t seem as polished.  I specifically did _not_ want something that had to run on my PC, because I don’t want to leave the computer on all the time and have moved on to laptop/iPads mostly for home computing in this “post-PC world”.  HomeSeer requires a PC to run the software for it.  Vera was a contender, but as far as I can tell it does not have the phone location-based presence feature SmartThings does, and in general their “MiOS” seemed less intuitive than SmartThings.  Finally, SmartThings is both ZWave and ZigBee compatible, and has WeMo, Sonos, and Philips Hue support in beta.

I Need to Twinkapate the Confabulator Capacitor

I need “Hackable” because I’m driven to tinker.  I took apart clocks and old kitchen gear from a young age, and grew up burning out transistors in various electronics kits.  Here, SmartThings gets an A.  They offer an Arduino shield right on their site, and a pretty sweet web-based IDE for writing your own apps.  They would get an A+ if they improved the developer documentation a bit.  Then again, “hackable” by it’s definition implies a bit of undocumented exploration. To that end I’ve found I am slowly ‘groking’ how to customize this, and have not burned out any transistors.

Is My Head in the Cloud?

At this point, I have two main concerns I’m keeping an eye on.  First, will cloud-based be a boon or an Achilles heel?  All of the ‘brains’ of SmartThings run in the cloud.  If your internet is down, it doesn’t work (I think this is a true statement?)  But, this also means they can push out updates and add new features faster.  So, it’s a double-edged sword, and something of a debate in the Home Automation world.  Only time will tell if the pros of cloud-based outweigh the cons.

I Need More Power, Captain

Second, some of the devices are battery based.  I really don’t like changing batteries, and if these don’t last a year or two on batteries, I’ll probably be annoyed.  I don’t have data on this yet, so hopefully it’s a non-issue.

So, this is still a learning process for me, but hopefully that sheds a little light on what I’m thinking.  Stay tuned as we continue to build out our system – who knows what twists and turns we’ll take along the way!

Thursday, January 23, 2014

3 IFTTT Recipes To Spice Up Your Trello Boards

The book I’m writing - Enter, Trello Dojo - is all about using the awesome todo-list-and-so-much-more service Trello to be more productive at home and work.  One area it explores is automating Trello using tools like IFTTT and Zapier.  In the most recent update to the book, I include a handful of If This Then That recipes to automatically create cards based on various triggers.  The premise is simple:  use various triggers to email to your boards’ special email address (Found in Menu > Settings > Email Settings on every board)  Below are three IFTTT recipes that can really make your Trello boards sing.

Send Text Messages to Your Trello Boards

This is great for those times you don’t want to load up the app just to jot a quick task down.  Once this recipe is set up, simply text to your IFTTT phone number with a hashtag and IFTTT will email your board to create the card for you.  For example, you might set it up so that you can text #grocery Milk to add milk to your grocery list.  Recipe Link

Create Trello Cards on a Schedule

Want a card reminding you to do a weekly review every Friday?  Have a monthly office task that keeps getting forgotten? Use the schedule trigger to email to your board daily, weekly, monthly or yearly. Recipe Link

Monitor Real Estate in Your Area to Trellofy your Home Search

House hunting service Trulia has a great hidden feature:  It lets you create RSS feeds of any search that you can then add to a feed reader, or in this case Trello.  Simply build the rss feed you want over at the Trulia RSS tool, then use the RSS trigger and Email action to send houses that match over to your house hunting Trello board.  By using a Trello board, you can then take notes, compare favorites, and archive ones that you know aren’t for you. Recipe Link

These are just a few ideas of mashups you can create in minutes to integrate various apps into Trello using IFTTT.  If you have other ideas for Trello recipes, be sure to share them in the comments below or on IFTTT with hashtag #trellodojo!

Monday, January 20, 2014

Update: Solar Keyboard and Marathon Mouse

Several months ago I did a quick post about the Logitech Solar Keyboard and Marathon Mouse. I'm happy to report these are still going great at the office. I haven't had to change the batteries once and both remain responsive and have been terrific products. I plan to get a set for home soon!

Friday, January 17, 2014

4 Templates For Awesome Requirements Gathering

I’m convinced that one of the biggest problems in software development today is not a technical problem.  It’s a people problem.   Code (usually) does exactly what you ask it to, but most businesses don’t really know what it is they want software to do. 
They might have a general idea of how some process works today, but often even that is a stretch.  Maybe the process is not what it needs to be, or was the result of some now-irrelevant technical limitation.  Maybe Sue in accounting hates approving the TPS reports, but just does because she always has.  So, the pointy-haired ones ask the nerds to build XYZ, and the nerds build it, and it doesn’t do what the pointy-haired ones really wanted. Over and over and over again.

I’m convinced this is an area where our industry can do better.  Maybe it’s just me, but our development tools are improving much faster than our people skills.   Tools like Trello or Yammer for communication abound, but even these do you no good if you’re asking the wrong questions.  I don’t have all the answers, but I have developed a handful of ‘templates’ I often use when asking customers about projects they want to take on.  Here are some useful tips for building requirements or helping others do so:

1) Use a simple template as much as possible
Fill in the blanks: “As a [Role name]  I would like to [feature] so that I can [business reason]”.  This is the classical agile story card statement, and there is just so much packed into that simple phrase.  Who, what, and why.  Let the nerds build how.

2) Think business-first for reporting and data visualization
Again, fill in the blanks: “As a [Role name], I think it’s been a [good/bad] [day/week/month/year] when [metric] is [up/down]”  Too often developers start from some data and try to throw up every chart and report their tool will spit out.  Other times, business owners will ask for an updated version of some mainframe report, without thinking about why and what the report shows.  By starting with the business problem, you can understand who is needing what exact numbers, and some value judgment about the metric.  The template above only works for time series data.  An approach for non-time bound data: “As a [Role name], I need to see what values make up [metric], so that [business reason].”
Another favorite: “As a [Role name], when [metric] is [up/down/within range], I plan to [action]”.  Even more than the others, this ties the measure to some specific business need.  Oh yeah, you _need_ to see the total value of all widgets sold in Timbuktu?  What do you plan to actually do if the number is or isn’t what you want?

3) Report bugs clearly
Bugs are requirements too.  They are often (but not always), just requirements that need to be fixed quickly because they cause particular pain to the user.  A great way to report them is:  “When I do [Steps to reproduce the issue], then [detailed description of bad thing].  I expect [description of desired behavior]”  As somebody who’s dealt with both sides of the support desk, I can just about guarantee that this pattern will get you a solution faster than the more common “My [vague reference to thing] bombs.  Fix it!”  If I get a vague bug report, my favorite template for combating it: “When you say it bombs, what do you mean?  Tell me the steps and any error you get.”

4) Don’t forget the environment
Another mistake is to not understand the other hardware and software surrounding a given solution.  “Tell me about the hardware and other software you all run” is a must-ask for any new customer.  Building a solution for a VMWare shop that runs all SQL Server and IIS with Exchange is different from building the same solution for a firm with Oracle and Apache.  More and more, you may find that companies have little or no infrastructure in-house.  Building for Amazon EC3 or Azure is different again from on-premise.
So, there you have it, 4 ways you may or may not have thought of to ask your customers what it is they want.  If you have more ideas, I’d love to hear about them in the comments!

Thursday, January 16, 2014

SmartThings Mini-Review

My wife and I are building a new house, and one of my plans for it is to include a home automation system.  This is an area I’ve been looking into for a while now, but have never really delved into with any depth.  After some research, I settled on SmartThings’ platform as my starting point.  I received my first order yesterday, and while it’s not ready to be installed (we don’t have a roof yet), I couldn’t resist unboxing the kit and setting it up.

The system so far has been a breeze to set up.  Simply download the app, plug the SmartThings hub into internet and power, and then use the code included in the packaging to connect the app to the hub.  To connect each device, Simply click “Add Thing” in the app and pull the battery tab out of the device.  I was able to set up 4 sensors and the hub in about 15 minutes.  My only complaint is that a few of them took a little bit longer than expected to join up.  The “presence sensor” especially took a while.  The app generally handles that gracefully, but at times you wonder if it’s hung.

Once my sensors were set up, I set up a few “Apps”.  Apps are the brains of the SmartThing system.  They let you do things like turn off and on lights based on presence, schedule, or even weather. Unfortunately, since the switches I bought need to be installed in the wall, I can’t do much actual automation yet. They do offer a “wall-wart” style device, but I’m not a fan of those, since devices can _only_ be controlled through the system set up (ie a lamp plugged in to one can not be turned on remotely if it was turned off manually).  But I was able to fairly easily send myself push notifications based on a various sensors by simply choosing my devices and a few options in the app.

The multi-sensor was especially interesting to me.  This little device looks like a standard window or door mag sensor you would see with an alarm system.  However, it also packs in a temperature sensor and 3-axis accelerometer.  This means it can be stuck on doors, windows, and even mailboxes (if in range), to notify you or do things when they open or close or move.  But you can also use them as feedback into your HVAC system, or as simple thermostat for plugin heaters and the like.

So far, my main complaint with the system is that, while user friendly, it’s almost _too_ helpful.  Videos stepping you through pulling the battery tab out of a sensor are probably handy for some, but just felt “in the way” for me.  Large picture buttons for some of the app menus also were a bit distracting.  That said, for them to really make prime time they need to be dead easy to use even for non-nerds, and I think they’re getting close to that.

Setup is currently only done through the app, which is only iOS and Android.  Meaning if you don’t have one of those, you’re pretty much out of luck.  A full-on web interface would be nice so that the system can be monitored both on a mobile device and on a larger screen.  The developer site has a start of just such a thing, so hopefully that’s in the works.

I’ll do another review once I’ve had the system for a bit, and installed it in the house.  I’ll be especially curious to see how the battery life is for these sensors, and how well some 3rd party devices like thermostats and door locks work.