Posts Tagged: Twitter

Text

I’ve had a few ask me, and I was wondering myself, how the recent change in Twitter’s Terms of Use will affect the inclusion of Twitter in incredible!. I found a few blog posts that say some scary things, for instance:

The changes to the terms of service that were introduced today prevent third-party developers from displaying data from alternate services alongside data from Twitter’s APIs. The intention is to block developers from presenting their own trending topics or follower recommendations in Twitter client applications. Sarver hints that more significant changes could come in the future, possibly including limits on what words applications use to describe features.

from Ars Tehcnica

Based on that paragraph alone, it sounds like Twitter content cannot be displayed with other social network data, which is EXACTLY was the entire purpose of incredible! is. It intertwines Twitter content with Facebook, foursquare, etc. This got me nervous, so I dove into the newly updated Twitter Terms of Use for their API. It sounds less scary there.

For instance, in section III.2.C from the API Terms,

If your service displays Updates commingled with Tweets, you must ensure that Tweets reference Twitter as the source.

It sound like that you can have Twitter content (Tweets) mixed in with other updates from another service, as long as the Tweets are clearly labeled as Tweets, which incredible! already does by displaying the Twitter logo next to Tweets.

So, it seems like the core functionality of incredible! won’t be hurt by these changes, however, some features will be scratched, or altered as a result.

For instance, because of section I.5.A:

Your Client must use the Twitter API as the sole source for features that are substantially similar to functionality offered by Twitter. Some examples include trending topics, who to follow, and suggested user lists.

This means that the incredible! feature that makes a list of things your friends are talking about, aggregated from ALL of your social networks cannot exist because it’s basically Trending Topics. If I show any Trending Topics, I can only show ones direct from Twitter, not ones I generate myself based on other content. This sucks — a lot. Not just because you guys will be missing out on an awesome and unique feature, but also because I spent a lot of time developing the algorithm to determine trending topics.

I’m not 100% sure what this means in terms of the duplicate detection that incredible! employs. For instance, incredible! will see that a friend posted the exact same content to Facebook as a status and Twitter as an update. Instead of displaying essentially the same item back-to-back, incredible! merges the two items together and notes that it is from both Facebook and Twitter by displaying both services’ logos next to it.

Based on the terms, it sounds like in this event, I should favor the Twitter display over the others. So, if a user posts the same thing to Facebook and Twitter, when I merge the two as one item, I should display the content as it appears on Twitter, but also note the other service it is on. Assuming Facebook’s terms don’t force it another way.

Anyway, I’m continually researching this, but I’m not as worried as I was earlier this weekend. I’ll keep you all up to date if anything changes. But the short version is:

Major, core functions of incredible! will not be affected by the Terms changing. Some smaller functions may be altered or removed, but overall, incredible! is still on track.

Text

The webOS community is pretty big on Twitter. It seems to be the main source of communication, so I’d like to compile a list of resources for new as well as seasoned webOS users. I’ll break them into categories. If you have more, hit me on @zhephree or reply to this post.

HP/Palm Employees
http://twitter.com/zhephree/hp-palm-employees 

  • @dalmaer
  • @lemketron 
  • @chuq
  • @adora
  • @unwiredben
  • @rahulsood
  • @webOSdev

Developers
http://twitter.com/zhephree/webos-developers 

  • @zhephree
  • @skirkster
  • @jaycanuck
  • @germboy
  • @superinhuman
  • @palmflashcards
  • @nanplayer
  • @killinitllc
  • @webosinternals
  • @sportsliveapps
  • @rmxdave
  • @pre101
  • @roneyii
  • @syntactix
  • @gameloft
  • @hexage
  • @kylepjohnson
  • @ingloriousapps
  • @funkatron
  • @twtomcat
  • @aeidataworks
  • @danielclark
  • @hedami
  • @millertech
  • @dev_suruat
  • @gomlsoftware
  • @dvdmon
  • @rretsiem
  • @sportsliveapps
  • @appstuh
  • @rodtsampson
  • @mobiobie
  • @dzTech
  • @robmerrell
  • @tibfib
  • @astraware
  • @spaz
  • @roviomobile
  • @badkittyapp

News/Info
http://twitter.com/zhephree/webos-news-and-info 

  • @webosroundup
  • @precentral
  • @aboutwebos
  • @everythingpre
  • @palm
  • @hp_news
  • @prethinking
  • @preblog
  • @weboshelp
  • @prenotes
  • @webosworld
  • @dkdsgn
  • @backlon
  • @mahootzki
  • @anotherguy
  • @pamelahazelton
  • @palminfocenter
  • @vara411
  • @webOSquire
  • @thekeithnewman
  • @bshedwick
  • @palmmobspot
  • @HP_PalmPad

