On our first afternoon in Napa, my mom and I paid a visit to an old favorite: Bistro Jeanty. Bistro Jeanty sits on Washington Street in Yountville, one of a few restaurants that make up what is quite possible the best couple of blocks for food in the entire world: The French Laundry, Bouchon, Bouchon Bakery, Bistro Jeanty and Ad Hoc. They're all right there; you could, theoretically, spend the entire day just eating, never walking more than a couple hundred feet between meals. (Someone's probably done it; if not, get on it, people with stomachs of steel!)
Bistro Jeanty opened in 1998, and has been packed to the gills for pretty much every meal ever since then. It's a bistro in the classic French style, serving perfect versions of all the dishes you've ever loved from that genre, including vol-au-vent made with sweetbreads and braised rabbit, cassoulet and daube de boeuf. On our visit, I decided to go for two smaller dishes, starting with one of my favorite things: frisée aux lardons salad.
Bistro Jeanty's version is served as a perfect poached egg perched atop a tangle of frisée and teeny, just-this-side-of-crunchy pieces of bacon. The vinaigrette itself is deliciously smoky; I wouldn't be at all surprised if this were due to a pinch or two of bacon fat in the dressing. In fact, I hope it is, because I plan to copy it.
Next up, one of the day's specials: pieds de cochon. When I ordered this as my main, the waiter cautioned me that it was an appetizer; was I sure I wanted such a small portion for my lunch? I assured him it would be fine, and was soon vindicated by the arrival of a dish accompanied by mashed potatoes. Anything that comes with mashed potatoes simply is not an appetizer!
Regardless of how you classify it, this was a delicious dish. Pieds de cochon does, in fact, mean pig's feet, and consists of the random bits of meat from the trotters, bound together in a kind of charcuterie not too different from headcheese. It's not unusual to see it served lightly breaded and fried, as this version was. It was very rich, and seasoned with tiny bits of black truffle. In face, I don't think I could have handled a bigger portion; it was perfect as it was.
For dessert, Mom and split what has to be one of springtime's great treats: fresh strawberries with creme fraiche and brown sugar. The tangy cream, the sweet berries and the molasses flavored sugar all combine into a little piece of heaven. If you've never had a chance to enjoy this combination, do it now - especially since strawberry season, at least on the East Coast, is at its height.
Bistro Jeanty
6510 Washington Street
Yountville, California
707.944.0103
I've written about the Bo Ssäm dinner at Momofuku Ssäm many, many times, so I'm not going to bore you all with yet another recap. If you're interested in details, you can check out my past reports here (2009) and here (2007).
What was notable about my most recent trip, though, was that was finally able to get decent photos of the goings-on. Finally! So enjoy the food porn, and I hope you have porkified dreams.
SAP BusinessObjects BI OnDemand is a cloud based offering of BI solutions. I have mentioned about this in my earlier post. Today, just to get familiar, I tried few things. I signed up for the BI OnDemand Personal Edition which is free.
I created data sets by uploading couple of spreadsheets viz. Customer_Data and Customers_Reservations.

It's a long weekend here in the States (Memorial Day is Monday.), and I am psyched to enjoy three full days of cooking with strawberries, rhubarb and snap peas. (I also have to clean the apartment, but let's not talk about that, mmmkay?) Before the cooking fest can begin, I simply must share some cool things from my week's wanderings.
First of all, this. What's this, you ask? This is my perfect kitchen. Rustic yet modern. Lots of workspace, but also a big old farmhouse table where people can gather to talk, read, whatever. This. This is what I want. This, this, this. (It is, as usual, courtesy of one of Design*Sponge's amazing sneak peeks.)
The wedding I went to last weekend had the most adorable arrangements on the tables, little groupings of peonies in milk-glass and hobnail vases. When I got home, I promptly starting combing Etsy for sources so I could imitate the cuteness, and found the amazing Jadite Kate, a store specializing in vintage glassware. You can now rest assured that my perfectly modern/rustic kitchen will be fully decked out in a collection of everything Kate has on offer.
One thing I haven't been willing to consider for my rental is wallpaper. But man, I do love it. I'm imagining various entryways papered in Abigail Borg's incredible designs, and digging it. Her designs are luscious and luxurious, and have price tags to match. But, since this is just a fantasy - for now, at least - I'm cool with that.
Since this is a long weekend, I thought a little extra Treasury action would be good for us all. And since we're marking the unofficial start of summer, I thought Mélangerie's State-by-Food tote bag - perfect for carrying your farmer's market purchases to and fro - was the perfect pick. I absolutely love this bag, with its whimsical drawings of foods native to or representative of each of the 50 states. My home state of Connecticut rocks its hamburger, while my adopted home of New York is identified by the bagel.
I've taken for granted that doing work I'm passionate about will also make me more productive and effective. I hear variations on this idea all the time (most recently in a talk by Seth Godin, as described in my last post).
I was pleasantly surprised, then, to stumble on a contradictory TED talk by Mike Rowe of Discovery Channel's popular show Dirty Jobs. If you haven't seen the show, Mike Rowe travels the country spending a day in the life of someone doing hands-on manual labor, respectfully highlighting the humorous side of unglamorous and often unseen jobs that are nonetheless very necessary.
Mike Rowe claims that the admonishment to 'follow your passion' was the worst career advice he ever got. In 4 years of taping the show, he has seen people do well personally and financially by taking on jobs that no one else wants to do. He speaks to the dignity and value of work that is not high profile or creative, but which makes the "big ideas" feasible to implement and scale. We celebrate the innovation of the iPhone, for example, while forgetting the people and effort required to produce iPhones in volume at high quality, or deliver them to stores. We devalue manual work and steer young people away from skilled trades, such as plumbing or welding.
As an IT professional, I see that strategy, design and new "greenfield" development with the latest technology is often seen as the most exciting and prestigious. We rarely celebrate the challenging work required to maintain and support existing systems that allow core business processes to function, thoroughly test new changes, or promptly resolve issues to get end users back to work. Its a good reminder to me to appreciate all the important work that others do to make my work easier, and find meaning even in the mundane aspects of my job that have impact "behind the scenes".
I was walking home from my gym in Harlem last week, when I overheard an African American man say the following to whom I presumed to be his girlfriend on the the other side of the phone: "White women got money, they sure got money. But don't worry, I will never leave my Nubian queens."

