Wednesday, February 27, 2008

Tatay's birthday

Today is my father's 64th birthday.

The bird still sings true
As its feathers turn to gray.
Today, it caught deer.


Happy birthday, Tatay!

more > | full >>

Monday, February 25, 2008

Nanay's book

We received the first 10 copies of my mother's book, Orations, Poems, and Other Writings. The rest will roll off the presses tomorrow. Congratulations, Nanay!

more > | full >>

Sunday, February 24, 2008

Pipin' Not!

Hmmm. It seems the Yahoo! Pipes engine is down. All I'm getting for any pipe (not just mine) is:

Pipes encountered a problem while running this pipe: The Pipes engine request failed (-1)

I guess success does have its price. ;-)

Update 1: It's on and off. Mostly off at this time...
Update 2: Looks fine now.

more > | full >>

Pipin' Hot!

I'm obviously a big fan of Google (except for a few things here and there), and there are some projects of theirs, such as GoogleMashups and Jaiku, whose public launches I eagerly await. [ Hey Google, how about some dev accounts, huh? ;-) ] **

Meanwhile, I'm not one for thumb-twiddling, so I look around. Thus, I'm on Twitter and Yahoo! Pipes.

Yahoo! Pipes is simply fascinating, and I regret that I only started playing around with it over a year after its launch. If Google ever considered purchasing Yahoo!, Pipes was likely on its list of Pros.

The concept behind Yahoo! Pipes is simple: you stitch together various elements and transform data as it travels from one end to another. All this is done via a neat AJAX interface.

From the site:

Pipes is a powerful composition tool to aggregate, manipulate, and mashup content from around the web.

Like Unix pipes, simple commands can be combined together to create output that meets your needs.

I started on Pipes by combining Twitter JSON feeds and RSS from Prologue-themed WordPress sites, e.g. It was a pretty interesting exercise, and you can see the results in my "Twitter + psy//ku" widget box.

Here's a snapshot of one of my pipes in the editor:

I'm sure I'll be working on more pipes as time allows. Check them out at

** Feb 26. I now have Mashups access.

more > | full >>

Friday, February 22, 2008

Twitter for Google Apps, plus restoring SMS updates

I had two problems with Twitter:

