Tuesday, April 24, 2018

The Connectivity Fallacy & $(window).load(function())

While the Network as a whole is borderline miraculous, the reality of its connection quality is far from it. Connectivity sucks, even in private-industry led first-world connection environments. Fiber backhauls are generally pretty good, but "last-mile" services suck. The issue is usually around latency, but bandwidth throughput is also generally inconsistent and poor (and about to get a lot worse if/when Net Neutrality dies). I'm pointing the finger at cell/mobile carriers mostly, but also at cable providers. Satellite carriers don't count because the technology just plain sucks (latencies between ground/low-earth-orbit sats are too high to be generally useful); it's cute, but it sucks.

We all stare at our screens waiting for content to load. Whether that's an image upload in an iMessage exchange, an Instagram image load, mail coming in, or web pages loading, we spend way to much time looking at blank screens or spinning graphics indicating "progress." I'd like client app providers fire OS-level notification events that indicate network operations are complete. This way, I could open a web page, then put my phone back in my pocket while it loads, then pull it out once it's done loading and the notification fires.

Sunday, September 24, 2017

Day In Pictures: Greenland Trip

Greenland adventure with incredible photographers and fellow adventurers. I finally learned to play with Tonal Curves in Lightroom for color correction, and was able to untangle my thoughts around the relationship between focus depth-of-field and focal length (thanks Chris!).

I guess I should stop being surprised at the adventurous nature of the people I meet on these trips. They all live such inspiring lives... always on a quest. Always inspirational.

Captain Siggi. Navigator, guide, storyteller... inspiration. Let him take you on a trip http://www.aurora-arktika.com/ of a lifetime. Grateful to have sat at the dinner table with him telling arctic stories and passing down lore.

Teresa. Fantastic chef, and easily the hardest working woman in the arctic.

Haukur. Jack of all trades.

