Baby Steps to Owning Your Data

Tweets. Likes. Check-ins. Steps. Photos. Links. We emit a constant stream of content into the sites we use everyday. Is it ours? Well, it feels like it. And according to the terms of service, it kind of belongs to us. Sometimes. Maybe. I don’t know, honestly. I don’t read those, and likely you don’t either. If you fully parse every TOS you encounter, you can stop reading right now, go straight to the nearest IHOP and have some pancakes.

Groups like IndieWeb are tackling data ownership issues – experimenting with ways of creating and managing content in a way that bakes in data ownership and removes the need for massive corporate services to achieve Web scale interactions. It’s fun and interesting and useful… we meet every two weeks, come check it out! But an IndieWeb world is a long way off. Especially for non-geeks.

All the companies providing you services today have little interest or incentive to make ownership clear or to make your data portable – the fact that you can’t easily move your data around is partially what keeps Google, Facebook, Whatsapp and Pinterest running.

Sure, lots of these services have APIs, through which you could access your data (or at least some of it). But regular users can’t really move data around between competing services through APIs. Some of these companies have data export options, where you can download your data in a zip file, but it’s not like you’re doing that every day. What if today you get banned from Gmail because some process hit a false-positive while enforcing some usage policy? And when was the last time you downloaded all your stuff? Did you ever?

I’ve always wanted to move to a model where I only participate in services through my own website first, and then send a copy of my activity to Twitter, Foursquare, Bit.ly through their APIs (including in each request an extra HTTP header containing the URL to the UELA that my content is covered by!). But that will take a while to build, and won’t work for devices like my Jawbone UP24 which syncs over a proprietary protocol to native apps only, finally letting me access a subset of my data through their API once it’s already on their servers first.

So, back to the point of this post: What can you do now?

I’ve started by attempting to own a copy of as much of my internet output as possible.

Here’s how I do it:

  1. Create a Google account, and install the Google Drive app. This will keep a local copy of all of your Google Docs on your computer.
  2. Create an IFTTT account. IFTTT is a fantastic service that allows a large number of apps, websites, services, devices and all kinds of stuff to interact with each other.
  3. Set up recipes for everything you do online that’s supported by IFTTT which all add to a Google Docs spreadsheet. I have recipes for Tumblr, Twitter, Bit.ly, Soundcloud and a ton more. I was very surprised by how many services have some bits of my daily personal activity.

That’s it. The IFTTT triggers will start firing, the spreadsheets will start filling, and the files will be copied to your local hard drive. You’ll now have both an online copy and a local backup of all the stuff you do online.

Here’s what some of my IFTTT recipes look like:

Image

IFTTT will save it all in Google docs folder hierarchy for each service:

Image

 

I’ll be honest – it takes a little while. It’s annoying to set up, even with IFTTT’s excellently simple user interface. But in the end I own a copy of any new content I post to the services I use. What do I do with it? Nothing at all, right now. But someday maybe those services will shut down, or I’ll get banned, or poorly implemented IT backup strategies will wipe it all out. I’ll have lost nothing except the time I spent setting this up.

Is it real data portability? Nope. Is it true ownership? No. Hell, “my” content might even be under some crazy license restrictions that I agreed to before putting it up on Pocket or Evernote! But it’s always running, and someday my personal weak-AI agent will be able to do something with it.

PS: Do you use Gmail? Do you only use the web interface or Android/iOS apps? Then you probably don’t have a backup of your email. I run an IMAP mail client (Thunderbird) periodically to get an updated offline copy of my Gmail in an open format.


Installing Ubuntu Phone Demo on Galaxy Nexus from Mac OS X

Props to Mirko85 for this post which spelled it out for Windows.