Beta Testers
http://twitter.com/zhephree/webos-beta-testers 

  • @benfysh
  • @mechanical_mind
  • @jpartain89
  • @mrkal_el
  • @thomascoe
  • @novacharter
  • @matthias1971
  • @wusaint
  • @Osiris_C3
  • @PapaCl1ck
  • @traviswhayne
  • @gollyzila
  • @errade
  • @jakeMorrison24
  • @ericjdewey
  • @jerseyjesus

As you can see, I need more, so, chime in and let me know! I’ll eventually make some lists on Twitter to make following easier. And if you’re not on the list, don’t get offended! I just ran through my list quickly, and I don’t follow everyone. Just tell me who you are and what you do!

Text

Synergy: it’s possibly the best thing about webOS. I can access multiple phone numbers, e-mail addresses, IM accounts, and Facebook account for a single contact, all in one place. After adding my Facebook account, I can upload pictures and video direct from the OS.

But Synergy can be so much more. For instance, look at Facebook: without a patch, adding your account doesn’t enable Facebook chat through the Messaging app, like AIM and other accounts do. 

And Twitter — there’s really no support for Twitter built into the OS, save for Universal Search.

Here’s my proposal to Palm: have an Accounts app where I can add my Facebook, Twitter, and other social media accounts. Let me send and receive Facebook messages through the Mail app as an account in the app. Let me chat through Facebook chat. Create a Publish app that lets me send pictures and text to Facebook and Twitter separately or cross-post to both. Build this into the OS.

And, allow apps to post through these accounts and get info from a user’s social graph. Similar to how apps ask to use Location Services, an alert that asks the user if, say, Bad Kitty can use your Twitter account. No need to go through the OAuth steps for every app that uses Twitter. Same goes for Facebook.

Now, obviously, this poses a problem for app branding. Facebook and Twitter each allow apps to have links below each post saying “via App Name” and that links to the website of the app, which promotes the app with each Tweet or status update. If every webOS app used the already-linked accounts in webOS, every app would say the same “via webOS” tagline. Not that helpful for developers. However, if I had both my professional account (zhephree) and my personal account (sirgeoph) already linked to webOS, a Twitter app like Bad Kitty could query the list of Twitter accounts and say “Authorize these accounts with Bad Kitty?” and as a suer taps on each account, they walk through the OAuth (or XAuth if webOS stored both the username and password) path to authorize the app to use those accounts, which then gives us the normal “via AppName” bylines.

While that might not save actual time, it does make the process seem easier. If I just had to tap on a few buttons to link an account that’d be way better than typing in my username in each app.

Or, if webOS stored the username and password for each account, an API in the SDK could have a method for connecting via XAuth. An app could initiate Mojo.Social.authorizeTwitter(“zhephree”) and then webOS would handle exchanging the username and password for a token which is then passed back to the application. This way, the app never gets the credentials, but it does get an authorization token so it could perform actions on behalf of the user. This makes things a bit more secure as you only give your phone your credentials and they could be encrypted and each app never sees the actual credentials.

This would require no typing from the user, just tapping a few confirmation dialogs. This would allow even more rapid development on webOS AND help make the OS more Synergistic. 

Just some thoughts.

Text

I got an alpha preview of Twimbow, a new web-based Twitter client. It’s really slick-looking and allows you to color-code tweets based on hashtag, username, or keyword. Great so you don’t skip over a tweet you might actually be interested in.

At home, I have Twimbow setup as a Fluid site-specific browser. This is good because it gives me a dock icon for quick access to the site and it throws it into a different window and process so it’s separate from my regular web browsing and developing. Plus, it makes it feel more like a desktop app than a web app.

Anyway, I found myself switching back to the window every so often to see if I had any new tweets or mentions. It got annoying. So, I wrote a Fluid Greasemonkey script to check for new tweets and then display the count as a badge on the Twimbow dock icon and it also pops up a Growl notification! It was quick and easy!

To use this, download Fluid and install it. Set up a new SSB by launching the app and filling in the details. Make sure you select my PNG file as the Application icon. After you save the new SSB and launch it, from the menubar, click the Script icon and select “Open User Scripts Folder”. Drag and drop the twimbow.notifications.user.js file to this folder. Refresh the Twimbow app (Command+R) and go to the Script icon menu and select “twimbow notifications” and it’ll place a checkbox next to it in the menu. Refresh once more and now you’re done! The script will be loaded automatically every time you launch Twimbow. 

You can download the script below, as well as an application icon I made from their favicon.

Twimbow Fluid Greasemonkey script: Download (Right-click, save as)

Twimbow Fluid application icon: Download

Text

The webOS foursquare app has come a long way since its first release and now more than ever its become a very robust piece of software and has been considered the best foursquare client by many foursquare users.

But I think it could be more. And that’s where you Twitter app developers come in.