Chris Burkard (http://www.chrisburkard.com/). Dedicated man with a plan. I love being around others who carry undying energy around their passion.

Ryan Hill (http://www.ryandanielhill.com/). Photographer with unwavering patience while helping others. Another great example of the power of apprenticeships.

Mark Solon. Inspirational eye-opener. Here's to another adventure buddy. Learned a ton of parenting stuff from you this trip; thanks.

Cam Solon. Total blast enjoying the trip alongside youth. Send it kid!

Emma Kahn. Grounding. Confident. Clear.
Giulia Spiller. Alive alive alive! Leads with her heart. Thanks for bringing mine to the fore again. Needed that.
Benjamin Ludigs. Dynamic, intelligent risk taker. Putting everything he has into life. Reminds me of a younger version of myself.

Steven Tonkinson. Always ready to roll. Neat breadth in business and philanthropy.

Ann Peters - http://photosbymissann.com/adventure-wedding-photographer/

Monday, September 11, 2017

Amazon Alexa And Rewiring My Brain

I took Amazon's Whole Foods bait the other day and bought an Echo and a Dot while buying groceries (yup... weird). Here are my first impressions after about a week's worth of use.

I set Alexa up in a new space that doesn't have much ambient noise; no kiddos, no pets (barking). I'm extremely bearish on using voice computer interaction in real-world/day-to-day environments. I don't think it will ultimately work for two reasons: one, background/ambient/adjacent audio noise pervades the bulk of life, and machines can't filter it out (we're not even close on this front). two, unlike all intrusive technology to-date, audio/voice is intrusive and active enough, that socially and culturally, I think the behavioral shifts required for mass adoption are too abrasive. If you and I are hanging out having a conversation, it's one thing for me to pull out a screen and mess with it, passively paying attention to what you're saying, and quite another for me to full-stop pause our interaction with a visual or verbal cue, engage a computer (another entity really), then re-engage with you. It's awful... you can try it today with Siri.

That's another post though. Onto Alexa.

I went with Alexa over Google Home because the number of Alexa integrations dwarfs Google's, and I'm all about integrations. Voice recognition feels as good as Google's though.

Getting things setup was really simple, and I appreciated the delayed software update approach. Of course there's a s/w update (there always is w/ IoT devices), but there's nothing worse than being forced into one immediately upon setting something up for the first time. Nice touch Amazon... I hope all devices move to this delayed-initial-update approach.

The way you add capabilities/integrations to Alexa is done by adding what they call Skills. Just think "extensions" or "integrations."

One of the Skills I added required inputting an API token over voice. That was interesting. Imagine verbally telling a computer "A56D8F2298OG9234SHE." The instructions suggested I used the NATO Phonetic Alphabet, so I went and learned that, and then "input" my token. It took a few tries, but I got it in there. This particular Skill required some other settings configuration, so I went on to say things like "SET UNITS Imperial." Configuring software using voice is just wild.

I added my car manufacturer's Skill, and I can interact with my car via Alexa now. This has been useful actually. Instead of firing up the iOS app for my car, I can just say things like "Alexa, ask to lock my car" and "Alexa, ask to start climate control." etc.

Home automation stuff is fun too. "Alexa, lock the front door." "Alexa, turn on the kettle." "Alexa, turn on the Phonograph." (those first two Skills made possible by Wink, and the latter by Logitech Harmony).

I am weary of pulling out my mobile device to do all of my home automation stuff. In general I'm just sick of screens and remotes, so starting to do things via voice is a welcome reprieve. This brings me to the more interesting part of this post.

My Brain
The degree to which my brain has been wired for visual/reading input, and kinesthetic (keyboard/touch-screen) output is more significant than I realized, and pushing myself to use voice has provided the contrast to really perceive it.

With Voice, there is no multitasking; everything is serial. There are no other open tabs to use as background/reference as you do your task. With Voice, you have to have all the information in your head, before engaging. So much of our online/computerized world today allows us to simply copy/paste (metaphorically speaking) our way through life.

Alexa is causing me to use memory in ways I haven't had to in a long time. It also caused me to learn the NATO Phonetic Alphabet so I could better speak to the computer.

Curious to see where this all goes.

Thursday, August 17, 2017

The Three Mobile Notification Tiers

Mobile device notifications have probably become the primary UI I use to engage with my mobile device. I'm constantly amazed at how poorly mobile app developers implement them. Here's an awesome post by Stan Otrovskiy (iOS engineer at AMEX) that gets into how to do the right thing when a user actually selects a notification; great read.

I wanted to get some high-level thoughts down on paper around the three notification constructs nearly all mobile OSes support. Use them wisely.


SMS (aka "text") notifications are presented by the OS and are generally end-user configurable. These reach the device whether or not data is enabled or disabled, and by definition involve server and mobile-device communication. In a connected-device world, SMS notifications are often considered the most reliable form of notifying the user of something because they run on a different carrier protocol and aren't as subject to the general horrors of "data connection" unavailability. Be careful though, if your users are going to use your application while on a commercial airplane flying at 30k'+, SMS doesn't work. In general though, SMS finds a way to get through when data/IP based messages simply can't. The downside to SMS is that it's archaic and poor in terms of features and functionality. On iOS (I don't recall about Android), these notifications do NOT require the end user to initially grant permission for use.


The various mobile platforms (e.g. iOS, Android) provide OS-level notification frameworks. These frameworks allow an application to present OS notifications. The quickest way to understand these as an end-user is to go into iOS Settings->Notifications, where you can see the various types of ways to notify/alert the user to something. If your mobile app has a backend component that wants to engage with the user with a notification (e.g. "Your Uber is arriving."), the user's mobile service needs to a) support data and b) have data enabled on their device. In this case, as should be obvious, the user CANNOT be in airplane mode, otherwise there's no way for corresponding IP packets to get to the OS. These notifications generally require user permission on a per-app basis.


These are notifications that live purely within your application. If your app is a game, perhaps you throw dialogs that say things like "you just won 100 coins" or whatnot. In-App notifications don't abide by any OS-configured rules such as "don't display on lock screen" because they live entirely within the application itself, and are only relevant/visible when the user has the application in the foreground. Of course, you can reflect some, or mirror all, in-app notifications to their OS-level notification counterparts.


At the root of all notifications is gaining the user's trust to send them along in the first place. Regardless of their OS-level notification settings (whether they're liberal and permit all notifications to be as loud and visible as they want to be at all hours, or whether they're conservative and disable all notifications all the time), you have to be wary of being too pushy with your notifications. Over-notifying, or notifying the user of something they don't care about, violates trust. While you may want to engage the user for one reason or another, considering when to do so is important. Users disengage from noisy apps. As time permits, give your users lots of control over the types of notifications they receive. Default settings win, but power-users will eventually want to control all the nooks and crannies of their interaction with your app.

When you're considering conveying a piece of information to a user, it's important to understand the matrix of various notification settings and operating environments your users are likely going to be in. For example, if your application is for rock-concert or major sports event attendees, they don't have data connections available due to cell tower network saturation, nor are they likely to hear or feel notifications/vibrations of any type. Thus, perhaps your only notifications will be In-App when you're guaranteed to have the user's attention.

The best notification/engagement schemes are quickly foiled by a user who has turned on Airplane Mode to save battery life. Make sure you're providing value to the user in all notification settings scenarios, or ensure you know your user-base's settings support what you want to do with notifications.