TweetSharp for Twitter developers using .NET

Since January I’ve been using a library called TweetSharp in my various Twitter-related programming projects (including my monthly stats posts). Not only has it saved me from all of the effort that would have gone into writing my own Twitter library for .NET, but it has also taught me a few things about fluent interfaces, OAuth, and other topics. Here’s the description from the relatively new official website:

TweetSharp is a complete .NET library for microblogging platforms that allows you to write short and sweet expressions that convert automatically to web queries and fly to Twitter on your behalf.

Maybe this is a generalization but I often feel that .NET developers get the short end of the stick when the “cool kids” release sample code for their APIs. Or more accurately, C# developers get the short end of the stick (because you can run Python, Ruby, and other languages on .NET if you really want to). Thus I’m grateful that Dimebrain (Daniel Crenna) has developed such a useful library.

TweetSharp is open source and under active development (hosted on Google Code), with a growing base of users reporting and fixing issues (I helped with the Twitter Search functionality initially). If you’re writing any kind of software for Twitter using .NET, you should be using TweetSharp.

Mountains of data, right at your fingertips

Last week, two announcements caught my eye. The first was from Amazon.com, which announced that there is now more than 1 TB of public data available to developers through its Public Data Sets on AWS project. The second was from the New York Times, which announced its Newswire API, providing access all NYTimes articles as they are published.

This is a big deal. Never before has so much data been so readily available to anyone. The AWS data is particularly interesting. All of a sudden, any developer in the world has cost-effective access to all publicly available DNA sequences (including the entire Human Genome), an entire dump of Wikipedia, US Census data, and much more. Perhaps most importantly, the data is in machine-readable formats. It’s relatively easy for developers to tap into the data sources for cross-referencing, statistical analysis, and who knows what else.

The Newswire API is also really intriguing. It’s part of a growing set of APIs that the New York Times has made available. With the Newswire API, developers can get links and metadata for new articles the minute they are published. What will developers do with this data? Again, who knows. Imagination is the only limitation now that everyone can have immediate access.

Both of these projects remove barriers and will help foster invention, innovation, and discovery. I hope they are part of a larger trend, where simple access to data becomes the norm. Google’s mission might be to organize the world’s information and make it universally accessible and useful, but it’s projects like these that are making that vision a reality. I can’t wait to see what comes next!

I want an API for Edmonton Transit (ETS)

edmonton transit When the new edmonton.ca website launched back in the fall, I was hopeful that the Edmonton Transit portion of the site would receive more than just a facelift. Unfortunately, that didn’t happen. Though I’m disappointed, I can understand why. Edmonton Transit is not in the business of developing websites or software, it’s in the business of transportation. They’ve got to make sure buses and trains run efficiently and effectively first, and then they can focus on everything else.

That’s not to say that the website, or BusLink (over the phone), or the other services they offer aren’t important, just that ETS has limited resources and must deploy them accordingly. That’s why I think an Edmonton Transit API makes a lot of sense.

To build an application for looking up transit information, you need both an interface and data (I’m simplifying things a bit). ETS has all of the data of course – they know all of the route numbers, bus stops, and schedule information. What they lack are great interfaces. If ETS exposed their data through an API, third party developers could build great interfaces on top with relative ease.

Here’s the kind of information I’d like to see exposed through an ETS API:

  • Route Information – return name, start and end point, and other details for a given route
  • Stop Information – return coordinates, address, photo, and other information for a given stop
  • Route Stops with Stop Times – return a list of all stops along a given route with stop times
  • Routes at Stop with Times – return a list of routes for a given stop with stop times for each one
  • Search for Stop by Location – return the closest stops for a given address or set of coordinates

That list is similar to the information exposed by the unofficial TransLink API. A good starting point would be to simply clone what they’ve done! More advanced API features could include:

  • Route Interruptions – return a list of routes currently affected by construction or other interruptions
  • Stop Interruptions – return a list of stops currently affected by construction or other interruptions
  • Search for Stop by Landmark – return the closest stops for a given landmark
  • Trip Planner – return a list of route and transfer options for a given location of origin and destination
  • Information for St. Albert Transit and Strathcona County Transit

In the future, the sky is the limit. I know ETS is testing GPS technology on buses, so why not expose “distance from stop” information for a given route? That would be wicked, and incredibly useful when the weather dips below –25 C.

