Artificial Poe

This Poe Parody/Translation [Boing Boing] reminded me of my own take on the first three stanzas of The Raven written in the wee hours of the morning after staying up for two nights trying to finish an A.I. assignment. Procrastination is a cruel mistress. Three hours before class, my professor emailed us and said we had another four days to complete the assignment.

This was my response:

Once wandered one named Alan, who ponder’d how he’d get a gallon
Out of many a quaint and curious volumed water jugs,
While he nodded, nearly napping, suddenly he’d find a mapping,
He’d wake, fingers tapping, clapping for those caffeinated drugs.
“(defvar visitor…” he fluttered, and drank caffeinated drugs.
Common Lisp kept finding bugs.

Ah, how clearly he remembered, and would’ve done dismembered
Lines and lines of silly Java code for nothing more than sport
Woefully he mourned the morrow; he would enter, beg and borrow
For some chance to ease the sorrow, to which Sanjoy would retort
In infinite wisdom, “It’s not my fault Lisp is not your forte.
Sorry.” Tough luck kid, in short.

As the sad forced-typing pressure, of a student who’d feel fresher
If he’d planned ahead and, like some others, slept a good night’s sleep;
Slowed, there rang the email Ding. O’ what worse horror could it bring?
Is the daemon trying to sing? And Oh! How high his heart did climb!
What bliss is this? Class canceled? Salvation for his wretched crime!
This was it. He had more time.

Behold the E71

I just upgraded to Wordpress 2.6.1 through PuTTY for s60v3 on my phone! Somewhat pointless, I know, but so cool nonetheless.

PuTTY on the Nokia E71

I did a lot of research before buying a new phone, and I have to admit I’m pretty darn happy with my newly purchased Nokia E71. First off, it runs Symbian 60v3 which Nokia just acquired and is pushing to open source. It can read email to me in a synthesized British voice, automagically parses contact names for voice dialing, has a front facing 1mp camera in addition to the 3.2mp camera on the back, and the GPS supports turn-by-turn navigation software by Garmin and TomTom. Nokia’s browser supports some Flash content through Flash Lite and the PDF reader’s only limitation is really the size of the screen. The phone is a pleasure to hold at 10mm thick with a sturdy metal body. Of course the Symbian OS is a whiz at multitasking so no problem IM’ing, writing email, editing excel spreadsheets, taking video and surfing all at once. I can use the same bluetooth modem tether that I used for my old w810i with a few minor modifications to the chatscript. More on that later.

It has its flaws. The keyboard is small and wrapping your hands around the phone, while tempting because of its size, will kill the reception. GPS through Nokia Maps takes anywhere from 30sec to 10min to acquire a lock but Google Maps’ aGPS support makes it bearable. Of course, AT&T’s 3g network woes are annoying but I’m hopeful it will improve with time. The headphone jack is 2.5mm so I need to get a converter to use my new SE530s with it.

The amount of software out there for Symbian is amazing. Unfortunately, not a lot of it is free, but I have managed to find just about everything I need. Python for S60 1.4.4 was just released, so I’m sure I’ll be finding lots more to play with in the coming weeks. So far I’ve installed:

  • Google Maps
  • Google Mail – necessary for searching across 4+ years of GMail archives
  • CalSyncS60 – Google Calendar sync
  • PuTTY – ’nuff said.
  • ScummVM – Secret of Monkey Island on the Metro!
  • SIC!FTP – a decent FTP client
  • Slick- very nice IM client supporting Gtalk, AIM, Yahoo, MSN, Jabber, etc.
  • Twibble – excellent Twitter client
  • Qik – live video streaming from phone to web
  • Fring – Skype IM/call support

The fact that Nokia insisted on proprietary connectors (yes, even the USB cable is non-standard…) is frustrating and until someone gets sshd/vsftpd running on the phone, transferring files wirelessly is limited to bluetooth or FTP from the phone to the computer. I’m going to try to patch puTTY s60 to support ssh-xfer which would make things even easier. More on that later too.

There’s still a lot of geeky things to be discovered with this thing. Apparently the phone supports full disk encryption (!). And if all goes as planned, I’ll make my next post with Scribe.

Initialism Infix Injection

All frequent internet conversationalists should be familiar with the concept of initialism, whereby “If I recall correctly,” is shorted to “IIRC,” and pronounced I-I-R-C. The most commonly used initialisms occasionally make the shift to acronyms to be pronounced phonetically, which then gives rise to amusing phonetic perversions; i.e. “Rolling on the floor laughing my ass off!” becomes ROFLMAO which is imported to spoken English, and eventually back into text, as “waffle-mayo.” As a result of this phonetic borrowing I, and perhaps others as well, now sound the ‘word’ out in my head.

Chloey used an interesting, and in my experience unique, initialism construction in gTalk the other day.

… because im(elitist)o that’s the only way to use said adjective.

Now, I’m curious how natural that construction was for readers. IMHO is an often used and widely accepted initialism that has now become part of the standard Internet abbreviation lexicon and has never made the jump to an acronym. Therefore, I still process IMHO as ‘I-M-H-O,’ which might have made it more natural for me parse the unknown syntax. I didn’t chunk the whole word-phrase. ROF(laughing)MAO doesn’t quite seem as natural.

Of course then this could be just pure happenstance. I wonder if this injection is more common than I know or if this is just a one-time thing that won’t catch on. I like it.

Numa Numa Yay!

I can’t post this directly to twitter because it would completed ruin the surprise and wonderful simplicity of the, um, tweet. But it’s so great! Twhirl, via is.gd, gave me http://is.gd/NNy for Numa Numa. /NNy maps to Numa Numa-yay! God doesn’t exist. Q.E.D.

The <Image> is Out There

People pour more multimedia into the cloud every day. But if you want anyone to find it and make use of it, it needs metadata. Tags, folders, classifications, descriptions, and titles. In a word, words. Search engines algorithms are classically s(text)→text. Several image search offerings perform very well at s(text)→images, but they rely on the words around the pictures.

TinEye is different. It hosts a true s(image)→images algorithm for web image search; to my knowledge it’s the first of its kind (publicly available). Right now, the engine itself is more useful for those searching for copyright violations. TinEye searches for pictures that look more or less exactly like the input so searching with a picture from a personal album will most likely produce nothing. But that won’t be true forever.

It won’t be long before the search space becomes s(image)→text. Want to know what kind of architecture some pillars exemplify? Or who painted that picture hanging on the wall? Take a picture of a church in Chile, a tomb in Argentina, or some random structure on a wharf, upload it with your phone and wham: instant tour-guide.

The information is in the cloud; we just need to get smarter about locating it.

Mis Fotografías de Sudamérica

I finally posted my pictures from South America @flickr. Chloey’s pics are available in her photostream too. Enjoy.

POIs…
Our hotel in Puerto Varas, Chile – Los Colonos Del Sur
Our apartment in Palermo, Buenos Aires, Argentina

And did I mention that I love Photoshop?

I love photoshop
[full size]

Uniquely Biroid Lifestyle

Hooray for ballpoint pens! Today marks the 65th anniversary of the patent of the ballpoint pen by László & Georg Bíró; true life-hackers. László, a Hungarian newspaper editor, was inspired by the numerous annoying rips fountain pens created when marking up copies of his paper. Eventually he and his brother fled Hungary at the start of WWII and developed the Birome pen for production in Buenos Aires, Argentina. Incidentally, photos from Chloey’s and my trip to BsAs and Chile are now available in her photostream. They’re awesome.

As much as I love to type (until my wrists give out), nothing can replace a solid notebook and a trusty pen. I plan to take some time this evening to sit down and really enjoy my moleskin with one of the decendents of Bíró’s technical wonders. My personal favorites currently are the Pilot G-2 05/07 and the Uniball Signo 207 Micro.

Also, upcoming on the nonrat’l blog, I’ve more-or-less finished my clean upgrade to Hardy Heron and those notes will provide for at least three or four posts and patches on kernel 2.6.25, Tux-on-Ice, PATA cable detection, and iwlwifi led.c tomfoolery.

Jews <3 IE 6

The Torah doesn’t include that most crucial of tomes, the Book of Moz.

Moz 13:37
And He spoke unto the netizens, “He that browseth the Net without the Fox of Flame shall suffer unending frustration. Blessed be the keepers of the Gecko trunk!” And lo we there did view source and beheld the true meaning of the Mark of the Beast Web!

South Park Studios declares that only Jewish people use Internet Explorer 6

Leave it to those crafty and chaotic creators of TV’s best animated crapfest (or maybe the wizards behind their new site) to be brutally honest about which browser they would have us use.

Injecting enum Collections

It’s even easier than it looks.

<bean id="myList" class="java.util.ArrayList">
    <constructor-arg>
        <list>
            <value type="org.pkg.ExampleEnum">EXAMPLE_ONE</value>
            <value type="org.pkg.ExampleEnum">EXAMPLE_TWO</value>
        </list>
    </constructor-arg>
</bean>

Too much work for you? Well, if you inject a collection into a Java Bean that defines that property with generics, the type definition isn’t even necessary! Spring determines that type from the generic.

Also, if you’re interesting in injecting a map using enums as keys, you may with to utilize the java.util.EnumMap data structure. Inject a HashMap instead of a ArrayList and build an EnumMap in the setter of the bean.

<bean id="javaBean" class="org.pkg.MyBean">
    <property name="exampleMap">
        <map>
            <entry key="EXAMPLE_ONE" value="myValueForExampleOne" />
            <entry key="EXAMPLE_TWO" value="myValueForExampleTwo" />
        </map>
    </property>
</bean>

//javaBean...
private Map<ExampleEnum, String> = null;

//public setter creates efficient EnumMap
public void setExampleMap(Map<ExampleEnum, String> simple) {
    this.enumMap = new EnumMap<ExampleEnum, String>(simple);
}

Able to be Adored

A cat wakes up from a nap… X-D

(via Arbroath)