Archiving Tweets Using WordPress

Since I began using Twitter actively, I’ve been looking for a reliable way to ensure my tweets will be forever accessible. In my experience, Twitter never offered an easy way to locate old tweets. From a profile page, a user can keep loading tweets by simply scrolling down the page. That scroll-to-load approach works, but it takes a lot of time, and there’s no guarantee that Twitter will allow this mechanism to load thousands of additional tweets. As far as I can tell, there’s no simple way to find a tweet from June 2010, for example – even if you try to search by text, it won’t necessarily be found. It seems to me that Twitter prioritizes recent tweets, and eventually removes the older ones from their index. While I find this is somewhat appropriate for Twitter, I would prefer having the same confidence I have in Gmail. Regardless of how many e-mails I write, I know that Gmail will always keep them around.

After trying a few potential solutions, it eventually hit me: what if I could have one WordPress post per tweet? I would have no problems locating old tweets, as the WordPress search feature works quite well. The resulting database would be easy to manipulate, and completely under my control. Not to mention the huge amount of plugins available at WordPress.org. A couple hours later, I had the WordPress solution implemented, and am still using it today.

To get it working, I used two key WordPress plugins:

1) Twitter Importer by Brad Touesnard

I used Twitter Importer to retrieve all tweets that had already been published. This is necessary because the automatic tweet importer only handles new tweets.

2) Twitter Tools by Crowd Favorite

This plugin, among other things, is capable of automatically importing new tweets. To get it working, I had to register an application with Twitter, which is a bit odd – it seems like something only a Twitter application developer would need to do. In any case, once I got that configured, Twitter Tools began to import new tweets automatically. The rest is really a matter of preference: for example, I decided to disable comments, pingbacks, and other features that I felt weren’t inline with my intentions. I also downloaded and installed a WordPress theme that looked suitable for microblogging: P2, by Automattic.

The only imperfection I noted is a bug that I’ve first seen in Google Buzz. Twitter recently improved the re-tweet action, allowing users to simply click a Retweet button, instead of manually replying with the “RT @username” prefix.

Consider this tweet by Liana Maeby:

Being better off alone is super til you need to open the jar to trap the spider who’s crawling around where you’ve fallen & you can’t get up

— Liana Maeby (@lianamaeby) March 15, 2011

It is exactly 140 characters, the maximum allowed for a tweet. When re-tweeted, here’s how it looks:

Looks great; no “RT @username” pollution, instead, a clean icon in the top left corner. It seems like Twitter is handling it internally, rather than simply adding the “RT” prefix to the tweet. Yet, when you view the same re-tweet from outside Twitter, different story:

In these cases, the “RT @username” prefix is visible – and it actually uses up part of the 140 characters. If the tweet was 140 characters to begin with, this means the last few characters could be sliced off to make room for the prefix. Not only that, but an ellipsis is added to convey that the original text has been truncated. Since this is happening in Google Buzz, I’m ready to write this off as Twitter bug. It’s unfortunate, though, because it means my Twitter archive is truly imperfect. Tweets could be missing content, which sometimes means a URL gets chopped in half.

Imperfections aside, I believe I found a decent way to archive my tweets, all the while without changing the way I already use Twitter. Plus, my Twitter Archive includes links back to my other websites – so it could also be useful in bringing in new visitors.

Resistible Savings

Here’s an amusing post I encountered over at Amazon.ca, while looking for a cheap headset. At first glance, I was glad to see it was selling for less than the list price, but then I noticed exactly how much was being saved.

<sarcasm>How can I say no to such a generous offer?</sarcasm>

I’m not sure whether this is a mistake, now that I think about it. I can see why it would be beneficial to show that all their items have savings applied, regardless of the amount. After all, it made me react positively, that is, until I noticed the amount saved. Either way, it appears the Americans get a better deal… blame Canada?

Update January 8, 2023: Amusingly, since this post was originally written, the Canadian Amazon posting has been discontinued, and the American now costs a whopping $174.31. I’ve thus removed the Amazon links.

