Personal Computation

Discover Supercomputer 2 by nasa_goddard on flickr
Discover Supercomputer 2 by nasa_goddard on flickr

During the 1980s and 1990s, a powerful revolution took place in computing hardware. Programs had historically been executed on mainframe computers, fed commands manually at first and then from terminals. As computing power increased and chip prices fell, terminals went from thin clients that logged in and executed programs remotely to full-fledged computing devices. Apple and Microsoft notably capitalized on this revolution. Bill Gates’ dream was to put “a computer on every desk and in every home.”

By moving computation on-site, users were given unprecedented power. Even if Internet connectivity was not prohibitively slow, it would be difficult for mainframes to compete against the responsiveness and personalization of an on-site computer.

This selective retelling and framing of history is intended to form the foundation of a present-day analogy. The personal computer revolution of the 20th century is similar to a revolution I would like to see take place in personal computation.
Personal Computation

We can define personal computation as a system that uses data and algorithms to provide a highly personalized experience to a single user. Compared to a massive, centralized, mainframe-like system, a personal computation system would take different approaches on hardware, software, and data.


Through virtualization and containerization, hardware is becoming less directly tied to computation. While there are other configurations, let’s compare two: infrastructure you don’t own or have access to (e.g. SaaS/cloud services); and infrastructure where nobody has more control or access than you (e.g. a web host or IaaS).

“There is no cloud. It’s just someone else’s computer.”

Running a “personal cloud” on a web host (or Infrastructure as a Service provider) is still technically using someone else’s computer, but gives you different levels of control, access, privacy, and security. Notably, if you rent a computing resource from a utility, they should not have access to your data and should not be able to dictate what software you can or cannot run on that resource.

This is a comparison between two cloud-based infrastructures. In order to optimize battery life on our mobile devices, we will ultimately need to perform many types of computation on a remote service.


Cloud providers perform personalized computation by developing complex algorithms and running them against the vast amounts of data they collect on you, your friends, and people who resemble you.

Algorithm: a set of rules for calculating some sort of output based on input data.

Facebook’s News Feed, Google Now, and Apple’s Siri give users a lot of functionality, but the algorithms only work within each service provider’s walled garden. You can’t use Facebook’s News Feed to surface important content your friends posted outside of Facebook (if they didn’t also post it to Facebook). You can’t use Google Now to automatically remind you of upcoming travel, appointments, and bills if you don’t use GMail. You can’t use Siri’s speech recognition outside of iOS or OS X. You also can’t get new functionality or features to any of those services unless their engineers add it or if they provide a specific mechanism for 3rd party extensions or apps.

Currently, these service providers’ state-of-the-art algorithms are far more advanced and better integrated than anything you can install and run on your own. However, there is no technical reason you can’t get most of what they provide without connecting to a company’s centralized service. In fact, if you had access to and control of these algorithms, you could apply them to data that exists outside of a walled garden or to personal data you don’t want to share with a 3rd party.

That is to say, despite all the amazing machine learning algorithms deployed by centralized service providers, they’re only able to scratch the surface of what would be possible with software outside of a walled garden.


Today, in order to get highly personalized computation, people give up access to a vast array of highly personal information—where you are at all times, who you talk to and when, what you say to your friends and family, and what you like to eat, wear, watch, listen to, and do. This information is valuable enough to advertisers that ad publishers can profitably invest tons of money into servers and software development and giving the computation away for free.

As we’ve discovered during the last decade, people in general are not at all reticent about giving up privacy in return for being able to be able to basic things like talk to friends online or get driving directions.

If you told everyone it’s not necessary to completely surrender their privacy to many 3rd party companies, would they care? It seems like only a minuscule fraction of people would. Ultimately, if there is a limit to how much privacy people are willing to give up, it would probably (hopefully) be different for a 3rd party company than for a system only the user has access to. Given more comprehensive data about the user, a personal cloud type of system has potential to deliver higher personalization.

The Alternative to the Mainframe

