Tagged with geeky

Sociable Wallpaper

All right, so I’ve been teasing this guy for a little while. I think it’s time I let the cat out of the bag.


So what is it? Put simply, it searches Twitter for desktop wallpaper, adds what it finds to your library, and then randomly sets your computer’s wallpaper to one of the images at regular intervals.

I forget what, exactly, prompted me to start working on this project. I think it had something to do with the fact that there are a lot of images out there that make excellent wallpapers – but they’re a bit hard to find. A few websites have popped up recently that have helped with this task, but it’s usually pages upon pages of images that takes a lot of time to sift through.

But Twitter is a great natural filter – people usually don’t tweet something unless it warrants it. (Excluding things like spam or commercial accounts, of course.) So, I started working on this little program.

At this point, it’s a proof of concept. It’s not in any sort of polished, final form. All the features work in a “this is alpha code and may break” sort of way. It searches Twitter for tweets with the “#wallpaper” hashtag, and then looks for any URLs. If one of the URLs points to an image, it pulls it down and adds it to a temporary list – the lower “Twitter” section in the screenshot above.

Selecting a wallpaper shows who tweeted it, and what the original text of the tweet was. When you mouse over a wallpaper, you also get three options:


The top button removes an image from your library. Because you may sometimes come across images that you don’t particularly like, the program asks if you want to exclude this picture from ever showing up again. If you say yes, then it’ll be added to an exclusion list that will stop it from showing up again – regardless of who tweets it.

The middle button pins the wallpaper. Pinned wallpapers are images you want to keep in your library. They appear in the section on top, as seen in the screenshot above, and won’t disappear if you restart the application. If you ever decide you don’t want to keep a wallpaper, you can unpin it. (To indicate that it is pinned, the wallpaper will keep showing the pinned icon, even after you mouse away from it.)

The bottom button magnifies the wallpaper. In this view, it fills the entire upper portion of the program. You can click anywhere on the zoomed version to dismiss it. Keep in mind that you can resize the main window (or fully maximize it) – which will also expand the size of the magnified image.

There is also a small settings screen that you can access by clicking the button with the gear on it, in the lower right. From this screen, you can control how often Twitter is searched, how often your wallpaper should change, and what the minimum size an image should be in order to be included in the library.

And speaking of changing the wallpaper – it will randomly choose an image, either from your pinned list, or the images it has found on Twitter. So if you don’t want an image to show as a wallpaper, it is best to remove it.

A few last points: by default, a wallpaper image is named the URL it was pulled from. But you can rename it to anything you want – selecting the thumbnail lets you change the text below it. You can close the main window any time – it will sit in your system tray. Double click the icon to re-open the window, or right click to Exit. When you first start the program, it won’t check Twitter right away. It will start at the next scheduled interval. You will know it’s checking Twitter, as there will be a green progress bar in the “Twitter” header bar.

I think that’s it as far as features go. I’m offering this proof of concept version as a way to gauge what people think of it. I have a lot of interesting ideas for where this could go – but with both Trowl and Project Nom being actively developed, I don’t want to spend a lot of time on this unless it’s something people would actually use and enjoy.

So if you like it, let me know! And if you don’t like it, let me know that too – but let me know what could be done to improve it.

In any case, I hope you like playing with this as much as I have. You’ll notice that there aren’t too many #wallpaper tweets that actually link directly to an image, so if you have any wallpapers you can share with a #wallpaper tag on Twitter, please do! And I’ll do the same.


Proof of concept. Requires .NET Framework 4. 505KB.

Update: Something like this doesn’t really work unless lots of people contribute their favorite wallpapers. So, to that end: you can now upload your own wallpapers and tweet them!

Tagged , , ,

Trowl: Re-Authorize for DM Permissions

settings_add_accountTwitter recently announced that they’re adjusting application permissions such that DMs require a new level of access. To ensure that users know exactly what is being accessed by the programs they use, Twitter wants users to re-authorize applications that require DM access.

If you use Trowl to view DMs, or you use the DM remote feature, you will need to re-authorize Trowl to access your DMs. otherwise you will start getting errors at the end of June.

Luckily, it’s pretty easy to do this. The first step is to go to the settings screen and click on ‘Add Account’, like the screenshot at the right shows. This will take you to the usual authorize screen, as if you were adding a brand new account. Click the link, and you will be taken to the Twitter website to authorize your account. The screenshot below shows the important part – that you will be allowing Trowl to access your direct messages.

After you enter your username and password, you will get the pin to enter back in Trowl. After you do this, Trowl will realize you authorized an account you already have set up, and will simply update your existing account with the new authorization. You will need to repeat this process for all accounts you use with Trowl. Click ‘Save’ to confirm the new authorizations and you’re done.

(One other minor thing to note: I run Trowl on several computers, and each instance is authorized for the same Twitter accounts. One thing I noticed is that as soon as I re-authorized one instance of Trowl with the new access permissions, the access permissions used by the other instances of Trowl instantly became invalid. So, if you have a similar situation, you will need to update every instance of Trowl. I imagine this isn’t a common situation, but wanted to mention it just in case.)twitter_authorize