Slow Mouse When Controlling a Virtual PC Through Remote Desktop

At my day job, I spend a good deal of time working with virtual machines, whether with Virtual PC 2007, Virtual Server 2005, or Hyper-V. All three seem to work fairly well when I’m logged into my machine locally. However, when I use Remote Desktop to connect to my work machine from home, I recently noticed that my Virtual PC machines suffered from some serious mouse lag. Moving the mouse would make the cursor teleport, rather than smoothly moving across the Virtual PC desktop. The faster I tried to move the mouse, the worse the effect became. Hyper-V  had no such problems, so I began to wonder if I could do anything to solve the stuttering.

Solution

Thanks to a forum post, I discovered that this was caused by a  low Hardware acceleration setting in the virtual machine’s display properties. Here are the specific steps required to solve the problem within a Windows Server 2003 virtual machine:

  1. Right-click the Desktop, and select Properties.
  2. Move to the Settings tab in the Display Properties dialog.
  3. Click the Advanced button.
  4. Move to the Troubleshoot tab in the Monitor Properties dialog.
  5. Move the Hardware acceleration slider all the way to the right, so it is right next to Full.
  6. Click OK in the Monitor Properties dialog.
  7. Click OK in the Display Properties dialog.

…and you’re done. That’s all there is to it.

See Also

Mouse Slow and Jerky in Virtual PC 2007 running on Vista home premium

Coupon Codes Made Easy

As a guy who makes a good number of online purchases, I’ve grown familiar with the concept of coupon codes. Like their physical equivalents, coupon codes can be applied while checking out of certain stores, allowing customers to benefit from reduced prices. Unfortunately, online coupons are similar to physical coupons in that you must know about them to exploit their benefits. Thankfully, I discovered a solution to that a few years ago, greatly increasing my ability to take advantage of these coupons. Meet RetailMeNot, a site that encourages users to share coupon codes with the world.

The main page of RetailMeNot.com lists top coupons and stores, and also has a search feature.

In the past, I was rarely able to partake in the coupon code mechanisms offered by retailers. RetailMeNot changed the game by introducing the possibility of searching for codes by simply providing a store name. It wasn’t long until I adopted it as part of my online shopping habits – I began searching for possible coupons before buying anything. It was a good system, and quite unexpectedly, it got even better… all because of a Firefox plugin. RetailMeNot introduced a Firefox plug-in that will automatically tell you whether the site you are looking at has available coupons.

RetailMeNot's Firefox plugin is capable of reporting coupons as you browse

Without having to visit the website manually, I could behave as I normally would, knowing I would be notified when necessary. This mechanism allowed me to save time and money, all without disturbing my regular browsing habits.

To be fair, I must point out that RetailMeNot does have a couple flaws. First, some users are finding that coupons sometimes don’t work, when used. To help mitigate this problem, RetailMeNot now includes a “chance of success” rating along with all coupons, fueled by user votes. That way, if a coupon starts to fail, the community is able to flag it, warning other users. The second flaw lies in the plugin specifically, but isn’t the fault of the makers. Instead, it seems certain companies have been successful in removing themselves from the plugin’s control. You can still search for coupons on the site, but RetailMeNot has been forced to block certain sites at the plugin level, preventing the automatic coupon lookup.

Despite the flaws mentioned, I highly recommend the website, as they really enhance e-shopping as a whole.

UPDATE: May 29, 2016: Firefox extension no longer exists, removed link.

The Road to Active Tweeting

It took me a while to warm up to the idea of microblogging, as popularized by Twitter. At first glance, I felt it encouraged the accumulation of mundane status updates, shared publicly, and communicated between accounts in an indirect, awkward way. Given that I spend a lot of time writing, I was practically insulted when I saw that they limited status updates to 140 characters. I didn’t understand how something of quality could be produced, given such limitations. I also feared that SMS abbreviations and slang would become prevalent, further taking away from the quality of such short messages.

