Filed under programming

Trowl 0.6.2–Still Alive!

All right, so it has been a while since the last update to Trowl.  For that, I apologize.  I needed a break from the development a bit, and the summer was happy to oblige.  I’ve been busy with various things, including a bit of experimentation with WPF. (The fruits of those experiments will be available shortly. But, if you follow me, you probably have a clue as to what they might be already.)

But fear not, I am still working on Trowl.  After all, I use it as my primary Twitter client, so I like to see it improved as much as anyone else.  There are some longer term, more ambitious things I’d like to do with Trowl – the top of this list being a switch over to User Streams.  While these are things I have set my sights upon, they are not in this update.

Instead, I’ve been focusing on usability stuff – things that have been suggested by users, and things I’ve noticed myself that I’ve wanted fixed.

So, with that introduction, let me detail the changes planned for this next update.

User name suggestions
When writing a tweet, you sometimes want to mention another user.  Up until now, you’ve had to know their name offhand (or have had to look it up elsewhere) in order to use it in Trowl.  But now, when you type “@”, you will get a pop-up list of users which will narrow down as you type.  Right now this list contains all the people you follow, as well as anyone you reply to.

Tweets & Search Results are Decoupled
You may or may not have noticed that, although “New Tweet” and “New Search Result” are two separate types of notifications in Growl, they are displayed together as part of the same stream of tweets.  This was good in that it kept everything together, but it was mostly bad because it reduced the flexibility you had in customizing displays and display preferences.

In 0.6.2 they are completely separate entities.  You can configure how many tweets appear on screen  at once separately from how many search results appear on screen at once.  You can browse all of your tweets before moving on to the search results.  And so on.

Higher Resolution Profile Images
By default, Twitter provides a profile image that is 48×48.  For Growl, this is usually sufficient. Most displays are small and don’t show anything higher res than that.  But some displays, as well as forwarded devices (like the iPhone or Windows Phone) are capable of showing larger images if they are provided.  So, Trowl now uses 73×73 pixel images – the “bigger” size, according to Twitter.  I’d like to bump this up to something larger, but that involves a little more testing.  But hopefully these slightly larger profile images will suffice for the time being.

.NET 4 Exclusive! – Location Support
What’s that?  .NET 4?  Yes!  There will actually be two versions of 0.6.2 – one for the usual .NET 3.5, and one for .NET 4.  If you are willing to take the jump (or already have), you will get a feature that is made possible by some of the new capabilities of the platform.  In this case – location.  It will require your computer to be equipped with a GPS device, or some other location-aware service, such as Geosense.  If Trowl detects this, you will get the ability to include your current location from the New Tweet screen – make sure you have enabled location for your Twitter account!

Various other bug fixes/code changes
The usual.

 

I think that’s it.  A preview version will be available for testing soon, so I’ll update this post when it’s up.  Thanks for using Trowl! And as usual, feel free to ask questions or suggest features on the Google Group.

Update: The preview versions are now available!

Tagged , , ,

Trowl 0.6 Preview

It has been a while, hasn’t it?

Even so, I’ve been working on Trowl, and I’m happy to make available the preview for Trowl 0.6.  So why 0.6 when the last version was 0.5.4?  Well, first of all: we’re talking about 0.0.6 of a version – does it really matter? ;)  But more technically, I’ve made a lot of changes, both to the code behind the scenes and to what you see in the behavior and UI of the app.  While a lot of the changes aren’t particularly groundbreaking, taken together I think they offer a substantial improvement to 0.5.4.

Plus there is a .NET Framework 4 version – but that’s coming later, so I won’t delve into that right now.

Before I give you the download link, I wanted to go over a few of the larger changes so you know what you’re getting into.

Backend Code
I mentioned that I made changes to the code that aren’t immediately obvious on the surface.  This includes changes with the Twitter API: some of the calls are updated, and I further refined how Trowl checks your rate limit.  There have also been changes to how Trowl parses the results it gets back from Twitter.  Finally, I’ve made some modifications to how notifications are sent and received from Growl.  Observant users will notice that I added the word “try” to the “show X number of notifications on screen at once” setting.  I’ve made this a bit more flexible to handle occasional lost notifications or other oddities.  So if you sometimes see more or less than your desired number of notifications, don’t freak out. :)

