Archive for May, 2010
Introducing Chirpy, A Twitter Direct Messages App
Twitbit push notifications are fast. So fast that we find ourselves using direct messages over text messages with our Twitter pals. For those new to Twitter, direct messages are basically private tweets — short messages sent directly to people in your Twitter network. They work great as a substitute for text messages. With direct messages, you can save a couple bucks, benefit from internet ubiquity, and you don’t have to worry about sending messages to friends abroad. In addition to your mobile device, you can access your inbox through the web, email, or wherever else you use Twitter.
Until today, however, the experience has been suboptimal on the iPhone — yes, even with Twitbit. We appreciate the benefits of Twitter packaged into a single app, but with so much functionality in one app, there is no escaping certain usability compromises. It might just be the difference of an extra tap or two, or losing screen real-estate from the tab bar, but even the little things add up. We wanted to build an app to address these shortcomings.
Our newest release, Chirpy, is that app. Chirpy makes direct messages as intuitive, familiar and useful as text messages. With that goal as our focus, we made Chirpy’s interface very similar to the built-in messages app. Messages are organized as threaded conversations, not by inbox and outbox. New messages are composed right in-line, so you can reference the conversation as you type. Check it out:

Another critical aspect of any messenger app is fast notifications. We have a great deal of experience with Twitter notifications from Twitbit, but with Chirpy, we’ve made notifications even faster. We think we’re pretty close to making notifications instantaneous, and due to some exciting additions to Twitter’s API, notifications should only get faster.
Other Chirpy features include integration with your contact list, multiple Twitter accounts, landscape mode, photo attachments and alternative notification sounds. We also invested considerable time in making the app fast and polished.
Chirpy is available now on the iPhone App Store. And it’s only a couple bucks, so it should pay for itself in no time. Check it out and let us know what you think.
The Case for Immutability as a Language Feature
It’s all about the programming language. I believe that’s a pretty unpopular opinion these days. Everyone seems to brag about the power of their framework, development process, tools and development environment. If I had to rank the importance of those items, ‘language’ would top the list. You might imagine, then, that I’m very particular when it comes to programming languages. I prefer statically typed, pure, mixed OO/functional languages. I appreciate the value of inheritance (including multiple), despite the fact that I think most uses are inappropriate substitutions for composition. Generics are a must. I also value uniform access.
There’s one language feature I crave, however, that seems to be entirely dismissed by modern programming languages: immutability. Immutable types are simply types whose instances are unmodifiable. Of course you can create immutable types in many languages, but I’m not familiar with one where you can enforce it and declare a type as such in a public interface.
Immutable types matter because they’re simple, less error-prone, and encourage better designs.
Where’s the appeal in knowing a type’s mutability value? Inheritance. Your class can’t be immutable unless it’s superclass is immutable. And how do you know that if you aren’t granted access to the implementation? You don’t. You guess. Your class’s immutability is conditional on it’s superclass’s immutability. What’s worse, is that your superclass’s immutability might be variable. Because it’s interface doesn’t change, you might incorrectly assume it is backwards compatible with your code.
The problem that comes to mind when I consider treating every class as though it only might be immutable is efficient object creation. If a class is immutable there’s no need to ever create a copy of it. Only one instance is ever needed for a given value. If you know your type is immutable, your copy method is simply a ‘return self’. Or better yet, you don’t implement a copy method.
Admittedly there are some reasons this isn’t so critical. One, memory is cheap these days. Perhaps making unnecessary copies of data is simply something you can usually afford to do. Two, you might assume any overhead in allocating and garbage collecting the redundant data is negligible — probably a safe assumption. Then again, why do what isn’t necessary? And why implement a verbose copy method when it isn’t necessary?
Maybe the feature would add too much complexity to justify it’s value, but it seems like it could fit in pretty elegantly. Add an ‘immutable’ class keyword, which can only be declared on classes whose parents are also immutable. Such a declaration would also limit member variable assignments to the constructor. Child classes can be mutable despite their immutable parents. (This might seem to violate the Liskov Substitution Principle on the surface, but I don’t believe it does.)
What do people think? Is there a flaw in my argument? Is it just not that important? Of course you might prefer a language where this is moot.
Use Twitbit to Automatically Post Flickr Photos to Tumblr
One of my favorite uses of Twitter is as a means for sharing photos. That’s one of the reasons why we’ve included the best photo previews of any Twitter app on the App Store. I also love to post my own photos on Twitter, but I prefer Flickr to host all pictures I keep online. I’m finicky about the software I use, and I dislike all of the dedicated Twitter photo sharing sites like TwitPic and Yfrog. That’s not a knock on them or the people that use and love those service. They just don’t appeal to me personally.
Since the vast majority of Twitter users use those sites, we worked to support those first and well in Twitbit. But soon I was itching to post my pictures directly to Flickr from Twitbit, and one of the great things about building software that you use yourself is that you get to add the features you want. We added Flickr integration into Twitbit 2.0, and it’s one of the features that’s only available in the pro version.
Flickr photo sharing in Twitbit includes an extra feature that some people may not be aware of: automatic tagging of Flickr photos uploaded with Twitbit. Once you’re able to tag photos automatically, the door opens to some fun integration with other web services.
I use Tumblr to host my personal blog. If you haven’t tried Tumblr, I highly recomnend it. It’s free, dead simple, there’s tons of great themes, and you don’t have to get into any of the hassle of hosting your weblog yourself.
One of Tumblr’s great features is its built-in integration with other services. You can configure Tumblr to include content you send to other sites into your Tumblr blog automatically.
Using these two features — automatic tagging of Flickr photos with Twitbit and automatic import of content with Tumblr — you can automatically post all photos you upload from Twitbit to your Tumblr blog.
Let’s set it up.
Say you want to tag all photos uploaded with Twitbit with “toshare”. In Twitbit, tap your account name in the top of the Timeline tab, tap the “Photo & Video” section. Add Flickr as a photo service if you haven’t already by tapping “Add a New Service…” (Remember, Flickr is only available in Twitbit Pro.)
Once Flickr is installed as a service, tap “Flickr” under the list of available services, and in the Settings section tap “Tag Photos & Video”. Twitbit will download the list of tags currently associated with your Flickr account. Tags selected here will automatically be applied to any photos or videos you upload with Twitbit. You can select as many as you would like, or scroll to the bottom of the list and tap “Add a New Tag” to add a tag you haven’t used before.
|
|
Now log into Flickr and navigate to a photo page that includes the “toshare” tag. Click the “toshare” tag link on the right (or whatever tag you’ve chosen), which will take you to a page of all your photos that include that tag. In your browser’s address bar, on the far right, will be an RSS icon. In Safari, click that RSS icon, and choose the RSS feed (the Atom feed probably works, too, but I haven’t tried it so I don’t know for sure). Your browser may be slightly different but the workflow should be roughly the same. Copy the URL of the RSS feed to your clipboard.
|
|
Finally, navigate to your Tumblr dashboard and click the “Customize” link for your blog. Click the Services button at the top. Where it says “Automatically import my…”, select “RSS Feed” and “Photos” as the content type. Finally, paste the URL in the text field where it says “Field URL”.
That’s it! You’ll see this automatic import listed at the bottom of the Services list. Tumblr will start to check this RSS feed periodically. Anything you post from Twitbit will be automatically tagged on your Flickr site and posted to your Tumblr blog!
Enjoy!