So, when I eventually decided to create a Twitter account, it was merely to announce my new blog posts to a large community, to hopefully attract more visitors. I decided to auto-post my blog entries to Twitter via a WordPress plugin, including a special tag that would allow me to track the number of visitors I would receive. The experiment proved successful; announcing my new posts did result in a decent increase in visitors. As a result, I allowed the auto-posting to continue, and other than that, never really paid much attention to Twitter.

Twitter logo

A few months later, something happened that caused me to reevaluate how I used Twitter. On one particular day, my WordPress database became corrupt, and after some work on my side, I managed to get it reinstalled and working… with the exception of one feature.  My comments, managed by a WordPress plugin named IntenseDebate, were not appearing along with my blog posts.  Since I placed a huge amount of importance in comments, I held back from posting, and instead waited to hear back from IntenseDebate’s support team.

Time passed, and though I contacted their support address twice, I still hadn’t heard back. I then noticed that they were happily instructing people to contact their support address from their Twitter account. Hoping to get their attention, I logged into Twitter, and directed a status update (known as a tweet) their way:

The public tweet I sent to IntenseDebate, mentioning that I had not heard back in over two weeks.

The idea of communicating with a company through Twitter had never occurred to me before. I liked the idea, given that the Twitter exists in such a public setting – I felt it would increase my chances of being noticed and helped. Unfortunately, despite further waiting on my part, I never heard back from them.

Eventually, I became quite annoyed, and decided to stop using IntenseDebate for comments, allowing me to return to blogging. As my first order of business, I decided to write a blog post about them, detailing my inability to get help from their support team, despite much effort. I titled the post “An Endless Wait for IntenseDebate“, and rather than having it be completely serious, I felt I should throw a comedic spin on the whole situation. I ended it with a poll, where I asked my readers when they thought IntenseDebate would get back to me, given everything I had experienced up until that point. The options in the poll were more towards the long-term, with the last option actually being a comical “They will never get back to you”.

About an hour after posting the article, I received an e-mail notification – one of the top guys at IntenseDebate had commented on my blog post, apologizing for the problems, offering his help. He even voted in the poll, saying I would hear back from IntenseDebate in less than a week. At first, I wasn’t sure how he found my post so quickly, but then it hit me: it was auto-posted to Twitter when I published it to my blog:

The automatic post made by my blog was offering some negative publicity, given that it contained their plugin name.

They were likely keeping an eye on all IntenseDebate related tweets, and spotted my latest, which was making them look bad. When I realized this, I immediately began to respect Twitter more; the public nature of tweeting benefited not only the companies, but also consumers. The situation sparked my curiosity about Twitter, leading me to start actively following other users. Mainly, these were comedians and celebrities that I knew of, as well as a few friends. I observed what kind of content they posted to Twitter, and kept the variety in mind. I discovered the concept of retweeting, which is pretty much repeating what another user has tweeted, while giving them credit for it. Considering my aversion to posting trivial information about my daily life, I quickly learned to retweet only the most unique updates I came across, those I deemed worth sharing. I discovered that 140 characters could very well be significant, with the right approach taken to Twitter. For example, I found writers that saw the character limit as a challenge. They manage to write interesting little scenarios within the confines of only 140 characters, not an easy feat.

Beyond content quality, I found great potential uses for Twitter’s location awareness. For example, whenever I heard about metro outages, I would tweet about it on my iPhone. That way, other people could search for tweets happening near them, and could potentially benefit from my warning. Soon enough, the actual transport company started tweeting about outages themselves, allowing me to cease this activity. It can be taken further than this, though, if you consider disaster situations, where it can be used as a means of warning others of danger, not just inconveniences.

Thanks to the experiences above, I am now an active Twitter user, no longer simply exploiting the community’s size. Though sometimes users opt to use Twitter as an online journal, there are others that find creative alternatives. If you previously decided to avoid Twitter, I hope my words have motivated you to reconsider, as there is much value in the service they offer.

Video Wallpapers With VLC Media Player

