I’m excited to be speaking at the first API Strategy and Practice Conference this November 1-2 in New York City. Speaking and sponsorship opportunities are still available. You can learn more on the conference web site.
I’m about to go on vacation and while I don’t plan on completely disconnecting this time around, I do want to minimize the amount of interaction with technology I have so I can focus on why I’m flying half way around the world.
To that end, I have an unlocked iPhone 4 that I customize just for traveling. Here’s my setup:
Unlocked with local SIM
As soon as I pick up a pre-paid SIM I head over to my Twilio account and forward a US number to the local phone number from the SIM provider so my family can still easily call if needed.
Just the essential apps
The most common apps I use are on the home screen with distractions like Twitter and Sparrow off on another screen. My home screen includes TripIt, Maps, Camera, Instagram, Foursquare, Living Earth and the other media apps listed below.
Disable automatic email checking
I installed Sparrow which doesn’t do push and didn’t even configure the OS with an email/calendar provider. This saves battery in addition to not bugging me. On demand I can check in with Sparrow to get new messages.
I went through the Notification Center settings and turned off push notifications for everything. Ideally it will never buzz the entire time unless someone calls.
Loaded up with media
I like falling asleep to podcasts on long flights so I make sure they’re all sync’d up. Downcast is my podcast app of choice. I also make sure Rdio mobile sync and Instapaper are up to date. I also have my iPad loaded up with a full season of a TV show and often a book I’ll start but likely never finish.
All in all it’s a nice setup to be able to find my way around, capture the best moments, be connected when I want to be and avoid distractions as much as possible. And since it’s not my primary phone if I lose it or something happens to it, it’s not a huge loss.
As far as modern social networks go, I was a relatively late adopter. I wasn’t in college when Facebook was new and exciting, only joining when they finally opened it up to the masses in 2006. I didn’t understand Twitter for a long time after hearing about it, mostly ignoring it before finally relenting and joining in December 2007. For the first few months, I had barely any activity on the site.
At some point the light went on for me with Twitter and it became where I spent the majority of my time online. Completely enthralled with it, I started paying a lot of attention to why it worked the way it worked. I scrutinized every change Twitter made and how it impacted how people used the service. I’ve tracked my followers and unfollowers at varying level of details over time to try to understand what behaviors influenced other people’s behaviors within the network (and admittedly, serve my own vanity as a bonus).
When new social networks come out now, I jump on them as fast as I can. I’m mostly interested to see how they solve problems differently than existing networks and what kind of uptake they get. No one has done better on the whole than Twitter and Facebook. Someone will, but nothing has yet.
Now that app.net is a thing (despite being pretty unclear what kind of thing it is exactly) they have an opportunity to take all of the things we’ve learned from the established networks and build something new and hopefully better. My hope is that they don’t box themselves in by approaching problems only through the lens of Twitter. A lot has changed between when Twitter started and now and there’s no reason they should be hamstrung by Twitter’s schizo decision making over the years.
(A quick aside: if broad consumer adoption is what they’re after they should copy the Twitter API verbatim as a starting point so all clients could simply change a root API URL to point to the new service. Once a critical-enough mass is reached, then start extending the API with new features. Classic embrace and extend strategy. I don’t believe they’re after broad consumer adoption and after using the Alpha a bit, I hope that’s not the future for the service. My greedy goal is that it replaces what I used to get from Hacker News: good links and high-quality discussions.)
If you were starting a social network today starting from The New Default (the minimum functional baseline most experienced users expect), what would you do differently? My proposals are below. And yes, other networks like Google+ have done many of these things (though I’m barely familiar with its API, so I don’t know how much of it is available at that level) and to their credit, I think they got a lot right.
Here’s what I’d do differently if I were running app.net:
Might as well start off with something that’s far more plausible behind a pay wall. Keeping mentions out of the main timeline is really only necessary if spam is a problem. If every stream you request has powerful enough filtering capabilities, creating a /mentions equivalent would be easy, but the main timeline should include the ability for clients to easily show all activity related to you from one API call. For those people with a lot of replies, an option to only include the people you follow would narrow it down. In fact, filtering streams like this should be a global concept…
Smarter Filtered Streams
I want to be able to view any stream (main timeline, hashtags, searches, etc.) with different levels of granularity: show me everyone, just friends of friends, just my followers, just who I follow, etc.
Global Exclusion Filters
I proposed a version of this as far back as 2009 and with election season ramping up, desperately want it on Twitter. You should be able to block any term, tag or person from appearing in any stream universally. Blocking someone should be implemented as a global exclusion filter. No need for separate blocking semantics behind the scenes and the client UI can work as expected. Add expiring filters and global muting is now easy to implement as well.
Probably the biggest functional gap on app.net so far (and also the one with the most discussion for how it should be handled) is providing a way for people to react to a post beyond a reply. My proposal is to allow for three types of reactions to any given post: Share, Star or Save.
Share is to re-broadcast a post to your followers. Since people appear to love adding comments to retweets, this should just be built in, leaving it up to client UI to handle how the shared status and the accompanying comment are displayed. As far as the API goes, this should look like any other status update, just with the requisite metadata to attach it to the original.
Star is for expressing public approval of a post. Can also optionally have an accompanying text comment, again generating a timeline event.
Save is for bookmarking/read later/archiving. This deserves it’s own separate mechanics since Twitter favorites have been overloaded by users to serve two purposes, both haphazardly. I think this should be a private event not shared to the timeline, but the aggregate number of saves should be made available.
We don’t need lists or circles, just let me tag people. And searches (hashtag inception). And saved posts. Then I could create highly-customized streams from relevant people AND topics.
You can simulate this in Google+ by turning down the dial on certain circles, and Friendfeed supported this natively. No reason for the software to create awkward social situations. Give people cover. Could probably also be implemented as a global filter.
Flexible Private Messaging
Let me define which tagged people I can message and if I send someone a private message outside those groups, let them respond. I won’t go into this too much because it’s mind-numbingly obvious how this should work and private messages don’t yet exist on app.net anyway.
New Mention Syntax
Some people will probably get riled up about this because @ isn’t exclusive to Twitter, but I think there should be some distinguishing syntax. I like /johnsheehan because it’s unobtrusive and matches the URL :) When doing a straight reply the recipients should be in metadata, not the text of the reply so that you don’t have to resort to .@ nonsense. .@ is Twitter thinking at its worst.
Original Source of Content
Since I work for a company whose service lets you automate things, I’ve thought a lot about this. It’s not enough to know what client posted something to distinguish if it was generated by a human or not. Clients should have enough information to determine if something is original content or just a re-post of something else. I think there should be some construct to say that if a status is cross-posted from another network, what the original source of that content is. Then clients can prioritize what is displayed according to what the user prefers. I still don’t know exactly what this would all look like but I know there should be more data available and API clients will all benefit from everyone else providing that data.
URLs in metadata
This is tricky, and t.co link handling is evidence that this is hard to get right. I think URLs should be moved to metadata with markers left for display purposes, but I think they should incur a hit against the length limit more than the marker length. For instance, a useful display length is the domain plus some amount of the path and whatever that useful display amount is, that’s what should be counted against the post length limit.
200. 140 sometimes feels short, though I feel like it’s done a lot for helping me communicate more succinctly. 256 (app.net’s limit) feels a little long to scan. Split the difference.
This is what the next generation social stream service looks like to me. Super flexible data streams that give clients a lot of options for how they’re presented. Add annotations to this to let client developers expand updates even further and I think it’s a pretty compelling service that solves a lot of long-standing issues we’ve grown to tolerate on Twitter. It likely won’t be popular with the masses, but it doesn’t need to be for a long time, if ever.
While browsing the selection of offerings of the pre-equinox international muscle-bound competitions Cockaigne edition (please don’t sue me!) I was struck by an event known as the ‘Modern Pentathalon’. This event consists of such contemporary pursuits like sword fighting and horseback riding among more traditional endeavors like running or swimming as fast as you can and shooting things.
The ‘modern’ misnomer led me to consider, could one construct a truly modern set of competitions designed to determine the best all-around ‘athlete’ of the technology age? And why stop at five events? Today’s Adderall-regulated tech savvy multitaskers are built to handle an influx overstimulation without so much as a tingling of iPhone thumb.
Thus I present to you the Modern Dodecathlon. Let the games begin!
We kick off the games by putting our contestants’ creativity to the test with a Bout of Kickstarter. The challenge is to conceive of a project idea, produce a video, get it approved by Kickstarter and raise the most amount of money in 3 hours. Raising a round of venture capital does not count toward the total.
The second event tests our contestants ability to unleash their inner Jedi by competing in a head-to-head double-elimination Kinect Star Wars tournament. In the final round of the tournament the two remaining contestants will compete until one of them achieves a perfect score in “I’m Han Solo" while Harrison Ford looks on in absolute disgust. Due the the physical nature of the contest many contestants choose to skip this event and take the minimum score.
Next up is The Signal Hunt sponsored by Samsung. Contestants are given an iPhone 4 and told to try to maintain full bars for 30 seconds. Upon achieving the first objective, contestants will then need to place a five-minute phone call without dropping the call or the phone. Proper grip and an innate sense of radio frequencies will help the best contestants stand out. Since this event is likely to take place in a big city, you can guarantee a tough challenge year after year.
Our contestants are then given an iPad and the task of completing an Angry Birds Speed Run through all of the levels in Angry Birds, Angry Birds Seasons and Angry Birds Space. Competitors who complete the levels quickly will avoid the possibility of more levels being released in the middle of the competition.
After the exhilaration of watching contestants repeat the same actions over and over again hoping for different outcomes wears off, it’s time to rejuvenate the audience’s senses with a Tweet Off. Scores are determined by the number of favorites and retweets received in an hour. Tweets must be exactly 140 characters to be eligible. The delegation from app.net has gone on the record stating that they would like to be included in the next occurrence of the games.
A popular individual event makes its way into the Dodecathlon with an SMS Race brought to you by Research in Motion. Due to sponsorship considerations, each contestant is given a BlackBerry Bold and given 200 typing tasks to complete and submit via SMS. The Canadians are particularly strong in this event due to considerable corporate backing, though the dual leadership structure at the top of some Canadian teams is causing a steady decline in the quality of their output.
To practice for our next event, The PC Decrapifier, you just need a parent with a computer. A random baby boomer’s Windows PC is confiscated and given to the contestants to fix. Mastery of such skills as repeatedly resetting the default browser away from Internet Explorer, installing Windows Updates and uninstalling the ‘Speed up your PC’ program they heard about on an infomercial will result in the best marks.
With a clean PC, contestants must now install Minecraft and build the tallest tower or something. Due to the event organizer’s lack of knowledge in this area, the exact rules will be determined by a Notch, whatever that is.
Next up is a thon within a thlon: The Hackathon. This event tests our contestants’ ability to code, or fake it with a slick slide deck. Using the winning project from the Bout of Kickstarter, contestants get 24 hours (YOU CAN SLEEP WHEN YOU’RE DEAD) to build the best prototype to be judged on by our esteemed panel of Silicon Valley startup luminaries. All intellectual property generated by contestants is the sole property of The Modern Dodecathlon.
In a separate but related event to the Hackathon, contestants are to take their entries and produce a pitch deck to present to top-tier VCs from Silicon Valley and New York. Winning is simple: raise the most money. Raise less than $100M and you’re disqualified from the competition.
Next the contestants’ ears are put to the test. Each one is put in a room with an array of devices behind a curtain. In rapid fire fashion the devices are sent a series of alerts, notifications, messages and other sound or vibration inducing events. This is known as The WUPHFing. As quickly as possible contestants must identify the name of the app that produced the sound or vibration and all operating systems that app runs on. In this year’s competition contestants are expected to get tripped up on the Windows Phone 7 sounds, having never heard them outside of Redmond.
The grand finale of our Dodecathlon is the Typing and Walking 5K Obstacle Course (or NAMBLA). This event places our contestants on the streets of the host city with a smartphone in each hand. Contestants must dodge a variety of moving obstacles including tourists, transients, panhandlers, street performers and the dreaded dead zones which are more commonly known by the name “crosswalks”. Throughout the course contestants must send an email, tweet, poke someone on Facebook, take an Instagram photo, checkin on Foursquare, share a moment on Path, and host a Google+ hangout. Points are deducted for each time the competitors look up from their device.
After twelve grueling events, a winner will be crowned. Three winners will be awarded medals forged in China from the gold-laced circuit boards of recycled devices. Every four years the event will repeat again with each iteration requiring new events to be constructed due to technological obsolescence. 2016 will bring us Google Glass and self-driving cars. 2020 will feature the newly-final TextMate 2. And in 2024 as California drifts off into the ocean and only Appglebook remains it’s quite likely that riding horses and having sword fights will be considered modern yet again.
“The history of voice over IP is filled with incompatibility,” [Matthew Kaufman, principal architect for Microsoft-Skype on WebRTC] said.
Apparently to address this problem Microsoft is introducing a competing WebRTC standard. If he’s aware of the history, why are they trying to repeat it?
Authy is a Y Combinator backed startup launching today that makes it easy to add optional two factor authentication to your application. You just add some API calls to your app and your users will be able to use their phones as a second layer of authentication.
Glad to see there are already some attempts to solve the problem I blogged about earlier this week.
…managing developer relations has become as important, if not more important, than traditional PR for tech companies.
API providers and consumers need to do a lot more talking to each other. I’ hope you’re paying your Developer Relations team well, the good ones are going to be in even higher demand.
I’m not interested in screwing over developers. When we open an API, we want developers to feel confident that the innovations they build are going to be long lasting. Releasing an API, and then later changing the rules of the game isn’t fun for anyone, especially developers who’ve spent their life’s energies building on the platform.
As much as I want a full read/write Google+ API, I still believe Google’s approach has been the right one. They learned from Buzz. The History API shows they can solve some of the most common problems in new ways. It’s nice to see a social network communicate clearly with developers and properly manage expectations.
Logging in to web sites is ironically one of the most difficult tasks put before our users. Usernames and passwords are hard to remember, and harder than ever to type on the tiny on-screen keyboards of mobile devices.
I like this idea because I don’t actually log in to most stuff very often. If it had fallbacks to SMS or an app that would be nice too.
Take this a step further and imagine a service that was your centralized point of authentication. When you go to a site to log in, it fires off a notification to the service which would let you accept or deny it from email/SMS/app. Once you accept, the original service is notified and lets you in. You’d never need to manage another password. It’s crazy and will never work unless someone like Apple, Google or even Facebook took it on. It’s a big, interesting problem though.
It took me a few tries, but I finally got what I believe to be an accurate data set in my quest to eradicate my Twitter account of fake followers.
The key thing I was looking for is which is the most common account that my followers follow. I knew from my previous attempt at this that there was a common account they all followed that gave them away. Here are the top few:
Find_User_Names 2841 BoysGoneWild 2822 toptweets 2226 codinghorror 2126 shanselman 2095 danieltosh 2055 scottgu 1959 haacked 1849 BillGates 1844 ev 1806 StumbleUpon 1718 timoreilly 1637 ConanOBrien 1603 levarburton 1588 spolsky 1547
If only the culprit were obvious!
Strange thing here is that Find_User_Names is the same common account as in my previous scrubbing. If you inspect its Twitter page (I won’t dignify it with a link) you’ll see it has 30000+ followers, all of which I believe to be fake.
I think Find_User_Names is a follower purchasing site, which is very common. A coworker of mine tried a similar one to see if it really worked and got 2500 followers over night for $20.
BoysGoneWild is an interesting one. I believe that account (which is for a band, I checked so you don’t have to) purchased user names from the Find_User_Name service, hence all the common followers.
I expected to find 7000 fake ones. I found 2800. I’m still looking for other signs that might lead me to more, but I haven’t come up with anything yet. I never bought Twitter followers, so I don’t know how this happened to my account. However, I’m working to block and report them all as spam.
I’m interested in doing some more analysis over them. For everyone that follows me I have a list of who follows them, who they follow, the totals for those, their bios, etc. What else should I look for?
And finally, this was only made possible by the ~50 people who donated their API requests so I could make all these requests. To all of you, thank you!!
Awhile back my Twitter account was hit with a ‘follow attack’ where 75-200 clearly fake accounts per day were following me. My follower count peaked at 14000 before I started trying to mitigate it. I blocked 4000 of them based on a shared account they all followed, but I’ve always wanted to get rid of the remaining ~7000 fake accounts still following me. Yeah, they’re not hurting anything, but I’d like a more accurate count.
Unfortunately to do the kind of analysis on my followers needed to try to find the fake ones (grabbing all of the ~11K followers, who they follow and are followed by and the details for those users), I need a TON of API requests and Twitter limits me to 350/hour. While my script is running I’d be unable to use Twitter otherwise. I could use multiple accounts, but I only have so many of those. So this is where I need your help.
By authorizing my app to use your account to access otherwise public information, I can get around the rate limits. For each additional authorized account I can make 350 requests/hour. The app I’ve created has the lowest permissions settings available (can only read public data) and can’t access your direct messages, follow anyone on your behalf or tweet. It’s straight-up read only (you can verify this on the app authorization screen).
If you’d like to help, click here to authorize your Twitter account (you will be immediately sent to the Twitter app authorization screen). This will not effect your rate limits and I’ll delete the application when I’m done gathering all of the data.
Taylor Fausak has a nice guide for creating iOS-friendly app icons for your web apps that includes instructions for the retina iPad, which Apple’s docs have not yet been updated for.
Short story, you need icons in four sizes: 57x57, 72x72, 114x114 and 144x144. He also has a helpful tip for specifying the startup image specific to each device using CSS media queries.
Here’s the video of my talk from NDC about Cloud Service APIs. It’s an intro to what they are, what technologies are involved, why you would want to use them with a few interesting demos at the end.
Apologies in advance for the rate at which I speak.
I am planning to deactivate my Facebook account in a few days. I’ve already deleted all the mobile apps from my devices, shut off all notifications, removed access to all 3rd-party apps, etc. Twitter, Foursquare and Instagram will be where I expend my social networking energy. (Side note: can we find a better term than ‘social networking’ already???)
You might say, “Aha! Instagram is owned by Facebook!” if you assume I’m shutting it off for one of the following, commonly believed to be evil reasons:
I don’t mind that Facebook (or any other service I use a lot) has a lot of data about me that they want to use to make money, I find that to be an acceptable trade off as long as they don’t leak it and don’t use it to ruin the UX.
Baby and Kid Pictures
If you follow me on Twitter you’ve seen my jokes about this. Contrary to that, I do actually like my friends’ kids and enjoy being able to keep up with their lives from across the country. I will miss this.
So, why am I taking a Facebook hiatus?
Because their of their incessant desire to emphasize things I could not care less about at the expense of the things I do care about.
First off, recommendations. As if the whole concept of finding and friending people at this point is difficult. IF I WANTED TO BE FRIENDS WITH SOMEONE, I’D ALREADY BE FRIENDS WITH THEM. The mobile app wastes an incredible amount of space on this (~1/3 of the visible timeline at launch) and dismissing it is buggy. The web site also gives this too much attention for my liking and in both cases they’re foisting people upon me that I have implicitly told Facebook I do not care about BECAUSE I DID NOT FRIEND THEM.
Recommendations are the exact opposite kind of information that I want out of Facebook. What I want is the latest updates from my friends’ lives. Whatever algorithm they use to construct the timeline is horribly broken, frequently leaving out posts from MY OWN WIFE even though I’ve explicitly said show me all of her posts (a crazy setting to have to set to begin with). It’s near useless.
To accentuate its uselessness, now they’re injecting ‘Sponsored Likes’, because if a friend of mine likes something, obviously I must like it too! I’ve always hated ‘Likes’ as a concept (I had very few) and now Facebook is willing to sell the opportunity to annoy me about them to another company. These also take up significant space in the timeline (bigger than a lot of other types of entries) making it difficult (again) to see the content I actually care about.
And back to that mobile app, it’s a piece of you know what.
All of these horrible user experiences aren’t worth the marginal value I get out of the service otherwise. The stuff I post there is of very low quality and I’m much better served by the other aforementioned social networks. There’s likely a point in the future where if we have children I will be compelled to reactivate it. Until then, it’s one less piece of terrible software in my life. Sorry MN friends. Email me sometime.
(I own a small amount of Facebook stock. Yes, really.)