It’s not feasible for ETS to develop interfaces for each new platform that emerges. They have a website, but what about an iPhone application? Or a BlackBerry application? Or a Twitter bot? If they focused their limited software development energies on building an API, I’m confident that local entrepreneurs and software developers would build a plethora of interfaces on top of it. I would definitely build a Twitter bot!

There don’t seem to be many transit systems with APIs available, but that won’t be true for long. Here are a few others I’ve found: TransLink (unofficial), Bay Area Rapid Transit (official), Portland’s TriMet (official), Chicago Transit Authority (unofficial), Charlottetown Transit (unofficial). And here are a couple other resources I’ve come across: the Public Transit Openness Index, and a list of publicly available official GTFS (Google Transit Feed Specification) schedule data feeds.

I’d love to see Edmonton Transit take the lead and offer a completely free, fully functional transit API, and I’d be willing to help make it happen. In the meantime, don’t forget that you can now use Google Maps to find ETS trip plans.

Ping.fm helps you post to many sites at once

ping.fm I’ve been using a new web application called Ping.fm for the last couple weeks. It’s a really simple service that helps you post to multiple social networking sites at the same time. Instead of updating Twitter, Facebook, Jaiku, Tumblr, etc. separately, you can do it all at once with Ping.fm.

The best part about Ping.fm is that they expose a number of different interfaces for updating. That means you don’t need to have a browser window open in order to post! In addition to the website, there’s a mobile web app, an iPhone web app, a Facebook application, an iGoogle gadget, an API for developers, and IM support for AOL, Yahoo, and Google Talk. I find that I use the Google Talk and iPhone interfaces most often.

When you setup your services, you can assign them to three categories: Statuses, Micro-Blogs, and Blogs (for example, I have Twitter in Statuses and Micro-Blogs). Then when you post a message to Ping.fm, you choose which of these categories to update. Additionally, you can setup “custom triggers”. For example, I have #t setup. If I post something that starts with #t it will update Twitter, Tumblr, and Identi.ca. Finally, you can update specific services with “service triggers”, like @fb for Facebook.

The current list of supported services is: Bebo, Blogger, Brightkite, Custom URL, Facebook, FriendFeed, hi5, Identi.ca, Jaiku, LinkedIn, LiveJournal, Mashable, MySpace, Plaxo Pulse, Plurk, Pownce, Tumblr, Twitter, and Xanga. Three of these (Custom URL, FriendFeed, and Identi.ca) have been added in just the last ten days or so. The Ping.fm team is obviously very actively adding functionality based on user feedback.

Another thing I like about Ping.fm is the API. I recently requested an application key, and while I haven’t really played with it yet, I intend to replace some existing update code I have with calls to Ping.fm. I suspect there will be quite a few third party tools and services that make use of Ping.fm’s API. Having an API is key for a service like this.

I’m really happy with Ping.fm, but it’s not perfect. Here are a few wishes and things I’d like to see improved:

  • None of the checkboxes work in Opera. I’ve never seen this before on any other website, and it’s really annoying.
  • I’d like to be able to set a “prefix” for Facebook. By default, my updates are just mashed together, as in “Mack Tempted to take a nap :)” but I’d like to specify a prefix of ” – ” to get “Mack – Tempted to take a nap :)”. Same goes for LinkedIn.
  • I really wish Ping.fm had an SMS gateway. Then I could update via text message. I wrote my own code with Twitter’s API to accomplish this for now.
  • Would be cool to have a setting to turn off URL shortening by default.
  • I’d love to see OpenID support too.
  • Support for IM statuses as services would be wicked – Google Talk, Windows Live Messenger, and Skype would be at the top of my list.

I’ve seen a few people write about Ping.fm, wishing that it had a way to aggregate your friends messages at all of the supported services. I hope they don’t go down that route – that’s what I use FriendFeed for. I’d rather Ping.fm stay focused on posting, not reading.

If you’d like to give Ping.fm a shot, use the beta code “pingyoulater”. I think these codes change from time to time, so if that doesn’t work, search Summize for a new one.

Why isn't Twitter dead?

I started using Twitter back in about October of 2006. It had a pretty sizable following by that time, and it has grown quite significantly ever since. I quite like the service, and I’m totally enamored with the idea of microblogging and micromedia in general. And like everyone else, I am frequently annoyed at how often Twitter simply doesn’t work.

Which begs the question – why hasn’t it died? Why do thousands of users like myself keep coming back?