What if I don’t want Trowl to access my DMs?
If you actually don’t want Trowl touching your DMs for whatever reason, then you can either refuse to re-authorize Trowl – in which case you will get errors whenever Trowl attempts to access them – or you can change your settings to not Growl DMs or use remote DM commands.

This is a bit of a nuisance, so thank you for taking a minute to do this. I understand Twitter’s motivations, but I can’t help but think there must have been a more streamlined way to implement this.

Anyway, that’s it. As always, if you have any problems, send me a tweet!

Tagged , , ,

Introducing Project Nom

A long time ago, back when the internet was still assembling itself, there was a service called Prodigy. I used Prodigy more than I’d like to admit, usually for things that weren’t especially productive. One of the few exceptions to this was when I wanted to find a new recipe for an appetizer.

There were distinct silos of information on the Prodigy service, similar to AOL’s keywords. If I remember correctly, the food section had a small selection of recipes, but nothing terribly impressive. The main draw were the message boards, where people were actively swapping their favorite appetizers, entrees and desserts.

After creating a new topic on the board, someone replied with a recipe that sounded perfect, so I printed it out. There was no other way to save it, really — besides, it was the only practical way to cook the recipe. I didn’t want to run between the kitchen and study whenever I needed to refer to the instructions.

Many years later, technology has improved considerably. Message boards are no longer the focus, but, if you have the time, you can find just about any recipe you want. But one thing remains the same: if you want to preserve your recipe, the best method is to print it out.

Oh, sure, there are websites that let you bookmark your favorite recipes in a virtual recipe box. Food Network has one. Epicurious has one. I’m sure there are others, too. But since when was it a good idea to have three recipe boxes in your kitchen, with recipes randomly distributed between them?

And what about cooking them? Are you supposed to drag your laptop into the kitchen while you cook? I’ve tried that, and it’s not practical — if for no other reason than it takes up a lot of counter space.

There have been some software solutions over the years. The best right now are locked onto Apple’s OS X/iOS platforms. That’s fine and dandy if you’ve bought into that ecosystem, but most people haven’t.

No, the best solution for an omnipresent need ("what do I want to eat?") is an omnipresent platform. All that time ago, Prodigy had the right idea. But now that technology has evolved, it’s time to evolve those original ideas.

That is the goal of Project Nom.

Continue reading

Tagged , , , , , , , , ,

New Mouse

A couple of years ago I got the Microsoft Sidewinder X8 mouse. It seemed like an awesome mouse at the time – rugged, enough buttons to be useful but not overwhelming, and the “works on anything” BlueTrack technology. It was a little big, but I have big hands, so I wasn’t too worried about that.

Well, it sucks. The receiver has to be really close to the mouse, or it doesn’t track smoothly. The feet on the bottom of the mouse (any of them! it comes with three sets of interchangable feet!) don’t glide smoothly on my mousepad. The battery doesn’t hold much charge anymore; and, to make matters worse, the charge cable doesn’t seat snugly on the mouse and will sometimes stop mid-charge. It was also awkward to hold – not because it was large, per se, but because it didn’t really attempt to fit your hand.

I finally got to my breaking point with it and decided to use some of my Christmas money to buy a replacement: the Logitech Performance Mouse MX. I’ve only had it for a few days, but so far it is blowing the Sidewinder out of the water. The receiver is tiny, but even from all the way at the back of my computer, it flawlessly picks up the signal from the mouse. The feet on this mouse are incredibly smooth, letting it glide easily on the mousepad. And the contours on the mouse make it easy to grip.

So, like I said, it’s still early days, but I have better hopes for this mouse. We’ll see how it goes.

Tagged , , , , , ,

The State of Tech 2010

Once again it’s time for me to ramble about some of the interesting technology developments that happened this year.

And what a year! Before starting this post, I went back to re-read my 2009 post.  It seems like almost every question I concluded with was answered in some way in 2010. Last year, I summed up the year as being more evolution than revolution.  While I hesitate to say that this year was revolution, it was certainly more than the evolution of last year. So why don’t we get started?

Continue reading

Tagged ,

How To: Create a New Windows Boot Partition

Paul Thurrott recently wrote up an excellent article about how to replace your hard drive, but keeping your OS install completely intact.  The secret is using Windows 7’s backup "system image" feature to create a complete, bootable image of your old drive, then restore it onto the new drive. Check out the full article for the details.

But I always end up making things more difficult for myself.  When I was faced with a similar situation, I ended up taking a different route.

Continue reading

Tagged , , , , ,

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 , , ,

More Fun with Panoramas

Last weekend I went to Boston, and took a few snapshots of Boston harbor.  While these are another great example of how good the iPhone 4 camera is, that’s not the focus of this post.

There is something amiss with these panoramas.  I didn’t spot the problems right away, but as I worked with them, it became obvious.  And the reason for the problem is also obvious: the stitching isn’t perfect if all the elements in the picture don’t line up exactly right.  This is especially true for subjects in the foreground, which move about more as you change positions for each photo.

Anyway, see if you can spot the imperfections in these pictures!

Continue reading

Tagged , , ,

Otakon 2009

I’m a little late in putting this post together, but it seems like I’ve been so busy since getting back from the convention.  Plus I wasn’t really sure what I wanted to write about.  A summary seemed like the best bet.

Continue reading

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 ,