Twitter and Me
– 14 March 2011– 8008 words
This is the story of Twitter and the last four years of my life. It's a pretty long story, but one that needs to be told.
Twitter and I have a very interesting past. When I say "Twitter" I mean both the service and the company itself.
2006
I'm Moving Out
During a six-week span in mid-2006, I graduated from school (Georgia Tech), got married, moved out of my parents' house in Florida, and started a new job in Raleigh, North Carolina at Cisco Systems. Apparently Twitter had launched and started getting popular during SXSW of that year, but I had never heard of either Twitter or SXSW until mid-2007.
2007
I occasionally listened to episodes of TWiT on my commute to work. On one such occasion in early June of 2007, Leo and the gang went on and on about this thing called Twitter and about this other thing called TwitterVision which someone had written using their "API" - they thought it was the coolest thing ever that Twitter had opened up their data and that someone had created such a neat visualization. Well, I had to investigate this.
My main expertise in programming at this point was very low level stuff. I was working on some next-gen tech for Cisco in their routing division and spent every day working in C and assembly code to keep The Tubes unclogged. However, I knew a lot about creating websites (handwrote my first AOL homepage in 1995). A year prior I had written a Google Maps mashup to help my wife and I decide where to rent an apartment in Raleigh. I plotted Cisco HQ on the map and about 50 apartment complexes. I created a voting system so that my (then) fiancee and I could narrow down our choices when we drove up to Raleigh for three days to lease an appartment before our wedding. So, I had some experience with web mashups and APIs, but nothing too serious.
So, back to June 2007. I went home and toyed around with TwitterVision, which was nothing more than just showing pins on a Google Map with these short messages popping up sporadically. "That's easy, I can do that," I thought. That set me off on a path that would eventually lead me 4 years and 3000 miles away from that moment.
I read all of the Twitter API docs (which was easy back then, there were about a dozen methods, and everything was typed out on a page in the Google Groups forum). Then I just needed an idea for something to do.
For the next three years, ideas sprang forth like a fountain. I just could not stop creating every goofy idea that popped into my head. Here is a very abridged list of most of the Twitter apps/ideas/projects I built:
Too Much Time On My Hands
twitter_mosaic (jun 7, 2007)
- The very first one, created even before my personal account (only by a few hours). This was back before having the word 'twitter' in your username was disallowed. TwitterMosaic was a blog that showed photomosaics that were created out of Twitter avatars. It got tons of coverage on blogs. This was the only site I ever earned any AdSense money on. Apparently people love to click on ads related to photography.
jazzychad (jun 7, 2007)
- My personal account (a username I have used since 1995 on AOL).
popquiz (jun 15, 2007)
- I wrote a tool that would tweet out trivia questions and award points to the first 5 people to reply with the correct answer. Here is the leaderboard.
twgroups (july, 25 2007)
- One of the main complaints about Twitter was the lack of any group functionality. This either meant breaking the people you followed up into groups (what eventually became Twitter Lists), or the ability to send messages to subgroups of your followers. I implemented the latter and lots of people seemed to like it.
note2self (jan 16, 2008)
- Back then Twitter still sent messages over IM (XMPP), and I learned how to create jabber bots to interact with Twitter. I created this bot as a note-keeping tool which you could DM to add notes, and also send queries to retrieve notes over IM.
rollthedice (jan 19, 2008)
- Another jabber bot that would generate random events (roll dice, flip coins, play cards, play rock/papper/scissors).
madstatter (apr 24, 2008)
- Another bot to augment my baseball stats site, MadStatter. DM the bot the name of a team, and it would send back stats and the score of the latest game.
tweetshirts (may 03, 2008)
- In 2007 I bought screen-printing equipment to teach myself how to print t-shirts of my own design. By this time I had started my own t-shirt company and decided to create Twitter-themed shirts. Unfortunately, this may be the most profitable thing I have created relating to Twitter!
flixpulse (may 31, 2008)
- Al3x Payne, the lead API developer (and only API developer at the time) had given a select number of developers access to the Twitter Firehose, which at this point was served over XMPP. I was one of the lucky ones. With so much data, what was I to do? One night after watching a movie for my birthday (Speed Racer), I went outside the theater and tweeted "Just saw Speed Racer, pretty fun and lots of eye candy." Then it occurred to me that many other people must do the same thing. I went home and started watching the Firehose stream (imagine that, being able to watch the firehose!), and sure enough there were lots and lots of micro movie reviews coming across. I read up on Bayesian filters and created the first app to do sentiment analysis on tweets. This got a lot of press but it never really went anywhere. I was fully-employed and once the tweet data overwhelmed the 512 MB of RAM in my spare computer I just let it die. Since then there have been academic studies and industry reports about the effect of Twitter on movie ticket sales during opening week. A couple years later a site called fflick.com did the same thing and was recently acquired by Google for $10 Million.
tweetboards (jun 01, 2008)
- A web app to visualize multiple twitter timelines at once on a screen. I felt the Twitter website was spacially inefficient, and I needed a denser view. I remember al3x saying, "Well, that should keep our caches warm."
tweetgrid (sep 14, 2008)
- TweetGrid.com started from a project involving a couple of Summize.com (who later was acquired and became Twitter Search) widgets I created to help awareness about hurricanes Gustav, Hanna, and Ike during the terrible hurricane season of 2008. I created a website which listed tweets related to the hurricanes, and someone asked if I could create a widget that people could put on their own websites. Sure, I thought. So I cooked one up and let it go. After that I made it more generalized so that you could specify your own search parameters. Using my own widget, I created a webpage which displayed nine widgets in a 3x3 grid, all with different terms. The widgets would update themselves every 10 seconds. It was like spying on the internet. Eventually this turned into TweetGrid.com, a site which still gets significant traffic and which made me a local celebrity in Raleigh with the Twitter-using populace. For a long time, my search widget topped Google for "Twitter Search Widget." It wasn't until after the official Twitter search widget had been released for about 8 months that it finally overtook me. Even today my search widget gets millions of pageviews per month. I had to move off of GoDaddy shared hosting because they didn't know how to turn KeepAlives off in their apache configs. Oh well. Sadly, it is almost impossible to monetize such a monster, but the ads on TweetGrid.com cover it for now.
realtimetrends (jan 28, 2009)
- A controversial bot I made to prove a point about Trending Topic bots. At the time there were several bots that would spam Twitter with the current Trending Topics. I created my own to see how effective a technique this was for driving clicks through to a website. In fact, it was very effective. All of this spawned an interesting thread on the Twitter API Developer list, and eventually all of the bots were killed and removed from the search results (thank goodness).
tubetweets (feb 16, 2009)
- One of the few unreleased projects I started. This time I was working with someone else (all previous projects had been solo). We got pretty far, but we were 3 timezones apart and there were so many changes happening with the API that we finally just let it die. The idea was to create hashtag channels for TV shows so that you could interact with other viewers while watching TV. There are lots of other services that do this now. The introduction of the iPad to the living room has made this a very cool experience.
tweethook (apr 5, 2009)
- A service which turned Twitter Search queries into webhooks, so that the tweet data would be pushed to the person running the query, obviating the need to poll the Twitter Search API all the time. There is much more history associated with this product which will be expounded upon below.
notifo (feb 13, 2010)
- The company account for Notifo.com, my current startup.
pushly (march 11, 2010)
- A service which will push Twitter mentions, tweets, DMs, favorites, and new follower events to your mobile phone by using the Twitter Streaming API and sending the data through the Notifo API.
There are a few others (mostly toy bots), but you get the idea. For two and a half years, I would work all day at Cisco, then come home and work on my latest Twitter project. Each one would involve learning something new that I had not done before. Meanwhile, I had posted hundreds of times on the API Developer list, at first asking questions and then starting to answer more and more to return the favors and help my "internet karma." By this time I had interacted quite a bit with several of the Twitter engineers (however only electronically).
2008
Raleigh was one of the first cities outside of the Valley to hold "Tweetups" at a pretty regular interval. Raleigh is in an area of NC called the "Triangle" because of the three major cities there being very close to each other (Raleigh, Durham, and Chapel Hill), so we had "Triangle Tweetups." My first ever tweetup was the second Triangle Tweetup (around June 2008). I had been invited to speak about FlixPulse (which at the time was called Twitter Movie Reviews). There were about 50 people there. Each subsequent tweetup saw the number of people double or more. This was quite the indication that Twitter's userbase was growing very quickly!
2009
One fateful Tweetup in January of 2009, I met a guy named Doug Williams who was an engineer at IBM. He was about my same age, and he also liked to tinker with the Twitter API. Around the same time I had started learning about this whole "startup" thing and wondered what it was like to really live and work in Silicon Valley, which seemed like the nerd holy land. One night, Doug and I met up for beers after work. He told me he was going to interview at Twitter because IBM was getting boring. He encouraged me to do the same thing. I had never really considered it, but it got me to thinking.
A couple of weeks later, Doug's interview had come and gone, and he emailed me saying he got the job. How exciting! He sold everything, moved to SF with the clothes on his back, and joined Twitter when they had about 40 or 50 employees.
An Idea Starts Brewing
In April of 2009, I had the idea for a service which would make using the Twitter Search API much easier for developers and businesses which wanted access to the data. Since Twitter had killed the XMPP firehose (and cut off IM access altogether, never to return), the only way to get timely Twitter data was to poll the API in very frequent intervals. Setting up these pollers to be efficient but stay on the good side of the API rate-limits is non-trivial, but since a lot of my projects had relied on the Search API for the data, I had created several well-behaved polling systems. I thought, if I could make a service which would poll the Search API on your behalf and just deliver the data over the web with a POST callback (a webhook), it would make developers' lives much easier and Twitter would be happy with the reduced polling load. With much enthusiasm I started developing TweetHook.
At the same time I had some pretty conflicting thoughts about my life situation. Here I was, a 24 year old who had started climbing the corporate ladder at Cisco very quickly, had a great salary with benefits, a sports car, a three-story town house, a wife with another job, and no kids. Life was good. But I could tell that things at work were slowing down. After my last promotion, it would be a long hard road to the next one (especially since the credit crisis was just starting to hit Raleigh and layoffs were happening). Our project at work was getting bogged down by more and more red tape and meetings. I could come home and launch a new web app from start to finish over a weekend, meanwhile at work I was spending 40 hours a week writing functional spec documents. There was a major difference in how productive I felt in each situation. Sure, working on next-gen tech that will Run The Internet is no laughing matter, so stuff needs to be done by the book, and silly little webapps don't have to be so strict in their quality, but the difference was enough that work started to be Not As Fun. This was not good, because up until that point I loved my job. I considered myself lucky to have a job where I genuinely had fun using the skills I had honed since learning BASIC on a VTech computer when I was nine years old. It was intensely gratifying work!
But, there I was. Looking at companies like Twitter and people like Doug. Suddenly I was jealous. Yes, I will apply for a job at Twitter.
So, I applied and pinged a couple of engineer friends at Twitter who helped get my app to the interview stage. At that point, either Biz or Ev would do a phone screen with every candidate. I had a phone screen with Biz (a couple of days after his interview on the Colbert Report) which was very pleasant. Do they still do that now, I wonder?
The Twitter Interview
I got tapped for an on-site interview on May 4th. I took some vacation days from work, said I was going to visit family (which was half true), and went to SF for the interview. I was excited and nervous the whole time. Twitter was still in their Bryant St office. By now it was getting pretty crowded. This was during their hyper-growth phase and everything was always crashing around them. So, things were a bit hectic and my interview schedule got skewed several times. I was supposed to have an interview with Alex, but we ended up just chatting for about 15 minutes over lunch. I think I was supposed to have an interview with Ev at the end of the day, but everything was already way behind schedule, so at 5pm I was done. I still remember my interviews with Steve Jenson and John Kalucki quite vividly.
At the time, Twitter was mostly a Ruby shop, and I did not know any Ruby, but I knew lots of other languages and computer theory and could answer all of their coding questions in C, or pseudo code when they didn't want C. More importantly I knew how to learn very quickly, so I figured if they really wanted me to know Ruby I could learn very fast. I found it surprising they never really asked any Ruby specific questions during the interview anyways. Mostly theoretical or algorithmic questions and lots of conversations about experience (I assume to see if there was a culture fit).
Later that night I met Doug down the street at the Hotel Utah Saloon for some beers before I went home. He was telling me that soon they were going to introduce some rev-share program with developers, so I should really keep that TweetGrid site going (this was way back in 2009). I thought that was cool, but really hoped that I would be working for Twitter by that point anyway, so it wouldn't really matter. We parted with a handshake, and I flew home.
A couple of weeks later I received an email saying, "Thanks, but no thanks." So, that was it. I emailed Alex with the news. He said he was sorry to hear that and apologized that our interview got cut off the schedule.
This is an aside, but I feel that one of the major failings of the tech sector job-hunting process is the complete and utter lack of feedback regarding job interviews. I had no idea why I failed the Twitter interview. I still don't. Was it a knowledge issue? Were my coding skills weak? Was it a culture misfit? I'll never find out, but how can one improve when they don't get feedback on their weaknesses? I know companies are tight-lipped about such things because of risk of litigation, but it still saddens me.
So, now what? I had just flunked Silicon Valley.
Ever since I had learned to program at the tender age of nine, I had wanted to run my own software company. Bill Gates was my childhood hero (for better or worse). That itch to go out on my own had been burning in the back of my brain my whole life. Was this series of events going to be the catalyst to push myself out on my own?
My wife and I had significant savings, she had health coverage through work, I was feeling more bogged down at work, and I had been learning the skills I would need to create an online SaaS-type service over the last few years by moonlighting as a crazy Twitter app hobbyist. Yes, this would be the perfect time to go for broke. We were young with no kids. I had heard several co-workers at one time or another say, "I wish I had started my own company when I was younger... but I never did..." It was now or never. I didn't want to look back on my life and say "I wish I had..."
Wherein I Quit My Awesome Job
I gave my 2-weeks notice to my manager at work. Apparently he hit some kind of Panic Button because that news spread fast. That afternoon, several higher-ups discretely came to my cube and said, "Hey, let's talk." There were lots of questions about why I wanted to leave, and if there was anything they could do to get me to stay. It was quite funny because they were trying to cut costs at every corner; I thought I would be helping them by cancelling my paycheck!
After I made it clear that I was determined to go, everyone was extremely supportive. Surprisingly so. My biggest fear was that all of the friendships I had created with my co-workers would vanish or turn into resentment. Quite the opposite. They gave me words of encouragement and wanted to be kept up to date about how things were going. I heard even more "I wish I had done that what I was younger..." stories. This set my mind at ease and allowed me to get excited about my next venture.
I filed my incorporation paperwork, and on May 27, 2009 - my 25th birthday - JazzyChad Network, LLC was born.
My first product would be TweetHook. During its development I learned about the seedy underbelly of the internet: credit card processing and merchant accounts.
I had used PayPal for my t-shirt sales, but I did not trust them for this product (I'm not sure why I felt that, but after hearing countless horror stories I feel justified). After faxing back and forth what felt like hundreds of pages of contracts, I had my merchant account and I could accept money over the web.
Please Dial Technical Support
TweetHook was not ready for public launch until mid-September, but in the mean time Doug reached out to me and said he was going to be migrating away from his role as Twitter API Support Lead. He asked if I wanted to take on the role of API Support as a remote contractor while they were looking for a full-time replacement. It was going to be for 15 hours a week, and since I was answering lots of emails on the developer list already, I might as well get paid for it. It was for $25/hour, which was a significant decrease from my previous salary's effective hourly wage, but at least it would be some incoming cash.
This sounded great, in theory. Work a couple hours a day answering questions, then work on my product the rest of the day. On July 31, 2009 I started my role as Twitter API Support as Twitter employee number 97.
It quickly became apparent that this was going to be more than 15 hours per week. The number of developers and companies wanting support and asking questions was growing every week. It was amazing how many people sent unicast emails to Twitter Support (i.e. not over the developer list). I spent most everyday answering emails. It's the only period in my life where I was an Inbox Zero'er because if I wasn't, I would have drowned in it. Answering questions was paramount, and letting an email slip through was not an option.
Shortly after I started, Twitter was DDoS'd, and I had the pleasure of dealing with everyone's rage. I had one company actually threaten Twitter (and me) because "some investors" were growing increasingly upset every minute that they couldn't pull data from the Twitter API. Everyone who was previously approved for API whitelisting re-applied because they thought they had lost it. This meant thousands of applications to go through again. I was at home on the East Coast (it was getting into night at this time) trying to keep everyone calm, while I saw tweets coming from Twitter employees raving about the sushi they were currently enjoying on Market Street. There was nothing they could do, so why not go enjoy life? Meanwhile I'm at home on a Friday night being yelled at by people who don't understand how the internet works (not fun for a guy who helped make the internet work). My wife wasn't too happy either.
"Twitter API Support Guy" may not sound like an important job title, but it is basically the liaison between Twitter (the company) and the thousands of people trying to build stuff (read: businesses) on top of their platform. It was clear that having someone work remotely for this role was not the right situation. It was especially hard to be working remotely from the API team with whom I needed to be in close contact to answer a lot of questions. Due to some other unresolved happenings, I didn't have access to the code base during my tenure, so I was forever having to bug people about specific implementation questions if I wasn't sure of an answer. How many people do you think were sitting in Campfire just waiting for me to ask questions?
In the mean time, in mid-September I had launched TweetHook and was trying to get it off the ground all the while dealing with Twitter API Support issues. I could go on, but you get the picture. Needless to say, things were growing tense (on my side anyway), and since I had a 3 month trial contract with Twitter, I decided not to continue it when it was up. I just had to ride it out until the end of October.
Soon after the launch of TweetHook, Twitter released the search feed of the Twitter Streaming API. Oops. Now my product was pretty useless except to the few people who couldn't hold an open connection to Twitter for whatever reason. So now I'm "working" for Twitter, waiting to quit, and they have just released a feature that killed the very product I left my cushy salaried job to create. Ugh.
I continued to work full-time on API support until October 30th when my contract was finally up. Twitter had not found a replacement yet, but I wasn't going to wait. Ryan Sarver, the Twitter Platform Lead and my boss, suggested that I write a post-mortem email to the team describing the lessons learned.
I wrote a 6 page email with all of my thoughts. I sent it to Ryan and the rest of the API team, as well as CC'ing Ev and Biz. I only received one reply. It was from Ev about a week later. It was short and sweet, and it said, "I appreciate you taking the time to write this all up. It's invaluable to get such perspectives as we're trying to steer this unwieldy ship. Best of luck, Ev."
Y Combinator? Y Not?
The night I quit the gig at Twitter (Oct 30), I submitted an application to Y Combinator. It was the day of the deadline, and I had until 11pm to submit. I was frantically filling out the form to beat the deadline. I simply ran out of time and submitted the app without a video. My current product was essentially dead, I had just quit my contract and didn't have any plans after that. I figured I had nothing to lose by applying.
I remember the deadline was Oct 30 because the next day I got an email from pg saying, "We noticed you didn't have a video. Please record one and send us a link." I remember it was Halloween because I kept being interrupted by the doorbell while I was recording my video. My wife was out of town, so I had to answer the door each time. Finally I got a full take of the video. Here is the video (I had not watched it since submitting about 18 months ago...). At the time I had another Twitter-related product idea, so I applied with that. Also at the time, I had no idea that being a solo-founder carried such a negative stigma, so I didn't know that was supposed to be an issue. I just applied because I thought I had the chops.
My parents, my wife, and I had planned a one-week trip to Italy for mid-November as a once in a lifetime trip. I had not told anyone about my application to Y Combinator. I knew the acceptance emails would be going out around the start of the trip, so as we landed in Frankfurt, Germany to catch a connection to Florence, I checked my email (which probably cost $5 in data fees). I couldn't believe my eyes. I had received an email from YC saying they liked my application and wanted me to come to Mountain View for an interview. Well, I had to tell my family at that point, so during dinner that night I told them the whole story of what led me to apply and what Y Combinator was all about. They were all very excited.
So, during the trip, I booked a ticket to Mountain View which would leave almost 24 hours after we returned to the USA. The story of my time in Mountain View for the YC interview is entertaining enough for its own post, so I won't go in to details here, except to say that I was accepted to the Winter 2010 batch of Y Combinator. After much celebration, I headed back to NC to finish out the year on the East Coast.
In the video, you hear me pitch my idea for a Twitter-chat related idea. Well, during the time I applied and actually starting YC, I had come to realize that this was probably not the best idea, so I started working on something else. The twitter-chat product is actually built and could be released, but it has some rough edges, and I'm not sure I want to split my time on it now. We'll see if it rears its ugly head someday.
2010
2010 started. My wife stayed in NC so she could work, and I left for CA. At this juncture I must give her a lot of credit. She was (and still is!) extremely supportive of my crazy ideas and desires to build a company. She never once complained about living apart even though I knew it was incredibly hard on her. Thankfully we had some wonderful friends at our church who took good care of her if she ever got lonely.
I went through YC solo even though they tried to set me up on several co-founder dates. I met several great people, but nothing ever really clicked. I found it oddly contrary to pg's advice that a co-founder should be someone you've known for a long time and have worked with before. Eventually the deadline of Demo Day was bearing down on me, and I had to finish out YC on my own. I launched Notifo a few days before Demo Day.
I had created a site/service called Push.ly which will push mentions of your username on Twitter to your mobile phone using Notifo. It was basically a demo service to show what could be done, and it was also a way to drive consumer adoption before many services had adopted the platform. For this I am using Twitter's Streaming API.
Chirp
Back in February or so, Twitter had announced that they were going to have a big Twitter Developers Conference in April. This sounded exciting! Then they dropped what seemed like a bomb on the community. The tickets were $400+ each. Now, I had never been to a big tech conference before, so I don't have a reference point, but $400 seemed like a lot of money. Apparently you are supposed to get your company to pay your way to these tech conferences... but this seemed different. Most of the Twitter developers I knew were all hobbyists or small-time shops that couldn't afford to get airfare, a hotel, and a $400 ticket for a two-day event. Then they released the speaker list for the first day. Again, I had never been to a conference like this, so again no reference point, but apparently developer conferences are supposed to be more code-centric. This line-up had a lot of bizdev-type people and talks going on. Ed Finkler, creator of the popular open-source Twitter client Spaz, wrote a big article about his thoughts on the direction Twitter was headed. I wasn't really sure what to expect from this conference now.
Mere days before the conference, Fred Wilson and Twitter dropped another two bombs on the community. On April 7, Fred wrote a post about The Twitter Platform's Inflection Point. Basically he was saying that the time to fill Twitter's holes was over. Anything that could be considered a feature should be avoided because Twitter would eventually get around to adding it. This was slightly frustrating for the developer community because Twitter had been so lax about adding any features (most probably due to the fact that they were trying to just stay up) and consumers wanted more features that developers were able to provide extra functionality and make users happy.
Then on April 9, Twitter announced that it had acquired Tweetie to be the official Twitter for iPhone client (along with acquiring Loren Brichter, the developer). This, predictably, sent chills down many developers' spines. Twitter, up to this point, was a communications and infrastructure company. It was not in the business of controlling the user experience. This was a major shift in direction for the company from the perspective of the developer community.
The day before the conference, there was a secret cabal of 3rd party developers that met in a SOMA office to discuss the recent actions by Twitter and how the developers were going to band together to demand a developer Bill of Rights. I know this because I was there. It did seem a little creepy that this was all happening. After all, it's Twitter's ball. If they want to take it and go home, that's their right. It has been almost a year since that meeting, and not much has come of it. Either that, or I have been left out of the loop.
Tension was at a fever pitch during the developer conference (called Chirp). Everyone was waiting to hear what other bad news would be levied up on stage. There was murmuring about other possible rumors going around. Overall it was quite an awkward situation.
Day two of the conference was an all-night/all-day hackathon. Few people stayed all night (I did, because it's a hackathon), but the next day it was jammed with people working and talking and attending the technical sessions being held by the Twitter engineering team around the building. Overall it was fun, and I was happy I finally got to meet a lot of people in person that I had only known online up to that point.
Twitter had an app contest to determine the best app built during the hackathon. It turned out that only one of the apps had been built during the hackathon, and the rest were already in development. Oh well. They had celebrity judges come watch the presentations (pg was one). It was fun, but didn't really feel like it was in the hackathon spirit, at least to me. I had dinner with pg and a few other folks, then I went home to prepare to continue on my fundraising trail for Notifo.
Go West Young Man
Y Combinator's batches last for 3 months. Mine was January through March. But I had stuck around CA to fundraise afterward, and March turned into April and May. I had only seen my wife twice during this time (once in CA and once at a mutual friend's wedding), and so it became apparent I should go home for a bit. I flew to NC for my birthday in late May, but then promptly returned for a big VC meeting in early June.
It became apparent for a multitude of reasons that fate was drawing me out to California for good, so my wife and I decided to make it official. She quit her job and prepared the house for sale while I continued to have meetings and finally meet my co-founder, Paul.
Ultimately our house did not sell (thanks, economy!), so we are renting it out for a loss until we figure things out. Meanwhile we are paying the same amount to rent a tiny one-bedroom apartment in SF as we are paying for the mortgage on our house in NC. C'Est La Vie.
Filling Holes
By now I had gotten to know John Kalucki and Marc McBride pretty well (they make sure those Twitter Streams keep a-flowin'). They had given us access to Site Streams, which is an alpha product that is not widely available to developers. This enabled us to capture more user-related events (such as DMs, favorites, follow events, and mentions from private users) and use them in Pushly to make it more appealing for users. Boxcar also got access to Site Streams. So Notifo and Boxcar were the first apps that were able to push these more interesting events to mobile users.
A couple of months later, Twitter enabled push notifications in Twitter for iPhone for mentions and DMs. This didn't drive a lot of current Notifo users away. Some left, but they came back because our implementation was much better! However, it didn't help for getting new user adoption.
In the back of my mind, I knew this day would come. I was just hoping to ride it out as long as I could before they flipped the switch. Remember back when I was working as Twitter API Support? I distinctly remember being on a conference call with the Platform team and hearing one of them say, "Have you guys used Boxcar? It's so awesome. It pushes twitter stuff to my phone. Twitter should really be doing that ourselves. Why aren't we doing that yet?" Well, one obvious answer was they didn't have a native iPhone client yet, but the writing was on the wall. They would make it happen as soon as they possibly could. And they did. I knew it would happen, but it took a lot longer than I had imagined.
Now, Notifo supports Android, and Twitter has said they are going to implement push into their Twitter for Android client as well, but they haven't yet. They will, but for now we are riding it out.
2011
The Email Heard 'Round The World
Things were relatively quiet on the Twitter Dropping Bombs front until this past Friday when this email exploded the inboxes of Twitter developers everywhere. Basically the gist is that Twitter wants to control the user experience and/or maintain a high level of consistency for clients designed for consumption of the Twitter timeline. There has been all sorts of outcry and speculation that Twitter just wants to force their clients on everyone and shove ads down our thoats so they can make money. I have no idea if that's true or not, but it's easy to make that assumption.
A lot of people read the message as "You're not allowed to make new Twitter clients. Period." That's not what it's saying, but it might as well. What it's saying is, Twitter will be more concerned about providing as many native-device clients as they can so they can control the user experience. They will promote their own products (why wouldn't they). Promoting other party's products is a messy problem (remember the stupid dictionary box on Twitter's website where they would link to featured third-party apps? How many apps have I written? How many of them were featured in that box? I'll give you a hint. It rhymes with Nero). I'm still not sure if it was just a really badly timed campaign, but when Twitter recently pulled the plug on some very popular Android and Blackberry clients (now owned by UberMedia), they simultaneously were promoting TwitterMobile apps in the Trending Topics section. Whether intentionally timed or not, it looked bad.
No, Twitter isn't saying "Don't build clients." But why would anyone bother when they will be steamrolled by Twitter's own promotional leverage? With Twitter saying they are moving into the client ownership space, they are basically stifling innovation by third parties because now no sane person would bother to try. Even if they did, it would be trivial for Twitter to incorporate whatever innovation it wanted to cherry-pick away from them.
Twitter goes on to say, "here are some other areas where you should innovate and where there is ample opportunity." That's great until you see the slippery slope. What will stop Twitter from moving into those areas or verticals? The correct answer is: Nothing. Do you think that big media companies want to partner with middle-men development companies to provide them with Twitter data integration? I wouldn't. I would want to partner directly with Twitter to make sure there is a contract in place regarding the integrations. Twitter owns the entire pie. Every tweet you have tweeted lives inside their system. While they give access to that data to the outside world, there could come a time when that doesn't make economic sense for them any more.
This is starting to get all gloom and doom about Twitter, but honestly I'm wary of really building anything on top of them anymore. It's ironic that now I possess all of the skills that they are probably seeking in the engineering department. Javascript for web-client: check. iOS experience for iPhone client: check. Android experience for Android client: check. Ruby/Rails experience for the web-stack backend: check (I have some now!). Too bad I'm off doing my own startup now. In my mind, the only way that I will be doing significant development work on top of Twitter's API is if I am an employee of Twitter writing code to further Twitter's own interests. If you can't beat 'em, join 'em. That seems to be especially true here.
I have several friends that work at Twitter, and know several other employees as well. I hope I am not offending them, but this is just my honest perspective as an outside developer without any real insight into where Twitter is headed. With all these crazy valuations being thrown around and the competition with Facebook and Google (not only for product, but for talent), the push for Twitter to seriously monetize must be getting pretty heated. This is pure conjecture, of course, but there must be some kind of urgency.
So, how is my consumer relationship with Twitter these days? Actually I have been using it less and less. I used to wake up and read my timeline. Then read it a hundred times during the day, then read it before I fell asleep. Recently I have only been checking my mentions. There is so much noise coming from people and other apps (ironically encouraged by the infamous Email Of Last Friday) that I don't have the time or energy to wade through it. Plus, I am getting so sick of the hate that people throw on the internet for me or my friends that I would just rather ignore it (I discuss some thoughts on these haters in this comment). What I really need to do is just unfollow everyone and start over again. But again, there is too little time, and Twitter's official clients don't have a good way to do that. I could write my own script for that, of course, but people have been banned for such activity in the past, and I'd rather not chance it.
It's a shame, really. I had started to think about a real-time web client for Twitter using Site Streams. New Twitter is broken in some pretty frustrating ways (more on that in another post), and I think I could do better... but now we'll never know. There's no use in risking it.
I read a post recently called "So, What are You Going to do About It?" It basically said, sure, you can criticize things all day long, but if you don't do anything to change it or at least give some advice, you're just being a jerk and blowing hot air.
So, what am I going to do about it? I'm not sure what I personally will do (except for stay away from heavy Twitter development), but I have some advice for Twitter if they want it.
Twitter should just lay down their roadmap. They have said over and over and over again that they want to do this, but never really have. Telling developers to stay away from writing new clients is about the closest they have come. But, this is not enough. Be very specific about what sorts of things you will be working on, and what areas of business or what verticals you will be staying away from... and then stay away from them (at least for a while). Then, when you want to move into that space, acquire the leader instead of building it in-house. This shows good faith on your part that you recognize superior effort, and everyone gunning for that recognition will understand the risks involved. Listen, I know things change, and that Twitter can't promise one thing or another, but at least it could try?
In Notifo's case, we deliberately have not allowed anyone access to our private client APIs because we wanted to (and necessariy have to because of the way push infrastructure works) control the Notifo client distribution. Anything else is pretty much fair game for us.
I keep hearing the super tech-savvy say, "There should be a federated, distributed, open-source protocol that will replace Twitter and Facebook and let our data be free!" Well, that's all well and good for you, but let me tell you a secret... no average user wants that. Really, they don't. If you haven't seen Diaspora's Easy 25 Step Quick Start Guide, you should take a look. Is your mom going to do all that? No. People want a way to interact with their friends using whatever cool app or website they are using so that they can be cool, too. I applaud the efforts of projects like Status.net, but they have been around almost as long as Twitter, and I know maybe three people that have active accounts.
It's interesting to watch new companies come along with their APIs. Look at Instagram's API. Everyone is clamoring over it, except what is happening? Their API TOS clearly states "Do NOT recreate the general user experience of Instagram as portrayed by our app." Yet, what is everyone building? Web clients. Will Instagram enforce this policy? I don't know, but I don't want to find out first-hand. That's why we created Pic A Fight as a quirky app that isn't really a client, but leverages the Instagram API in a fun way.
Same thing with Convore. They released their API, a few iOS devs got together to try to build a client, then Convore released their own official iOS client. At least this time the feedback loop was much shorter.
Platforms are tricky beasts. I don't have all the answers, or maybe any. All I know is that I am being much more careful this time around. Twitter got hyper-popular in large part thanks to the help of 3rd party devs that build awesome stuff with the API. Will other companies see such enthusiasm for their APIs? Maybe, but I don't think we will see it on such massive scale for quite some time.
So, that's the story of Twitter and Me. For now. Thank you for reading this far. It has been very cathartic for me to tell this story.
Epilogue:
I feel the end of this post comes off pretty harsh. That may be, but I feel that I should mention some positive impacts that Twitter has had on my life, so as not to paint is as a total waste of my time.
Twitter (the service) has provided me opportunities and helped me meet people that I otherwise would never have met. I probably would not be here in California chasing my childhood dream without it. I am one of the minority of people that have actually made any amount of money by developing with Twitter's API. It's not a lot of money, but it is net positive. Without the API, I would not have had the excuses or ideas to build a different project at home in my spare time every other week to continue to hone my skills and keep myself relevant in the crazy pace of the tech industry. When I moved to Raleigh and didn't know anybody, it was using Twitter to find other people in the area to hang out with that kept us sane instead of shyly staying at home. In return, I have paid nothing for Twitter. It has created more value for me than I have given to use it, so in the end it is a net win.
— Fin.