Wednesday, April 17, 2013

On Cloud User Experiences -- Maybe the Network Really Is the Computer?

John Gage is famous in Silicon Valley for coining the phrase "The Network is the Computer" way back in the 90's. Sun Microsystems took the phrase as it's product management mantra a couple years later. This was a bit of a leap for most people in Sili-Valley, leading to a number of jokes at Sun's expense (my favorite was a t-shirt that read "No wait.. the network is the network, the computer is the computer. Sorry for the confusion.") Gage may be eventually proved right (though Sun might have been decades ahead of the market on this one.)

Software as a Service (SaaS) has been a viable mechanism for delivering solutions to customers for at least a decade. The number of Application Service Providers (ASPs) are growing at least as fast as Independent Software Vendors (ISVs) focused on desktop systems and if we are to believe the trade media, corporate IT managers are clamoring for more Cloud-Based solutions. ISV growth is focused on mobile platforms (almost exclusively Apple iOS and Google Android.)

But maybe there's a future for the mobile web. Maybe the idea of buying and explicitly downloading a an app will go the way of the floppy disk. There are several very good economic reasons for corporate users to move to the mobile web; if ASPs can deliver half-way decent experiences via the mobile web, they have a good shot at taking a chunk of the mobile and desktop app market away from existing ISVs.

And who knows... maybe the next desktop computer you buy will run a web-oriented operating system like Google's Chrome OS or Mozilla's Firefox OS.

So what is a Cloud-Based Operating System anyway?

Ask a hundred product managers what a "cloud based" operating system is, and you'll probably get one hundred different answers. There are a lot of people who use the term to describe customized Linux-based OS distributions optimized to run a browser (and little else.) Google's Chrome OS is the exemplar of this class of distros, but it's certainly not the only one. Other people will tell you the term "Cloud OS" means a particular web application running in a browser that lets you perform typical tasks like editing documents, sorting pictures and even sending documents off to be printed.

But I think I agree with John Gage on this one; "the" computer is no longer the one on your desktop (or in your hand.) If you think of "the computer" as that thing that performs data manipulation tasks on your behalf, it's now spread out across your desktop, your phone, your tablet, your home router and any number of servers across the network. So if "the computer" is now spread across so many different systems, then "the operating system" is too.

Nomenclature fails us in this regard; in the mind of a typical user, terms like "computer" and "operating system" have evolved beyond their technical definitions. "Computer" is synonymous with "Desktop Personal Computer" or "Laptop Computer" these days. You rarely hear people refer to their smartphone or game console as "a computer." And what do most people know about operating systems? Not that they're privileged code bases which manage system resources, but that "an OS is the thing that draws windows on the screen and determines which apps you can run."

From a technical perspective, it seems wrong to call a collection of application software running on a constellation of computers an "Operating System," but from the user's point of view, that might be the most salient feature of future systems. In the future, users may stop looking for the Windows or MacOS X logos on shrink-wrap boxes and start looking for the "Salesforce Compatible Data Source" logo on various web pages.

In the future, when people talk about "the operating system," i believe they'll be talking about network APIs that let systems from different organizations safely share a user's data for the purpose of doing something useful for that user.

No, Seriously, What do I install on my PC?

In the future, I think there will be less "installing" going on. I believe you'll browse to an application's web page, click the "I Agree" button on the EULA and User Interface components will magically appear on your devices. Where we now have App Stores, I think we'll have independent reputation app databases in the future. As part of the process of "installing" a future Cloud-Based OS app, you can configure your user interfaces to check one or several of these reputation databases to ensure they're not malware (or that they don't use bad language, or that they don't show naked people, or ...)

People have long since stopped installing operating systems on hardware (with the exception of power users and Linux fanatics.) PC-based video games are now increasingly distributed online (see Valve Steam or search Amazon for "software download.") Even with bandwidth, security and server costs, online distribution is much cheaper than putting DVD-ROMs in physical boxes. The only reason to distribute your software through a physical retail chain is to appeal to those people who still prefer to buy "things" in computer stores.

In the future, we may see the thin client market evolve into a "slightly thicker client" market. Thin-client class hardware might be fitted with an embedded Linux operating system which boots into a browser. The browser's home page would be set to Google Apps, Facebook, Salesforce or a "Web Desktop" like Glide or G.ho.st. Maybe Microsoft or Oracle will leverage their relationships with enterprise customers to build a "Enterprise" Web Desktop.