Different Growls for Different Accounts
A new advanced notification setting will force Trowl to register a separate “New Tweet” notification type for each of your Twitter accounts.  What does this mean?  Well right now, if you open Growl and look at Trowl’s notifications, you will see just one “New Tweet” notification type.  If you switch this setting on, however, it will create a “New Tweet” notification type for each of your Twitter accounts.  What’s the point?  By doing this, you can configure each account separately.  Want one account to forward to iPhone, and another not?  Want one account’s notifications to be sticky, but another to close automatically?  Now you have the power.

New Tweet
You can now use the hotkey CTRL-SHIFT-T to open the New Tweet window from anywhere. (Update: You can now toggle the hotkey option, as well as what the hotkey is.)  Also, some minor layout changes were made to this screen.  Finally, I added a button to let you switch between reply and retweet.  Why?  Well, have you ever accidentally hit “reply” instead of “retweet” or vice versa?  Or did you hit “retweet”, only to realize you’d rather do an “old style” retweet?  Now you can quickly switch between the two types right from the New Tweet screen.

Refined Catch-Up Tweets
For a while now, Trowl has offered the ability to show the tweets you “missed” while it was closed.  Using a special “while you were gone” notification type, it would show all the tweets you would have normally seen if you hadn’t quit Trowl.  You can now toggle this option to show all tweets, or just replies and mentions.  (Of course, if you already have the account set up to only growl replies and mentions, this toggle will make no difference.)

Refined Silence Mode
In previous versions, “Silence” mode would simply cause Trowl to stop checking for new tweets. When you turned Silence off, it would show all the tweets you missed while it was silent.  Now the default action is to not display any missed tweets.  If you still want it to do this, “show missed tweets” has an option to include Silence mode.

Auto-Silence
Related to the previous section, Trowl can now detect when your computer goes to sleep.  When it does so, you can have Trowl automatically go into Silence mode.  When it comes out of sleep, it will turn off Silence, and then show what tweets you missed, if you configured it to do so.

Settings Backup
A new button was added to make a backup of your settings.  It puts a file in a location that can be seen by all Trowl versions.  If for some reason Trowl loses track of your settings (usually after a version upgrade) it will look for a backup and restore from it.  You can also use the backup file to easily transfer settings to another computer, or do a manual reset if something bad happens.

… and more.  There have been lots of other minor changes and tweaks too.  This is actually a slightly more rough “preview” version than in the past.  So don’t be surprised if you find any bugs – just let me know in the comments here, or at the Google Group, and I’ll update this post with any bug fix versions as necessary.

So if you get a chance, please download and try out the preview version.  I look forward to any feedback you may have. Thanks!

Trowl 0.6 Preview

Tagged , ,

New Display: Metro

I’m going to try and keep this short and sweet so I can get this posted :)

A few weeks ago, it occurred to me that the typography-heavy Metro would work well as a Growl display.  Specifically, the Windows Phone 7 home screen had some potential to be an interesting layout.

I knew that I wanted the application name to be a large font and slightly “off screen”, like when you drill down into a section on the Zune.  The rest of the design was a bit harder to nail down though.  I played with a lot of different prototypes, including one that was almost a direct rip of the Windows Phone 7 home screen – blue boxes and all.  In the end, though, it was too much for something that was supposed to provide subtle notifications.

So I compromised and went greyscale.  I tried to retain the “blocks of information” style of Windows Phone 7, but not go too overboard with it.  At this point, I was still considering this display to be just a general-purpose display.  But as I thought about it, I realized the “blocks of information” concept would be wasted if it didn’t do more.  So I decided to extend it to have the same Twitter/Trowl functionality as my other, Twitter-based display.

A few weeks later, and lots of tweaking and fine tuning later, the first pre-release of the Metro-inspired display is ready.

Metro A couple of things to note:

You need the Segoe UI font for this to render properly. You might be able to use this display without that font, but I’m not sure how it would look.

Like TwitterDisplay, the Twitter features show up in Trowl, or any other app that decides to use the same sort of hooks.

This display has all the same features as the current version of TwitterDisplay.  In addition, it also lets you choose the corner of the screen you’d like the display to appear at.

This is a pre-release and may have bugs.  Feel free to contact me if you do have any troubles with it.  There are a few more things I want to add to this display before making it final.  But it’s in a final enough state now to offer it as a preview for those interested.

… And I think that’s it!  If you’d like to try it out, you can click here to install it automagically into Growl.  If you prefer the hard way, here is a direct link to the archive.  Extract it to a folder called “Metro” in your user folder where Growl’s settings and displays live (AppData/Local/Growl/2.0.0.0/Displays on my machine).

