Filed under computers

Trowl 0.8, Or How I Learned to Stop Worrying and Love API 1.1

Overdone jokes aside, I realized that I use Trowl too much, and I invested too much time in the app, to just toss it aside when Twitter decided to finally turn off version 1 of its API. That said, it’s not a trivial process.

Technical Details

If you’re interested, Trowl was originally built on requesting XML responses from Twitter. This was primarily because, at the time, .NET was best suited for parsing XML documents more than anything else. With the switch to API 1.1, Twitter completely dropped the ability to request XML responses, in favor of JSON. Luckily, .NET has become more fluent with JSON recently – but it still meant going back through all my calls to Twitter and replacing the XML-based response/parse logic with JSON-based response/parse logic.

The Status of 0.8

Okay, so, I’m making this version 0.8 because I’m essentially changing the entire foundation that Trowl is based on. There aren’t any new features here, but it’s a big enough infrastructure change that I felt justified in bumping up the version to 0.8.

I’ve converted almost everything over to API 1.1 except the following:

  • Controlling Trowl through DMs (which I don’t think anyone uses anyway)
  • Spam reporting
  • Additional caching in light of API 1.1’s stricter rate limiting

Everything else should work, but I’m releasing a development version first so people can try it out and let me know what bugs they find.

Trowl 0.8 Download

UPDATE 6/17/2013+ Another quick update that fixes some issues with retrieving friends (darn those stricter rate limits!). Authorizing a new account should be fixed now too.

UPDATE 6/17/2013 All functions should be switched over to API 1.1 now, but please send me any bugs or issues you find. Thanks!

Thank you for sticking by Trowl during the API shutdown!

Tagged , ,

Microsoft Surface

I just watched Microsoft’s first commercial for their Surface tablet. It sucks. I get it: you’re so very proud of that “perfect click” sound you engineered – but that’s not what you center a commercial around.

This is the Microsoft Surface commercial that I would make.

Opening shot shows an iPad on its home screen. “This is an iPad,” starts the voiceover. “All your apps are laid out, ready to launch.” The camera zooms in on one of the icons, “You tap here to see your appointments for today.” Switch to another icon. “Tap here to get updates from your friends.” Switch to another icon. “And you can tap here to see the weather – because it’s not actually 73 degrees and sunny.”

Camera switches to another tablet. This time it’s Surface. “This is the new Microsoft Surface,” says the voiceover. “All your apps are laid out, ready to launch.” The camera zooms in, showing all the information right on screen that would have required tapping and hunting on the iPad.

“But you don’t need to. Looks like I’ll need an umbrella for the football game today.”

End.

Sure, Apple’s new iPod commercial is just as useless as the Surface commercial. But they can get away with that because everyone knows how an iPod works. The Surface is still an unknown to most people. I hope Microsoft gets more serious about their marketing as time goes on.

Tagged , ,

Trowl 0.7.3 (Tweet Marker Support)

I’m making a development version of 0.7.3 available for anyone who would like to help me test it before it’s released to everyone. This version has better stream error recovery handling, and makes a couple of other minor under-the-hood changes. The most noticeable change, though, is Tweet Marker support.

What is Tweet Marker?
For those who aren’t yet familiar with the service, Tweet Marker syncs your Twitter timeline across applications by recording the last tweet you read. Applications that support Tweet Marker can quickly jump straight to the spot in your timeline where you left off.

How does that work for Trowl?
Since Trowl doesn’t show you a traditional Twitter timeline (at the moment…), it uses this information a little differently.

Saving your last read tweet: in Trowl, a tweet is considered “read” when its notification is dismissed. Every 15 seconds, it will send the tweet that was last dismissed to Tweet Marker.

Retrieving your last read tweet: every 5 minutes, Trowl will pull the latest Tweet Marker from the server. It can’t remove any tweet notifications already on screen, but it won’t send new notifications for tweets you’ve already seen. Instead, it will pick up with the first new tweet. Depending on your settings, this will also happen when you uncheck the Silence option.