I’m getting really sick of the various messages Twitter displays when it’s down. Too many times I’ve sent text message updates, only to have them never appear or worse, appear days later. Too many times Twitter has stopped sending me updates altogether. Yet despite all the complaining I do, I always find myself back with Twitter as soon as its up.

Why that is, I’m not sure. But I think it may have something to do with the API.

The smartest thing the dudes over at Twitter ever did was make an easy-to-use API, and I bet they didn’t even realize how important it was at the time. It has resulted in dozens and dozens of third party services that build on top of the Twitter community. Positive reinforcement. It’s the API that makes Twitter so versatile, and it’s the API (primarily, I think) that keeps me coming back.

Of course, there’s something to be said about the large, active community that lives at Twitter. Even though in theory it should be simple to hop from service to service on the web, it never happens that way, and the large number of Twitter users certainly exerts a strong gravitational pull. Still, you’d think people would say “enough is enough” after a year and a half of 404 errors and other problems.

But they don’t. Twitter is as popular as ever. I think the API is largely responsible for that.

NY Times article on Pownce made me laugh

Post ImageAfter writing my review of Pownce a few weeks ago, I figured I’d never write about the site again. However, after reading an idiotic article published in the New York Times yesterday, I knew I’d have to. Author Jason Pontin had me shaking my head right from the opening paragraph:

JUST now, the hottest startup in Silicon Valley — minutely examined by bloggers, panted after by investors — is Pownce, but only a chosen few can try out its Web site.

Hottest startup in the valley? News to me. Maybe three or four weeks ago. Anyway, let’s continue.

Within days, invitations were selling on eBay for as much as $10. Mr. Rose has declined all requests to be interviewed about the service, including my own. But as a consolation, he sent me a coveted invitation. I enjoyed the rare thrill of cyberhipness — and got to experiment with the site.

Coveted? Are you kidding me? Pownce tells me I have nine invites to give out. I’ve had them for weeks. I am positive I’m not the only one. Sorry Jason, receiving an invite to Pownce is anything but a hip cyber experience.

After some general information and background on Kevin Rose, Jason concludes that media executives should keep an eye on Pownce:

What struck me most was the site’s potential to be powerfully disruptive. Most file-sharing occurs on public sites, which can be monitored by media companies; if the users violate copyrights, the sites or the users themselves can be threatened into compliance or litigated out of existence (as happened with the original Napster). File-sharing on Pownce would be difficult to police.

If I didn’t know any better I’d think Jason was trying to make a joke. Because I sure laughed.

The RIAA has sued children, senior citizens, and everyone in-between. They’ve shut down company after company, and they’ve successfully petitioned ISPs for records detailing the activities of their subscribers. Somehow I don’t think policing Pownce (a system which knows exactly who is sharing what with whom, btw) would be a problem. Evidently Jason hasn’t heard of BitTorrent, which actually does make it difficult to police file-sharing (especially with the recent work done on protocol encryption).

I really wish the NY Times would stop publishing useless fluff pieces like this one.

I should mention that my main criticism of Pownce is set to be remedied soon – they are starting an API. Should be available in September, though the undocumented API that their desktop app uses has already been, um, documented.

Read: NY Times

Facebook is the web application Microsoft should have built

Post ImageYesterday at an event called f8, Facebook launched their new “platform” which enables third party companies to integrate applications right inside of Facebook. Mashable has a pretty good overview of thirty such applications. Everything about the Facebook Platform seems fairly ballsy, but you can’t argue with statistics like these:

  • Facebook is growing 3% per week, which is 100,000 new users per day.
  • 50% of registered users come back to the site every day.
  • Facebook is generating more than 40 billion page views per month. That’s 50 pages per user every day.
  • 6th most trafficked site in the U.S. More page views than eBay. Says they are targeting Google next.

In short, there’s no better place for such a platform to be built than on Facebook.

The last point above, as reported by Michael Arrington, is particularly interesting. I suspect there are millions of people around the world right now who think that Google is the Internet. Increasingly though, you might say the same thing about Facebook. If their user growth continues, and the Platform takes off, Facebook might become the new on-ramp to the web. No need to go anywhere else when all your friends (and family, colleagues, etc) and apps (webmail, shopping, stocks, etc) are in one place.

Not only is the name “Facebook Platform” incredibly obvious, it’s also very astute. Facebook is no longer just a social networking site. It really is becoming a social operating system, as some have called it.

