A Quick Review of Syrinx – A Native OS X Twitter Client

I recently moved to a new machine (a hand-me-down G5 20″ iMac), and when it came to installing my new apps I decided I’d had enough of Adobe AIR and the whole idea of web apps pretending (poorly) to be native apps. I like OS X, and I want the full power of OS X in my apps. I also like how OS X apps all look and work similarly to each other. You just don’t get that with AIR apps like Twhirl (which had been my Twitter client up to that point). Not long before I got my new Mac listener Scott had contributed a short review of Syrinx to the NosillaCast, so I decided to give it a go.

I took and instant liking to the app because it’s a proper OS X app, because it uses the OS X keychain to securely save my password, and because it has Growl support. The fact that it’s free also helps of course! I’ve been using it for a month or so at this stage, and I’m still happy enough with it to keep it as my current client on all three of my Macs. It’s also under very active development at the moment with updates coming out regularly, so I have high hopes for this app’s future.

However, it’s not all a bed of roses. It still has the feel of a young app which still has quite a few rough edges that need smoothing. The default interface setup is very space-hungry, and I immediately customised the toolbar at the top to use small icons without labels (customisable toolbars are something I love about OS X native apps). This makes it a lot neater, but it’s still far from perfect.

On most twitter apps you just have to hover over a post to get the option to reply or retweet or what ever, that’s not the case with Syrinx, here you have to click to get those options. When you do get the options up there are also some glaring omissions. Chief among them is the lack of a re-Tweet button, you can re-tweet, but that functionality is hidden away in a menu. Likewise, on your own tweets there is no option to delete a tweet you post by accident. Again, the app supports thus functionality, but you have to go hunting for it in a menu.

Like most twitter apps Sytinx gives you three views of Twitter, it lets you see your twitter stream in it’s entirety, i.e. all your posts, all the posts from the people who follow you, and all posts people @-reply to you. Then you have a view called “mentions” which is just all the @-replies you’ve gotten, and finally there is a view for just your direct messages. What is notably absent is the ability to view another user’s stream. For this, Syrinx fires up your browser. This REALLY annoys me. For me, the whole POINT of a desktop Twitter client is to keep Twitter separate from the giant mess of tabs in my browser! If I wanted to view Tweets in my browser I’d just use the web version!

On a related note, I have real issues with the interface of the ‘Direct Messages’ view. Rather confusingly, the icon used to represent “@-reply” is the universal reply icon. This is fine in the mentions page where the concept of a reply IS an @-reply. However, in the DM section, that breaks down totally. When I think “reply” in the direct messages view I think “DM”, NOT @-reply. However, the universal reply icon does NOT send a DM, instead it sends an @-reply. In other words, replying to a PRIVATE direct message results in a PUBLIC response. This is a recipe for embarrassment and trouble! Either the icon needs to change, or the functionality needs to change, but it can’t stay this confusing! Also, since there is no easy delete icon fixing your mess before anyone sees is not as easy as it should be either. I can’t over-state how much this counter-intuitive behaviour annoys me – PLEASE fix this Syrinx!

My second biggest grip is related to Twitter’s Achilles heal – URLs, or more precisely, shortened URLs. There is no way around this fact, URL shorteners are a security hazard, but you can’t avoid them on Twitter because the modern fashion for long long URLs makes it impossible to post many links in 140 characters, even if you don’t add a single word of commentary or explanation to the link! The only safe solution is that Twitter clients need to become URL-shortening-service aware, and de-code the links back to their full form before displaying them in tweets. This way Tweets can remain below the 140 character limit while they are in transit, but users get to see what they’re clicking on before they click on it. It is my opinion that any serious Twitter client needs support for short URL decoding – Syrinx is missing this functionality at the moment. For now, I’m giving them a pass on this because they are new and under active development. However, if too many more months go by without this important security feature being added, I’ll be in the market for a new client again.

On a very much related note, clients need support for URL shortening services built into the interface for writing Tweets. Syrinx does have limited support here, but it’s FAR from perfect. Again, there is no simple icon for it like you get in Twhirl, you also don’t get a choice of service, and MUCH worse, Syrinx automatically shortens URLs when you don’t ask it to! I try to minimise my user of shortened URLs for security reasons. My blog uses short URLs, so when I post links to entries on my blog there is no need for any URL shortening. I intentionally don’t shorten, but then Syrinx goes and does it behind my back and using a service I don’t even get to choose. I’ve looked for settings to control this behaviour but couldn’t find any. This control had also better show up in a version soon if Syrinx is to remain my desktop Twitter client of choice.

Finally, before I end on a positive note, I have one more niggle. It’s not an out-right problem with Syrinx as-such, just something that worries me. Like many many other clients, Syrinx died on the Twitpocalypse. It was quickly patched, so it didn’t cause much of an outage. However, this worries me. Falling victim to the Twitpocalypse is evidence of programmers not being careful about data. When programmers aren’t careful about data nasty security flaws result. If they didn’t think carefully about the datatype to use within the code to represent the ID of a Tweet, did they think any more carefully about data integrity checking and data bounds checking in function calls? I have no idea whether or not the code in Syrinx is secure or not in real life, but the fact that it fell prey to the Twitpocalypse worries me none-the-less. It strikes me as a bad sign.

OK, so, to end I want to point out the two things I like most about Syrinx.

Firstly, it have fanastic Growl support, allowing for distinctions between how it deals with different ‘types’ of Tweet. I use the default setting which gives Growl notification for all Tweets, but Tweets that mention you and DMs get special treatment. Normal tweets only stay up for a few seconds, then automatically vanish, notifications for Tweets that mention you or DMs stay up until you dismiss them. This means you never miss the most important Tweets.

I also like their model for representing read and un-read tweets. Some apps store a status with each Tweet. This can be very time-consuming. In Twhirl for example you have to click on each Tweet to mark it as read. Syrinx uses a much better model, that of a traditional bookmark. You know, that old scrap of paper you put in a book to remember your place. Syrinx remembers just one thing, where you left off. You can move the bookmark by clicking the bookmark icon on a particular Tweet, which has the effect of marking every older tweet as read, or you can use a button in the menu that moves the bookmark to the very latest Tweet, effectively marking everything as read.

In summary, I have very high hopes for Syrinx. Even now I find it good enough to use, but there is still some work to be done to turn it into a truly great client.