You may or may not know that the foursquare service ties pretty tightly into Twitter. One such way is that on each user’s profile, in addition to an email address and phone number, you can see a link to their Facebook and Twitter accounts (if the user provides them). As of right now, tapping the link to a user’s Twitter profile opens up the mobile Twitter site in the web browser. While the mobile Twitter site is pretty nice, most webOS users don’t use it since there are plenty excellent native Twitter apps.

What I’d like is to allow users to select their favorite Twitter client from a list in the foursquare app’s preferences so that when they tap to go to a user’s Twitter profile, it opens the Twitter app directly to the user’s profile.

SO! What I’m asking is for the developers of Twitter apps to develop a basic API for their apps that their AppAssistant’s handleLaunch function will, well, handle. I propose being able to pass {action: “user”, name: “zhephree”} when launching your app and it’ll load that user’s profile.

This will help promote your app and make your users use it more exclusively instead of sometimes using the mobile website (or worse, a different Twitter app they have installed!) Plus, other apps besides foursquare would be able to do this, making your app more visible to other users. I know if I had two favorite Twitter apps but only one of them could be opened by some other favorite app, I’d use that one more.

I’ve already implemented something like this in the foursquare app. As of the upcoming foursquare v1.2, passing {action: “venue”, id: “416655”} will open the foursquare app directly to the venue scene displaying information about the service station my dad and uncle own.

But here’s where you Twitter app devs can help me.

In case you don’t know, when a user checks-in to a venue on foursquare, they can opt to post it to Twitter. It’s displayed like “I’m at Mick’s Irish Pub (4801 Bienville Ave., New Orleans, LA) http://4sq.com/1rNJ8N”.

That link at the end of the tweet goes to the foursquare venue page on the full, desktop foursquare website which is pretty unusable on a mobile phone. But here’s the beauty behind that URL: it’s a bit.ly URL so it can be expanded with the standard bit.ly API. So, here’s what I’m asking: pass all your 4sq.com links through the foursquare app like this:

{action: “url”, url: “http://4sq.com/1rNJ8N”}

My app will then ask bit.ly for the full URL, extract the venue’s ID # from the URL (which looks like http://foursquare.com/venue/16325), and then display the venue detail scene in the foursquare app, which will then allow users to see more info about the venue, call it, post photos to it, or even check-in.

Now, sometimes the @foursquare account will tweet out articles in the press about themselves and shorten them with 4sq.com URLs. The foursquare app will look at the expanded URL and if it is not a foursquare venue URL, it silently passes the URL on to the native web browser and your user has no idea that when they clicked that link, it actually opened in foursquare before the web browser.

So, what if the user doesn’t have foursquare installed? Well, here’s some code to show how to launch foursquare and fail gracefully. Note: I adapted code from James Harris who uses this code in his Free Music Ringtones app to send ringtones into other apps (which foursquare 1.2 now supports also!).

   try{
      this.controller.serviceRequest("palm://com.palm.applicationManager", {
         method: 'launch',
         parameters: {
            id: 'com.foursquare.foursquare',
            params: {action: 'url', url: VARIABLE_CONTAINING_THE_4SQ.COM_URL}
         },
         onSuccess:function(){
            /*
              INSERT ANY CODE YOU WANT EXECUTED UPON SUCCESS OF LAUNCHING FOURSQUARE
            */
         }.bind(this),
         onFailure:function(){
            this.controller.serviceRequest('palm://com.palm.applicationManager', {
                method:'open',
                   parameters:{
                   target: VARIABLE_CONTAINING_THE_4SQ.COM_URL
                        }
             });
         }.bind(this)
      })
   }catch(e){
      /*
       INSERT ANY ERROR HANDLING CODE HERE
     */
   }

It’s fairly straightforward. Basically, it asks the application manager service to launch foursquare with the URL passed to it. If it fails to launch (either because it’s not installed or some other error), onFailure would then open the URL in the standard web browser.

Another option would be to, by default, open ALL links in the standard browser and offer a preference item that lets the user select “Open 4sq.com Links in Foursquare?” and then you only have to handle whether your preference is true or false as opposed to catching a failed app launch.

So, that’s my proposition. If you Twitter app developers decide to implement letting other apps open yours up directly to a user’s profile, PLEASE either comment here or e-mail me (geoff@zhephree.com) and we’ll talk. I’ll need your app’s ID and a 32x32 icon. Also, let me know if you’re interested in opening 4sq.com links in foursquare. I think your users that also use foursquare will greatly appreciate it as it’ll enhance their experience.

I think this is a great way for apps to start sort of cross-promoting each other and greatly enhances the “synergy” idea that’s present throughout webOS.

Update:
BadKitty is on board! Foursquare 1.2 will let you open twitter users in BadKitty! Who’s up next?

Update 2:
TweetMe is also on board! Foursquare 1.2 will let you open twitter users in TweetMe!