Ireland: SFO->DUB, Day 1: Dublin

0

We flew out from SFO to Dublin, Ireland on Wednesday afternoon for a week and half of vacation. Aer Lingus flies non-stop from SFO to DUB which was nice…no layovers that would have made our travel time longer than the decently long 10 hour flight.

The flight left SFO at 2:35pm and we landed at 8:35am Dublin time. After clearing immigration and customs, we went to pick up our rental car. Since my auto insurance doesn’t provide coverage in the EU, I ended up getting the full insurance coverage from Dollar, which was a ankle-grabbing 29 euros a day. Since I’d never driven in a right-hand drive country before, I figure I wanted piece of mind that if I had the unfortunate luck of getting into a fender bender that I could walk away. Most rental cars are manual transmission, although we got one with an automatic since driving on the “wrong” side of the road was enough sensory overload, let along trying to shift with my left arm.

We arrived at our hotel (the Roxford Lodge Hotel in the Ballsbridge district) around 11am, but the room wasn’t ready yet so we walked down the street and ended up at a place called the Expresso Bar. We had coffee and tea and then ended up staying for lunch, before returning to the hotel to check in.

After checking in, we laid down for a brief second and ended up conked out for 3 or 4 hours, the jet lag finally catching up with us. We woke up around 5pm and finally got outside around 7pm. We walked towards Trinity College, which was about a mile away. We explored the city center, crossed the River Liffey, and finally ended up in the Temple Bar area (Dublin’s version of SF’s Fisherman’s Wharf) and had dinner at a restaurant called Milano’s. I think we ate at 9pm, but I remember that it was still pretty bright outside from what we’re used to in SF.

After dinner we walked back to the hotel and retired for the night.

jQuery tips, migrating from jQuery’s tablesorter to Ext JS’ GridPanel

1

I ran across this post which has some good jQuery tips.

Speaking of JavaScript frameworks, I’ve been spending the last couple weeks ramping up on Ext JS since it comes with a very slick grid component (actually all of the components it comes with are very, very slick). I’ve been using the jQuery tablesorter plugin for a grid layout used in one of my projects, but it’s missing a couple of features I need such as grouping & resizable columns, which the Ext JS grid component has.

Migrating to the Ext JS grid has been interesting since I’ve had a chance to see the pros and cons of each framework and the different approaches taken to build a grid. The jQuery tablesorter plugin operates on an existing HTML table (or one you create in JavaScript and append to the DOM, which is my case) and converts it to a sortable grid, whereas the Ext JS grid uses a datasource such as a JavaScript array, JSON or XML file, etc. and uses that to build the grid.

Ext JS is quite verbose unlike jQuery (unless you want the verbosity — note: if it’s not obvious, that is a April Fool’s joke :) ), but I do like how Ext JS is a complete framework with a lot of included widgets that all work well together, no doubt because they all are part of the distribution.

jQuery on the other hand is very compact and the syntax is similarly compact (which I love). The core distribution is kept as tiny as possible, and additional functionality is added via plugins such as tablesorter.

The existing implementation of my grid uses jQuery’s tablesorter, contextmenu, blockui, cluetip, and metadata plugins, whereas to achieve the same functionality in Ext JS and to add new features such as grouping & resizable columns, I am using the following Ext JS objects: Ext.grid.GridPanel, Ext.grid.GroupingView, Ext.data.GroupingStore, Ext.data.JsonReader, Ext.QuickTip, Ext.menu.Menu, Ext.MessageBox, Ext.Viewport.

It’s not an apples to apples comparison since some of the Ext JS objects I listed above are used to load the JSON data into something the grid can use, whereas the JSON data was a JS object literal previously and I manually iterated over it to create my table which tablesorter then coverted into a grid. Others like grouping (via Ext.grid.GroupingView) is a new feature that I wanted to implement & wasn’t available in tablesorter or any other jQuery plugin that I could find at the time. If I was to break it down to replicating my grid’s functionality in jQuery over to Ext JS, it’d be the following objects: Ext.grid.GridPanel, Ext.QuickTip, Ext.menu.Menu, Ext.Messagebox.

Each framwork has its pros and cons, but I am glad though that they both work well together (both were designed with this in mind). That’s a good thing, as I am using both: I’ve migrated the grid to use Ext JS’ GridPanel, but am still using jQuery to do a couple manipulations to the grid. I can have my cake and eat it, too (though I will see if I can migrate all of the grid functionality over to Ext JS to keep things simpler)!

Unlocker for Windows

0

Every once in a while I try to rename or delete a file in Windows XP and I get some type of error telling me it’s in use by another program. I found this nifty program called Unlocker which tells you which process is holding onto that file or folder, and gives you the option of killing it.

Preventing xulrunner from caching browser files

0

Leap day post!

The xulrunner app I developed hits a web server running on localhost to serve up its main interface, via XUL’s <browser> tag (similar to HTML’s IFRAME tag). There are instances where the pages & their dependencies should not be cached. Adding the various HTML <meta> tags (expires, pragma, cache-control) prevents the HTML pages from caching, but we really wanted to prevent .js files from being cached since we change the content dynamically in some of them so we didn’t want to return stale data. If we were running Apache, we could just set some HTTP expires headers via mod_expires but since we needed to keep the app installer as small as possible, we were using a much more lightweight web server.

I first tried the following xul prefs:

pref(“nglayout.debug.disable_xul_cache”, true);
pref(“nglayout.debug.disable_xul_fastload”, true);

which didn’t work. I was seeing .js files being saved to xulrunner’s cache (on WinXP, it was in the C:\Documents and Settings\[User name]\Local Settings\Application Data\[App Vendor]\[App Name]\Profiles\* folder)

Then it dawned on me that since we were using the XUL <browser> tag, it essentially loads up a web browser to display the content. Since that meant it was essentially Firefox 2 loading up, I looked in Firefox’s about:config for caching-related preferences and voila:

pref(“browser.cache.disk.enable”, false);

I added that to xulrunner’s prefs.js & no more caching

Get your Raptr on

0

Raptr went into public beta last week. It’s been a pretty intense several months leading up to the launch, so it’s nice to actually have the cat out of the bag. And maybe I’ll see some daylight finally. :)

Some decent coverage of the launch:

Page 5 of 16« First...34567...10...Last »
Go to Top