1. I wanted to be able to receive IMs via my own Google Apps domain (instead of my account at

I found the solution over at To summarize,

a. Add the following entries to your domain's DNS (replacing with your domain name, of course): IN SRV 5 0 5222 IN SRV 20 0 5222 IN SRV 20 0 5222 IN SRV 20 0 5222 IN SRV 20 0 5222 IN SRV 5 0 5269 IN SRV 20 0 5269 IN SRV 20 0 5269 IN SRV 20 0 5269 IN SRV 20 0 5269 IN SRV 5 0 5269 IN SRV 20 0 5269 IN SRV 20 0 5269 IN SRV 20 0 5269 IN SRV 20 0 5269

b. Give your changes time to propagate, e.g 24 hours;

c. Login to Twitter and add your Google Apps IM account to your device (I chose Jabber, IIRC). Take note of the generated password;

d. Add to your buddies. If it doesn't immediately show up as a visible user, your DNS changes haven't propagated enough (i.e. the old version is still cached at Twitter's nameservers);

e. Send it the password from c above. That's it!

2. Perhaps due to my diddling of the notification settings, I was no longer receiving any SMS updates. While IM is great, I'm not always at the computer (rigggghhhttt...).

Here's how to fix it (YMMV):

a. Make sure that "phone"
is selected under Notifications at;

b. Double-check that notifications for your mobile phone is set to "On"

c. Add a PIN (most likely not required, but useful anyway to prevent spoofing);

d. Send "on" to Twitter's mobile number.

That should do the trick! (Thanks to Gari for the test twitters, hehe.)

more > | full >>

Saturday, February 16, 2008

Heart's Cry, circa 1993

From the dusty recesses of my brain comes this poem written almost exactly 15 years ago, IIRC (i.e. post-Valentine's). I don't remember having counted syllables (10-8-10-8) and rhyming every other line, but there you go... Maximum mush! :-D

Heart's Cry

I lay without sleep, yet not without pain
For pain I did feel in my heart
Pain caused by love and a hope held in vain
That I of your life become part.

I once really thought that you loved me too
For your deeds were with thought for me
But alas it seems that I am to you
But brother, not lover-to-be.

And so, my love, I must let the dream go
For though it hurts, I know it's right.
Forgive me, I ask, for loving you so,
And for crying to sleep tonight.

... then this haiku came rushing out of nowhere:

The words of years gone
Open up my calloused heart;
Once more do I bleed.


more > | full >>

Thursday, February 14, 2008

gpsd bug in ITOS 2008


I was trying to geotag a picture for the first time, but for some reason, the timestamp saved by gps-saver was exactly one day ahead, so no match was possible, of course. It turns out that ITOS 2008's gpsd, which gps-saver relies on, has a leap year bug until March this year. :-(

A fix is on the way, though, and the GPS unit itself is OK. Phew.

Meanwhile, I diddled the gps2photo source (part of gtag) to work around this bug (and another, involving undefined altitudes)... here you go. Just replace the one gtag installs in /usr/bin.

To run, I used

gtag -f gps.200802132236.1.log.gz -o tagged --credit "Alex Ibrado" --city Mandaluyong --state NCR --country Philippines --copyright "(c) 2008 Alex Ibrado" --keywords test *.jpg

and confirmed that these values were saved using

exiftool -a -u -g1 tagged/mypic.png

The GPS tags should also show up in any photo management software such as digiKam.

more > | full >>

Monday, February 11, 2008

Dinner with the new G

I'm having dinner right now at Fish & Co., publishing this through osgiliath via their free-to-customers WiFi. Right beside me is Laya, my new G...PS. :-P

It works inside, beside the glass walls. Here are a few shots (I cleared the GPS tracks):

...although I'm pretty sure I'm not moving at 3.5km/h or jumping up and down 30 meters. Hehehe...

I tried posting this via MaemoWordPy, but I haven't quite gotten the hang of it. The browser works fine anyway.

more > | full >>

Freedom Keychain GPS 2000

I went to the post office and picked up my Freedom Keychain GPS 2000 (bought from Proporta). It's a fascinating little device (1.81 x 1.26 x 0.58") that provides NMEA 0183 and other protocols over Bluetooth. It charges via the usual Mini5B USB, which is great as it means one less cable for me to bring along. USB and cigarette lighter cables are included in the package.

To test it out, I first paired it with osgiliath (my N800/ITOS2008), installed Maemo Mapper, then went to the roofdeck of my condominium. It worked pretty well, using 8 or 9 of the 12 satellites it tracked. I texted the bros with the coordinates and altitude, along with some quip about telling Cupid exactly where I was. :-P

I haven't put it fully through its paces yet, but so far, I was able to see my location on osgiliath using maps from Google Maps and OpenStreet that Maemo Mapper automatically downloaded for me. The street maps even had the street names on them!

My ultimate goal is to geotag my photos by saving my GPS path and matching the time the pictures were taken, i.e. move the SD from my cam to the N800 and run a script. I hope there's an existing app* for this already, but if not, it would make for an interesting project.

* UPDATE: HowToUseGPSFrameworkInOS2007 should work, though it needs a PC. Not sure if it is worth the effort (or even feasible) to port gtag's requirements to the tablet itself.

more > | full >>

Sunday, February 10, 2008

Firebug and CSS Specificity

I was trying to get my Twitter widget (adapted from the Twitter Fan Wiki) to show a profile icon beside my own updates.

My original code was:

<style type="text/css">
.twitter_self {
background-image: url("");


I used it like so inside the widget code:

<ul id="twitter_list">
<li class="twitter_self">my update message</li>

But what was this? The original arrow icons kept showing up!

After a little googling, I discovered Firebug, an amazing, free Firefox* plugin that, IMHO, all web developers should install. It allowed me to inspect Javascript-generated elements, among other things (like single-stepping through Javascript and live code/CSS editing), and I was able to confirm that my code was being overridden by the main skin style.

(* "Lite" version available for other browsers)

So I googled some more and found the wacky CSS: Specificity Wars page, which let me know that the spec says

ID selectors have a higher specificity than attribute selectors.

Aha! So I fixed the code like so:

<style type="text/css">
#twitter_list .twitter_self {
background-image: url("");

... and all was well. An easy problem to solve, but I learned something new.

more > | full >>

Saturday, February 9, 2008


I still haven't slept after a night out with the bros and friends. So, I decided to write some haikus* (geek!!) inspired by certain events, conversations, and beer-induced imagery of last night (and today, pre-dawn). I wrote five, initially, but then I tried to do what I did before in high school: write 26 haikus, one for every letter of the alphabet.

I only managed 12. Maybe I'll add some more after I get some sleep.

Ah well, not too bad, considering. But then again, you'll probably get depressed reading these, heheh. Don't say I didn't warn you.

Ahead of the pack
Yet all is green as they preen
Mates that have their back.


Basking in the sun
Petals wilting with the wait;
Bees land on a bud.


Constricted no more
Spirit soaring, running free;
The future unfolds.


Dust-flecked empty chair
Between four others, still warm;
A friend, sorely missed.


Engulfed by duty
Carefree pleasures are no more;
No infinite road.


Freed from sleep's unease
Arms reach out and fingers seek
Naught is there but air.


Gone, and yet not gone
Fettered to another loosed,
Two linked birds in flight.


Haughtily black-clad
Scented flowers of the night;
Buzzing flies abound.


Icy flakes appear
On a yet-unfurrowed brow;
Freezing words still flow.


Laughter fills the night
But beneath the joy and warmth,
A cold dread uncoils.


Mountain winds arise
Shelter foremost in the mind;
Flowers go unseen.


Pollen in the wind
Swirling, questing to no end
Arid earth reclaimed.

* Haiku, senryu, zappai... whatever. ;-)

more > | full >>

Monday, February 4, 2008

Dynamic DNS and transparent proxies

I prefer having my DynDNS account updated by my Linux-based DSL-500T ADSL modem/router (flashed with Russian firmware) since it means the host updates occur every time a PPP session is established. Otherwise, I would have needed an inefficient cron job at my main box.

I haven't needed to access my PC remotely in the past few months, so I just recently noticed that my DynDNS host wasn't getting updated. At first, I thought there was something wrong with the router, but after my previous blog, I noticed that my host's registered IP address was that of (you guessed it, good for you!) Globe's transparent proxy.

It turns out my router's ddns call (hardcoded in the router's firmware-flashed XML) was using automatic IP resolution, i.e. DynDNS used whatever IP address the update command came from.

So, I downloaded the current XML configuration, made it more editable with HTML Tidy (tidy -xml), fixed the command to use -i ppp0 instead of -r, mashed the XML back into a single line with another one of my quick-and-dirty scripts (clutter), and reflashed it into the router. After it rebooted, my DynDNS account was being updated properly again. Phew.

ddns -u myuser:mypass -h -w -r -q -i ppp0

If any of you are having similar problems, check if your ISP has a transparent proxy. If you're lucky enough to be able to customize the commands your router runs, the above might be of some help.

Of course, if you're really lucky, your router doesn't have this problem in the first place. :-P

more > | full >>

Sunday, February 3, 2008

Indiggnant at Globe DSL

I've been getting a blank page trying to login at Digg. It seems that a lot of people are having this problem, likely due to some bad transparent proxying by the ISP.

So I did a tcptraceroute to check if Globelines was using one:

# tcptraceroute
Selected device eth0, address, port 51873 for outgoing packets
Tracing the path to ( on TCP port 80 (http), 30 hops max
1 3.372 ms 1.052 ms 0.651 ms
2 203.177
.x.x 18.164 ms 18.177 ms 18.692 ms
3 222.127
.x.x 18.108 ms 18.133 ms 18.378 ms
4 ( [open] 18.395 ms 18.258 ms 20.177 ms

Aha! Time for a bypass.

Since I have SSH access to a number of servers, I just set up a SOCKS tunnel,

$ ssh -ND 8888 my-remote-server

then setup my browser to connect to localhost:8888 (SOCKS v5). I tried logging in to Digg... voilà!

Globeline's transparent proxy (apparently Blue Coat) does work for most sites, so I also installed the FoxyProxy Firefox add-on. It allows me to specify which proxy to use with what sites.

If you don't have access to an external SSH server, and are having similar problems, you could probably just use a public proxy server instead.

UPDATE 1: It seems Globelines has turned off its transparent proxy. A tcptraceroute to now shows 11 hops, following the same path as the normal traceroute. I wonder if this has anything to do with all those cut underwater cables, or it was just that too many people complained.

UPDATE 2: And... it's back again. Get your act together, Globelines!

more > | full >>

Friday, February 1, 2008

Self-hosted Flash Video

Nowadays, the easiest way to upload videos to the web is via Google Video, YouTube, Metacafe, Vimeo, and the like.

If, for some reason, you want to host your videos on your own server, here are 4 steps to easily do this in Linux:

  1. Convert your video using ffmpeg:
    ffmpeg -i your.avi -s 320x240 your.flv

  2. Grab JW FLV Media Player and extract mediaplayer.swf

  3. Upload your FLV file and mediaplayer.swf to your server.

  4. Edit your HTML file to include something like this (one line):

    <embed src="mediaplayer.swf" allowfullscreen="false" allowscriptaccess="always" flashvars="&amp;file=your.flv&amp;autostart=false" height="240" width="320"></embed>

    or the more standards-compliant

    <object type="application/x-shockwave-flash" data="mediaplayer.swf" width="320" height="240">
    <param name="allowfullscreen" value="false" />
    <param name="allowscriptaccess" value="always" />
    <param name="flashvars" value="&amp;file=your.flv&amp;autostart=false" />

    Note that the latter is not viewable in the Nokia Internet Tablets.

You should end up with something like this:

Hosting your own videos allows you to avoid any branding that a third-party host might impose -- perfect for intranet/corporate use. You should also check out the various features, such as playlists, that JW FLV Media Player offers.


more > | full >>

Thumb-thuking good

Eyan and I had dinner again at Thuk Thai. This time we were joined by Togz. We had spare ribs, pork omelette, kangkong, Tom Yum with coconut milk, and bagoong rice, washed down with a couple bottles of beer. Yum!

Do check out Thuk Thai one of these days, behind Rufo's on San Miguel Avenue, Ortigas. It's an unpretentious place serving great food at reasonable prices.

more > | full >>

meanwhile, over at alexandr...