Enjoy!

Tagged , ,

UrlShorteningTextBox

This is something I’ve been meaning to post for a while, but it kept slipping my mind. In Trowl, one of the features is that the “New Tweet” box will automatically shorten any URLs you copy and paste into it. It’s kind of a limited use case — I’m not sure how many apps out there need this ability — but I thought I’d post the code for anyone who might find it useful.

It also demonstrates a few things, like how to capture the “paste” event in .NET, how to create your own events and how to inherit from .NET’s base controls. So even if you don’t use the URL-shortening capability itself, perhaps it can be used for those things.

The code is relatively straightforward, so I’m not going to go through it line-by-line. But I’d be happy to answer any questions — just leave a comment! And, of course, I’m open to any suggestions :)

Enjoy!

UrlShorteningTextBox.cs

Tagged , ,

Trowl 0.5.4

With my little vacation next week, I’m probably not going to be able to get a preview version of Trowl out before leaving.  So I thought I’d do a little tour of some of the things to expect in the new version.

Continue reading

Tagged ,

Trowl 0.5.1 Preview

Phew. When I was looking at features to add in upcoming versions of Trowl, two things jumped to the top of the list right away. The first was oAuth. I didn’t know much about the technology but knew it was relatively complex, so I figured it might take a little while to implement. The second thing was multiple account support, as it had been requested by several users. This seemed like a relatively simple change — just check multiple accounts for new tweets instead of one.

Turns out I was wrong on both assumptions. oAuth was really easy to implement except for one bug that I eventually hammered out. And multiple account support had a ripple effect that caused changes to occur just about everywhere in Trowl.

But here we are. Testing for 0.5.1 has begun, and for the most part, I’m pleased with the result. As I said, adding multiple account support affected multiple parts of the app, so here is an overvitrowl_login_051ew of some of the changes:

1. Login screen. I had the option of just showing a text list of authorized account names, but I decided to kick it up a notch and show account pictures. It downloads the picture (or re-downloads it, if necessary) each time you log in. So the icon you see at first may be the default "no picture" Twitter icon, or it may not be your most recent. But after a successful login, it should update.

You can also view your settings and manage your accounts from the login screen now as well.

  

newtweet_051

2. New Tweet. With multiple accounts, you can choose which account to send your tweet from. If you are replying, retweeting or DMing someone in response to a tweet, the account will be "locked" to the account the original tweet was received on.

There is now also an option to enable or disable the automatic URL shortening.

3. Settings. This is where the biggest changes are, and most notably on the first tab. A lot of people, including myself, liked the simplicity of the first tab, so I tried to keep that simplicity intact as much as possible. Essentially this is the same screen that you know from previous versions, but repeated settings_051for each account that you’ve authorized for Trowl. If you only use one account, the screen is practically the same — just a little wider so that you can see your pretty avatar looking back at you. :)

A couple of notable changes: "DM Communication" and "Growl missed tweets" options are per-account, so have been moved to the first tab. Likewise, the interval for checking accounts is NOT per account, so has been moved to the second tab. If there is demand to have the interval per-account, then I will work on doing this. Unfortunately it is not a trivial change, so it will take a little bit to implement that.

And of course, you can add new accounts and remove existing accounts on the first tab. You cannot remove the last account on the list. If you need to re-authorize an account for some reason, just go through the Add Account process again. When Trowl verifies it, it will see it is the same as an existing account, and just update it with the new authorization.

4. Growls. This is an example of something that I didn’t think would change — but as I thought about it more, I realized it might have to. With multiple accounts, I figured some people will need to know what account a tweet was received on. I posted a message on the Google Group for feedback on this (thank you for all the responses!) and came up with two solutions.

tweet_header_051 The first is to append the account information next to the tweet’s author. For example, if you receive my tweet on your account, it will say something like "mageuzi «YourAccount»". There is a setting to turn this on and off in the settings.

tweet_avatars_051 The second is more subtle, and I think more useful. It will put the account’s avatar in the upper left of the tweet’s author’s avatar. If you recall how Twitter shows reply avatars, you’ll get the idea. You can enable this setting in the settings too. There is a slight overhead using this, since Trowl has to process the avatar pictures, but it shouldn’t negatively affect anything.

