Tuesday, July 29, 2014

The U.S. Used to Have Hundreds of Time Zones?

It is fascinating how technology impacts us, culturally. I especially find the history of timezones interesting. Today, we take for granted that computers and phones keep accurate time down to the second. It's now simple for computers to keep precise time since they all maintain universal coordinated time (UTC), sometimes referred to as Greenwich Mean Time. Basically, every computer maintains one time, UTC, and then offsets it based on the local time zone.

Hundreds of Time Zones

Two hundred years ago, America had hundreds of time zones. As odd as that sounds, it makes sense since noon was when the sun was at its zenith in a given location. High noon in Boston might be seven minutes earlier than New York which might be three minutes earlier than Philadelphia. Having hundreds of time zones wasn't an issue since these cities weren't connected until the railroads needed to run on time schedules.

PS – For the record, it's daylight saving time, not daylight savings time. We're saving daylight by moving it to the end of the day. We're not saving daylight like money in a savings account. :^D

Managing Complexity

Cessna 182 airborne checklist.
From cars to computers, the 20th century saw an increase in complexity like no other. Consider how the automobile changed our lives to the point that entire cities are designed around it. Grace Hopper summed it up best, "Life was simple before World War II. After that, we had systems." And, ultimately, software engineering is all about managing complexity.


At yesterday's Tech Coffee, a fellow attendee shared this 2010 NPR piece with me. This radio interview highlights the importance of using checklists to avoid medical complications. Checklists are common, especially in aviation. But it took decades until it was incorporated as a crucial component in a pilot's standard flight procedure. As a time management aficionado I have great respect and appreciation for the checklist, especially in aviation where missing a single step can be deadly. Initially, it seemed odd that 20% of the medical profession was strongly against using a checklist. When these medical professionals where later asked, "If you were to have an operation would you want the checklist?" 94% supported it. Deadly mistakes by medical professionals have less of an effect on themselves compared to their patients. This is very different in aviation where a deadly mistake can cost pilots, as well as passengers, their lives.

It's amazing how much work it takes to simplify complexity.

Wednesday, July 23, 2014

Circle of Grief

USNA 1993 classmates lost in the line of duty.
I enjoy being the president of the USNA class of 1993. Reunions, networking events, and trips back to Annapolis, MD make it all worth it. But there's a sad side I deal with every few years when a classmate or spouse passes away.

In the past I've made some mistakes in my haste to get the news out to my classmates. The key lesson I've learned is to respect the family's wishes. The only way I can know their wishes is for me to reach out to the family and ask. This is not an easy task for me to do, but it pales in comparison to what the grieving friends and family are going through.

On the Inside

What's worse than being on the outside, looking in, is to be on the inside experiencing it. Emotions are high and fragile. Seemingly minor things can set people off. Most of us have seen or experienced this as some level. Fortunately, there's a simple lesson to help us deal with this known, by several different names, as the Circle of Grief, The Ring Theory of Kvetching, or How Not To Say The Wrong Thing In A Crisis.

Comfort In, Dump Out.

The Circle of Grief starts at the center with the person in crisis. Everyone in that person’s life is placed in concentric circles starting at the center with the people who are closest to the crisis (i.e. spouse, parent), moving out to the people in our lives who more distant.

The person in the center ring can say anything they want to anyone, anywhere. They
can kvetch and complain and whine and moan and curse the heavens and say, “Life is unfair” and “Why me?” That’s the one payoff for being in the center ring.

Everyone else can say those things too, but only to people in outer rings.

When you are talking to a person in an inner ring – someone closer to the crisis – the goal is to help.

Comfort In, Dump Out.

At some point, we'll get our turn at being in the center of the ring.

Thursday, July 17, 2014

The Dangers of Private Planes

Update, 24 Jul 2014: The president of the AOPA responded to the NY Times op-ed.

Yesterday, the New York Times published an op-ed piece on the dangers of private planes. Most people don't realize, on average, there's one incident each day that the NTSB investigates. Few of these incidents are fatal. Regardless, all of these incidents are reported, publicly, in their database. Ninety-four percent of the fatal incidents involve general aviation (GA). GA flights cover everything outside of commercial scheduled flights and government flights. In other words, GA flights include operations like charter, corporate, balloon, glider, and small plane flights to name a few.