STANDARD DEVICE WARNINGS: You’ll violate your warranty probably, and you might brick your phone. You have been warned.

  • Install adb and fastboot for Mac
  • Download these files from Ubuntu’s server
    • quantal-preinstalled-boot-armel+maguro.img
    • quantal-preinstalled-recovery-armel+maguro.img
    • quantal-preinstalled-system-armel+maguro.img
    • quantal-preinstalled-armel+maguro.img
    • quantal-preinstalled-phablet-armhf.img
  • Plug the device in via USB
  • Open Terminal and navigate to the directory you downloaded the files to
  • If you haven’t unlocked the device, execute “fastboot oem unlock” and follow onscreen instructions
  • Power down the device
  • Enter fastboot mode by pressing volume up, volume down and power buttons at the same time until you feel it vibrate
  • Once in fastboot mode, execute the following commands from Terminal
    • fastboot flash recovery recovery-quantal-preinstalled-armel+maguro.img
    • fastboot flash system quantal-preinstalled-system-armel+maguro.img
    • fastboot flash boot quantal-preinstalled-boot-armel+maguro.img
  • Using the volume keys, select recovery mode and press power
  • In Terminal, execute “adb sideload quantal-preinstalled-armel+maguro.zip”
  • Wait for the command to complete (if you see “fixing fs_size in crypto footer”, ignore it, it’s done)
  • Use volume keys to navigate to “advanced”, press power, select “reboot recovery” and press power again
  • Once back in recovery mode, execute from Terminal: “adb sideload quantal-preinstalled-phablet-armhf.zip”
  • Once the command has completed, use the volume keys to select “restart device” and press power button

Some Notes on Living in Chiang Mai, Thailand

Several people have asked me about living in Thailand. After spending a year in Chiang Mai, here are a few suggestions, recommendations and things I wished I knew ahead of time.

  • Learn to speak Thai, at least a little bit. We took classes over Skype video for 2 months from Brett Whiteside and it really helped. I can speak and understand enough basics for cordial and respectful interactions with people, and to eat wherever I want :). If you’re going to be there for a while learn to read Thai. It’s seriously worth it, if only for reading menus and signs.
  • Always print a detailed map of wherever you’re going. Anywhere. All the time. Really.
  • Make a custom Google map with the locations of: post office, utility offices (power, water), telco, police station, etc. Just in case.
  • Banking: ATMs cost US$5 per transaction, and result in currency conversion fees. Instead, open a Bangkok Bank account and get a debit card. Getting a bank account took some paperwork, about an hour of waiting in the bank, and I think you have to pay a small fee. Bangkok Bank is the only Thai bank with a US branch (in NY). This means that you can make direct transfers from US banks to your Bangkok Bank account, allowing for money access with a minimum of delay and fees.
  • 3G: I used AIS, which has unlimited (5GB IIRC) 3G monthly pre-paid option. Absolutely recommended for access to Google Maps while lost ;).
  • Thai street food is often safer than food from “western” places. The food at the carts is usually bought fresh that day, and is cooked in front of you. The food at “western” hotels and restaurants is cooked out of sight, and they try to store food, which is risky since there’s not really health department inspections like in the states, to ensure the storage is properly done. You’ll find infinite opinions about this – this is my personal experience. There’s no magic solution. You will have some intestinal discomfort at some point.
  • Western toilets are everywhere. At some point however, you’ll need to use a squat toilet. Chiang Mai Rock Climbing Adventures has humorous yet informative instructions for properly using a squat toilet.
  • Use Foursquare or some other check-in service. I often couldn’t find a place that I wanted to return to, or had forgotten the street, etc.
  • 7-11. Is awesome. In Thailand you will pay your utility bills, refill your phone minutes, purchase concert tickets, and many other things there.
  • Temples: Wear long pants and shirts with sleeves. Be quiet and respectful. Donate money to them.

Most importantly: Go anywhere and everywhere. Always take a different route. Pull over often. Walk down unfamiliar streets. See every temple. Explore every market. And always carry your camera.


Trip Log: Yunnan Province, China

4/2 Kunming, largest city in Yunnan province

4/3 A day in Kunming