How do you enable Tweet Marker?
Tweet Marker has been added as one of the “missed tweets” options:

Tweet Marker

This option covers both tweets and mentions.

I’ve also updated Metro Display slightly. In addition to the coalescing support that I added a little while back, I also changed it so that the Twitter timestamp dynamically updates – this should have been added a long time ago, so I apologize for the wait. I also fixed a nasty memory leak bug.

You can try both of the new toys here:

Trowl 0.7.3 Development
Metro Display 1.5 Development

Please send any bug reports my way – you can comment here, send me a tweet, or post to the Google Group. Have fun. :)

Tagged , , ,

Windows 8: First Impressions

Windows 8

I’m still playing with the Windows 8 beta – er, sorry, “Consumer Preview” — and exploring its details. However, first impressions are important, and I think I have a few key observations to make.

Last year, I downloaded the developer preview when it became available. I didn’t spend too much time with it, because it was obvious how early of a build it was. Still, the Metro interface was promising, and the few apps that were available showed great promise.

One big complaint about the developer preview, though, was how much it relied on touch. You could use a mouse and a keyboard, sure, but they were second-class citizens. On the one hand, this was good: Microsoft desperately needed a good touch interface, and there was nothing better than Metro. But on the other hand, it was awkward to use on a traditional computer. Considering that this was the next version of Windows, that was a major problem.

Since then, Microsoft has attempted to soothe everyone’s fears with a consistent message – a message that was reiterated by Steven Sinofsky at the Consumer Preview launch event:

Sinofsky’s concern, however, is ensuring developers are on the same page, designing Metro apps that work just as well on touchscreens as they do with a mouse.

"The goal should be that the operating system scales with you," added Sinofsky.

"That’s what we mean by a no-compromise experience."

For the Consumer Preview, they took many steps to help make the Metro interface more intuitive for the keyboard and mouse, so that there were no compromises. But were they successful?

Continue reading

Tagged , ,

Restoring a Time Machine Backup That’s Stored on a Windows Home Server

I think that may be the longest title I’ve ever had on my blog. Anyway…

Last week, my Macbook Pro hard drive suddenly died after about two years of dedicated service. While it’s a bit surprising, I did push the little guy pretty hard – I regularly run OS X alongside Windows 7 on VMWare, and I keep both platforms busy. Considering the VM is actually running off the Boot Camp partition, it’s a lot of work for the drive. But I digress.

I’ve been running Time Machine for a while, so I was hoping that I could restore its most recent backup onto my replacement hard drive. There was just one snag, and I knew this would be an issue: my Time Machine backups are stored on my Windows Home Server. As you can imagine, doing this is a bit of a hack (here are some instructions if you don’t know how to do this yet). And as I’m sure you can also imagine, doing a hack like this makes a “normal” Time Machine restore impossible.

What I mean by “normal” is that if you boot off the OS X installation disk, you can choose to restore a Time Machine backup instead of installing a brand new copy of the operating system. When you choose this option, it scans for a Time Machine backup – but only the locations it supports, like external hard drives or Time Capsules.

Now, sure, you could probably copy the Time Machine backup on your WHS to an external drive, since the backup on the WHS is essentially just a disk image. But I didn’t have an external drive large enough to spare – and besides, there must be a better way.

Perhaps my Googling was sub-par at the time (I was in the middle of restoring my laptop, after all), but it took a while to find the answer. You can’t do a normal Time Machine restore, but you can use the Migration Assistant:

  1. Install a brand spanking new copy of OS X. Make a throw-away account when you’re prompted to create your first account. I named mine “Admin”.
  2. Mount your Time Machine backup. In Finder, use the menu option Go –> Connect to Server…, and type the address to your Windows Home Server. This is usually “smb://” plus the server’s name. (For me, it was “smb://beat”.) OS X should find the server, connect to it, and list the available shares. Connect to the share that contains your Time Machine backup, and double-click the .sparsebundle file to mount the disk. (Enter your Home Server username and password, if prompted.)
  3. Run Migration Assistant. This tool is located under Applications –> Utilities on your Mac hard drive. Start it up, and read the intro if you’d like. Click Continue when you’re ready. Choose the “From a Time Machine backup or other disk” option, and click Continue. If you were able to mount the disk image in step #2, then it should be an option to choose from. Select it and Continue.
  4. Restore the backup. The last screen shows you the available items to restore, and how much space they’ll take up. If you created the throw-away account in step #1, then there should be no conflicts with restoring your real account from the Time Machine backup. Select what you do or do not want to restore, and then click Continue. The restore can take a while depending on how much data you have.

