These Just (Almost) In

June 12th, 2009

Margaret is in the shower and I am in the bedroom applying sunscreen when I hear a flutter at the windowsill next to me. The window is open and I look over to see two Rainbow Lorikeets looking at me inquisitively.

“Hi!” I say to the visitors.

Squak!” they say as they ruffle up their feathers and peer into my bedroom.

I run to the living room (Aussies call it the lounge), grab the camera, and slowly re-enter the bedroom to snap a few photos. I manage to take two quick shots before they decide that they’ve seen enough of me in my underwear and they take off to a neighboring rooftop.

Rainbow Lorikeet at my bedroom window

Rainbow Lorikeet at my bedroom window

The Hunt

June 7th, 2009

Apartment hunting in Sydney is pretty painless. Here’s how we did it.

First, Margaret and I gave ourselves a whirlwind walking tour of some of the Sydney suburbs that we thought we might want to live in (they call them ’suburbs’ even though some of them are not at all suburban). Here’s my quick take on the ones we visited:

  • The Central Business District (CBD): way too much like NYC.
  • Darlinghurst and Surrey Hills: cute and bohemian.
  • Mosman: quiet, leafy, but a little too expensive and not near enough public transportation.
  • Kirribilli: very cute, friendly feel, convenient to train and ferry. One of our favorites.
  • Milson’s Point: surprisingly dead (for being so close to Kirribilli) and too business-y.
  • Crow’s Nest: another favorite with plenty of cafes and shops along it’s main drag while still feeling like a small, friendly neighborhood.
  • St. Leonard’s: pretty boring and business-y.

After scoping out the hoods, we started our apartment search online at Domain.com.au. We restricted our search to furnished apartments in Kirribilli and Crow’s Nest, our two favorites of the suburbs we saw, and found a bunch of listings in Kirribilli (and none within our price range in Crow’s Nest). Happily, many of the Kirribilli listings were all by the same real estate agency: Deborah Richardson Real Estate. So we talked to Naton, the agent, and booked appointments to see three apartments in Kirribilli.

Out of the three places we looked at in Kirribilli, one clearly stood out above the others. The flat was in a modern building with a nice lobby and elevator, had a roof deck, and was well furnished. And, well, no surprise here, we liked it so much that we decided to put in an application to lease it. What is surprising, though, is how low-stress it is to lease an apartment in Sydney (compared to, say, New York). I didn’t need to show any pay stubs to prove my salary level. I didn’t need to sign some crazy landlord-specific lease with clauses about what percentage of the floor I had to keep covered with rugs (leases in New South Wales are regulated and standardized by a central body). And, best of all, I didn’t need to pay any sort of broker’s fee for getting the apartment (10% of the annual rent is typical in New York). All I had to do was fill out an application, then wait a day for them to process it and tell me I was approved. Then I just showed up with the security deposit (they call it a ‘bond’ which, incidentally, is held by some standard third-party New South Wales Bond Board, not by the landlord or leasing agent) and the first month’s rent and I signed the lease and got the keys. This is a proper country.

OK, so what’s the place look like? Check out the pictures on Flickr.

The Story So Far

May 26th, 2009

It’s 5:45AM here on my second day in Sydney and I’m wide awake thanks to jet lag. I woke up around 4:00 and tried to fall back asleep to no avail. So, I thought I’d at least get out of bed and start working on a blog post. OK, to sum up so far…

The flight out here was actually pretty nice. It all started with a very cute gal checking us in to our V Australia flight at LAX. Margaret and I had four heavy bags to check, and we knew we’d have to pay $100 each because we were over the weight limits, but Danielle, the super nice V Australia employee didn’t charge us anything! Maybe it’s because I mentioned we were moving, or because I smiled a lot, or because V Australia is a new airline and they’re just trying to make everyone write nice blog posts about them right now. Whatever the case may be, we walked away happy and impressed. Thanks, Danielle!

The flight itself was, of course, long. But V Australia has a great entertainment system, even in the economy class, and we had our choice of plenty of movies to watch including some new releases that I had actually ripped onto my laptop to watch on the plane (hah!). Margie watched Twilight (her review: “pretty bad”) and the new The Day The Earth Stood Still (”better than Twilight”) and I watched Vicky Christina Barcelona (my review: not really a comedy, 3/5 stars). But mostly, we slept. I think we probably got around eight hours of sleep in total, which was pretty nice. It’s funny how, when flying internationally, you wake up, realize you have four and a half hours to go, and think “Hey, that’s not long at all!”

And so, eventually, we landed. Clearing customs was a breeze and Jack, my new boss, was waiting to pick us up and drive us to our temporary apartment. Jack even gave us a little driving tour around the neighborhood we’re staying in, called Mosman, in North Sydney. After the tour, Jack went off to the office, leaving Margie and I to explore Mosman on our own, after two much needed showers, of course.