What does this have to do with Microsoft?

Microsoft is a platform company, plain and simple. Think of a Microsoft product – chances are it’ll be a platform product. Windows, Office, SharePoint, .NET, Xbox, etc. Microsoft is pretty good at laying the foundation and helping others build on top (which only serves to make their platform all the more important).

The Facebook Platform sounds very much like something Microsoft would build. To see what I mean, read this sentence:

Facebook is a platform that provides a common abstraction of the infrastructure and guts of a system, allowing third parties to build interesting and useful applications on top.

Now replace Facebook with Windows. Or Office. Or .NET. See what I mean? It still makes sense. Facebook is very much taking a page from the Microsoft playbook with Platform. I think it’s brilliant. And I think Microsoft should have done it a long time ago.

But they didn’t. I think they are moving in the right direction with Windows Live, but it sure is taking a while. Perhaps Colin is right…maybe Microsoft should just buy Facebook. I don’t think it’ll happen though.

At least Microsoft isn’t totally out to lunch on this – they are partnering with Facebook to integrate Popfly.

Yahoo Mail gets better

Post ImageI haven’t used Yahoo! Mail in ages, but two bits of news caught my eye today regarding the service. The first, is that Yahoo! is going to start offering unlimited storage in May:

The unlimited storage will begin rolling out globally in May, and Yahoo expects to have all of its customers covered within a month, except for China and Japan. “We will continue working with these markets on their storage plans,” Kremer said.

Yahoo! is the first of the big players to launch unlimited storage. I can’t imagine Google and Microsoft will be far behind.

The feature is important for further development, as Om Malik reports:

What it shows is that the company is beginning to think of Yahoo Mail as a platform, leveraging cheap storage and a mega audience.

I think the other shoe is going to drop tomorrow when Yahoo in all likelihood is going to announce a Yahoo Mail API, which would open up the service to third party developers.

Really?! An API for a mail service? That would be pretty darn cool, I have to admit.

Read: Yahoo! Mail

Upgrade to Web 2.5

Post ImageI really like the idea of “the Web as a platform”, an idea that has been termed “Web 2.0” and has become pretty widespread. While definitions vary, I rather like this one (from Richard MacManus and Joshua Porter’s “Web 2.0 for Designers“):

This may sound like we’re in the Matrix, but in the words of Amazon.com CEO Jeff Bezos, “Web 2.0… is about making the Internet useful for computers.”

I think in the longrun that by making the Internet useful for computers, we can make it even more useful for humans. At least that should be the goal. Richard MacManus has an excellent collection of descriptions if you want more detail.

There are a ton of so-called “Web 2.0 companies” getting lots of love from the geeks in the crowd for being forward thinking and embracing this new idea of how to create web applications. Not sure which companies I’m talking about? Think Flickr, del.icio.us, 43Things, Google Maps, and A9 just to name a few. All of them offer an API, and so they make themselves a platform. These platforms have spawned some pretty cool services, like HousingMaps, Mappr, Colr Pickr, Cheap Gas, and many others. Very cool stuff.

Web 2.5

The problem with most of the Web 2.0 stuff floating around right now is that it relies on the browser. If Web 2.0 is about relinquishing control, why are all the current examples and mashups trapped inside the web browser? Seems pretty backward for such a forward thinking idea to me. And yes there’s the argument that creating a web page makes the application independent of the platform – it’s not tied to Windows or Mac or Linux. Yet with all this Web 2.0 goodness, I can’t help but wonder where the rich clients are? (There are lots of reasons to want a rich client, which I have written about in the past.) Do we have to settle for a thin client just to take advantage of this new “web as a platform” methodology? If that’s the case, it’s not as great as I thought!

If Web 2.0 is about creating a platform, then Web 2.5 is about creating a platform that can extend beyond the browser. Flickr’s API includes support for SOAP and XML-RPC, so there’s no reason that it couldn’t be used by rich client applications on Windows (for example) without having to use the browser. And what about those services that only offer a REST api or otherwise make it difficult to use outside the browser? Well then they aren’t Web 2.5 ready, are they? 🙂

Web 2.0 has the potential to take the Internet to the next level, and it many ways it already has. And while it’s still very early in the grand scheme of things, I can’t help but wonder if we’re going to get trapped by the thin client. So please, platform developers and mashup makers, upgrade to Web 2.5!