That’s it! When it finishes, your account should be back to the way it was, exactly as you left it (as of the last Time Machine backup). You can now throw away your throw-away account, or leave it as a battle scar.

Since it took me a while to find this on Google, I’m writing it up to hopefully give it more exposure. And if this is already well know and I just missed it, well – at least now I have a record in my blog of when my hard drive failed and I was sad. :P

Tagged , , , , , ,

My Little Twitter Bot

It all started when @ndoto replied to one of my “eeyup” tweets saying that he wished there was a Big Macintosh Twitter bot that would reply with an “eeyup” if you sent a tweet containing “eeyup”.

For those who aren’t in the know, Big Macintosh is a character on the cartoon My Little Pony: Friendship is Magic. It’s a slight re-imagining of the original show, headed by the same creative mind behind Foster’s Home for Imaginary Friends – an awesome show with clever writing. Needless to say, that same maturity (but kid-appeal) carries over to the new My Little Pony. I suppose I should clarify that I’m not enough of a fan to call myself a brony, but I do think the show is about 20% cooler than most other things on television – and Big Macintosh is by far my favorite character. :)

I’ve always wanted to make a Twitter bot, so I jumped at the opportunity. In this post, I’d like to share some of the technical details, and decision making, that brought @BigMacinbot to life.

Continue reading

Tagged , , , , , , ,

The Trouble With Hubs

A few days ago, I posted my own thoughts and experiences with iOS 5. At the end of the article, I conclude that Windows Phone 7 would probably appeal to me, because it gets rid of the endless sea of icons and apps, and replaces them with dedicated “hubs”.

Well, way before that post – last year, in fact – I wrote an article about hubs, and the problems such a system has.

Well, here’s the part that worries me. While this concept is incredibly cool, it puts the responsibility on Microsoft to keep things up to date and fresh.  What the App concept buys you is that when new social networking services crop up (for example), people can write Apps on top of its APIs right away, and before you know it you’re linked in to the service.

With Microsoft’s hubs, how long will you have to wait for Microsoft to integrate a new social networking service?

Now, today, I see that Paul Thurrott has posted an article on what Windows Phone 7 still lacks, even with this year’s Mango update.

The first is a topic I’ve been meaning to address for some time now, which is a serious issue with a facet of Windows Phone that Microsoft has trumpeted, correctly, as its primary advantage over iOS and Android: The integrated experiences that, in many ways, obviate the user’s need to find, download, and then use a myriad of different apps to accomplish common tasks. When the Windows Phone–integrated experiences work, they work well. You can very easily share a photo to Facebook or Twitter, without having first installed and configured a dedicated app for either service, for example.

But in many cases, these integrated experiences don’t offer as much functionality as do the dedicated apps. So depending on your needs, the existence of an integrated experience might simply be obviated by the fact that it doesn’t do what you want.

Paul goes on from here to describe a scenario, using Facebook, that can’t be accomplished properly because Windows Phone’s implementation of the Facebook API is limited. And it isn’t the only example.

There are holes like this in all of Windows Phone’s integrated experiences, from the Twitter integration that doesn’t understand hash tags to the photo integration that doesn’t understand Flickr and is unable to upload full-sized versions of your photos, automatically, to the service of your choice.

Go read the article – it’s essential if you’re considering a switch to a different mobile platform, like I am.