When I originally bought Windows Vista, I was really excited about the DreamScene feature. It allowed videos to be used as wallpapers in Windows, something that I had never seen before. To use it, you had to buy Windows Vista Ultimate, the most expensive edition. I was happy to do this, given that Windows was the foundation of all the work I did in my career. Unfortunately, the extras included with Ultimate weren’t really worth the extra money, in the end. I’m sure they had their applications, but they really didn’t enrich my life, personally. DreamScene, in particular, turned out to be a disappointment. It was an interesting idea, but I found that if I played a game, and returned to Windows, the video wallpaper would often be gone. This problem was enough to stop me from using it. As of Windows 7, they removed video support, though some people managed to get it working.

For those of you who are curious about having video wallpapers, I recently read that you can have VLC Media Player play a video directly to the Windows wallpaper. In case you never heard of it, VLC is a free, open-source media player that is available for most platforms. Though the interface is nothing special, it is the only media player I know that can play pretty much any file I throw at it, without me needing to manually download the proper codecs. I highly recommend it.

Once you have it installed, here’s how to get the video wallpaper working:

  1. Considering backing up your existing wallpaper, just in case.
  2. Launch VLC.
  3. Click Tools > Preferences in the menu bar.
  4. Click Video in the left sidebar.
  5. In the Display section, you’ll find an Output field. It will most likely be set to “Default”. Change this value to “DirectX video output”.
  6. Restart VLC.
  7. Open a video file. In my case, I tried an .AVI, and Windows automatically switched to Windows 7 Basic. This is normal – when you close VLC, your previous theme will return.
  8. Right-click the video output you’re seeing in VLC, and select Video > Direct-X Wallpaper.

You should now be seeing the video instead of your wallpaper. VLC will be looking fairly strange during this, so I suggest minimizing it. If that interrupts the video, you can try making the window as tiny as possible. Either way, the VLC window needs to remain open. It is powering your wallpaper, and is still useful for the video controls. When you’re finished, repeat Step 7, or simply close VLC.

I initially discovered this trick by reading a Lifehacker article: Set a Video as Your Wallpaper with VLC.

The Peculiar Ways Of My Cat 2

Soon after writing the first “Peculiar Ways of My Cat” post, I bought two seven foot cat towers. I figured the offering would be my best chance at preventing the critter from shredding the contents of my home. Though it wasn’t completely successful, it at least proved to be partially effective. At this point in time, the towers have taken quite a beating, and may not survive for much longer. Clawed nearly beyond recognition, they offer a mere glimpse at their earlier days. Too bad, considering I originally thought of placing the cat’s food bowl on the highest level. I figured it would be a good way to keep him in shape, while I would benefit from the entertainment. Having no easy way to secure the food dish up there, I decided against it, ultimately.

Besides the towers, I’ve taken steps to train him beyond his existing ability to follow a particular procedure whenever it is time to eat. As my next challenge, I’m teaching him to come to me at any time, not only when he’s hungry. To do this, I will discreetly pick up some treats, and call his name from a distance. If he approaches me, he gets a treat. Once he starts to understand that I have treats, I have to utilize the stop command – keeping him in place. Then, all I need to do is move across the apartment, and call him over.  If he starts moving before I call him over, he doesn’t get a treat, and the exercise starts all over again. So far, it is working well, but much more repetition is needed before I am ready to write another “Turning a Cat into a Dog” article.

The more I observe his behavior, the more I become aware of the intelligence he possesses. For example, he has learned to associate the squeal of my mother’s brakes with her arrival. The squeal itself is fairly subtle, but very often I will see him dart suddenly across the room. This usually means he heard the brakes, and wants to get to the balcony as fast as possible, to confirm that she has, in fact, arrived. Once he does, he will sometimes proceed to run back and forth across the length of the window, in excitement. If that’s not the behavior of a dog, I don’t know what is.

On the transportation side, there have been new developments. Originally, I would simply put him a fabric grocery bag, and hand him off to my mother, who would then bring him to her place by car. Once he arrives at my parents place, he had other cats to play with and/or terrorize, and that always brings good physical exercise.