4/4 Zhongdian

  • Saw what can only be described as “megahousing” developments outside of Kunming.
  • Factories everywhere, in suburbs outside the city. Saw a red cloud over a valley of factories. Red.
  • Oh look, that is a road. On a cliff along the river. How. The. Hell.
  • Himalayan mountains in the distance? Easily twice as tall as the giant mountains we’re flying over.
  • Land in Zhongdian. Small airport, but clearly new. Full of Tibetan items, and cold-weather gear. It’s COLD.
  • One hour flight, landing at 12,000ft above sea-level. Yeah, we all ended up with mild altitude sickness for the first day. That kinda sucked.
  • Zhongdian was renamed Shangri-La 10 years ago to increase tourism.
  • Yak fields on the way to town.
  • More Jetta cabs. Must be state-mandated.
  • Populace is Tibetan mostly, but many other ethnic minorities present.
  • Pink hat ladies! Scarf tied around hats.
  • Old town. Cobblestone streets. Carved wood structures.
  • Fashion for guys is like 80s bad boy. Or black blazer and slacks… for doing manual labor.
  • Women wearing slave-to-fashion wear, or traditional garb. Not much in between.
  • Lunch spots advertise with bao steamers. Ate at East City North Cooked Wheaten Food King. Had three noodle soups. With yak meat. And dumplings.
  • Land of no salad. Seriously, there’s almost no fresh vegetables in any food we had the whole trip. Always cooked.
  • Last day of Cleaning the Grave holiday. Half the town was in the graveyard as we checked in, lighting off firecrackers by the grave.
  • Checked into the guesthouse. No inside heat in the guesthouses.
  • Meet Alek’s friend Meow Meow (sp?)
  • No running water for 4 months during winter because pipes are frozen.
  • Nightly dancing in both the old-town center, and new-town center. They like to dance.
  • New hotels in new town. I bet they have heat and running water and power all year round.
  • Little Potala palace. Megatemple of Tibetan Buddhism.
  • Shiloh rode a wizardly yak.
  • Yak butter tea. Yak snacks (aka jerky).
  • Tibetan dinner. Creaky wooden restaurant. Cold, only space-heaters. Yak SASHIMI, square noodle soup, meat pie (ground yak).

4/5 Zhongdian

4/6 Zhongdian, Tiger Leaping Gorge

  • Hey, the blankets were quite effective, probably yak wool.
  • Bus to Tiger Leaping Gorge.
  • The hike starts with a nice meandering valley stroll, and nice views.
  • Followed by “24 bends”, a long series of switchbacks.
  • “I smell weed. Or poop.” – Shiloh. It was an old man with grandson in lap, smoking weed out of a long skinny pipe.
  • Ladies along the trail selling bags of weed, saffron and snickers.
  • 7 hours of hiking. Beautiful, amazing views every 5 minutes.
  • Got to Halfway House guesthouse. Sat on the deck, had a beer and checked out the view.
  • Alek has a Chinese name: “Overcoming the power of mugwort”. He’s looking for a new one.
  • Dinner: two mushroom dishes, eggplant, gung pao. Damn.
  • Alek went into the kitchen and found their house-infused baijiao. One was mushroom. Yes, mushroom liquor. The other was olive, papaya, goji berry… and other stuff. Both were surprisingly good.
  • Closed it out with biajiao, beer, tea, cards and Snickers.

4/7 Tiger Leaping Gorge to Lijiang

4/8 Lijiang, Dali

4/9 – Dali

  • Breakfast of bao, black boiled eggs, baba stuffed with carmel sauce.
  • Alec’s out, back to Thailand. All three words of Chinese we know will now be put to the test.
  • Somehow it’s lunch already. Asparagus, tofu, emperor oyster mushrooms with dry-cured ham.
  • Taxi to the cable car. Hike from cable car to chairlift is too long, canceling that. Saw a giant chess set, and a mirror pond.
  • Taxi to the chairlift that we didn’t hike to. Beautiful ride. Look down, oh a grave. Oh look, some more. OHHHHH, thousands of them. Chairlift mountain forest graveyard.
  • At the top, we hike to the Higherland Inn, only thousands of steep steps up the mountain. Zero view. WTF. Head back down the trail to the restaurant with a great view. The place has turtles in a tub… adjacent to all the food that’s on the menu. Hmmm.
  • I got some wild mushrooms. Instructions: soak 3 hours, scramble with egg.
  • Did some shopping in the old city, got some pasta, and headed back to the hotel to chill.
  • Watched a kung fu movie with lots of flying. Saw a commercial for cleavage pills.

4/10 Dali

  • Banana pancakes and fresh melon for breakfast. Off to Xishuang for cormorant fishing.
  • Local market. Saw an awesome computer store. Had noodles that were cut off a giant slab that looked like butter. Found the spice they put on the skewers.
  • Cormorant fishing! Rowed. Sang songs.
  • On the way back, taxi driver took us to the obligatory kickback stop, a marble shop. The Chinese word for marble is “stone from Dali”.
  • Shiloh chilled at the hotel while we rode bikes to the lake. Stopped at a bakery where they had a “selection of mini sandwiches” on the menu. Turns out the mini sandwiches meant “all sandwiches on the menu, put into one”. Fail.
  • Before dinner, got a foot massage, where they had us put our feet in BOILING water.
  • Shiloh got a foot steam bath. Shauna: “OK I can smell foot. It smells like a funk dumpling.”
  • Saw some locals smokin’ tough.
  • Hunted down the wild grilled eggplant for dinner again.