Or maybe Community ISPs can become relevant again by selling cheap thick clients that point at Web Desktops served by their systems. Ditto for wireless operators.

What do you install on your PC of the future? Nothing. It's all over the net.

Where does my data go? Where does it rest?

So hopefully you've been asking yourself, "Hey!? Who's got my data!?" Imagine me waving my hands as my eyes glaze over and I solemnly intone, "It's in the Cloud! Beyond the confines of physical reality!"

I would hope that at this point, you would be thinking of how many seemingly decent ASPs can't seem to properly hash your password. There are true risks to putting all of your data out in the cloud. Luckily for web application operators, it's easier to quantify beneficial cost savings than detrimental security risks.

There is no simple answer to "how much risk can I tolerate?" Enterprises will (no doubt) insist that sensitive corporate information be stored on their own servers or those owned by trusted third parties. Individual consumers, who may be using the web to share data with friends and family, may be more risk tolerant.

Any viable web of the future must be flexible enough to support the high-assurance requirements for enterprise customers and the cost-sensitive nature of the consumer market.

Value Added Interfaces

If you go to any typical online application today, the way you get data into the application is by direct user input or uploading files from your PC. And yes, I do mean PC. Even though it's possible to upload  photographs and videos from tablets and smartphones, uploading other data files is a less than compelling user experience.

In the future, I believe we will see "Value Added Interfaces." These will be RESTful Web APIs applications use to share data on a user's behalf. For example, imagine you had a mailing list in a spreadsheet on Google Drive. Ideally, you should be able to give a Google Drive URL to a network based printing house who will do a mail merge for you. The printing house's software queries the Google Drive URL for a CSV formatted address book and "does the right thing."

I believe it will be possible to effectively secure these interfaces; even sensitive data will be available to authorized consumers. In the future, payroll companies like ADP may provide an interface directly to Intuit so your personal tax information is fed directly into the Intuit app. Or Exxon will provide details of fuel purchases directly into your corporate accounting system.

If we want to enable a "all my internet of things data is in the cloud" future, we'll need to move past our reliance on file uploads. They are a legacy of the PC era.

What will I see when I log in?

I have to admit, I don't like the term "Web Desktop." It enforces a PC era model on the cloud-based mobile data future. I don't like the idea of a grid of applications 'cause many times it's useful to think of documents or tasks or modes of thought. Twitter is talking about expanding the types of "cards" they use to summarize information in tweets. Maybe a stack of twitter-esque cards would be a suitable interface? Maybe a "dashboard" summarizing information and tasks of interest to you?

I don't know what you'll see on your screen when you log-in in 2018. Whatever it is though, it will likely be rendered using JavaScript and HTML5.

Monday, April 8, 2013

W00T! Computer Game Camp!

I love being an adult, but there are times I'm jealous of my child. This week was one of them.

The Offspring was enrolled in the Santa Cruz Maker Factory's week-long Minecraft Camp and the one-day Intro to Game Design Course. People who know my child and I, know of our family's love of all things Minecraft; so it's no surprise the Minecraft Camp was a hit. But it was the Intro to Game Design (for 9-12 year olds) course that surprised me. It was the best enrichment activity for my small one I've seen in a while.

Okay... a little bit of background. I'm not the worlds best games programmer. I wrote a couple simple games in the early 80's for the Apple Lisa and Atari 520ST. I also worked at Linden Lab for a while, trying to make Second Life a better place for everyone. But I don't really consider myself a games programmer. Part of the reason is game developers are some of the most overworked computer programmers I've seen in a while. So it was with a mildly heavy heart I heard The Offspring select game development as a career at age 8.  Yes, very cool my child wants to do something technical with an artistic bent; sad that it's a career that involves less sleep than a mother wishes for her child.

But seeing the joy that (not only) my child expressed during the Game Dev Course sorta changed my mind on this one. My kid positively lit up during the class.

Yesterday's class was taught by Joe Allington, who is himself finishing up a degree program in game design at UCSC. Joe was a great instructor, bringing a palpable love of the subject matter and excitement to the course. He used YoYo's GameMaker Studio as a platform to step the kids through game programming basics: (what we used to call) player graphics, basic game logic and simple animation. By the end of the course, the kids were adding their own animations and sounds, adding new game elements and effectively building completely new game levels. (Note: there's a free version of GameMaker Studio for Wintel and Mac at YoYo Game's web site - we downloaded it and are using it continue hacking platfomer levels.)