Given the striking resemblance of today’s web services to mainframes, could there be a revolution on the horizon similar to that of the personal computer? There is no shortage of personal cloud projects or decentralized services. Sadly, many of them attempt to be open source clones of existing centralized services, which is akin to installing a mainframe in your living room and calling it a PC.

What would the software equivalent of the personal computer look like? What if we could run whatever algorithm we want on whatever data we want? What if we owned and controlled a system that did not have ulterior motives, or get acqui-hired, or prevent us from escaping a walled garden?

Existing services, like those provided by Google, Apple, Facebook, and so on, set a high bar for ease of use, user experience, seamless integration, and powerful yet simple-looking (“magic”) functionality. But at the end of the day, it is just software, and there is no technical reason why it needs to run in a 3rd party’s data center.

Servers and storage are getting cheaper, software is easier than ever to distribute, programming languages and frameworks are enabling ever more complex and extensible applications, and complex systems are becoming more easily reproducible with containerization.

I’ve been thinking about and working on a rough proof-of-concept of this for a few years, and quit my job a couple months ago to work on it full-time. It’s certainly not as easy or simple as it sounds, but I’ve come up with some interesting strategies and solutions. During the next few weeks, I’m planning on writing about some of these concepts, as I’m stretching the limits of what I can accomplish while working in a vacuum.

2013: A year of working from anywhere

It would be nice to recap the year using photos and a map, but for now a list of places and events will have to suffice.

January: I booked a flight to Amsterdam for a couple weeks to couch surf with a friend I met at SXSW years prior. While there, I noticed 3 of the most intelligent and interesting people I know from around the world were converging in Switzerland to attend the World Economic Forum and figured, what the heck, why not swing by and try to crash some parties? I found a cheap flight from Rotterdam (less than an hour from Amsterdam by train) to Geneva, where I rented a car and drove across the country to Davos. Turns out you can’t really crash parties at the World Economic Forum; there are too many fully-automatic assault rifles. Driving through the Swiss Alps made the entire trip worth it. Incredible.

February: I attended a small tech conference on a boat in the British Virgin Islands. I figured if I was going to spend all kinds of money to be on the boat for a week, I might as well make a trip of it and spent a week with a friend who coincidentally lives a stone’s throw from where the conference’s boat was docked. There’s not much to do on Caribbean islands when you’re not on vacation or spending money, so I tend to be very, very productive. I remember making excellent progress on a Node.js CLI app to render videos of cars spinning around for my client.

March: I didn’t leave the country, but I went to Texas for SXSW, and that’s pretty close. I stayed with an old friend (since 5th grade!), who recently had a kid. Oh, how fast life whizzes by when you spend your life on the go and only check in with someone every year or two.

April: I went back to New Zealand, and this time I reserved a campervan in advance and spent most of my 3 week stay gallivanting around the kiwi country side while working from wifi-enabled commercial camp sites (“holiday parks”) from Auckland to Queenstown. Two weeks in 2012 wasn’t enough. Three weeks in 2013 wasn’t enough. I desperately want to go back as soon as possible for a greater number of weeks, which I’m sure will also not be enough.

May: I attended another tech conference, this time in Belize with 27 CTOs, investors, and startup founders. It was only a few days long, so I hopped over to Ambergris Caye, which was recently in the news as part of John McAfee’s saga.

June: I spent a week in Germany tending to a 2 year old physical installation I worked on at Volkswagen’s Autostadt.

July: Upon getting my passport back from the Chinese consulate faster than expected, I was free to leave the country during July. I wanted to keep my streak of leaving the country every month (except for March) going, so I hopped up to Vancouver for a week. First time to Canada! I napped in my third hammock of the year, which made me realize I had napped in hammocks in three different countries in 2013, none of which were in the USA.

August: I slowly made my way to Beijing, with a multi-day layover in Hawaii to visit friends. After a couple days in Beijing, I met up with a couple friends from NYC in front of a coffee shop, where we were swooped up and taken to the DPRK.