On the Thursday night I spent in San Francisco, Mom, Faith and I paid a visit - a pilgrimage, really - to the legendary Zuni Café on Market Street. Zuni opened in 1979, and Judy Rodgers became the chef there in in 1987. She's the one who installed the brick oven that sits in the heart of the space, and she's the one who created what turned out to be the best roast chicken I have ever eaten.
Seriously.
This chicken was insane. Moist, rich, full of flavor, and served with a warm bread salad that put every single helping of stuffing I've ever enjoyed into an entirely subpar category.
I can't wait to recreate this one myself; I'll be following Smitten Kitchen's slightly simplified version of Rodgers' recipe. Join me, won't you?
Zuni Café
1658 Market Street (Between Franklin and Gough)
415.552.2522
Photo courtesy of Ann&Ming on Flickr.
Hey, kids! It's that time! Time to announce the winner of the Recipe for Love giveaway. (As you remember, our prize is a gift of an apron, a set of spatulas and a signed, hardcover copy of the latest book in the series, On the Steamy Side.
Well, good news, RADgirl...you did win! Email me at megblocker (at) gmail (dot) com with your address in order to claim your prize!
with new bookmark synchronize features, extensions, incorporation of HTML5 features etc..
http://chrome.blogspot.com/2010/05/new-chrome-stable-release-welcome-mac.html
On the Sunday night I spent in San Francisco, Faith, her friend Chrysanthe and I headed over to the Mission to pay a visit to one of the hottest restaurants in town, Flour and Water. Seriously. This place was hopping. We called early in the week to try for a reservation, but no luck. We lined up at 5:15 with about twenty other people, and the place was full from opening till, I assume, closing time at midnight. (Which is pretty late for San Francisco.)
Once we'd eaten our dinner, though, it was easy to see why everyone else wanted to eat there, too. It was one of the best meals I've had in a while, and I cannot wait to make a return trip. We started off with a pizza to share. Flour and Water is Italian, mostly, and heavily focused on pizza and pasta (hence the name). Faith had been the week before and couldn't stop thinking about the ramp and black trumpet pizza, so, naturally, we couldn't help but order it.
It was awesome. The crust was chewy, slightly crispy perfection. The pizza was topped with a pecorino, black trumpet mushrooms, chopped ramps (green and white parts) and a bright green ramp pesto. It was suitably stinky, the cheese was gooey, and the whole thing made me very, very happy.
We then moved on to appetizers. Faith ordered a side dish instead of a salad: roasted carrots with lemon, capers and very finely chopped chives. These were carrots taken to another level. They were roasted in butter, and were sweet without being cloying, tender but not mushy. The capers added a salty, briny note, and the chives freshened things up. All in all, a major hit.
My starter was a "salad" - Flour and Water likes to use the term loosely - of crispy lamb sweetbreads, arugula and artichokes. Artichokes aren't normally my favorite thing, but these were perfect with the sweetbreads. Lamb sweetbreads tend to be a bit creamier than their veal counterparts, and these were no exception. The bitterness of the arugula paired with the astringent flavor of the artichokes helped cut through the fat. Fantastic.
Next up, our pastas. The pastas were all made in-house, and were incredibly fresh. Mine was a tagliolini (a lighter fettucine, essentially) with chopped parsley rolled into the pasta itself. Tossed with the noodles (and with a copious amount of butter) were razor thin slices of asparagus and hand-pulled pieces of braised hen. I loved this. The pasta was impossibly light and delicate, but the sauce, despite its springy flavors, was rich and hearty. Rich flavors, light texture, pure deliciousness.
Faith ordered pici in a brothy pork ragu, which was also delicious. It was one of the lightest ragus I've tasted, free of cream or milk, and swimming in its own juices. Little bits of carrot and onion floated in the sauce, too, and meat itself was tender and deeply porky.
Finally, dessert. Oh, dessert. First up was a rhubarb tart, served with crème fraiche ice cream and fresh strawberries. It was fantastic, right down to the swirl of grassy olive oil on the plate. The pastry was rich with butter, and shattered a bit when cut with a fork. It paired beautifully with the tart rhubarb and sweet berries; rhubarb season has ended in California now, I think - it was great to be there while it was still on every menu.
Last, we had a chocolate budino, which is an Italian-style pudding. It was topped with coffee-flavored cream and a crucial, generous sprinkling of crunchy sea salt. I don't always go for the chocolate dessert, but I couldn't get enough of this one. The salt and coffee made it interesting - and it was pretty good with some of the crème fraiche ice cream from the tart plate. Yum.
Guys, I can't speak highly enough of this restaurant. It was a delicious meal. The service was great - attentive but not fawning, and very, very friendly. The room is warm and welcoming, with just the right amount of buzz. If you can get in, go. If you can't, go early and wait, like we did. It's worth it.
Flour and Water
2401 Harrison Street (at 20th Street)
San Francisco, California
415.826.7000
When I planned my trip to California, I had to make sure to leave time to spend a full day with my amazing friend Faith. She's one of the coolest people I know, and so I'd never confessed to her my burning desire to visit Alcatraz Island, a.k.a The Rock, a.k.a. the most touristy destination in all of San Francisco. Imagine my surprise, then, when Faith herself suggested we take the ferry out to Alcatraz on Monday afternoon! Turns out she'd never been, either, and we decided it was just the thing to do.
We booked on Sunday night (though, if you're going during the summer or on a weekend, I recommend booking at least a couple of weeks in advance) and boarded the 1:10 ferry on Monday afternoon. It was a gray, drizzly day - very atmospheric, and very bad for the hair.Very few of the buildings on the island have been fully restored, which gives the place a crumbling, slowly-returning-to-nature feel. Lots of rust, crumbling masonry and creeping, misty greenery gives it a slightly abandoned air. The island has been continuously occupied since the mid-nineteenth century, first as a fort, then as a military prison, and finally as the infamous federal penitentiary, home to Robert Stroud and Al Capone, among others.
Everyone I talked to about Alcatraz had the same recommendation: take the audio tour. They were absolutely right. While audio tours can sometimes be a cheesy undertaking, Alcatraz's is narrated by a group of former guards and inmates, and is seriously interesting. In fact, it's almost too academic - I was kind of hoping for ghost stories and general creepiness, but got mostly hard-boiled narrations. It was like Raymond Chandler wrote the script himself.One of my favorite bits of trivia came at the end of the audio tour, in the dining hall. The knives were hung on a board painted with their silhouettes, which reminded me of Julia Child's iconic pegboard. Of course, in this case, the utility of the silhouette was a bit different; ease of access wasn't the issue. Being able to quickly spot a missing knife - potentially stolen by an inmate - was.
The most unexpected thing about Alcatraz, for me, was the beauty of the island itself. I absolutely loved the different textures and states of decay to be found all over the place, and couldn't get enough of the succulent gardens (originally planted by the families of the guards who lived on-island in the 1950s and 1960s). (To see all of my photos from the day, click on over to my Flickr account.)
The weather was a bit spotty, but we were lucky enough to have a few fog-free moments to view the beautiful San Francisco skyline through the mist. If there's a city that does more to marry architecture with its unique geography, I've yet to visit it.
Sigh.
Sunday afternoons are usually my preferred time to catch-up on my Youtube subscriptions. I put that to good use today, by checking out Google I/O - 2010.
Vic Gundotra's interpretation of I/O (as in Google I/O) as "Innovation in the Open" pretty much set the tone for the event. As expected Google bundled a slew of new technologies like Open Media Project, GoogleTV, GWT 2.1 + Roo and renewed support for existing technologies like HTML5 and Google Wave etc. In the process Vic Gundotra and team took every opportunity to make subtle innuendos at apple's perceived "closed-technology" stack, skillfully showed solidarity with troubled tech players like Adobe and Opera and lined-up an impressive panel of venerable CEOs for support of GoogleTV.
To me, the launch of Android 2.2 was the key announcement. Here are the salient features of Android 2.2:
- New JIT compiler to the Dalvic VM - resulting in 3X speed
- Tethering
- New APIs - Cloud-to-device messaging, data backup
- Updated web browser - with V8 engine, HTML5 support, Support for Flash 10.1 and access to more and more native apis
- 20 new enterprise oriented features, integration with MS Exchange server
- Updates to AppStore : Installing apps directly on SD Card, AppStore accessible from PC
- AdSense for Mobile Apps
My take, Google continues to maintain it's leadership position to define the future of the Web.
Some may argue that Google has lost focus by trying to attempt too many things at the same time. But to me there is always a method to the madness. Having already attained absolute control of online advertising, Google is lining up products aimed at the way people will consume the web in future i.e Mobile (android), entertainment (GoogleTV, YouTube) and traditional PC based access (with Google Wave, Google App Engine) etc. Many of these technologies are bound to fade into the oblivion, but I am sure at least one of these technologies will stand the test of time and that would be a Game Changer.
Hail Google!
<u>Update June 2010:</u> I just heard from Jon Yurek in the comments below that he has, in fact, finished up the Rails 3 changes for Paperclip. This means that you can now just install Paperclip as usual in a Rails 3 app as a plugin:
$ rails plugin install git://github.com/thoughtbot/paperclip.git
... or as a gem by adding it to your Gemfile if you’ve already installed it with “gem install paperclip:”
source 'http://rubygems.org' gem 'rails', '3.0.0.beta3' # Bundle edge Rails instead: # gem 'rails', :git => 'git://github.com/rails/rails.git'gem 'paperclip'
I’ll leave my original article here as a reference – it was a fun learning experience trying out Paperclip with Rails 3, and the same ideas around Bundler, generators, etc., might still be helpful while using other gems or plugins with Rails 3.
To get Paperclip to work in a Rails 3 application, use this in your Gemfile:
gem 'paperclip', :git => 'git://github.com/thoughtbot/paperclip.git', :branch => 'rails3'
… and this in application.rb:
module YourPaperclipApp class Application < Rails::ApplicationPaperclip::Railtie.insertetc... end end
Right now it looks like Thoughtbot is finishing Rails 3 related changes in a “rails3” branch in their Paperclip github repository. The best thing to do if you have a Paperclip app you want to migrate to Rails 3 is simply to wait a bit longer for them to finish that work, test it and merge it back into the master branch.
The rest of this article is really not about Paperclip at all, but about Rails 3. Here’s what I learned about Rails 3 while troubleshooting Paperclip:
$ ruby -v ruby 1.8.7 (2010-01-10 patchlevel 249) [i686-darwin9.8.0] $ rails -v Rails 3.0.0.beta3
And next I’ll create a sample app to use with Paperclip:
$ rails paperclip-sample-app
create
create README
create .gitignore
create Rakefile
create config.ru
create Gemfile
create app
create app/controllers/application_controller.rb
etc…Now we’re ready to install Paperclip into my new app. But what should I do exactly? Should I use Paperclip as a plugin or a gem? I wasn’t sure what to do, so I simply tried both.
Fact 1: the command line has changed
First let’s install it as a plugin, since that’s the most straightforward. In Rails 3 the plugin install command has changed a bit vs. Rails 2.x:
$ cd paperclip-sample-app $ rails plugin install git://github.com/thoughtbot/paperclip.git Initialized empty Git repository in .../vendor/plugins/paperclip/.git/ remote: Counting objects: 77, done. remote: Compressing objects: 100% (68/68), done. remote: Total 77 (delta 12), reused 20 (delta 0) Unpacking objects: 100% (77/77), done. From git://github.com/thoughtbot/paperclip * branch HEAD -> FETCH_HEAD
Next let’s use scaffolding to create a “User” model with a couple of attributes:
$ rails generate scaffold user name:string email:string
invoke active_record
create db/migrate/20100521034815_create_users.rb
create app/models/user.rb
invoke test_unit
create test/unit/user_test.rb
create test/fixtures/users.yml
route resources :users
invoke scaffold_controller
create app/controllers/users_controller.rb
invoke erb
create app/views/users
create app/views/users/index.html.erb
etc…
$ rake db:migrateFact 2: plugin generators have moved
The next step is to create a second migration for the additional database columns required by Paperclip. To make this easy, Paperclip provides a “paperclip” generator; let’s try that and specify that we want an “avatar” file attachment saved on the user model:
$ rails generate paperclip user avatar Could not find generator paperclip.
Uhh… not what I expected. It looks like something has changed about Rails 3 generators that has broken the Paperclip generator. For now, let’s take a look at the Paperclip code to see if we can find the generator:
$ find vendor/plugins/paperclip -name *generator* vendor/plugins/paperclip/generators vendor/plugins/paperclip/generators/paperclip/paperclip_generator.rb
There it is… After some research, I found out that for Rails 3, plugin/gem generators need to be located inside a folder called “BASE_DIR/lib/generators” – we can see here that the Paperclip generator needs to be moved in order to comply with this new standard.
Fact 3: Rails 2.x generators don’t work at all
So let’s try just moving it and see what happens:
mv vendor/plugins/paperclip/generators vendor/plugins/paperclip/lib/. $ rails generate paperclip user avatar [WARNING] Could not load generator "generators/paperclip/paperclip_generator" because it's a Rails 2.x generator, which is not supported anymore. Error: uninitialized constant Rails::Generator.
Things are looking worse and worse! It turns out that the generators architecture for Rails 3 has been completely rewritten, and that generators written for Rails 2.x will simply not work at all in Rails 3. What to do now? Of course, I could simply hand code the migration for adding the avatar columns to the users table, and continue to work on my sample application. Instead, I decided to give up on the plugin entirely and to try using Paperclip as a gem.
Fact 4: You use Bundler and a “Gemfile” to declare gems
Let’s take a look at how gems are installed for a Rails 3 app. Rails 3 uses a new file called the “Gemfile,” which specifies which gems should be included in your application. This file is read and used by Bundler, which manages gems and their dependencies. We can specify that our application uses the Paperclip gem by adding a single line to the Gemfile like this:source 'http://rubygems.org' gem 'rails', '3.0.0.beta3' # Bundle edge Rails instead: # gem 'rails', :git => 'git://github.com/rails/rails.git'gem 'paperclip'etc…
This simply tells Bundler to install Paperclip from your default gem source: probably rubygems.org. Now I’ll delete the plugin I installed earlier and install the gem, using the “bundle install” command to install all of the gems in my Gemfile:
$ rm -rf vendor/plugins/paperclip/ $ bundle install Fetching source index from http://rubygems.org/ Using rake (0.8.7) from system gems Using abstract (1.0.0) from bundler gems etc… Installing paperclip (2.3.1.1) from rubygems repository at http://rubygems.org/ etc…
Bundler indicated that it found the official version of Paperclip on rubygems.org, downloaded and installed it. It also told us we have version 2.3.1.1. Let’s use the bundle show command and take a look at where Paperclip was installed to:
$ bundle show paperclip /Users/pat/.rvm/gems/ruby-1.8.7-p249/gems/paperclip-2.3.1.1
Bundler simply installed the gem in the standard location where all my other gems are located for my RVM version of Ruby 1.8.7, just as if I had run a gem install command manually. Now let’s try that generate command again and see if it works any better:
$ rails generate paperclip user avatar DEPRECATION WARNING: RAILS_ROOT is deprecated! Use Rails.root instead. (called from expand_path at /Users/pat/.rvm/gems/ruby-1.8.7-p249/gems/paperclip-2.3.1.1/lib/paperclip.rb:39) /Users/pat/.rvm/gems/ruby-1.8.7-p249/gems/paperclip-2.3.1.1/lib/paperclip.rb:39:in `expand_path': can't convert #<class:0x16a87d0> into String (TypeError) from /Users/pat/.rvm/gems/ruby-1.8.7-p249/gems/paperclip-2.3.1.1/lib/paperclip.rb:39 from /Users/pat/.rvm/gems/ruby-1.8.7-p249/gems/bundler-0.9.25/lib/bundler/runtime.rb:46:in `require' from /Users/pat/.rvm/gems/ruby-1.8.7-p249/gems/bundler-0.9.25/lib/bundler/runtime.rb:46:in `require' from /Users/pat/.rvm/gems/ruby-1.8.7-p249/gems/bundler-0.9.25/lib/bundler/runtime.rb:41:in `each'
Still broken! It looks like I’m just not running code that was intended to be used with Rails 3.
Fact 5: You can install a gem from a specific git repository branch
After more investigation, I noticed that there had been a lot of recent changes to the Paperclip github repository. At the time I wrote this, Thoughtbot was actively developing on a branch called “rails3.” I decided the best thing to do would be to try the code from the rails3 branch, hoping it might work better for me. Bundler makes this easy, since you can just specify git as a source for downloading a gem using a “git” option, as well as optionally a specific branch using a “branch” option, like this:
source 'http://rubygems.org' gem 'rails', '3.0.0.beta3' # Bundle edge Rails instead: # gem 'rails', :git => 'git://github.com/rails/rails.git'gem 'paperclip', :git => 'git://github.com/thoughtbot/paperclip.git', :branch => 'rails3'etc …
After saving this change to Gemfile, let’s re-run the bundle install command:
$ bundle install Updating git://github.com/thoughtbot/paperclip.git Fetching source index from http://rubygems.org/ Updating git://github.com/thoughtbot/paperclip.git Using rake (0.8.7) from system gems Using abstract (1.0.0) from bundler gems …etc… Using paperclip (2.3.2.beta1) from git://github.com/thoughtbot/paperclip.git (at rails3)
Hmm… interesting. Bundler is showing that it’s downloaded Paperclip from the github repository, and that it got the code at the head of the rails3 branch. Another interesting detail here is that I apparently now have version “2.3.2 beta1” of Paperclip. This is a good sign, since I have a more recent version than 2.3.1.1 (the rubygems.org version) and also it seems that Thoughtbot is actively working on it since it’s labeled “beta1.”
If we run bundle show again, we can see that Bundler has saved a special copy of Paperclip downloaded from github, along with the git commit id and branch of the version I have:
$ bundle show paperclip
/Users/pat/.rvm/gems/ruby-1.8.7-p249/bundler/gems/paperclip-61f74de14812cabc026967a2b2c3ca8cbd2eed69-rails3Now let’s try that generator once more:
$ rails generate paperclip user avatar
create db/migrate/20100521003113_add_attachment_avatar_to_user.rbYes! It’s working now!
Fact 6: Rails 3 frameworks are now based on Rails::Railtie
Let’s continue to put together my sample application by running the migration:
$ rake db:migrate
… and by editing my User model to call “has_attached_file:”
class User < ActiveRecord::Base has_attached_file :avatar end
Before I start editing my views and adding the code to upload and display the avatar attachment, let’s start the server and see if Paperclip is working. Opening the users index page I get…

… more trouble! I’m definitely having a bad day… what now? Well it seems that Paperclip is just not being loaded at all, or is being initialized improperly for some reason. At this point I started to poke around the Paperclip source code a bit, and found that the code that includes the Paperclip module into ActiveRecord::Base was moved and is no longer being called. Since Paperclip is not included in my User/ActiveRecord class I get the error has_attached_file not defined, since that’s defined by Paperclip.
I found the include code in a file called “lib/paperclip/railtie.rb:”
require 'paperclip' module Paperclip if defined? Rails::Railtie require 'rails' class Railtie < Rails::Railtie config.after_initialize do Paperclip::Railtie.insert end end end class Railtie def self.insert ActiveRecord::Base.send(:include, Paperclip) File.send(:include, Paperclip::Upfile) end end end
I’m not quite sure what Thoughtbot’s plans are for Paperclip, but if you take some time to read through Yehuda Katz’s write up Rails and Merb Merge: Rails Core (Part 4 of 6), you’ll learn about how Rails frameworks like ActiveRecord and ActiveController have been recast as instances of this “Rails::Railtie” class. Possibly Paperclip will become one of these. Rails 3 has a new API for declaring how Railties are loaded and initialized, but it looks like this version of Paperclip and this version of Rails aren’t quite working correctly now.
Fact 7: Bundler does not call rails/init.rb in each gem
For now, the problem I’m having in my sample application is that the Paperclip::Railtie.insert method is not being called – the two lines I highlighted above need to be executed in order to enable “has_attached_file” to be present as a class method for ActiveRecord models. To make things more interesting, Thoughtbot did include a call to insert inside rails/init.rb, like this:
require 'paperclip/railtie' Paperclip::Railtie.insert
… but for Rails 3, it turns out that Bundler no longer calls rails/init.rb.
Moving this line instead to config/application.rb will solve the problem:
module PaperclipSampleApp class Application < Rails::Application Paperclip::Railtie.insert etc… end end
Alternatively, you could just create a file called “config/initializers/paperclip.rb” and put the call to insert there.
Now reloading the users index page we finally get Paperclip to work:

Instead of proceeding with my sample app now, I’m going to wait a few weeks while Thoughtbot finishes off the Rails 3 changes for Paperclip.
I don’t think troubleshooting these problems was a waste of time at all; in fact, it was a good excuse to get my hands dirty with Rails 3 and Bundler. Once Thoughtbot has finished their changes in the rails3 branch and merged them into the master I’ll update my tutorial from last year, and also update my Paperclip fork to support database BLOB storage for Rails 3.
Happy weekend, kiddos! I'm back from California and ready to enjoy a New York summer. I know, I know - I'm jumping the gun a bit there, but it's so gorgeous right now that I can't help but think of barbecues and lazy afternoons in the park. Sigh. In the meantime, how about some seriously cool treasury picks?
First up, this Catskills home from the New York Times. I'm not in love with all of it, but I'll be damned if this great room isn't a thing of beauty. The owner has dealt with knotty pine in the only acceptable manner: paint that stuff white. And the results are spectacular.
Next, a seriously amazing shop full of more painted wood - this time, though, we're talking gilt paint, and I'm in love (with a store named cabin 7). I'm trying really, really hard to be a good girl and not buy any more, well, stuff - but these MERCI alphabet blocks are calling my name. You can hear it too, right?
Finally, via the sharply witty and full-of-perfect-taste blog Design Blahg, we have custom Sigg bottles. You choose a design and add your custom text, they put it on a bottle, and you give one of the coolest gifts ever. I'm currently pondering what my bottle will say. Any ideas?

Last week my wife and I visited Thailand. In the tour, we got a chance to visit Tiger Temple near Bangkok. Yes ... the thrill was patting real tigers. Tiger Temple, or Wat Pha Luang Ta Bua, is a Buddhist temple in Western Thailand where tourists can actually touch/pat the tigers in open area. It was a great experience in watching the real tigers staying with men and how the people take care of them. The tigers are handled by Thai monks, volunteers and the local staff.
Sharing few photos ...


<u>Update June 2010:</u> I just heard from Jon Yurek in the comments below that he has, in fact, finished up the Rails 3 changes for Paperclip. This means that you can now just install Paperclip as usual in a Rails 3 app as a plugin:
$ rails plugin install git://github.com/thoughtbot/paperclip.git
... or as a gem by adding it to your Gemfile if you’ve already installed it with “gem install paperclip:”
source 'http://rubygems.org' gem 'rails', '3.0.0.beta3' # Bundle edge Rails instead: # gem 'rails', :git => 'git://github.com/rails/rails.git'gem 'paperclip'
I’ll leave my original article here as a reference – it was a fun learning experience trying out Paperclip with Rails 3, and the same ideas around Bundler, generators, etc., might still be helpful while using other gems or plugins with Rails 3.
To get Paperclip to work in a Rails 3 application, use this in your Gemfile:
gem 'paperclip', :git => 'git://github.com/thoughtbot/paperclip.git', :branch => 'rails3'
… and this in application.rb:
module YourPaperclipApp class Application < Rails::ApplicationPaperclip::Railtie.insertetc... end end
Right now it looks like Thoughtbot is finishing Rails 3 related changes in a “rails3” branch in their Paperclip github repository. The best thing to do if you have a Paperclip app you want to migrate to Rails 3 is simply to wait a bit longer for them to finish that work, test it and merge it back into the master branch.
The rest of this article is really not about Paperclip at all, but about Rails 3. Here’s what I learned about Rails 3 while troubleshooting Paperclip:
$ ruby -v ruby 1.8.7 (2010-01-10 patchlevel 249) [i686-darwin9.8.0] $ rails -v Rails 3.0.0.beta3
And next I’ll create a sample app to use with Paperclip:
$ rails paperclip-sample-app
create
create README
create .gitignore
create Rakefile
create config.ru
create Gemfile
create app
create app/controllers/application_controller.rb
etc…Now we’re ready to install Paperclip into my new app. But what should I do exactly? Should I use Paperclip as a plugin or a gem? I wasn’t sure what to do, so I simply tried both.
Fact 1: the command line has changed
First let’s install it as a plugin, since that’s the most straightforward. In Rails 3 the plugin install command has changed a bit vs. Rails 2.x:
$ cd paperclip-sample-app $ rails plugin install git://github.com/thoughtbot/paperclip.git Initialized empty Git repository in .../vendor/plugins/paperclip/.git/ remote: Counting objects: 77, done. remote: Compressing objects: 100% (68/68), done. remote: Total 77 (delta 12), reused 20 (delta 0) Unpacking objects: 100% (77/77), done. From git://github.com/thoughtbot/paperclip * branch HEAD -> FETCH_HEAD
Next let’s use scaffolding to create a “User” model with a couple of attributes:
$ rails generate scaffold user name:string email:string
invoke active_record
create db/migrate/20100521034815_create_users.rb
create app/models/user.rb
invoke test_unit
create test/unit/user_test.rb
create test/fixtures/users.yml
route resources :users
invoke scaffold_controller
create app/controllers/users_controller.rb
invoke erb
create app/views/users
create app/views/users/index.html.erb
etc…
$ rake db:migrateFact 2: plugin generators have moved
The next step is to create a second migration for the additional database columns required by Paperclip. To make this easy, Paperclip provides a “paperclip” generator; let’s try that and specify that we want an “avatar” file attachment saved on the user model:
$ rails generate paperclip user avatar Could not find generator paperclip.
Uhh… not what I expected. It looks like something has changed about Rails 3 generators that has broken the Paperclip generator. For now, let’s take a look at the Paperclip code to see if we can find the generator:
$ find vendor/plugins/paperclip -name *generator* vendor/plugins/paperclip/generators vendor/plugins/paperclip/generators/paperclip/paperclip_generator.rb
There it is… After some research, I found out that for Rails 3, plugin/gem generators need to be located inside a folder called “BASE_DIR/lib/generators” – we can see here that the Paperclip generator needs to be moved in order to comply with this new standard.
Fact 3: Rails 2.x generators don’t work at all
So let’s try just moving it and see what happens:
mv vendor/plugins/paperclip/generators vendor/plugins/paperclip/lib/. $ rails generate paperclip user avatar [WARNING] Could not load generator "generators/paperclip/paperclip_generator" because it's a Rails 2.x generator, which is not supported anymore. Error: uninitialized constant Rails::Generator.
Things are looking worse and worse! It turns out that the generators architecture for Rails 3 has been completely rewritten, and that generators written for Rails 2.x will simply not work at all in Rails 3. What to do now? Of course, I could simply hand code the migration for adding the avatar columns to the users table, and continue to work on my sample application. Instead, I decided to give up on the plugin entirely and to try using Paperclip as a gem.
Fact 4: You use Bundler and a “Gemfile” to declare gems
Let’s take a look at how gems are installed for a Rails 3 app. Rails 3 uses a new file called the “Gemfile,” which specifies which gems should be included in your application. This file is read and used by Bundler, which manages gems and their dependencies. We can specify that our application uses the Paperclip gem by adding a single line to the Gemfile like this:source 'http://rubygems.org' gem 'rails', '3.0.0.beta3' # Bundle edge Rails instead: # gem 'rails', :git => 'git://github.com/rails/rails.git'gem 'paperclip'etc…
This simply tells Bundler to install Paperclip from your default gem source: probably rubygems.org. Now I’ll delete the plugin I installed earlier and install the gem, using the “bundle install” command to install all of the gems in my Gemfile:
$ rm -rf vendor/plugins/paperclip/ $ bundle install Fetching source index from http://rubygems.org/ Using rake (0.8.7) from system gems Using abstract (1.0.0) from bundler gems etc… Installing paperclip (2.3.1.1) from rubygems repository at http://rubygems.org/ etc…
Bundler indicated that it found the official version of Paperclip on rubygems.org, downloaded and installed it. It also told us we have version 2.3.1.1. Let’s use the bundle show command and take a look at where Paperclip was installed to:
$ bundle show paperclip /Users/pat/.rvm/gems/ruby-1.8.7-p249/gems/paperclip-2.3.1.1
Bundler simply installed the gem in the standard location where all my other gems are located for my RVM version of Ruby 1.8.7, just as if I had run a gem install command manually. Now let’s try that generate command again and see if it works any better:
$ rails generate paperclip user avatar DEPRECATION WARNING: RAILS_ROOT is deprecated! Use Rails.root instead. (called from expand_path at /Users/pat/.rvm/gems/ruby-1.8.7-p249/gems/paperclip-2.3.1.1/lib/paperclip.rb:39) /Users/pat/.rvm/gems/ruby-1.8.7-p249/gems/paperclip-2.3.1.1/lib/paperclip.rb:39:in `expand_path': can't convert #<class:0x16a87d0> into String (TypeError) from /Users/pat/.rvm/gems/ruby-1.8.7-p249/gems/paperclip-2.3.1.1/lib/paperclip.rb:39 from /Users/pat/.rvm/gems/ruby-1.8.7-p249/gems/bundler-0.9.25/lib/bundler/runtime.rb:46:in `require' from /Users/pat/.rvm/gems/ruby-1.8.7-p249/gems/bundler-0.9.25/lib/bundler/runtime.rb:46:in `require' from /Users/pat/.rvm/gems/ruby-1.8.7-p249/gems/bundler-0.9.25/lib/bundler/runtime.rb:41:in `each'
Still broken! It looks like I’m just not running code that was intended to be used with Rails 3.
Fact 5: You can install a gem from a specific git repository branch
After more investigation, I noticed that there had been a lot of recent changes to the Paperclip github repository. At the time I wrote this, Thoughtbot was actively developing on a branch called “rails3.” I decided the best thing to do would be to try the code from the rails3 branch, hoping it might work better for me. Bundler makes this easy, since you can just specify git as a source for downloading a gem using a “git” option, as well as optionally a specific branch using a “branch” option, like this:
source 'http://rubygems.org' gem 'rails', '3.0.0.beta3' # Bundle edge Rails instead: # gem 'rails', :git => 'git://github.com/rails/rails.git'gem 'paperclip', :git => 'git://github.com/thoughtbot/paperclip.git', :branch => 'rails3'etc …
After saving this change to Gemfile, let’s re-run the bundle install command:
$ bundle install Updating git://github.com/thoughtbot/paperclip.git Fetching source index from http://rubygems.org/ Updating git://github.com/thoughtbot/paperclip.git Using rake (0.8.7) from system gems Using abstract (1.0.0) from bundler gems …etc… Using paperclip (2.3.2.beta1) from git://github.com/thoughtbot/paperclip.git (at rails3)
Hmm… interesting. Bundler is showing that it’s downloaded Paperclip from the github repository, and that it got the code at the head of the rails3 branch. Another interesting detail here is that I apparently now have version “2.3.2 beta1” of Paperclip. This is a good sign, since I have a more recent version than 2.3.1.1 (the rubygems.org version) and also it seems that Thoughtbot is actively working on it since it’s labeled “beta1.”
If we run bundle show again, we can see that Bundler has saved a special copy of Paperclip downloaded from github, along with the git commit id and branch of the version I have:
$ bundle show paperclip
/Users/pat/.rvm/gems/ruby-1.8.7-p249/bundler/gems/paperclip-61f74de14812cabc026967a2b2c3ca8cbd2eed69-rails3Now let’s try that generator once more:
$ rails generate paperclip user avatar
create db/migrate/20100521003113_add_attachment_avatar_to_user.rbYes! It’s working now!
Fact 6: Rails 3 frameworks are now based on Rails::Railtie
Let’s continue to put together my sample application by running the migration:
$ rake db:migrate
… and by editing my User model to call “has_attached_file:”
class User < ActiveRecord::Base has_attached_file :avatar end
Before I start editing my views and adding the code to upload and display the avatar attachment, let’s start the server and see if Paperclip is working. Opening the users index page I get…

… more trouble! I’m definitely having a bad day… what now? Well it seems that Paperclip is just not being loaded at all, or is being initialized improperly for some reason. At this point I started to poke around the Paperclip source code a bit, and found that the code that includes the Paperclip module into ActiveRecord::Base was moved and is no longer being called. Since Paperclip is not included in my User/ActiveRecord class I get the error has_attached_file not defined, since that’s defined by Paperclip.
I found the include code in a file called “lib/paperclip/railtie.rb:”
require 'paperclip' module Paperclip if defined? Rails::Railtie require 'rails' class Railtie < Rails::Railtie config.after_initialize do Paperclip::Railtie.insert end end end class Railtie def self.insert ActiveRecord::Base.send(:include, Paperclip) File.send(:include, Paperclip::Upfile) end end end
I’m not quite sure what Thoughtbot’s plans are for Paperclip, but if you take some time to read through Yehuda Katz’s write up Rails and Merb Merge: Rails Core (Part 4 of 6), you’ll learn about how Rails frameworks like ActiveRecord and ActiveController have been recast as instances of this “Rails::Railtie” class. Possibly Paperclip will become one of these. Rails 3 has a new API for declaring how Railties are loaded and initialized, but it looks like this version of Paperclip and this version of Rails aren’t quite working correctly now.
Fact 7: Bundler does not call rails/init.rb in each gem
For now, the problem I’m having in my sample application is that the Paperclip::Railtie.insert method is not being called – the two lines I highlighted above need to be executed in order to enable “has_attached_file” to be present as a class method for ActiveRecord models. To make things more interesting, Thoughtbot did include a call to insert inside rails/init.rb, like this:
require 'paperclip/railtie' Paperclip::Railtie.insert
… but for Rails 3, it turns out that Bundler no longer calls rails/init.rb.
Moving this line instead to config/application.rb will solve the problem:
module PaperclipSampleApp class Application < Rails::Application Paperclip::Railtie.insert etc… end end
Alternatively, you could just create a file called “config/initializers/paperclip.rb” and put the call to insert there.
Now reloading the users index page we finally get Paperclip to work:

Instead of proceeding with my sample app now, I’m going to wait a few weeks while Thoughtbot finishes off the Rails 3 changes for Paperclip.
I don’t think troubleshooting these problems was a waste of time at all; in fact, it was a good excuse to get my hands dirty with Rails 3 and Bundler. Once Thoughtbot has finished their changes in the rails3 branch and merged them into the master I’ll update my tutorial from last year, and also update my Paperclip fork to support database BLOB storage for Rails 3.
OK, not really. In fact, no boxes of pudding were harmed in the making of this particular dessert. But every time I think of pudding, I'm reminded of that so-funny-it-hurts sketch from The State, where Barry and Levon got, um, familiar with a serious amount of pudding. Watch it, if you like, then read on.
So, back to the pudding. The chocolate pudding you see above is a leftover cook's treat type of deal. I made this (delicious) chocolate cream pie to bring to dinner at my brother and sister-in-law's place a couple of Sundays ago, and there was just enough pudding left over to make a nice dessert for me on Monday night.
The pudding is intensely chocolatey. It bears little to no resemblance to a Jell-O pudding cup, and that's a damn good thing. You melt and blend both bittersweet and unsweetened chocolate into a homemade pudding, then add a touch of vanilla to round things out, and some butter to make them nice and smooth. It's so chocolatey, in fact, that you really do need the sweetened whipped cream to cut through the richness.
Not like I've ever needed an excuse to eat plenty of sweetened whipped cream.
Dark Chocolate Pudding
Adapted from Gourmet
5 oz. fine-quality bittersweet chocolate, chopped
4 oz. unsweetened chocolate, chopped
1 cup sugar
1/2 cup cornstarch
3/4 tsp. salt
6 large egg yolks
4 1/2 cups milk
3 tbs. unsalted butter, cut into bits and softened
1 1/2 tsp. vanilla
Sweetened whipped cream, for serving
Add the chocolates to the top of a double boiler (or just a metal bowl set over simmering water). Melt chocolates together, stirring, until smooth. Remove the bowl from heat and set aside on a trivet or pile of dishtowels to cool.
Next, in a heavy saucepan (about 3 quarts) whisk together sugar, cornstarch, salt, and egg yolks until combined well and add milk in a stream, whisking. Cook mixture slowly over moderate heat, whisking constantly.
The custard will thicken gradually, and eventually will begin to boil (You'll see bubbles pop on the surface.). Continue to whisk, keeping the mixture smooth as it thickens to a near pudding-like texture. This can take several minutes; be patient. Don't turn the heat up too high, as the custard can scald.
Once your custard is pudding-like, remove it from the heat and force it through a fine mesh sieve into a bowl. Whisk in the cooled chocolate, butter, and vanilla until smooth. Cover surface of the pudding with plastic wrap and cool completely in the refrigerator.
When ready to serve, spoon the pudding into small bowls and top - generously - with whipped cream.
Serves 6-8.
Chapter1: Off the wall I went to the 11th floor and it was a bright sunlit afternoon. The pool on the top floor mirrored the burning sky above… the water in the pool was disturbing the office decorum by kissing the walls of the pools with the help of the Loo blowing above… With the help [...]
Today we're spending time with the inimitable Lorna Yee, cookbook author and food writer. I first met Lorna through eGullet, where I spent quite a bit of time drooling over her incredible pastry creations. Since those early days, she's co-written a cookbook (The Newlywed Kitchen) and works as a food writer for Seattle Magazine. (She also has a fantastic blog, entitled The Cookbook Chronicles.) Lorna's passion for food is unmatched, except perhaps by that of her husband, Henry. But even Henry can't match her prize-winning pie.
Without further ado, here's Lorna!
How and from whom did you learn to cook?
I learned to cook Chinese food and bake from watching my mom--an incredible woman who was making her own butter puff pastry back in the 80s, without the aid of step-by-step food blogs, or the Food Network. From a young age, I watched my mom prepare elaborate Cantonese meals at home. She would save up her vacation time and take three days off work before family birthdays, just so she could shop and prepare more than ten, banquet-style dishes for our extended family.
Though my mom cooked fantastic meals for us every night, she gradually cut back on the baking. (Hard to keep up with three kids and a full-time job!) I've always loved sweets, and missed having her scrumptious coffee cakes and muffins around the kitchen. When I was about 10 years old, I took her dog-eared copy of The Five Roses Cookbook and asked if I could start baking from it. My mom kept a watchful eye over me the first few times. But even then, I had already picked up on many of the techniques she unknowingly demonstrated on evenings when I'd stand on a stool and watch her fold egg whites with a delicate flick of the wrist. I remember making a personal goal of trying a new recipe out of that cookbook every week, and I did. That's how I made my first cheese soufflé, coffee chiffon cake, and peanut butter cookies.
Do you consider yourself a baker, a cook, or a hybrid? Why?
I consider myself both a home cook and a baker. I've always had a particular fondness for baking, and the cooking bug bit a little later on--I would say perhaps around 13 or 14, after taking Home Ec. classes at school. Around this time, we also started getting Food Network up in Canada, which meant more exposure to cuisines outside of the Cantonese food we ate at home. I was motivated to learn how to cook so I could taste the food of other countries, though I was often overly ambitious. There was a particular episode of Emeril Live that featured Mario Batali making these incredible goat cheese and radicchio ravioli that I craved for days after seeing that show. I had never made pasta before, and growing up in a Chinese household, we didn't have a pasta maker. I figured I could make my own pasta and roll the dough out with a rolling pin. Four hours later, I was exhausted, covered in flour, but I had done it--a perfectly respectable bowl of ravioli, filled with tangy, creamy goat cheese, the richness counteracted by the bitter bite of radicchio.
If you could prepare any meal in the world, what would the menu be, and who would you invite to join you?
"If I could prepare any meal in the world" is an interesting question, because I'd have to consider whether I would want to cook something I'd have the most fun preparing, or what I consider my best dish--considering there are guests in attendance. I think I would create a menu featuring one signature dish from each region of China. I have never experienced a meal like that. I guess if you think about it, Cantonese dim sum could work as what we think of as "pre-dinner bites"--all those tiny parcels of steamed and fried items! Taro puffs filled with savory minced duck, or chive and shrimp dumplings would be ideal finger food. The bolder, more fiery dishes of Szechuan, like red oil poached fish with preserved mustard greens, and a hearty dish of claypot braised lamb from Lanzhou would work nicely as a main. Hand-pulled noodles with a garlicky pork sauce from northern China would be ideal as your starch component, and I'd end the meal with wafer-thin, crispy fried Shanghainese red bean pancakes.
Is there something you love to eat that you never make at home?
I adore sashimi and many other Japanese dishes, but I never prepare it at home because I don't think the quality of the fish I can get from even a reputable seafood shop is as good as that served in the best Japanese restaurants in town. There is too much I don't know about the art of cutting the fish, or preparing the sushi rice correctly. That's a meal best left to a master Japanese sushi chef with years of experience.
Pick your poison.
I love barman Andrew Bohrer's smoked Old-Fashioned at Mistral Kitchen, and he makes a great whiskey sour, too. Although the first cocktail that really blew me away was The Last Word, revived right here in Seattle by Murray Stenson of Zig Zag. I also love single malt scotches, and big reds.
Describe the best meal you've ever eaten. Where were you? Who prepared it? And what made it so special?
As a food writer at Seattle Magazine, I'm incredibly fortunate to have the opportunity to eat extremely well in this city. The greatest dining experience I've ever had, though, was at Alinea in Chicago just this past summer. I was with my husband, and we were celebrating our first wedding anniversary. We sprung for the tour menu and consumed twenty-five courses over the span of a good four hours, at least! Part of what made the meal so memorable was that up until that point, I'd partaken in a few molecular gastronomy meals at well-regarded restaurants, and had been incredibly disappointed. Alinea re-opened my eyes: The meal was entertainment, it was art, but most importantly, the vast majority of what we ate just tasted good.
What's for dinner tonight chez toi?
I just returned home (in Seattle) from a ten-day visit up in Vancouver, BC to see my family. After so many days of eating extravagantly, I am happy to get back in the kitchen and cook something a little lighter for dinner tonight. I'm just grilling some leeks with romesco sauce, and throwing together an easy pasta salad with cherry tomatoes, feta, and arugula. Both recipes are in the cookbook I co-authored, The Newlywed Kitchen. For dessert--I'm going to be honest and tell you I'm just taking a couple balls of homemade oatmeal cookie dough out of the freezer, and baking them off. I frequently make a batch of cookie dough, roll the dough into golfball-sized spheres, space them out on a lined sheet tray, and freeze them. Once frozen, you can put the dough balls into a Ziploc bag and they'll keep for several weeks in the freezer. Whenever you want cookies, just space out the dough on a tray, and bake in a preheated oven. I believe that one should never be more than 350 degrees and 12-13 minutes away from fresh, hot cookies!
I have been maintaining a product backlog @ home also for last few months… m going agile thr too… and it really works :)
Android supports multiple units of measurement (such as Pixels, inches, millimeters, points etc). However the following two units of measurement are critical for a good design:
- Density-independent Pixels (dp) - an abstract unit that is based on the physical density of the screen. These units are relative to a 160 dpi screen, so one dp is one pixel on a 160 dpi screen. The ratio of dp-to-pixel will change with the screen density, but not necessarily in direct proportion.
- Scale-independent Pixels (sp) - this is like the dp unit, but it is also scaled by the user's font size preference. It is recommend you use this unit when specifying font sizes, so they will be adjusted for both the screen density and user's preference.
As a best practice, never use anything but sp or dp unless you absolutely have to. Using sp/dp will make your Android applications compatible with multiple screen densities and resolutions.
Google I/O 2010 is coming to San Francisco on May 19-20 2010.
Both the keynote talks will be streamed live on GoogleDeveloper Channel on Youtube.
Grapevine is abuzz over potential release of Android 2.2 (Code name Froyo) during the I/O. Among other things there is talk of GoogleTV as well. We will wait and see.
Here is the complete agenda.
Erin Ferretti Slattery (that's her on the right up there) grew up in California and Colorado, and has lived in France, Scotland, Israel, and the Czech Republic. She has worked in PR, book publicity, and international publishing, and has written a cookbook, The Ghost in the Pantry: Culinary Travels through Four Generations. She and her husband, Jakub, live in the food paradise of Astoria, Queens, where she is freelancing as a translator and perpetually starting a novel.
Erin and I first met online over at eGullet many, many moons ago - she helped me plan the Prague leg of the journey Louisa and I took in 2006 - and we finally met in real life last year at a fabulous Jauntsetter party in Williamsburg (Brooklyn, not historical).
How and from whom did you learn to cook?
My mother is the biggest influence, and I learned most of what I cook by instinct these days as a result of watching and helping her from childhood onward--like nearly everyone, I imagine. In the constellation of other inspiring people, there are also friends who can throw together a four-course dinner on an hour's notice, a French host mother with a sturdy yogurt-cake recipe, a British host mother who taught me not to fear lard for the Sunday roast, friends who parted with their grandmothers' cake and goulash recipes, and friends whose individual talents and flair for entertaining are things I try to mimic.
Ultimately, I would say I learned from all the women in my life I've been fortunate to call friends, including my mother, who compiled and printed a book of tried-and-true recipes from friends and family as a wedding gift for me. And I'm also grateful to my dad for initiating me into Zen and the Art of the Weber grill. (My dad has been known to happily do steaks on the Weber in three feet of snow, which is Buddhism of a sort I'll never achieve.)
"With this transaction, SAP will dramatically expand its addressable market by making available its market-leading solutions to hundreds of millions of mobile users, combining the world’s best business software with the world’s most powerful mobile infrastructure platform," said Bill McDermott, Co-CEO, SAP and member of the SAP Executive Board.
This is in line with what Peter Gartenberg(MD, SAP India) shared with us yesterday(refer my previous post). SAP wants to be on On-Device to increase its market share.
Refer Google/Twitter/Bing results for more information that's pouring in :).
Some of the URLs for reference.
http://techcrunch.com/2010/05/12/confirmed-sap-to-acquire-sybase-for-5-8-billion/
http://www.wirelessweek.com/News/Feeds/2010/05/wireless-sap-buys-sybase-for-58b/
Today, I attended SAP RIG(Regional Implementation Group) customer appreciation event held here at Mumbai. I would like to share some key takeaways from it.
Aurora is here !! Aurora is SAP internal project code for SAP BOE(BusinessObjects Enterprise) XIR4 and will be released in q4 FY 2010. It is a next major release for BOE.
Following are some of the interesting additions/changes in BOE XIR4 release -
Hello all! My name is Ana and normally you can find me over at Rearranged Design. I'll be guest posting for Meg today while she's visiting my adopted home state of California.
I am going to share my recipe for homemade Banana-Chocolate-Coconut Ice cream. It's a favorite around my house and easy to make.
I use a KitchenAid Ice Cream Maker attachment. If you have your own ice cream maker I don't see why the recipe wouldn't work with that. If you have a KitchenAid mixer and don't have the attachment, get it! I love mine and once you see how few ingredients are actually in ice cream you'll wonder why you don't already own one.
So, here goes. You will need:
2 1/2 cups Half and Half
8 Egg Yolks
1 cup sugar
2 1/2 cups Whipping Cream
1/8 tsp Salt
4 tsp of Vanilla (I always add a glug more just to give it a real strong flavor)
1 Banana
1 cup Shredded Toasted Coconut
1 Large Chocolate Bar (This is up to you, if you like you can use chocolate chips or a King Size Bar. It's up to how much chocolate you like)
In a medium saucepan over medium heat, heat half-and-half until very hot but not boiling, stirring often. Remove from heat; set aside.
Place egg yolks and sugar in mixer bowl. Attach wire whip to mixer. Turn to speed 2, and mix about 30 seconds, or until well blended and slightly thickened.
Continuing on speed 2, very gradually add half-and-half; mix until blended.
While the ice cream is churning toast the coconut on a backing sheet until it’s golden in color. Chop the chocolate into chunks (I used 2.5 regular sized Hershey bars) and cut up the banana.
I hope you love it as much as I do! Thanks to Meg for letting me share!
Loyal Queenie readers know her simply as "Louisa." She's a respected contemporary romance novelist, an accomplished cook, and, most importantly, she's my best friend! Louisa Edwards lives in Ohio with her husband (and two ridiculously adorable dogs, with whom I am certifiably obsessed), where she writes her fabulous novels and cooks in her enviably well-equipped kitchen.
The first book in Louisa's Recipe for Love trilogy, entitled Can't Stand the Heat, debuted last fall to excellent reviews, and the second book (On the Steamy Side - my personal favorite so far) came out in March!
When she's not guest posting here or scribbling furiously away on her next novel, Louisa can be found over at her blog, her website, and her always-witty Twitter feed. (She sometimes posts pictures of Hunter and Oscar, said dogs, on Twitter, which is reason enough to follow her.)
Today, along with her interview, Louisa has a giveaway for you! Read her interview for the details, and follow her instructions to be entered to win a whole bunch of loot. (A signed, hardcover copy of On the Steamy Side, a Recipe for Love apron, and a set of spatulas!)
Both of my parents are fantastic, adventurous cooks so we grew up trying lots of different cuisines and ingredients in my house. I moved to NYC after college and got out of the habit of cooking for myself, what with all the fabulous restaurants around, and my kitchen being about the size of a bathtub, but once we moved to a small town in Ohio? If I want something fabulous to eat here, I have to make it myself. So I settled down to figure out how to do that, and realized I loved it!
Oh, you all know me too well. You're right, I'm not fishing - I'm traveling! I'll be back soon, but, in the meantime, some of my most generous friends have stepped up and agreed to guest blog for me this week. We'll have a few interviews, a giveaway, a delicious recipe for homemade ice cream...
It's going to be good times, people!
Don't forget to be super-nice to our guests, and be sure to drop me a line or a tweet if you're interested in guest posting the next time I'm off the grid.
Image courtesy of the New York Times' Joys of the Window Seat series.
Years ago, I read a novel in which the heroine visits one of those big, white elephant resorts in the Catskills (kinda like the one in Dirty Dancing) and is given the choice of a blintz, sweet omelet or eggs for breakfast. I didn't think much of it at the time, but the idea of a sweet omelet has stayed with me ever since.
The other night, faced with a sweet tooth and a practically empty fridge (I don't particularly like to go food shopping when I'm about to go on a trip.), the notion of a sweet omelet surfaced in my mind. I immediately set to Googling and discovered that the idea is essentially to make a cross between an omelet and a crêpe. There's flour and sugar involved, but no milk or water. The result is something richer and puffier than a crêpe, but lighter and sweeter than an omelet.
And man, is it tasty. And the added bit of flour makes it a lot easier to handle than a traditional omelet; while the latter can be tricky to fold and flip, a sweet omelet is bound by the gluten in the flour and holds up nicely to even the most awkward manipulations with a spatula. You really do need to sift the flour, as you would for a crepe; if you don't, you'll end up with little lumpy pearls of flour throughout the omelet. (Trust me; I tried it both ways.) And while I preferred the flavor of turbinado sugar, I found that plain old granulated made for a more evenly-flavored result. (The turbinado kind of sank to the bottom of the eggs.)
The best part might be that it's totally legit to eat a sweet omelet for breakfast. (I halve the recipe to make a dessert version.) I mean, if pancakes or waffles or French toast qualify as breakfast, surely this does as well. And if you add a little jam as a filling, you've even got fruit involved in the equation. Um, sort of.
Sweet Omelet
2 large eggs
2 tbs. granulated sugar
2 tbs. all-purpose flour, sifted after measuring
Tiny pinch of salt
1 tbs. unsalted butter
In a small bowl, beat the eggs together with a fork, as you would for any omelet. Beat in the sugar, flour and salt.
In a small skillet (I use my eight-incher.) set over moderate heat, melt the butter and heat until slightly foamy, swirling to coat the sides of the skillet as well as the bottom.
Add the egg mixture to the pan and cook until the mixture becomes slightly puffy and set all along the sides. (If you want to add jam or another filling, now's the time.)
Using a silicon spatula, fold the omelet over on itself, then flip it over. Cook for another minute or two, until the butter in the pan just starts to turn brown and the omelet is puffy and relatively set up all the way through.
Serves one.
Famous jquery plugins "DataTable" and "KeyTable" developer Allan Jardine has accepted my code (reusable function) to be included in his next version of KeyTable jQuery plugin.
Here is the mail transcript with him
________________________________
Happy weekend, everyone! It's a rainy morning here in New York; I had to skip the Greenmarket this morning in favor of some more boring errands - but since I'm leaving for California on Tuesday morning, I wouldn't have been able to buy much in any case. I have it on good authority, however, that strawberries have been sighted!
Now, for those of you who haven't just sprung out of your seats to run down to Union Square, here's this week's Treasury!
First up this week is an apartment I've long admired: the West Village home of interior designer (and former Domino contributor) Rita Konig. Her apartment has a gloriously English feel to it, which makes sense, since Konig is, in fact, an ex-pat from London. I especially love the snug bedroom with its custom headboard and bright sunlight.
Next, we have Next! Next is the name of super-chef Grant Achatz's latest venture, a restaurant in Chicago where guests will pay for their meals ahead of time - kind of like we pay for travel, as the promotional video on the new site suggests. In addition to the restaurant, Achatz's team will also be opening a cocktail bar called Aviary. That sound you just heard? That was food and cocktail lovers the world over clapping their hands in glee.
Last, but not least, we have From Me To You, a fabulous blog by Jamie, a photographer who lives here in New York. She's also an avid cook, and her food photography is splendid. That said, I might be most in lust with the photos she just posted the other day. Yes, I'll take my bourbon with a side of gorgeous man, thankyouverymuch.
Sat down to wander if I can have a new way to use internet. Instead of 'google'ing and 'bing'ing information I need, let someone deliver it to me based on my defined sets and preferences.
(I just wanted to negate my thought that most of us see search engines as the hub for our internet experiences, though its true uptill great extent.)
I started writting a small service for this task. Meanwhile I came across Yotify - a site which caters to specific task of tracking updates and information that pertains to our topic of interest such as an event, an item for sale on ebay, cragslist, an RSS feed, headlines etc etc.. (like a flavor of Google Alerts and Yahoo Alerts but broader in scope)
On Yotify.com, users track anything they deem worth tracking by sending out ’scouts’ that send back regular reports on a particular sports headline, job listing, real estate posting, etc. The frequency of updates can be set to a daily or hourly amount, and different preferences can be selected so that when users send a scout out to monitor an item on Craigslist, for example, they can find out when the price drops to the amount they’re willing to pay. Searches are also area-specific, and users can specify the state and area where they want relevant results from.
Transcript of a chat with Rob Bouganim, Yotify's CEO
http://arstechnica.com/old/content/2008/09/hands-on-and-invites-yotify-your-personal-web-secretary.ars
Kids, I'm headed to San Francisco and Napa next week (for a wedding and work), and will be pretty darn busy while I'm there. (Obviously, part of the reason I'll be busy is that I'll be snapping away and taking loads of notes about what I do, eat and see while I'm gone!)
And so, I'd love to feature interviews with a few Queenie readers while I'm off in the wilds of California. You all lead such interesting lives, and have such passion for food - I want to hear all about it!
If you're interested, leave a comment below or drop me an email (megblocker at gmail dot com), and I'll send you the interview questions.
Cheers!
Spring marches on, and the first peonies of the season made their appearance at the Greenmarket this weekend. I am indescribably happy.
Which flowers make you happiest?
On the very last night of my staycation, I had a ridiculously delicious meal at Frankie's Spuntino with Miles and Hall. After dinner, we stopped into DessertTruck's new stationary location, DessertTruck Works. It's pretty much smack across Clinton Street from Frankie's, which made it eminently convenient for a sweets fix.
I decided that the time was ripe for a brioche doughnut filled with Nutella. And boy oh boy, was I right. The doughnuts were yeasty and buttery (though I noticed no distinct similarities to brioche), and the filling was rich as could be. The sugar coating the doughnuts made them appropriately messy to eat (you have to work to enjoy something this tasty), and the boys and I put these away in second flat.
Can't wait to go back, though I don't know how I'll ever resist the call of the doughnuts. Hmmm...
DessertTruck Works
6 Clinton Street
Between Houston and Stanton
There are team-mates and there are rebel team-mates. Those who do not like things the way they are, question almost everything thats put to them and have a bizzare way of working that strays almost 180 degrees (I couldnt find the degree button on my keyboard) to the line of normal work pattern.
So what do you do with them? Chuck them out? Say they are disturbing the melodious harmony of your super smooth workforce? I say think again. Do you really want to do without them?
Maybe not. Rebels are innovative, never-satisfied and always questioning the status queue. Having one of them around could be a great catalyst when you want to reduce waste, deliver just what is enough and keep energy bubbling in your team. Encourage them with appropriate means, try to align them with higher objective goals and see the effect. Who knows, they may end up giving you what you have been looking for everywhere. Or better, they may give you what you yourself coudln't imagine better.
I believe its all about people management. Or rather 'good people management'.
I could be wrong. but i still think its a nice thought ;-)
The NYC Symposium for Social Change on Monday attracted a broad mix of New York professionals including social entrepreneurs, philanthropists, investment managers, and others. I was fortunate to spend the morning at Lincoln Center listening to the speakers and panelists discuss the essential role of the private sector in education, the environment and social impact investing.
The day started with two guest speakers. Joel Klein, the Chancellor of NYC Department of Education, delivered an upbeat appraisal of how innovations are improving public school performance. Seth Godin, author of Linchpin and other well-known marketing books, followed up by encouraging attendees to connect to our passions and do meaningful work. He argued that we are in a new economic reality where we are all artists who need to be doing work that we pour our hearts and creative energy into. Otherwise, he says we risk becoming replaceable cogs in corporate machinery who are rewarded for obedience, not originality. We need to stand out, not fit in, and look for opportunities to be innovative and unique.
The rest of the morning was dedicated to three panels:
For me, the highlight of the education panel discussion was learning the concept of a "classroom of one", where curriculum and assessment can be tailored to individual needs, abilities, learning style, and interests. I am often underwhelmed by proposals to use technology in the classroom; simply introducing computers without adapting underlying processes won't be very impactful. With a Classroom of One concept, I finally see an opportunity to make a fundamental shift in how education is delivered, and it would not be possible without technology.
For the environmental panel, I was particularly interested to hear representatives from American Express, Con Edison and the Mayor's Office of Sustainability agree that there are still huge opportunities for companies to implement "green" initiatives that actually benefit the bottom line. Businesses can do well by doing good, while motivating their employees and serving their customers better.
From the social impact investing panel, we learned that the $300 billion available in the US for private philanthropy is dwarfed by the $50 trillion in for-profit investment. Social impact investing attracts private capital into socially beneficial investments that may generate a profit. Opportunities include building low income housing, financing "green" retrofits of apartments, and guaranteeing loans for charter schools. With private capital meeting these investment needs, philanthropic resources are freed up for social problems that don't have market-driven solutions.
Social impact investing can deliver a similar return to traditional investing, however measuring social impact is an ongoing challenge. The Impact Reporting and Investment Standards is a start for providing transparency and consistency in reporting. McKinsey has a website with resources for measuring social impact.
Lunchtime speakers wrapped up the day, including Seth Pinsky from the NYC Economic Development Corporation (EDC) discussing the ways the city is nurturing innovation and entrepreneurship.
I walked away with a feeling that there are individuals across the private sector attempting to address our most pressing social problems with their own perspectives, approaches and resources. Forums like this one, sponsored by the Foundation for Social Change, create an important platform for people interested in social innovation to share information and collaborate, and hopefully scale the best ideas.
See a great short video about the foundation and some of the people they work with at their website:
http://www.foundationforsocialchange.org/
I've been all about the asparagus recently - eating it with eggs, in salads, hot topped with Parmesan and cold alongside leftover chicken - you name it. I've even been mixing it into pasta. I like it most with penne - I can slice the asparagus on the bias, making the pieces roughly the same size and shape of the pasta, which is just a ton of fun.
And, as much as I love asparagus steamed or blanched, I particularly like it when it's been sauteed or grilled. Something about the direct, dry heat gives it a richness that contrasts with its natural grassy flavors. One of the best things about cooking with seasonal ingredients is that things just naturally go well together; I threw ramps and chives into the pan without thinking much about it, and things turned out pretty darn well.
A squeeze of lemon keeps things bright, and a smattering of Parmesan makes them just a bit stinky and complex. All in all, it's good stuff.
Penne with Asparagus and Ramps
1/4 lb. penne rigate, cooked to al dente and drained (research 1/4 cup of cooking water)
2 tsp. olive oil
3 ramps, cleaned and cut into 1-inch pieces
4 stalks asparagus, trimmed and cut on the bias into 2-inch pieces
Juice of half a lemon
1 tsp. Dijon mustard
2 tbs. finely chopped chives
1/4 cup grated Parmesan cheese
Kosher salt and freshly ground black pepper
Heat the olive oil in a medium skillet set over medium high heat. Add the ramps and saute for a few minutes, until the leafy parts are well-wilted and the white parts have some dark color. Add the asparagus to the pan and saute for several minutes more, until the asparagus begins to turn bright green and just a bit tender.
Add the lemon juice to the pan, along with the mustard. Stir to combine with the vegetables and season lightly with salt and pepper. Cook for a few moments, until the lemon juice is mostly evaporated. Add half the chives and mix to combine evenly. Add the pasta and combine evenly with the vegetables. If the sauce is a bit dry, add a touch or two of the pasta water.
Remove the pan from the heat and add the Parmesan cheese. Stir to combine, then remove to a plate. Top with the remaining chives, season to taste, and eat!
Serves one.
On Saturday morning, I arrived home from the Greenmarket absolutely famished. I peeked in the fridge and found about a quarter pound of asparagus, a single, already boiled La Ratte potato, and a dozen eggs.
The solution? An improvised version of home fries, made with a bit of olive oil and some leeks, with a fair bit of pepper thrown in for good measure. Asparagus blanched and topped with a light dressing of white wine vinegar, olive oil and a smidge of grated parmesan. Eggs scrambled with the rest of those leeks and a touch of creme fraiche, topped with chives.
The result? Pure deliciousness. I might have to have it again for dinner tonight.
Happy steamy Saturday, my dears! As I write this, it's 10:45 on Saturday morning and already seventy degrees, with a forecast for the low nineties by this afternoon. Is it May, or is it July? Either way, it's the weekend, which means it's time for the Treasury.
There's something delectably retro about this New York Times collection of photographs taken from the window seats of airplanes around the world. When was the last time you paused to appreciate the magic of travel, as opposed to its drudgery and myriad little humiliations? This set of photos sent in by Times readers reminded me of the wonder of flight, and the excitement of viewing the world from 30,000 feet. I hope it'll do the same for you.
Up next is something I've had my eye on for a while: Fuji's Instax mini instant camera. I just love it. It's like a Polaroid, but cuter and more fun. Ooooh, how I want one. So far I've resisted its siren call, but it will definitely make an appearance on my birthday and Christmas lists.
I am not a major advocate for food television (reality competition shows mainly just make me anxious, and the Food Network has become a parody of itself), but I'd be lying if I said I wasn't a little bit excited about the coming debut of the Cooking Channel. Mo Rocca exploring food culture? Old episodes of The French Chef and other Julia Child programs? Sign me up, kids.