I give this course a thumbs up. If you have a child between 9 and 12 who likes games, check it out. (Also, I was happy to see the class was not all-male. Don't shortchange your daughters' futures by thinking they won't like or be able to handle game development. Girls can do GameDev too!)

Tuesday, March 26, 2013

Web War II

Another 100 word story for Crap Mariner's contest. Check out all the contest entries, they're fun!

"Captain Gecko reporting as ordered!" the middle-age, bedraggled officer said as he reported in. Colonel Layout returned his salute and gave his subordinate a quick glance. After years of Web Wars Gecko was still a solid soldier; frayed around the edges, but still solid.

"Gecko," the colonel started. "This damned campaign has flipped over to quirks mode and reports are the border: just turned red. General staff fears it'll be dotted with holes after the next event loop"

"Gecko, you have a right to know. Franky, we have reports..."

The rest was lost in the scream of a page reload.

Thursday, March 14, 2013

smuggery = smugness + buggary

This is a story I wrote for Laurence Simon's 100 Words Story challenge over on OneADayUntiltTheDayIDie.Com. If you write words, you should go over there and do a couple of the challenges.

The only thing that saved ol' Jim Malone was the wet darkness of the city street. Leaning back to avoid the crooked merchant's fist, the old war wound and rot-gut whisky conspired to plant him face-first on the pavement.

All the way down he's looking at the flash of the tommy gun. That's got to be Li-Sheih's boys. "Crap," he thought to himself, "led them right to the old man."

He woke next to an old dead body, the crowd starting to close in; pellets of tea scattered on the sidewalk and the stench of pu-ehr in his nose.

Swizzles Matlow

"Swizzles Matlow" is the name of a British confectionery company. But my friend Beta commented it was the perfect name for a character in a pulp noir novel, so I came up with the following two snippits. Both received a good reaction from my Facebook friends, so you'll probably see more of Swizzles and Nick. The second one started out as a comment to a one line status update a friend of mine made about measuring cups, that's what the measuring cup reference is about. Bonus points if you know where Mary-Allen is.

In Which Swizzles and Nick are Introduced...


She walked into the room with a gait that hung in the air like a broken question mark. "Aren't you going to buy me a drink, Mr. Danger?" she asked.

"Not sure I want to get involved with a dame who can break punctuation marks," I replied. "Besides. wehaven't been introduced. You obviously know my name, but what do they call you at the orthography repair shop?"

Her eyes flashed for a moment and a smile dusted her ruby-red lips as she said "Names? Names aren't important; they never were. But if you need something to need a convenient placeholder for cognitive processing, you can call me Matlow... Swizzles Matlow."

Swizzles and Nick Share a Tender Moment


It was a dark and stormy night as a shadow moved across the half-lit back alleys of the city. Two figures meet on a lonely street-corner. Masked by darkness, the first man's chiseled face is briefly lit by a quick drag from a cheap cigarette, betraying a crooked nose and a two-day old beard. Throwing the butt into the street, he muses about the fragility of life while watching the gutter-water carry the dirty cotton trash into the storm-drain. How like life; carried by barely seen forces towards an ignominious end.

"Do you have the package?" he finally asks, his words slow and deliberate.

"Right here. You have the cash?" the other says in reply. Her soft voice betraying a femininity hidden under an oversized Canada Goose(tm) parka.

"One dollar, ninety-eight Canadian; just as we agreed." he says, reaching for his wallet.

"SLOWLY!" the other demands, her instincts tripped by the sudden move of a hand into a breast pocket.

"Don't panic, Swizzles, I'm just going for my wallet," he says in his calmest voice. "You're my best source, there's no way I'm letting you get hurt." A wallet slowly emerges from behind his overcoat lapel. Flipping through the cash he peels off two one dollar bills. "Here, keep the change," he says, holding out the bills.

"You're a saint, Mr. Danger," she says, "and what do you know about getting hurt."

"Swizzles!" he pleads, a faint note of pain in his voice, "that's not what I meant." He continues, his voice beginning to crack, "And I think we both know about pain." Regaining his composure, his solid persona re-emerges with stern determinism in his voice, "Let's keep it about the transaction."

Opening the package he examines the merchandise. At once he discovers the flaw: "WHAT ARE YOU TRYING TO PULL HERE!" he yells. Two men he didn't notice before down the street suddenly stiffen and look their way.

"You asked for a measuring cup. I brought you a measuring cup. What's your problem!?" As she speaks the men down the street begin walking in their direction.

He talks fast to try to hurry the transaction. The interlopers down the street are walking slowly and cautiously, but it won't be long 'til they're close enough to make it a bad day for the both of them. "This isn't a cup! It's metric. And it's 250 milliliters. A 'cup' is an imperial measure. It's close to 240 milliliters. I can't use this!"

Swizzles thinks fast and makes a fateful, snap decision. The men now rapidly approaching are clearly part of the Mary-Allen Tong. She knows Old Man Li will be furious he was cut out of the deal. "Here! Take Mine!" she nearly screams as she removes her personal measuring device. "It's a third cup measure I use for rice, textured vegetable protein and other dry goods. It'll get you through 'til we rendezvous again."

Danger grabs at the cup and suddenly he finds himself grabbing her hand. He doesn't want to let go. A tear begins to well up from the corner of his eye, washed away by the cold rain coming off the lake. "Let go, Nick," she says, "you have to let go."

"I was a fool to let you go before," he says, his eyes locked on hers. His eyes, open to her completely, perhaps for the first time, reveal the depth of his love and the pain he endured when they fell away from each other.

"Oh Nicky!" her voice trembles, clipped by a quivering lower lip. "You must let me go."

Her head turns as she pulls her hand away from his. She doesn't look back as she walks out of his life once more.

On the north side of town a private dick drunkenly mumbles the words of old love songs, poisoning himself with cheap liquor just to get to sleep. In the background, the story on the TV news is about two unlucky south-side mob enforcers who wound up dead. Empty Micky's Big Mouth bottles litter the floor of his cheap hotel room and somewhere a woman cries herself to sleep.

Growing Corn

“I don’t want to hear your philosophy if it doesn’t grow corn,” he used to say to me. It was a quote from an old geezer who lived on the reservation up the highway.

There was a perfect place he knew to picnic on Highway 200 behind a stand of trees. We used to go and eat and talk and make out. He knew the owner so it wasn’t trespassing, he said. In the summer it was perfect; it was just warm enough to take some of your clothes off and there was a cold stream to stick your feet in if you got too hot.

We went up just about every day after he graduated; except Sunday. Sunday was for church -- I felt weird going to church in the morning and sneaking off to the woods in the afternoon. Every week I got the lecture about how much God loved me, and while it felt good to make out. Okay, okay, we were making love -- having sex. I don’t like that; just say we were making love. But I know God loves me, but making love felt too... it felt too fundamentally right to be a sin. But back then I was still a little unclear on my personal relationship with Christ. It seemed rude to hurt God’s feelings, but it still felt like it was okay.

So we would be up there just about every day for an afternoon picnic. In the great outdoors with not a stitch of clothing between us; but it still felt safe. No one could  see us but the songbirds. We talked about a lot of things; never about him leaving though. After making love we would lay back and try to see the clouds through the trees, saying which of our friends they looked like.  I didn’t realize clouds could look like baseball players and cheerleaders and debate team captains, but they can. We talked a lot about writers; he said he wanted to go to college and become a writer.

He certainly did read a lot. That’s where he got the corn quote from. Or the quotes about religion. And the quotes about people. He had a lot of quotes handy and memorized some of the Shakespeare sonnets. I read them now and they sound funny; but when someone’s reading them to you...you just don’t know what it’s like ‘til someone does it.

One time I got very angry when he teased me about going to church every Sunday. “Religion is the opiate of the masses,” he said. I told him I didn’t like how he would say things about my church; he didn’t know anyone there. They are all good people and help each other out; just like any religion tells you. Even humanism says it’s a good idea to be nice to each other, or at least that’s what I read.

One time I started talking about how being kind sometimes means confronting people you love; kicking them in the butt, so to speak. But then he cut in with “your philosophy doesn’t grow corn!” and try to splash water on me.

At the end of the summer I had finally gotten through to him. And for a couple weeks we had some really great times. Be patient, all ye sisters with well-read boyfriends; one day you will get a word in edgewise.

The night before he left for the Marines we drove out one last time and lay under the trees. It was starting to get chilly at night, but there were still a few lightning bugs around. They were like little stars hung under the firmament of leaves and branches.

I got a few letters from him when he was in training and a few more when he was overseas. They weren’t regular, but I could kind of tell things were rough. I think he was trying to hold on to anything normal in his life, so I would write him back telling him to stay safe so we could drive back out to our old picnic spot and he could tell me all about writers and philosophy.

There are no secrets in a small town and everyone knew we were going steady. No one asked me to prom ‘cause they knew I would say no. My last quarter in high school, everyone knew I was ready to be gone. When he got back from the Marines, we were going to move to Northfield and give the “young couple in college” thing a try.

It was weird when his father came over to the house. I don’t know what I was thinking he was doing there. His dad was the town dentist; I honestly thought he was coming to scold me for not brushing my teeth after lunch or something. We almost got all the way through it before we both broke down crying. First me, then his dad. He had died from wounds received during a firefight in an area that was supposed to be safe; that’s all I remember.

I used to go out to our spot up on Highway 200 from time to time and scatter wild rice to try to get the songbirds to fly in close. It was always Blue Jays that would take the rice, but I guess that’s okay.

One day I saw a couple of kids up near our old spot and thought it best to give them some distance. I guess our old spot wasn’t as private as I thought.

The next summer I came home from Moorehead and asked his dad to go with me to church.. We sat in the back row while the preacher talked about forgiveness and light in the darkness and everlasting life. I don’t know if I believe in heaven; if there is an after-life, it’s better and different than this one. After the service we hugged and he walked up to look at a painting of Jesus on the cross. He looked at it like he saw something for the first time and slowly walked back out to the car.

Sunday, February 10, 2013

Sharing Things (Vaguely Securely) with Mobile Devices

One of the things I do in my work is very basic User Experience problem solving. A fun problem just emerged and I wanted to share some of the work I've been doing on it.

So a couple weeks ago I was talking with a friend whose mobile app is 98% finished. They've been having a fun time, getting to play with all sorts of new technologies: Augmented Reality, Near Field Communications (NFC) and the latest UI widget sets. At one point, we attempted to share data between our handsets (which is what the NFC portion is for.) Well.. it turns out there are still a few snags in sharing data between devices from different manufacturers (and possibly different versions of the Android OS.)

I am not an expert in making NFC work on Android, but I've got to think if it was hard to share data between a Android Ice Cream Sammich and Anroid Jelly Bean, there's no hope of getting things to work when you try to communicate with iOS users (not to mention Boot2Geko, BlackBerry or WinMobile)

So I got to thinking... how do you easily communicate a small amount of data between two devices when the users are standing next to each other? It should go without saying, this transfer should be reasonably secure; an eavesdropper should need to be close enough that the people involved could see large antenna or telescopes sticking out of their backpacks.

The industry is gearing up for NFC and that's great, but I can't help but think someone in the value chain is going to try to put a wall around users. If it's not Apple or Samsung forcing users to use a manufacturer-specific UI or API, it's probably going to be the carriers being jerks and requiring app developers to pay stacks of cash to digitally sign apps that can use NFC devices.

So I then hit on the idea of using QR Codes as a sort of "poor man's NFC."

Sure, QR Codes aren't super popular in the states, but there's enough support in Europe, Japan and US Geek circles to make it worth thinking about.

My idea is to add a "show QR code" feature to apps or mobile web pages. The QR Code resolves to a randomly generated URL that has just enough smarts to communicate application state or data from one mobile device to another.

So... if I wanted to add a "share this track" feature in my audio player app, i would press a button and a QR Code encoding a URL for that track would appear on my screen. The person I want to share it with would use their QR Code scanner to scan my screen and be taken to a "meet in the middle" application out on the mobile web.

The "meet in the middle" app should be specific to the transaction; it should only allow that one particular track to be shared and the URL should be active for only a few minutes or even for a single use. If this is part of a legitimate music sharing service like Spotify or Rhapsody, we probably should log the user in to make sure they're allowed to receive the track. Authorizing the user isn't strictly required for sharing data through random URLs embedded in QR Codes, but it's probably a good idea. Once the receiver scans the code and is redirected to the "meet in the middle" application, it can do whatever it needs to do to complete the transaction.

But anyway... the big idea here is there may be some roadblocks to deploying NFC for generic sharing applications, so consider "meet in the middle" URLs encoded into QR Codes. QR Code readers are more or less universal for smart phones and bad guys would have to get close enough to scan someone's screen to get the randomly generated URL.

I put together a very basic demo at the QR/UX Demo Page and invite you to try it out!