September: After a week in the DPRK, we returned to Beijing, where I stayed an additional 10 days before slowly making my way back to the Arizona with a 10-day stopover in Hawaii. I didn’t know where I should stay in Beijing, but after reading a summary of some of the districts, I booked a hotel in “the Silicon Valley of China,” Zhongguancun.

October: I wanted to visit a friend of mine in London, but he had to go to Dublin to speak at Web Summit. He was able to secure a spare ticket, so I darted off to Ireland and then England—first time anywhere in the British Isles!

November & December: I ended up just shuttling back and forth between NYC and PHX for Thanksgiving (PHX) and Christmas (NYC).

What an exhausting year! The only downside of my travel in 2013 was that almost every trip was about 2 weeks long, which is not very practical or economical when leaving the country or crossing an ocean. Instead of boomeranging out of the country and back many times, I would prefer to wander more slowly and go to more places when visiting a region. Hopefully I can make that happen in 2014.

A Year and a Half of Dust

I didn’t write a single post on this blog during 2013.

2013 was a pretty intense year. Not too intense to write blog posts—I shared updates, photos, and check-ins throughout the year using various social networks.

Lately, I have been getting frustrated with those platforms.

The motivations of the social networking companies (ad publishing businesses) don’t always align with the goals of the users. Are they helping connect people with their friends? Or with brands?

As tools, they tend to break down as people use them differently. What if one friend posts every thought he or she has in a day while another thoughtfully posts one thing per day or week? Facebook, with their Top News feed, seems to do a pretty good job of bubbling up the most interesting or relevant posts and filtering out most of the noise. But the Top News algorithm applies only to what your Facebook friends share on Facebook, not what your friends share online.

Twitter did a much better job of connecting people in 2006-2008, when people posted less frequently (used the service more similarly), followed fewer people on average, and were more likely to read everything. As it turned out, requiring every user to self-moderate prior to posting would not work out in the long run. The closeness Twitter fostered was eroded as it transformed into a chat room and link sharing/promoting service.

Features come and go—or in Google’s case, entire services—based on whether or not the sponsoring ad publisher (Google, Twitter, Facebook, et al) deems it a benefit to their bottom line. Foursquare cares more about fleeting digital rewards (mayorships and badges) and selling deals/sponsorships to brands or venues than it does about doing meaningful things (to users) with our data. In many cases, ad publishers’ agendas align with the needs of their users. After all, they can’t sell advertisements if the users don’t keep coming back.

WordPress—perhaps a dinosaur in today’s post-RSS, social-network-central world—is one of the few options we have to connect directly with each other. I write a post, and save it to one of my computers (a web server). Then, from anywhere—a browser, web app, RSS feed reader, or perhaps some other mechanism—you connect to my computer and fetch the post.

It is saddening to realize I have all but abandoned WordPress in favor of the social networks, but ultimately, WordPress isn’t an ideal method for connecting with each other. Not everything I want to share is an article, and I don’t necessarily want to blend long form blog posts with microblog one-liners (Twitter) and photoblog posts (Flickr, Instagram). Even if I could share these various facets of my life using one tool, it’s not connecting me with my friends if I’m just posting them to some site somewhere while all my friends are using insular social networks.

I deleted my Facebook account in August (dodging the inevitable flood of banal platitudes from acquaintances you tend to receive on your birthday) and my Twitter account will be going soon, too. Twitter was my favorite place to go when I felt like talking to myself, but I could only stand throwing my thoughts away into the ether for so long. I want my thoughts to live somewhere, and an ad publisher’s web site is ultimately the wrong place for that.

For now, I will be stuck with WordPress. As a developer, I feel the urge to figure this out and come up with a way to share my life online while staying connected with my friends no matter where they’re sharing their lives.

People Put People in Boxes

Individuality Demotivational Poster
"Always remember that you are unique. Just like everybody else."