I also made it so that if you have more than one account, it will show the account the tweet came from after the timestamp. (e.g. "one hour ago on mageuzi") Timestamps only show up on displays that support it.

Okay, I think that’s it. Questions, comments, suggestions and of course bug reports are all welcome. Anything non-critical that requires a major change will have to be put off until a later update. But I will try to accommodate anything else before I release 0.5.1 for public consumption.

Thanks for testing!

Download Trowl 0.5.1 Preview

Tagged

Trowl 0.5 Released!

I don’t normally make blog posts for new releases of Trowl, but I’m making an exception this time.

First of all, I want to thank everyone who has used and contributed to Trowl. This is by no means a large project, but I’m still surprised by how many others like it, and use the program on a daily basis. I’m really happy that something I find useful is also useful to others! I’m incredibly appreciative of all the feedback I’ve received, especially to those of you who have helped me track down and fix bugs in the past. Trowl would not be where it is now without your support!

Second, I want to announce version 0.5. This version does not add much. As the changelog says:
* Adds support for oAuth. Trowl no longer accepts username and password for logging into Twitter. oAuth is the preferred, secure way of authenticating your account, and I’ve tried to make it as painless as possible. Any feedback is welcome!
* Twitter is changing the API for retrieving the list of friends at the end of October, so I’ve implemented that change now. Let me know if you have any problems seeing your friends list on the Settings screen.

Switching to oAuth is a relatively big change in the code, but luckily I’ve known that I wanted to do this for a while, so I was able to prepare for most of the impact in the 0.4.x versions.

While you shouldn’t see any difference in how Trowl works once you’ve authenticated your account, it will allow me to get to work quickly on the first new feature after 0.5: multiple accounts! I know several of you have asked for this, so it is now my top priority.

Thank you for your patience, and thank you again for continuing to use Trowl. :o) Remember that you can suggest new features or report bugs at any time at the Google Group.

Tagged ,

New Feature in Trowl 0.4.3

The next version of Trowl is going to have a little feature that I’ve wanted in there since I first created the app.  I tend to use the program more for forwarding tweets to my iPhone, but there is one problem with this: you have no control.  If you want to temporarily stop push notifications, well… too bad. Your only option is to turn off your phone, and that doesn’t seem like a viable solution.

So 0.4.3 has a little feature called "DM Communication".  When you enable it, Trowl starts to monitor your DMs, whether you’ve told it to check for DMs or not.  It then looks for DMs you’ve sent to yourself in a certain format.  If it finds one, it takes the necessary action, and then removes the DM from your timeline so you don’t get a timeline polluted with messages to yourself (as amusing as that is).

trowl_cm_communication

Currently, there is only one command: @trowl silence [on|off]  As you can probably guess, sending the "on" command will silence Trowl until you send the "off" command.  As soon as you turn it off, it will pick up where it left off, and forward any tweets you may have missed.

And that’s it.  All you have to do is send a DM to yourself that says "@trowl silence on" and you won’t get any more push notifications until you send the equivalent ‘off’ command.  I currently don’t have any plans for adding other commands, but the foundation is now there for it — so if you’d like to see something added, let me know!

As for other features — 0.4.3 fixes a couple of bugs and streamlines the code, mostly in preparation for OAuth.  Which leads me to 0.5.0.

If all goes as planned, this will be the last version that uses basic auth.  My plan is for the next version to start using OAuth.  All this means is that you won’t have to use your username and password to access Twitter through Trowl.  But I’ll give more details on that later.

0.4.3 is out now.

Tagged

Trowl v0.2 released!

I’ve been working on refining some of the details of my original release of Trowl, and after testing it over an entire weekend of Otakon, I feel confident in releasing version 0.2 today.

This release adds most of what I outlined in my last post, as well as fixing some bugs and adding better error detection.  Specifically, I added a new type of Growl for errors.  If I get an error response from Twitter, or the app isn’t even able to make a connection to twitter.com, then you will get a Growl with the exact error.  In a future release I will try to clean this up to be a bit more user friendly.  (For example, it’s not really obvious that “Bad Gateway” is Twitter’s error for server being overloaded.)

As for actual features you can use, well: a picture is probably worth a thousand words:

These are new settings you can toggle.  Two of them I outlined when version 0.1 was released: the ability to get growls of all @replies and all DMs.  These are set to be enabled by default.

