Thursday, February 25, 2010

ibrado.org

Please visit http://www.ibrado.org/ for newer posts. Thank you.

more > | full >>

Friday, September 18, 2009

Generations



My Nokia 770 (orthanc), N800 (osgiliath), and N810 (elostirion).

more > | full >>

Thursday, February 12, 2009

Unix epoch 1234567890

On February 14, 2009 at 7:31:30am Philippine time (Feb 13 23:31:30 GMT), it will be Unix epoch 1234567890. Happy Valentine's!

alex@elektron:~$ perl -e 'print gmtime(1234567890)."\n"';
Fri Feb 13 23:31:30 2009
alex@elektron:~$ perl -e 'print localtime(1234567890)."\n"';
Sat Feb 14 07:31:30 2009


Update: Found a site, http://www.1234567890day.com/
(Yes, I'm still alive.)

more > | full >>

Friday, June 6, 2008

Nanay's birthday

Happy 61st birthday, Nanay!

more > | full >>

Saturday, April 19, 2008

plumber!s toolbox

Hey there! I've been quite busy lately, but not too busy to launch another site. ;-) plumber!s toolbox has my latest modules, tips, and tricks for Yahoo! Pipes.

Do check it out... thanks!

pipes.tumblr.com

more > | full >>

Monday, March 24, 2008

Google Gadget + OpenSocket = Facebook app

I converted my scifAI Google Gadget to a Facebook app via OpenSocket. It was a relatively painless procedure, though I did have to make allowances for the way Facebook rendered the app. Also, the code generated by OpenSocket still has some issues with the app's canvas height, so I also added the comments for a particular post just to use some of the extra space.

My pet peeve is that an iframe app in Facebook needs a "screenshot" that must be clicked before the app is activated. I don't know if this is a technical or business requirement, but it sure makes the end-user experience suck. I guess it's time to learn FBML.

Put it in your Facebook profile here or view the source code here.

more > | full >>

Friday, March 21, 2008

scifAI Google Gadget

In celebration of World Poetry Day (right...), I published my first Google Gadget, for scifAI. Here it is:

Drop this on any web page using the code generated here.

You can, of course, add this to your iGoogle page as well. Go ahead, you know you want to. ;-)

Source code is over here. (Smaller version here, code here.)

more > | full >>

Tuesday, March 18, 2008

Gari's birthday

It's Gari's birthday... yey! Happy birthday, bro!

Had a great time with the most of the gang (hi Togz!) last Sunday at Clint's place in Antipolo. Thanks, Clint... finally! ;-)

Sa uulitin!

more > | full >>

Monday, March 10, 2008

Tumblr hack: A real tag cloud

Tumblr may come up with "real" tag browsing soon, but meanwhile, here's a tag cloud that -- unlike third party services -- uses the actual tags that you assign to your posts.

Basically, the script calls the Tumblr JSON API and processes the posts, 50 at a time (the maximum allowable; configurable). It saves the tags, URLs, and a bit of the content. If there are any remaining posts, it keeps on doing this until it retrieves all of them, or reaches a preset maximum (150 by default, or thrice). It then renders the tags in varying font sizes depending on the total number of times each tag was used.

By default, links are created for each of the tags. Clicking on a tag will generate a list of posts with that particular tag. [ Hey Tumblr! A /tags/<tagname> path that only shows posts with that tag would be nice. :-) ]

I used Jason Levitt's Dynamic Script Tag class to call the Tumblr API as many times as required.

Here's*** the quick-and-dirty demo script showing the tags from my scifaiku site (again). If you do use it, please send me your URL via a comment. :-)

*** Update: The original one didn't use the titles (I had no titles in scifAI, originally) but instead parsed the content up to the first HTML tag. Here is a more generic one, using post titles.

more > | full >>

Tumblr hack: Author's Notes via Google Docs