Eventually, I had the idea of walking to my parents place with the cat in tow. Since they leave only 15 mins away on foot, this was a realistic possibility. To accomplish this, I wrapped the cat up in multiple fabric shopping bags, creating a very complex restraint with the bag handles. Only his head was out in the open, the rest of his body was completely wrapped in the bag, and tangled with the handles. My entanglement approach was designed to decrease the chance of him running away, should he to somehow get free while in transit. My plan worked well – I was able to walk to and from my parents place by simply carrying him with one arm. Despite being an indoor cat, he proved to be quite the professional urbanite, rarely getting nervous from what he was witnessing. The only signs of nervousness were perfectly understandable, for example: a loud bus drove by, relatively close.  All I had to do was use both arms in these moments, to calm him down and prevent him from moving. One day, I will look into getting some sort of an animal carrier, as it should make the whole process easier. During these adventures, the cat seems to enjoy being out of his limited indoor environment. Also, the reactions I get from random people are too priceless to pass up.

Open Command Window Here in Windows 7

Despite the numerous graphical advancements introduced in Windows 7, the Command Prompt has remained largely unchanged. Yet, it has always remained a useful, lightweight tool for interacting with the file system. I remember using it often in Windows XP, which was really when I was getting serious about Computer Science. In fact, I looked for ways to improve the command prompt experience. I eventually discovered a power toy for Windows XP titled “Open Command Window Here”. When installed, it would add an extra option to the context menu, which simply said “Open Command Window Here”. It would typically be visible when you right-clicked a folder, and, once selected, would make a new Command Prompt window would appear. This new window would have current location automatically set to the folder you right-clicked. This was particularly useful when you want to access a folder that is deep in the folder structure, and were already seeing it in Windows Explorer.

Unlike Windows XP, Windows 7 ships with this feature; however, it isn’t immediately visible to the user. To access it, you have to hold SHIFT, and then right-click. This will make numerous additional options appear, among them, “Open Command Window Here” can be seen.

Shows the "Open command window here" context option, which is made available when pressing SHIFT in Windows Explorer. Allows quick access to the command (DOS) prompt, while being location aware.

In general, I suggest experimenting with the SHIFT modifier – some of the “hidden” contextual options are very interesting.

Google’s Cache Feature Improved By User Script

When looking at search results in Google, you may have noticed a link titled “Cached” that appears alongside most results.

In Google search results, a link titled "Cached" can typically be seen right next to the URL.

Here’s how Google explains the feature:

Google takes a snapshot of each page examined as it crawls the web and caches these as a back-up in case the original page is unavailable. If you click on the “Cached” link, you will see the web page as it looked when we indexed it. The cached content is the content Google uses to judge whether this page is a relevant match for your query.

Whenever I encounter a search result that isn’t loading when clicked, I try using the “Cached” link. As Google warns, it isn’t necessarily up to date, but it usually reveals what I need: the content that made the page a relevant search result. As great as this feature is, if you click on any of the links within the cached page, Google will automatically try to load the live version, not the cache. If you’re accessing the cache because the site is down, this will likely fail.

Fortunately, I recently read a post on Lifehacker that solves the above problem through the use of a user script called Google Cache Continue Redux. Once installed, it will make a button appear next to all links, when you’re viewing a cached page. This allows you to keep browsing in cached mode, if desired, making the cache feature all that more powerful.

Example output of the Google Cache Continue Redux user script. Shows a yellow button that says "cache" in red along with every link.

To install the script within Google Chrome, simply visit the page and click “Install”. With Firefox, the same approach is possible; however, you first have to install the Greasemonkey plugin, and restart the browser. Opera supports user scripts as well, but the instructions are a bit longer, so I suggest looking at their documentation.

Internet Explorer 6 Crash Simulator

Ever find yourself missing the good old days of Internet Explorer 6? No? Well, me neither; however, if you want a mild chuckle, I suggest visiting this Internet Explorer 6 crash simulator:

Internet Explorer has encountered a problem and needs to close. We are sorry for the inconvenience.

Glad we don’t have to deal with that anymore.

If, by some chance, you are still using Internet Explorer 6, I highly suggest installing an updated version, or selecting any other major browser listed on this Wikipedia page.