As I was using Trowl with Prowl, I realized that I didn’t really need to get push notifications of my friend’s replies to other friends.  Sometimes it was something I was interested in right away – most times it wasn’t, and I was fine waiting until later to catch up on those details.  So, I added the “Do not growl tweets that are @replies to others” for that purpose.  If you’re not using Prowl, this setting probably isn’t as important, and is not enabled by default.

There is still some cleaning up I want to do, and other feature ideas I might implement.  I’m sure there are more bugs to find as well.  In the meantime, though, feel free to download and please send your feedback.  I’m @mageuzi on twitter.

Trowl 0.2
.NET Framework 3.5 required.
Unzip to a new folder (or replace version 0.1) and run trowl.exe – that’s it!
See my original Trowl annoucement for the rest of the nitty-gritty.

Tagged ,

Announcing Trowl v0.1!

This may be the fastest an app idea of mine has gone from concept to reality.

What is Trowl?
Essentially, it is an app that outputs tweets to Growl for Windows.

Why? What does this buy me?
Honestly? If all you’re using this for is the Growl output, not much. It looks nice, and integrates with a service you may already be using, but that’s it. This version doesn’t even let you send a new tweet!

Then what’s the point?
Recently, Prowl was released on the iPhone App Store. Prowl links up with Growl on your PC so that when you get a notification, it gets pushed to your iPhone via the new Push Notification feature. In other words: you will get push notification of new tweets.

Awesome! But aren’t there already other Twitter clients that use Growl?
Yes. But:
a) Twitter clients that use Growl for Windows are limited — and buggy. If I’m going to use a full Twitter client, I’d like it to be fully functional. Alternatively I could wait until a more mature Twitter client implements GfW support, but I’m inpatient. And even then, it may not have the capabilities I’m looking for, which leads me to…
b) Most of the time, Growl support comes in the form of “friends timeline, @replies or DMs”. I don’t know about you, but if I got ALL my tweets Growled and pushed to my iPhone, my phone would never stop buzzing — which kind of defeats the purpose of push notifications. I only want to get notifications of tweets from my close friends — the people where it may be in my best interest to see their tweet(s) asap.

Sounds good. So what’s in Trowl?
This early version is a simple, proof-of-concept release that only serves to demonstrate the idea and get basic functionality working. This means:
* You can log in with your Twitter credentials, optionally saving your username & password for quick login in the future.
* System tray icon to access Settings and Exit the app.
* Ability to choose which users should have their tweets Growled.
* Ability to specify how often Trowl should check for new tweets from your chosen users.
And that’s it. I’m already working on these features:
* Setting to forward ALL @replies, regardless of who they’re from.
* Support for forwarding DMs.
* Ability to send a tweet from Trowl.
I’m open to suggestions for other features, but my goal is to keep this as lightweight as possible. Its purpose is to growl tweets, with the intent of having those growls push to your iPhone. If you want more than that, you will be better served by any of the other excellent Twitter clients out there.

Why did you name it Trowl?
Twitter + Growl = Trowl
Also, a trowel is a tool used to evenly spread mortar between bricks. You can think of Trowl as the tool that helps cement Twitter, Growl and Prowl. Yeah, I know, I’m the height of cheesery.

Does it cost anything?
Nope. However, Prowl costs $2.99 on the App Store. For me, this was a no brainer purchase, but it’s something to keep in mind.

Anything else I should know?
This app is useless without Growl for Windows, and will inform you of such if it has trouble communicating with Growl for Windows. (Although, it’s excellent at draining your Twitter API allowance, if you’re looking for that.)
This is an early version with limited error checking and an extra helping of bugs. Please let me know if you find any problems.
It is written in C#.NET and requires the .NET Framework 3.5. If you have Windows Vista or Windows 7, chances are you already have this. If not, please take a trip to your friendly neighborhood Windows Update.

I need Growl for Windows. Where can I get it? How do I set up Prowl to work with it?
Please visit growlforwindows.com. You will find both answers there.

Let me at it!
Thanks for your interest. Here is the download. Just extract the ZIP to an empty folder, and run trowl.exe. After logging in, you will see the Settings screen to configure your initial friends and update interval. Remember: any problems, please contact me. (I’m @mageuzi on Twitter.) And, if you like it, spread the word! Thanks!

[update] I just want to thank Wallace B. McClure for his C# Twitter example to get me off on the right foot, as well as DotNetThis for his simple string encryption example. I’m also adding a few screenshots after the break.
Continue reading

Tagged ,