This is a very basic HOWTO on retrieving a particular item in a Google Docs spreadsheet from your blog (not necessarily Tumblr), something that I could have used a few days ago. I use this over at my scifaiku site to show author notes for particular posts. *


  1. Create a new spreadsheet

  2. Use the first row to label the fields

  3. Enter some data

  4. Publish the spreadsheet

  5. Go to More publishing options

  6. Select RSS from the File format dropdown

  7. Click Generate URL and copy the resulting URL

  8. Modify the URL from something like
    http://spreadsheets.google.com/feeds/list/
    o<numbers>.<numbers>/od6/public/basic?alt=rss


    to something like (one line)

    http://spreadsheets.google.com/feeds/list/
    o<numbers>.<numbers>/od6/public/basic?
    alt=json-in-script&callback=notesLoaded&sq=postid%3D{PostID}


    where sq is a structured query (in this case, the postid field must be equal to the current Tumblr post id)

  9. Create a JSON call using the above URL, and put this near </body> (one line):

    <script src="http://spreadsheets.google.com/feeds/list/
    o<numbers>.<numbers>/od6/public/basic?
    alt=json-in-script&callback=notesLoaded&sq=postid%3D{PostID}" type="text/javascript"></script>

  10. Specify an output location using a named div
    <div id="authnotes_load"></div>

    If you want a nice "loading" animation to put inside this div, get one from ajaxload.info

  11. Write the callback handler:
    function notesLoaded(obj) {
    var notediv = document.getElementById('authnotes_load');
    if(typeof(obj['feed']['entry']) != 'undefined') {
    // 10 length of 'authnote: ', the first column
    var note =
    obj['feed']['entry'][0]['content']['$t'].substring(10);
    notediv.innerHTML = "<p><span>author's notes :"
    + "</span> " + note + "</p>";
    } else
    notediv.innerHTML = '';
    }

Adjust the above to taste. Enjoy!

You can see this in action here. A modified version is used at the main scifAI page ("42").

* Update: Deprecated in favor of just using Disqus comments.

more > | full >>

Tuesday, March 4, 2008

BCD = Silay City

If you're traveling to Bacolod City, you should know that the Bacolod City Domestic Airport is no more. The new Bacolod-Silay City International Airport, over 17.5 kilometers away as the crow flies, serves in its stead. It is a modern facility featuring such amenities as a working conveyor belt. ;-)

Despite the extra 40 to 70 minutes of travel time, I suppose I should be glad that Bacolod will now be able to put up tall buildings. In May 1994, for example, the fourth floor of the Sugarland Hotel had to be demolished so it wouldn't pose a hazard to airplanes.


If you find yourself without transportation, I recommend Nyala Tours. It's only P100 for the airconditioned shuttle bus/van from Silay Airport, and P150 from Bacolod to Silay. I actually added P50, both ways, as they dropped me off only a block from my home (the inner streets were too narrow), and was the only paying passenger on the return trip. Contact them at nyala_bacolod at yahoo, or +63(34) 434-4589, 433-1049 for advance booking.

more > | full >>

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. psyku.tk. 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 pipes.yahoo.com/ibrado.

** 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 gmail.com).

I found the solution over at kavinda.net. To summarize,

a. Add the following entries to your domain's DNS (replacing example.com with your domain name, of course):

_xmpp-client._tcp.example.com. IN SRV 5 0 5222 talk.l.google.com.
_xmpp-client._tcp.example.com. IN SRV 20 0 5222 talk1.l.google.com.
_xmpp-client._tcp.example.com. IN SRV 20 0 5222 talk2.l.google.com.
_xmpp-client._tcp.example.com. IN SRV 20 0 5222 talk3.l.google.com.
_xmpp-client._tcp.example.com. IN SRV 20 0 5222 talk4.l.google.com.

_xmpp-server._tcp.example.com. IN SRV 5 0 5269 xmpp-server.l.google.com.
_xmpp-server._tcp.example.com. IN SRV 20 0 5269 xmpp-server1.l.google.com.
_xmpp-server._tcp.example.com. IN SRV 20 0 5269 xmpp-server2.l.google.com.
_xmpp-server._tcp.example.com. IN SRV 20 0 5269 xmpp-server3.l.google.com.
_xmpp-server._tcp.example.com. IN SRV 20 0 5269 xmpp-server4.l.google.com.

_jabber._tcp.example.com. IN SRV 5 0 5269 xmpp-server.l.google.com.
_jabber._tcp.example.com. IN SRV 20 0 5269 xmpp-server1.l.google.com.
_jabber._tcp.example.com. IN SRV 20 0 5269 xmpp-server2.l.google.com.
_jabber._tcp.example.com. IN SRV 20 0 5269 xmpp-server3.l.google.com.
_jabber._tcp.example.com. IN SRV 20 0 5269 xmpp-server4.l.google.com.


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 twitter@twitter.com 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 http://twitter.com/home;

b. Double-check that notifications for your mobile phone is set to "On"
at http://twitter.com/devices;

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.

Shrug.

more > | full >>

Thursday, February 14, 2008

gpsd bug in ITOS 2008

Huh.

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

meanwhile, over at alexandr...