Archive for 2010

SelectList 0.3.2

Saturday, August 21st, 2010

I’ve just rolled out a new release of selectList. It fixes a bug observed in IE7/IE8 where the hint text wasn’t shown in the select field as the initial option. Thanks to Nicolas for reporting this.

The new release isn’t available at plugins.jquery.com yet — there seems to be a problem with authentication on their website and I can’t get to the submission form. I’ll upload it there as soon as they get this fixed. For now, you can just get the plugin here.

Edit: Ok, now I know what happened to the plugins website — they had to lock it down temporarily to deal with spam. Get better soon, plugins website!

Twitter Troubles

Wednesday, August 18th, 2010

I started using Twitter a couple months ago. As my numbers of tweets and followers/followees indicate, I’m not using it heavily — I mostly just post announcements on new project releases, blog posts, and my miserable attempts at improving my running performance. Still, I’ve had enough experiences with Twitter to come across a couple irritating problems. Here’s my rant.

First, one day about half of my tweets went missing — they simply disappeared from my timeline. I looked around for an explanation of this problem and found a page at Twitter’s Help Center which convinced me that it was some general issue and a fix was on the way. In the next couple of days the lost tweets came back and everything looked fine.

This mysterious vanishing of tweets happened again a few weeks ago. Additionally, sometimes my timeline displayed the same tweets repeated two or three times (maybe Twitter did this to compensate for the lost ones, I don’t know). This time the situation didn’t get back to normal in the following days, and I decided to report this to Twitter support. On the aforementioned page, the support asked that those suffering from the missing tweets problem leave their details in the comments. So I tried posting a comment — I explained my case, and clicked “Post”. Bzzzt

Sorry, that page doesn't exist!

Apparently, comments weren’t working anymore. So I sent a direct message to @Support, describing my problem (briefly enough to fit in the 140 characters limit). Two weeks passed, no response. I sent another one, still no reply. At this moment, all my tweets from before July are still missing.

Another story. I like reading the technical articles at IBM’s developerWorks, and I found it convenient to follow their Twitter stream and receive brief announcements of new topics. While on my vacation last week, I read a few interesting articles on Android development, and I wanted to read them again now, on my home computer. But, @developerworks posts as many as 20 tweets every day, so last week’s updates were buried deep in the timeline, requiring me to repeatedly click the “More” button and skim through all the tweets to get to the interesting ones.

I hoped the Twitter search feature might allow searching in just my home timeline (the tweets of people that I follow, plus my own), but no, it can only search the whole world. Then I came across search.twitter.com, and I thought that was it — the advanced search options allowed me to limit the search to one Twitter account. I entered “developerworks” and “android” as the search term, and clicked “Search”. Bzzzt — “No results for android from:developerworks”. Weird. I tried another term – “java”, and some results did come up, so the search engine was working. I thought that maybe it only searched the most recent tweets by default, so I went back to the form and set the time range. Clicked “Search”. Bzzzt

The page you were looking for doesn't exist.

After making sure that it was the time range setting that broke the search, I gave up. I went to developerWorks website, entered “android” in their search, and immediately got the articles I was looking for. I guess I should have done that in the first place instead of expecting Twitter to assist me in getting to week-old tweets easily.

I know these issues are just the tip of the iceberg, and many Twitter users have numerous more serious problems. Twitter, you could at least put a big “Beta” (or, even better, “Alpha”) tag on all your pages, so that people know not to expect that the features you offer actually work. Then maybe start fixing things.

By the way, to be sure I’m using the term “timeline” correctly in this post, I checked the Twitter Glossary and clicked the “Find out more about your timeline” link. The result?

Sorry, that page doesn't exist!

Bzzzt.

/me Is Away on Vacation

Wednesday, August 4th, 2010

I’m on a vacation trip to the United States. I finally get to see and experience this exotic country of “America” that everyone’s been talking about so much.

I have a netbook and a smartphone with me and I get online occassionally (like this very moment), so I should be able to check my e-mail every now and then, but don’t get mad if you don’t receive a reply in a timely manner.

