Announcing a new weahter mashup: Spincloud

I started working on Spincloud back in 2003 when I got interested in regular expressions. I liked them so much I started looking for large sets of freely available data that I could crunch. Weather data was quite appealing; not only I’d parse it but I could get instant feedback by just looking at the parsed data, after all we understand temperatures and wind speeds and the like. I’d get to use other technologies I couldn’t experiment at work where I was doing the regular J2EE stuff and I kept feeling the itch to do new things.

And so Spincloud was born; it’s mission: to track the weather worldwide. It didn’t have a name back then but as things started to shape-up, I realized that the experiment was slowly turning into a real project. Then Google published its Maps API and I just knew that my small little pet project just found the perfect playground. It’s been a while since I started with this and I had no intention of publishing it initially. It has grown beyond its initial purpose and I feel it’s time to set it free.

This is the third version of Spincloud, the first two iterations were not publicly released. This is not an open source project; however, I’m planning on blogging about the technical challenges I’m encountering and are interesting enough to share.

Here are the main features of Spincloud:

– Instant weather search
– Forecast displayed for all available locations in surveyed area (US only); radar mashup.
– Upon free registration, one can tag favorite locations then track the weather either through the website or via RSS; ability to set a home location 
– Integration with Flickr
– Ability to add comments for individual locations through Google Friend Connect
– Easy registration that uses OpenId and Facebook Connect.
– Both metric and imperial units of measures supported.

Update: googlemapsmania.com just ran a story about Spincloud here. Thanks guys!

Mini DisplayPort saga: a reverse hangover

One benefit of owning a Mac is that you’re part of a never ending soap opera that Cupertino carefully directs. Sometimes the drama has bright spots such as the Mini Display Port story.
The MDP became quite the feature story when Apple decided to scrap the DVI port on its new unibody lineup. I didn’t pay too much attention initially but since the Macs are so media friendly, I found myself wanting to plug it into a TV basically the second day after I bought it. Bummer. The only way is MDP. A quick look on the net left me with a bitter taste. Apple Store sells a DVI adapter for $30 and on the Apple forums people were begging Monoprice to start producing a ceapola version of the adapter. Only that Apple owns the MDP spec and therefore not doable. And there’s no MDP->HDMI adapter, the one that I really craved for.
A short few weeks later on Dec. 1st, the drama registers its first break. Apple suddenly announces no-fee licensing for the oh-love-me adapter. Things heat-up, some suggest petitioning the cheap cable producers to start making the damn thing and there’s hope. I started dreaming of an adapter that I could buy for peanuts. Well, my dream came true today: Monoprice is making it. Still not listed (I could only spot a $15 MDP to DVI adapter) but most likely in the works at Monoprice. You rock guys. I’m guessing a similar price range (1/2 off Apple’s own) should be enough to get the Mac guys’n’gals skip a pizza delivery and snap it. But we know you can do better than this. Monoprice, show us what you’re made of. You’ve done it before with dirt cheap HDMI cables. You can do it again.

I’ll take 50.

Update (Feb.16): They’ve done it. Available on or around March. 15: Order here

libcurl.3.dylib and Google Earth

I just installed Google Earth on my mac. It went smooth, the software was installed under Applications but when I launched it I got this:

The application Google Earth quit unexpectedly.

Hit the Report button and got:

Library not loaded: /usr/lib/libcurl.3.dylib 
Referenced from: 
      /Applications/Google Earth.app/Contents/MacOS/libge_net.dylib

Reason: image not found

I actually upgraded libcurl a while ago and to 7.19.0 and I now only have /usr/lib/libcurl4.dylib libcurl.3.dylib version is gone. 

The solution I found was to create libcurl.3.dylib by adding a symlink like this:

sudo ln -s /usr/lib/libcurl.4.dylib /usr/lib/libcurl.3.dylib

Now Google Earth works just fine. On to find fame using the couch potato version of Indiana Jones: armchair archeology.

Gmail themes, skin deep

Today was my lucky day according to least one popular blog. I got the Themes tab enabled in my gmail account, wohoo! I only wish they could change the font sizes too, I’m up for a microscopic look’n feel, really small and cozy-cute.

My current favorite is the Shiny theme:

Now, if only googlers would add a Cover Flow option instead of that dull message list. Oh, and it should come gratis as usual.

I learned something today too. To take a screenshot on a MacBook, press Shift-Command-4 then select the portion of the screen you want to capture, then find the pic saved conveniently on your Desktop in png format. The karate stance is only required if you want to execute the entire screen capture kata.

[my gmail inbox via Techcrunch]

Deus ex Machina

I love Hollywood movies. They project a surreal world that in which all stories have a happy ending. Whenever the hero seems to be cornered and rapidly heading to his doom, a last-second turn of events allows him to escape. This is deus ex machina. God from the machine. To the rescue.

I’m thinking back at many movies I so enjoyed. Terminator, Die Hard (yeah, right), Batman, Ironman, Indiana. Deus ex machina all over. I denounce them.

Think of a Hollywood movie, any of them. Chances are it’s a Deus one.

I like Rocky 1 and Trainspotting. And Sex Traffic.

I know why I like the cheesy Deus’ movies. I know the ending, no surprises there. Shameless happiness at the end, the hero survives all impossible circumstances. Satisfaction guaranteed.

No more of this nonsense. Realism rocks. I’m not going to go watch any of these other movies anymore!

And yet I can’t look away.

REST is DSL

I like RESTful URLs. They clearly express the intent of the provided resource. We humans speak a language close to REST when we talk to The Internet. 

Take a look at Google’s RESTful search query, probably the most used RESTful URL ever:

http://www.google.com/search?q=your-terms-of-choice

in freeform language this translates to: “Google, search for this term.”

How about the Flickr RESTful tag cluster search service:

http://api.flickr.com/services/rest/?method=flickr.tags.getClusters&
api_key=a6f11b67ae348a7b3f2da0d865b8bc1d&tag=Berlin

In Flickr lingo this means: “Fetch all tag clusters for the ‘Berlin’ tag”.

It doesn’t take much to understand RESTful URLs. They speak the language of the domain they represent and therefore in the Web Services provider-consumer world:

The collection of all RESTful services provided by a domain represents its web-oriented Domain Specific Language.  

DSLs have been around for a long time. For more information check Martin Fowler’s talk on the subject.

Mac wars

humpOh, that “I’m a Mac” commercial is on the TV again. Then some ugly new ad where some webcam people defend the PCs on behalf of Microsoft: “I’m a PC”. While my brain was tricked into an attempted wash, I realized that I’m not any of it.I’m a human being.

I’m not trying to help you here Redmond but voila, here’s one good ad slogan:

I am not a machine. I’m a human being. And I use a PC.®

java.lang.Void

VoidI’ve considered myself a Java guy (that’s before I recently started with Ruby). I’ve stumbled upon Java in 1998 and fell in love with it at first sight. I remember quite crisply my first encounter of the third kind with Hello World. But I confess, I only learned about java.lang.Void yesterday. I was digging through the SwingWorker concepts and as I went through the tutorial I was intrigued by a mention about the Void type in the Simple Background Tasks section.
I already experimented with the SwingWorker before reading the tutorial and liked it except for the annoying return and interim results types as I’m migrating an ancient Java 1.1.8 GUI to JDK 6 at work and those Runnable classes I’m thinking of converting to don’t have any return types.

Continue reading “java.lang.Void”