The op-ed author reasoned that GA flights – especially by private pilots – are susceptible to accidents because most are amateur pilots. That makes sense. A pilot flying a few hours per month isn't going to be as good as a professional pilot doing it a few hours every day. The author proposed:
The F.A.A. should require all general aviation pilots to carry liability insurance, which would force them to have better training.

Most Americans would be surprised to learn that a private pilot, unlike an automobile driver, isn't required to have insurance. I personally carry a "smooth million" worth of insurance which covers liability and hull damage in the air or on the ground. But carrying liability insurance, alone, isn't a high bar to set in terms of safety since insurance companies don't look too hard at how many hours/year a pilot flies. Instead, they're more concerned with the cost and size of the plane. To qualify for my insurance I only required seven hours of formal flight instruction in my plane.

Insurance requirements does not equal proficiency. Instead, the FAA's biennial flight review sets the standard.

I'm wondering why the op-ed author makes no mention of the biennial flight review requirement. Being current and experienced is the key to being a better pilot. Flying through the clouds, especially low clouds when landing, requires a pilot to fly six published approaches every six months. It's practice and FAA requirements like this which will improve a pilot's skills. Insurance is the wrong tool to solve this problem.

Sunday, July 6, 2014

The Pitfalls & Virtues of Google Apps

If you've ever hosted a domain name with Google Apps, keep in mind that a hacker has a good chance of accessing your e-mail long after your domain's expired since Google stores your e-mail indefinitely if it's a free Google Apps account. This worked to my benefit, tonight, but it badly stung Twitter about five years ago: The Anatomy Of The Twitter Attack

My Story

2.5 year e-mail gap
Two and a half years ago I let a domain name expire that was hosted on Google Apps. It was a domain I no longer needed. But, I forgotten that this domain was tied to a four letter Twitter account that I occasionally used which receives a lot of inquiries – mostly from people asking me to transfer this account to them.

When my Keychain became corrupted, several months ago, Twitter would not let me log in to this Twitter account without confirming my e-mail address. Obviously, I couldn't receive e-mail since I no longer owned the domain name. The problem was, over the years, I've owned a lot of domain names and I had no idea which e-mail address was tied to this Twitter account. When I tried to reset this Twitter account on the twitter.com website I was told that an e-mail had been sent to my e-mail address on file. That was of no help since I didn't know which defunct e-mail address the confirmation was sent to.