4/11 Back to Kunming

  • Bus to Kunming. Buses here are cheap, and constantly running. Gotta keep your valuables with you. And there’s no bus stops, just people waiting on the side of the highway.
  • Another 5 hours on the road. We passed through Mushroom Town. And went through multi-mile long tunnels.
  • Waited a couple of uneventful hours at the airport, spent our last yuan on tea, and flew home.

Open Letter to the World

We stand at a unique time in our history, the rise of the internet and computer technology have contributed to an unparalleled rate of prosperity for the First World.

We have created for ourselves and empire unlike any other, a global network of constant trade and communication, a new age of technological advancement. We have come a long way from our humble roots in the Industrial Revolution and the days of Manifest Destiny. We are now pioneers on new digital frontiers expanding our domain from the quantum world to the far reaches of space.

And yet, the empire faces a crisis, a global recession, growing poverty, rampant violence, corruption in politics, and threats to personal freedom. As it was before in other times of crisis, the old stories have begun to repeat themselves. The half truths, this time repeated nightly on cable news and echoed through a series of tubes onto the internet: the empire is strong, change is unwise, business as usual is the answer. In times of uncertainty there are those who seek to add to the confusion, to prey on our insecurities and fears. Those who would seek to keep us divided for their own gain. The pervasive strategy takes many very convincing forms: Liberals and Conservatives, Christians and Muslims, Black and White, Saved and sinner.

But something unexpected is happening. We have begun telling each other our own stories. Sharing our lives, our hopes, our dreams, our demons. Every second, day in day out, into all hours of the night the gritty details of life on this earth are streaming around the world. As we see the lives of others played out in our living rooms we are beginning to understand the consequences of our actions and the error of the old ways. We are questioning the old assumptions that we are made to consume not to create, that the world was made for our taking, that wars are inevitable, that poverty is unavoidable. As we learn more about our global community a fundamental truth has been rediscovered: We are not so different as we may seem. Every human has strengths, weaknesses, and deep emotions. We crave love, love laughter, fear being alone and dream for a better life.

You must create a better life.

You cannot sit on the couch watching television or playing video games, waiting for a revolution. You are the revolution. Every time you decide not to exercise your rights, every time you refuse to hear another view point, every time you ignore the world around you, every time you spend a dollar at a business that doesn’t pay a fair wage you are contributing to the oppression of the human body and the repression of the human mind. You have a choice, a choice to take the easy path, the familiar path, to walk willingly into your own submission. Or a choice get up, to go outside and talk to your neighbor, to come together in new forums to create lasting, meaningful change for the human race.

This is our challenge:

A peaceful revolution, a revolution of ideas, a revolution of creation. The twenty-first century enlightenment. A global movement to create a new age of tolerance and understanding, empathy and respect. An age of unfettered technological development. An age of sharing ideas and cooperation. An age of artistic and personal expression. We can choose to use new technology for radical positive change or let it be used against us. We can choose to keep the internet free, keep channels of communication open and dig new tunnels into those places where information is still guarded. Or we can let it all close in around us. As we move in to new digital worlds, we must acknowledge the need for honest information and free expression. We must fight to keep the internet open as a marketplace of ideas where all are seated as equals. We must defend our freedoms from those who would seek to control us. We must fight for those who do not yet have a voice. Keep telling your story.  All must be heard.

- Anonymous


Firefox, Plugins and Jetpack Widgets

Flash was chewing CPU in one of my myriad tabs, so I used Jetpack and the new AddonsManager API to whip up a quick add-on to enable and disable Flash quickly. It’s <30 lines of code and an image. It puts an icon in the Firefox 4 add-on bar that toggles the plug-in, and sends a Growl notification (or whatever system your OS uses) indicating that the plug-in was successfully enabled or disabled. Screenshot:

Install FlashToggle. Requires Firefox 4 beta 7 or newer.

Clone and make your own on the Add-on Builder. This might require a minor change in the code since I built using Jetpack 0.10, which isn’t released yet. Changing ‘contentURL’ to ‘image’ in the widget options should do the trick.

The entire code listing:

function toggleFlash(callback) {
  const { Cu } = require("chrome");
  Cu.import("resource://gre/modules/AddonManager.jsm", this);
  AddonManager.getAddonsByTypes(["plugin"], function(addons) {
    for (let i = 0; i < addons.length; i++) {
      if (addons[i].name == "Shockwave Flash") {
        addons[i].userDisabled = !addons[i].userDisabled;
        callback(addons[i].userDisabled);
        break;
      }
    }
  });
}

let flashLogoURL = require("self").data.url("flash-logo.jpg");
require("widget").Widget({
  label: "Toggle Flash",
  contentURL: flashLogoURL,
  onClick: function() {
    toggleFlash(function(disabled) {
      let message = "Flash is now " + (disabled ? "disabled" : "enabled") + ".";
      require("notifications").notify({
        title: message,
        iconURL: flashLogoURL
      });
    });
  }
});

What this isn’t.

It’s not a blog post about how I don’t blog enough. That’s exactly what it’s not.

Hidden Egg


The Magic is in the Tubes

“The gains shown by the iPhone and Android show what is possible when phones are built with fully capable browsers and support a rich array of Web apps.” – Techcrunch

The most kick-ass mind-blowing iPhone, Crackberry or it’s-not-a-Google-phone is naught but a brick without an always-on ubiquitous wireless internet connection.*

Apple may have revolutionized the user-experience of the smartphone, but the Blackberry’s early success proved that the crux of the device’s addictiveness lies in the tubes.

* That’s not entirely correct. You could still use this.


Seven Things About Me(me)

Alas, I was tagged by Beltzner, so must break my new year’s resolution to not blog in 2009*. Thanks Mike. Seven things you may know about me, or not:

  1. I have three nipples. Of these, zero produce milk.
  2. I was a barista and a chef for many years before owning a computer.
  3. I can juggle. Balls. Clubs. Machetes. Torches. (Listed in descending order of skill-level and recency.)
  4. Some years ago, on the night before we moved from Seattle to Florida, someone stole our fully-packed truck and U-Haul, leaving us with nothing but the pajamas we were wearing, and a goldfish. It was a lesson in impermanence.
  5. I used to play the accordion, and was briefly in a band called Apolkalypse.
  6. One summer, I hitchhiked through 30 states with a friend. You’ve not truly seen America until it throws garbage at you from it’s car.
  7. I flew out of a rapidly moving Volkswagen bus when I was 8 years old, and landed on my head. I know what you’re thinking, and yes, you’re probably right.

Seven from me, seven to you:

  1. Sdwilsh. It’s all business on your blog, but your quotes are on fire.
  2. Thunder, the Venezuelan ramen-lover. (Definitely a character in my novel. If I was writing one.)
  3. Josh. I thought your blog was dead, but then I found the tumble.
  4. Jeff, you don’t blog, afaik. You should tweet seven things and seven people!
  5. Bowie. Kid, you’re almost one full year old. Introduce yourself.
  6. James Earl Plush. Eagles? Beagles? Twins? Coincidence? I think not!
  7. David Cross. (Aim high, right?)

* I’ve been tumbling and tweeting regularly, so I kinda already broke my resolution.


sometimes attribution just isn’t worth it

(11:26:57) me: ugh
(11:27:02) me: it’ll never end:
(11:27:05) me: “I’m writing an application for the Coast Guard Auxiliary that uses your NUSOAP code..”
(11:27:11) me: the coast guard?
(11:27:13) me: using my code?
(11:27:18) me: our borders are not safe
(11:27:47) him: lol
(11:27:53) him: fix it dude
(11:28:15) me: those php XXXXXXXs have caused me no end of trouble
(11:28:29) me: the php5 soap impl uses a class name that’s the same as nusoap
(11:28:40) me: so i get like 5 emails a week, ever since php5 was released
(11:28:46) me: all with this same error
(11:28:52) me: not only that
(11:29:11) me: the latest version of nusoap (2 years ago or whatever) has it fixed!
(11:29:22) me: which means all these people are downloading an old version from somewhere
(11:29:24) me: OR
(11:29:29) me: are only now upgrading to php5!
(11:29:35) me: i XXXXing hate open source
(11:30:18) him: lol
(11:30:21) him: rant over?
(11:30:25) me: yes
(11:30:31) me: i feel much better now


Follow

Get every new post delivered to your Inbox.