By the way, when I boarded the plane I was surprised to be greeted by the Linux penguin and the familiar booting process — apparently the Continental Airlines in-flight entertainment system is running on Linux. Neato.

WebService::Gravatar — Perl interface to Gravatar XML-RPC API

Tuesday, August 3rd, 2010

Developing my first Perl module turned out to be quite amusing, so I was happy to do it again, and here’s my second contribution to the wonderful world of CPAN: WebService::Gravatar, a Perl interface to Gravatar XML-RPC API.

Here’s a quick usage example (taken from the documentation):

    use WebService::Gravatar;
    use MIME::Base64;

    # Create a new instance of WebService::Gravatar
    my $grav = WebService::Gravatar->new(email => 'your@email.address',
                                         apikey => 'your_API_key');

    # Get a list of addresses
    my $addresses = $grav->addresses;

    if (defined $addresses) {
        # Print the userimage URL for each e-mail address
        foreach my $email (keys %$addresses) {
            print $addresses->{$email}->{'userimage_url'} . "\n";
        }
    }
    else {
        # We have a problem
        print STDERR "Error: " . $grav->errstr . "\n";
    }

    # Read image file data
    my $data;
    {
        local $/ = undef;
        open(F, "< my_pretty_face.png");
        $data = <F>;
        close(F);
    }

    # Save the image as a new userimage
    $grav->save_data(data => encode_base64($data), rating => 0);

    ...

SelectList 0.3.1

Monday, August 2nd, 2010

SelectList version 0.3.1 is out. The most significant update in this release is added support for Validation, the de-facto standard jQuery validation plugin. SelectList should now work seamlessly with it.

Thanks go to: Zdenek Machek, Don Mallicoat, and Alex Skrypnyk.

WebService::EditDNS – Perl interface to EditDNS API

Monday, July 26th, 2010

I have created a simple Perl module that talks to EditDNS API, allowing for easy manipulation of domains/records hosted at EditDNS from within Perl programs. A while ago, I developed a command-line utility that serves a similar purpose, named editdns.pl. The module is sort of an extension of that idea, although it works in a different manner — while editdns.pl impersonates a web browser to access the EditDNS control center website and uses hacky HTML scraping techniques, the module plays it nice and only uses elegant API calls.

The module is called WebService::EditDNS, and is available for download at CPAN. Eventually, it will probably also get a project homepage here on my website (some day in the not-too-distant future).

SelectList Documentation Updates

Tuesday, July 20th, 2010

Just a quick notice for selectList users — I have updated the documentation page for the plugin, adding the missing API methods reference. I also added some explanatory text on the examples page. Take a look if you’re interested.

SelectList 0.3

Monday, July 19th, 2010

I’m releasing a new version (0.3) of selectList. This release brings support for the core jQuery method .val(), allowing you to retrieve the list of currently selected options at any time (which might be useful when you want to, for instance, send the selection with an AJAX request).

Thanks to John Watson and Dan Young for notifying me of this.

Space Invaders Strike Again

Thursday, April 15th, 2010

I’m doing some spring cleaning of my files, and while browsing a forgotten partition on an old hard drive, I came across an ancient archive directory containing a few megabytes of miscellaneous source code. It’s dating back to my late teens, when I got a kick out of programming simple DOS games in Turbo Pascal. Of course, I couldn’t resist trying to run some of the old programs in DOSBox. Here’s a screenshot of my unfinished Space Invaders game:

This brings so many memories. I remember my ambition back then was to code the game completely from scratch, not using any libraries — I wrote the graphics code, keyboard handling, sprites and such all by myself in Turbo Pascal and some X86 assembly. This taught me a lot about programming, the X86 architecture, and DOS — most of this stuff is now obsolete and pretty much useless (especially when you make a living as a web developer), but it was really fun back then.

Hmm… I wonder if it would take long to port the game to Linux…

SelectList 0.2

Wednesday, April 14th, 2010

A new release of selectList (my multiple selection jQuery plugin) is now out. Version 0.2 brings proper handling of optgroup elements (as requested by a few users), and fixes one minor bug.

Thanks to Łukasz Ledóchowski for his feedback.