If you think about it, it is obviously not possible to completely and accurately describe a person’s personality in one sentence. Unfortunately, that’s about as much thought as most people will give you. The best way to understand how other people summarize you is to listen to how they introduce you to others, because they have one sentence to convey to the new person everything that is important to know about you.

“He’s the guy that jumps.”

In 2007, I was at the after party for a conference and sat down at a table with a couple of strangers. Before my butt reached the chair, the guy on my right who I had never met before said to the guy on my left who I had never met before, “This is Brian Shaler. He’s the guy that jumps.” I was surprised and amused. I rolled with it. If I took myself more seriously, I would insist that I’m not nearly some guy who jumps, but an astute software developer. It’s a strange feeling to be summarized by something silly you did instead of what you’re most proud of.

I learned a lot by being the guy that jumps. I learned about how people try to put you in a box and how they decide to represent you internally and externally. Not everyone can appreciate my skills. Like my parents, for example, who would probably describe me the same whether I did data visualization or made WordPress themes—”he does stuff with the computer,” or “he makes web sites.” Now, my parents actually care, and they try to understand. So what happens when people don’t care, or don’t try? As it turns out, they’ll try to put you in the easiest box that seems to fit, based on the most vague knowledge about you. It will tend to be the first thing they learned about you, the thing they most understand (often the simplest), or the thing they find the most intriguing or unique.

Boxes are hard to escape.

Once someone puts you in a box, it will be very difficult to get them to change how they summarize you. This is part of the reason first impressions are so critical. If you say something offensive within a few seconds within seconds of meeting someone, they’ll likely see you as a crass person from then on, even if what you said turns out to be uncharacteristic of you. If someone meets you as “the guy that jumps,” chances are they will introduce you to the next person in the same way.

If you don’t fit their understanding, they’ll fit you to their understanding.

If you’re an impressionist artist, someone who doesn’t understand Impressionism will describe you using the things in your art, rather than what is being being conveyed in the art. For me, my skills with programmatic animation, data visualization, and interactive interfaces are often summarized as “making web sites,” because some of it may exist on the web and people are more likely to understand what making web sites means. Ideally, you would be described as what you are, but if the person doing the describing doesn’t share your knowledge on the subject, they will make up something that sounds close enough to them.

If you do something sticky, it’ll stick more than anything else, no matter how relevant it is.

There are pros and cons to being known for something more interesting or intriguing than what actually defines you. On the plus side, people with know, remember, and perhaps even talk about you. Unfortunately, most of those people won’t have any idea who you really are or what you really do. This was the case with the jumping persona. It would be great to have strangers introduce me to strangers as a talented interactive developer, but the people who understand my work deeply enough to appreciate it are few and far between. It also sounds less glamorous and exciting than a zany set of photos.

It was clear jumping was much more memorable and it was certainly a conversation starter. It didn’t convey anything of meaning about me or command any sort of respect, but it opened the door and got people’s attention. It showed me the power of intrigue, which I will ramble about in more detail in another post.

Focusing on the Fun

When I started my data visualization business, I had some pretty ambitious plans. I would get a bunch of work, too much work, and quickly start hiring people. I would also focus a portion of my—and my employees’—time on data viz related products. I had an idea of what a “successful” business would look like, based on the successful businesses I’ve seen my friends build. It took over a year to figure out that path was not for me.

I re-evaluated what I enjoyed about running my business and what I didn’t enjoy. It turns out following that typical path to “success” would involve focusing most of my attention toward the parts I didn’t like. What would my business look like if I instead focused as much as possible on the aspects I enjoyed? I wouldn’t have employees, I wouldn’t work excessive hours, I wouldn’t take on every project that comes my way, and I wouldn’t accept projects on unreasonable timelines.

Sure, I would make more money if money was my top priority. If my top priorities are quality of life, travel, and working on interesting challenges, I have to be selective about which clients and project I take on. Focusing on the fun comes at a cost, but I think it’s worth it.

If you can make a profit doing as much work as you want and enjoy what you do, isn’t that a successful business?