Tonight, on a whim, I tried to reset my password for this Twitter account with the iOS app instead of their website. Lo and behold, the app reported that a confirmation e-mail was sent to a slightly redacted e-mail address (it looked something like this: jo***@ex***.** – let's pretend that my expired domain name was example.com). It was just enough of a hint to point me in the right direction. I visited https://www.google.com/a/example.com and logged in. When I checked my Gmail account I could see that the last e-mail received was in 2012 – which was when I let this domain name lapse. A quick visit to GoDaddy and $9.17 later I re-owned the domain name I once had a couple of years ago. With the new domain name in hand I updated the MX records with the info for Google's mail servers and I received my confirmation e-mail immediately. The entire process took about 30 minutes.

Yes, it's very handy that Google keeps my e-mail forever, but it can be very dangerous too.

Monday, June 30, 2014

Swift First Impressions

Hiking the Pacific.
Earlier this month, Apple announced a new programming language, called Swift. It's designed to be fast, safe, modern, and interactive.

Swift is big news since it was unexpected. I haven't been this excited to learn a new programming language since Sun released Java in the mid-1990s.

Java and Swift both took about four years to develop. But, Swift is already more mature than Java 1.2 was two years after its initial release. Sun used to have an office down the block from the Apple Campus at Mariani One. When I started working at Apple, in 1998, we joked that we could hear the Java API's deprecating across the street in the Sun building. I do not imagine many Swift APIs deprecating anytime soon since they're based on, and bridged to, Cocoa's Objective-C APIs. (Coincidently, Java 1.2's codename was Playground which is the same name of Swift's interactive coding environment.)

Getting My Feet Wet

Last week I created a couple simple Cocoa Swift apps for both OS X and iPhone. It was a piece of cake. To this day, I still love that I can drag between my code and my UI in Interface Builder to link up ivars (outlets) and functions (actions).

I spent most of this past Saturday getting up to speed on Swift. I read the docs and watched a few tutorials including the Introduction to Swift, Intermediate Swift, and Swift Playgrounds videos from WWDC 2014. So, after hiking half a dozen miles along the Pacific, yesterday morning, I decided it was time to dig deep into Swift.

What to Code?

I wanted to write an algorithm requiring a fair amount of trial and error without much mental heavy lifting. For me, the answer was string parsing. I once spent a long time coding, testing, and debugging Java (Eclipse with the WOLips plugin for WebObjects) to parse SMS text messages for newspaper classified ads:
My Tweet Storm Swift Playground
Sell  (Item name)  ($Price)  (ZIP code)  (Item details)

For my first real Swift task I reverse engineered Dave Winer's Little Pork Chop algorithm which lets you send out a tweet storm. Basically, Little Pork Chop breaks up blocks of text longer than 140 characters into tweet size chunks.

Swift and Powerful

In a nutshell, Swift's Playground is worth its weight in gold. The Playground's interactivity is powerful. Typically, I write a few lines of code, compile it, and then run it. I would never recompile an app after writing every single new line of code. But that, effectively, is what Playground does for me. It kept me focused and my code clean. I caught my syntax and logic bugs in real time as it displayed my variables and loop counts. Even better was that my infinite loops were immediately visible in the sidebar. I can see myself writing all my algorithms in Swift's Playground before copying them to my projects.

Swift Playground Gotchas

On the flip side, it doesn't seem possible to step through code, so loops execute until they terminate. Once a loop completed I could see what happened by examining the value history or using Quick Look.
Quick Look into an array and then into each element.

Another wrinkle I encountered was trying to get the character at a string index. The best solution I came up with was fairly ugly:
var currentChar = String(Array(subTweet)[indexOfCurrentChar])
This might be due to the fact that an index into a string array element, which is usually equal to the number of bytes, doesn't hold true if you're using UTF encoding where each character may require multiple bytes. If that's the case, then I need to write my own String indexer. Please let me know if I'm off base.

Free Code

It took me about two and a half hours to code and debug my tweetstorm algorithm in the Swift Playground. Am I getting Swift? Yes, I most definitely am, but I'm probably still using old coding patterns while I learn the slick new modern Swift syntax.

One final piece of Swift beauty is that you can download my Tweetstorm Swift Playground and run it for yourself in Xcode6-Beta.

Thursday, June 26, 2014

'What’s the Big Deal About Outliners?'

Balboa Park, 7 AM: The perfect place to think about outliners and this blog post.

Two years ago, while having lunch with Dave Winer at Carnegie Deli, I embarrassingly confessed to him that I didn't fully understand outliners. He told me, "That's OK, you will."


While I'm a big fan of writing down tasks in flat to do lists, I never took the time to structure my to do lists into an outline. Since the beginning of last year, Dave has been working on a very interesting web based outliner that runs and stores your outline inside your web browser with the ability to also save it to your Dropbox. While saving data to Dropbox isn't a big deal, the ability to save data using a web browser's local storage feature seems underutilized by developers. The overlooked beauty of Fargo is that Dave's web based app can scale, big time. The Fargo web app is served up as a static HTML web page with dynamic Javascript (Node.js) so all the heavy "thinking" and storage is done in the client's browser. Since the outline is saved either locally or to Dropbox that means Dave doesn't have to worry about customer storage requirements if he gets a billion users, overnight.

Little Porkchop and Happy Friends

Alcazar Garden and the California Tower
Two weeks ago, Dave launched Little Porkchop which lets Twitter users send out a tweetstorm. As I played with it, Dave hinted that he had something bigger on the horizon. That "something bigger" came a couple days ago when he released Happy Friends.

Happy Friends is an outliner that let's you embed a Twitter user's feeds into an outline. And, since it's an outline, you can indent, outdent, and rearrange Twitter users while archiving individual tweets. Twitter and Facebook are very flat formats consisting of a post with comments threaded to it. Happy Friends, on the other hand, turns a flat Twitter feed into a mailbox style reader. Once again, the beauty of Happy Friends is it can scale to the moon and back without any load on Dave's servers.

So, after all of Dave's arm waving, I'm starting to get it. Slow and steady wins the race.

Thursday, June 19, 2014

Aero Glass Augmenting the Cockpit with Google Glass

From time to time we see true technological innovation. As I've said before, innovation is anything that can reduce the cost of a transaction, either in terms of time or money. Revolutionary technology doesn't necessarily need to be disruptive, but, ideally, if a new technology (i.e. iPhone) can replace multiple, older, technologies, (camera, iPod, phone, maps, etc), then it's a game changer.

At last night's San Diego Startup Week VC after-party, I had a long talk with the VP of business development at Aero Glass (glass.aero). I had a clear idea of the augmented reality benefits of using Google Glass as a HUD in the cockpit. But, I didn't fully grasp the checklist benefits until I watched their demo video. Pilots, quite literally, live and die by their checklists. If I forget to turn on my carb heat when landing on a cold humid day I could get ice built up in the engine. Also, a surprisingly common mistake made by private pilots is that they forget to put down their landing gear, even with an audio alarm beeping in their ear. Most importantly, during an emergency, a checklist displayed on a personal HUD will keep the pilot focused.

The Aero Glass features in this video, below, will become very common place in the cockpit. It's just a matter of when; and, from the looks of it, it'll be very soon since Aero Glass will be attending "Oshkosh" in six weeks. Their business will definitely get some attention there.

Tuesday, June 10, 2014

Facebook Tracking and Privacy Concerns

Facebook is tracking me and I didn't realize it.

My drive to and from the Grand Del Mar.
I was looking at my Facebook activity log and I clicked on "Include Only Me activity." That displayed my Facebook activity, which only I could see, including places I had been and how long I'd been there each day. The level of detail is surprising. Yesterday, Facebook showed my journey from home to Tech Coffee and then my drive and three hour stay at the Grand Del Mar's Club M.

Stop Following Me

Facebook provides instructions for turning it off, but, you'd need to realize it's turned on in the first place. It seems this tracking feature is turned on and off via the mobile app, but the Location History map is displayed on the website.

Forewarned is forearmed.

Author: Joe Moreno

Live Indians, Dead Puppies, and
Fake Sea-Monkeys

When I was a kid I bought a Native American stone arrowhead at a Boy Scout event.

One Saturday afternoon I was sitting next to the shed in my backyard where we kept our trashcans when I found the arrowhead in the dirt. I thought my mother dropped it on the way to the trash thinking it was just a rock in my bedroom. I picked up the arrowhead and went to put it where it belonged when I discovered that the original arrowhead I'd purchased was right where it belonged in my room.

The arrowhead I found in my backyard was a real life archeological discovery from hundreds of years ago.

While my arrowheads are long gone this brought back a memory of when my namesake cousin found a dead puppy in Brooklyn when he was a kid and created his own archeological piece of history. He and his friends took the dead dog down an alley to a construction site and gave the pup a proper burial.

It turns out that the building being built was a public library and the construction workers later uncovered the bones of the dead dog. When the library opened, they had a contest for kids to write about what they thought the bones were. My cousin, Joe, was a sharp kid. He wrote about what had happened. He figured he was a shoo–in with his unfair advantage.

Did my cousin win? Nope, he wasn't even close. The kid who won wrote about how the dinosaurs roamed the earth hundreds of millions of years ago while wearing eyeglasses and taking vitamins.

As a kid, we learn, quickly, about truth in advertising and to never let the facts get in the way of telling a good story. Whether it's the pair of x-ray glasses we bought which really don't see through things or the sea-monkeys which don't look anything like the comic book ad. Everyone loves a good story.