But this point is of particular note, because it is the core of what makes Windows Phone different, and worth considering. I noted in my original article last year that if Microsoft opens up hubs to third party developers, that it will help keep things current and fresh. So far that hasn’t happened, and my guess is that when Microsoft does finally do this, it’s going to be limiting.

There’s no final answer here. But if Microsoft wants to stay in this game – and wants to tout the benefits of hubs – it needs to keep this stuff updated. Ignore this, and you can watch your platform die in a sea of obsolescence.

Tagged , ,

iOS 5: The Devil’s Details

iOS 5Question: What is a review?
Answer: A thorough, unbiased evaluation with the intention of determining a final critique.

It may not be a proper dictionary definition, but this is what I expect when I read technology reviews. Most of the time, I am satisfied. But with the release of iOS 5, I was consistently disappointed. Gone was the thoroughness. Gone was the proper critique. They read more like summaries of the features listed in an Apple press release. There were some details, of course, but there was also a lot missing.

This is my attempt to fill in some of the gaps. I’m not going to attempt to do a full review. But I want to look at iOS 5 with fresh eyes, explore some of the details overlooked in other reviews, and briefly sum up how it compares to other mobile operating systems available today.

So, lets begin.

Continue reading

Tagged , , , , ,

Imagination is never the limit

From Cisco’s infographic about IPv6 a month or two ago:

When billions of things are connected, talking and learning, the only limitation left will be our own imaginations.

Oh, I’m sorry. I didn’t realize our imaginations were so restrictive. I could have sworn money was the limiting factor in situations like this — money for development, money to build infrastructure, money for content and intellectual property use, etc.

I could be mistaken. Perhaps there was no possible way for Cisco to imagine a better Flip player, so they had to kill off the product.

Oh, wait.

Tagged ,

Trowl 0.7 Preview – Update!

Just a quick post to provide an update on the next version of Trowl.

Preview builds are now available. I waited until things seemed relatively stable, so if you want to give 0.7 a whirl, you shouldn’t experience too many problems. Of course, if you do, I’d love to hear about it. Then I can fix it and everything will be happy again. :)

While 0.7 is mostly finished, there are still a few small features that I’d like to add. I didn’t want the preview builds to get held up by these last few changes, but you can expect a couple more goodies to slip through before things are finalized.

So, what are those features? Thank you for asking, imaginary commenter!

* New "Event" notification. (NOW AVAILABLE in build 002) The user stream sends more than just tweets — it also sends notifications about new followers, retweets and favorites. So it only seemed appropriate to pass those notifications on to Growl. As new notifications get sent to the stream, I’ll integrate them into this notification type.

* Complete t.co integration. (NOW AVAILABLE in build 003) Twitter is finally starting to push ahead with implementing its t.co URL "shortening" service to the rest of its ecosystem. To that end, Trowl will behave slightly differently when posting a tweet with URLs. Each URL will automatically deduct ~19 characters from your tweet, no matter how long the URL is. My current plan is to keep the built-in is.gd shortening available for those who like to use that, but it’ll probably become less important as t.co becomes more widespread.

* Photo uploads. (NOW AVAILABLE in build 004) I think everyone knows what this is now that Twitter has rolled it out to everyone on the Twitter website. It is not yet (officially) part of the API, though, and currently Twitter has no date planned for a roll out. (So much for late June.) Like mentioned above, this may or may not make it into 0.7 depending on how long this takes.

* Higher resolution profile pictures. (NOW AVAILABLE in build 005) Profile pictures will now be 200 by 200 pixels, if possible. A lot of profile pictures aren’t that large when pulled from Twitter, so some changes were made to how the retweet profile pictures are composed. Overall, though, you shouldn’t notice too much of a difference unless you are using a Growl display that shows large images, or you forward notifications to another device, like Howl on iPhone. Metro Display was changed to show a larger version of the profile picture if you hover your mouse over the profile picture.

Thoughts, questions, suggestions? Feel free to comment. :)

Tagged , ,