Scenery-wise, Mosman feels a little like the Pacific Palisades near Malibu, California, in that there’s lots of trees, quiet streets, and some really beautiful houses with amazing views of the harbor. We were pretty hungry, so we stopped at one of the first restaurants we came across, Oodles of Noodles, an asian noodle house, where we had, yes, some pretty good noodles. The prices were a bit on the high side, at around A$12 for a big bowl of noodles that would probably cost $9 back in NYC (note that the first price is in Aussie dollars and the second is in US dollars; so, comparably, they’re about equal, but with regards to local income levels, etc, I still think A$12 is a bit much for noodles. I don’t yet know if prices are high here because Mosman is a pretty nice suburb, or if food is just generally more expensive here, or some combination of the two; I’ll collect some more data and report back later. More on expensive food in a minute, though.

After lunch, we took a short walk around the neighborhood, then went to the local food stores to buy some basics to take back to the apartment. Mosman’s main street (I think), Military Road, features specialty stores like a butcher, a cheese shop, fruit and veggie stores, etc. There are smaller and larger supermarkets here as well, from what I understand, but I think it’s cool that the smaller guys have a chance, too. The most surprisingly expensive food item we bought, were a bunch of bananas, which cost us $8, if I remember correctly; the same bunch would have sold for $2 in the US. So, OK, lesson learned: bananas are obviously imported.

Once we were sufficiently loaded up with some food basics, and luxurious bananas, we dropped the food off at our apartment and set out again for a short walk down to Mosman Bay. But, this is starting to feel like a boorishly long post now, so I’ll save details about that walk for another post.

G’Day!

Tutor.com’s Website Content Management System

April 23rd, 2009

One of the cooler projects I’ve worked on at Tutor.com was the creation of a simple content management system (CMS) to power our public website. For years, our website had no CMS capabilities. When someone wanted something changed, they asked a developer to change it. And then they usually waited a week for it to get done.

As our company grew, we were creating more pages on the site and making more copy edits than ever before, and it became clear that we were finally ready to integrate some sort of CMS into the site. We evaluated a ton of CMSes out there before deciding that we didn’t need a whole lot of fancy functionality and that we could probably write our own CMS to suit our needs pretty easily. As it turns out, we were right. We built a simple CMS in-house, and it’s been powering our website for many months now with no real hiccups.

To share a little about how we went about it, I put together a short white paper about the Tutor.com CMS describing the architectural design decisions we made, the implementation challenges we faced, and the solutions we came up with. Want to learn more? Read the PDF.

Tutor.com CMS White Paper (PDF)

What happens when I win a hula hooping contest?

November 10th, 2007

See for yourself.

2007 ALA Web Design Survey

April 27th, 2007

I took the 2007 ALA Web Design Survey

Fixing gem error: undefined method `refresh’ for #<Hash:0×14f7c64>

February 10th, 2007

After upgrading to Gems 0.9.2 I got this error when I tried any gem command (except for gem list):

ERROR: While executing gem ... (NoMethodError) undefined method `refresh' for #<hash :0x14f7c64>

Deleting /usr/local/lib/ruby/gems/1.8/source_cache fixed this problem for me.

Notes from the RJS Peepcode Screencast

February 3rd, 2007

I recently finished watching the RJS Peepcode Screencast and boy does it kick butt. Here’s my notes from watching it:

  • simply helpful plugin generates dom ids based on object’s: @thing.dom_id – more info

  • use link_to_function + rjs in the view to generate js without an ajax call. example: link_to_function "Click Me", update_page {|page| page.alert "No postback!" }

  • call custom js functions with page.call page.call "my_func_name", param, anotherparam, etc

  • consider putting custom js functions that should be globally available in public/javascripts/application.js (this is included by javascript_include_tag :defaults)

  • page.select will fetch things by id or class page.select('#tasks div a').each do |item| page.hide item end

  • use a method name in a string var as a function call page.send 'method_name', param

  • replace/replace_html for outside/inside an element with page.replace_html page.replace_html 'task_totals', @task_totals

  • insert your own custom js into the page with < < page < < "my_js_method()"

    • or - page < < %( my_js_method(); function some_other_func() { ... } )
    • or - page < < render :partial => "update_totals"
  • assign js vars with values from ruby with page.assign page.assign 'task_totals', @task_totals

  • keep users informed of ajax calls during link_to_remote calls with :loading and :complete callbacks link_to_remote "Click Me", :url => tasks_url(:action => 'hello'), :loading => "Element.show('loading_div')", :complete => "Element.hide('loading_div')"

  • use rjs directly in the controller with render :update render :update do |page| page.alert('whatever') end

  • test rjs with ARTS

Of the iPhone and Supermodels

January 12th, 2007

Today at lunch, my co-workers and I were discussing the disappointing news from Apple that they won’t allow third-party apps to be installed on iPhone, to which I exclaimed:

Not allowing you to download software onto the iPhone is like having an untouchable supermodel living in your bedroom!

Yes, Laetitia Casta is still my favorite.

rails autotest error solved

June 24th, 2006

Long story short: I was getting some strange errors when trying to use autotest with a rails app that I’m working on.

Here’s the error I got:

[note: path edited...]/action_web_service/container/action_controller_container.rb:76:in `require_web_service_api’: neither _api or _api found (NameError) [... lots more output ...] /usr/local/lib/ruby/gems/1.8/gems/ZenTest-3.2.0/lib/unit_diff.rb:196:in `unit_diff’: undefined method `first’ for nil:NilClass (NoMethodError) from /usr/local/lib/ruby/gems/1.8/gems/ZenTest-3.2.0/lib/unit_diff.rb:84:in `unit_diff’ from /usr/local/lib/ruby/gems/1.8/gems/ZenTest-3.2.0/bin/unit_diff:38 from /usr/local/bin/unit_diff:18 # Test::Unit exited without a parseable failure or error message. # You probably have a syntax error in your code. # I’ll retry in 10 seconds

I managed to fix it by rebuilding my entire rails environment using the helpful instructions linked to from the rails site. Thanks Hivelogic!