Bearded Magnum

good restaurants in SF

leave a comment

Michelin today announced its selection for the third edition of the MICHELIN guide San Francisco, Bay Area and Wine Country. The MICHELIN guide contains more than 55 new establishments, and features 448 establishments in all – a number that includes 383 restaurants representing 35 types of cuisine, and 65 area hotels.

Michelin North America’s Virtual Newsroom.

via SF Metblogs

Written by Alexis

October 14th, 2008 at 8:57 am

Posted in Uncategorized

rflickr: ruby for flickr

leave a comment

Now that we’ve decided to use Flickr as our main online photo management tool, I had to upload tons of photos to Flickr. The Flickr archives revealed to me that the date of our digital camera is not properly set. Every single taken date is one year in advance :(

So I explored the Flickr organizer looking for a way to fix our first 1,350 photos. Unfortunately there is no way to do it online, except one by one…. (more details in a coming post) So I went back to the code hopping some friendly scripters would have created a nice library on top of Flickr webservices. And actually yes! rflickr does a very good job, very nicely. And it’s in ruby! What could you ask more?!

So zillions of thanks to the rflickr team and here is my commented script as a tiny contribution:

require 'rubygems'
require 'flickr'

# your credentials
MY_APPLICATION_KEY='...'
MY_SHARED_SECRET='...'

# get a valid token
token_cache_file='flickr-token.txt'
flickr = Flickr.new(token_cache_file,MY_APPLICATION_KEY,MY_SHARED_SECRET)

unless flickr.auth.token
   flickr.auth.getFrob
   url = flickr.auth.login_link
   puts "You must visit #{url} to authorize this application.  Press enter"+
    " when you have done so. This is the only time you will have to do this."
   gets
   flickr.auth.getToken
end

# some query criteria, note that rflickr expects dates as Time instances
min_upload_date = Time.now - 2*60*60*24
max_taken_date = Time.local(2007,1,1)
photos_per_page=500

# Retrieve photos matching our criteria
# The method signature is really ugly, a map would be neater
photo_list = flickr.photos.search('me', nil, nil, nil, min_upload_date ,
                                      nil, nil, max_taken_date, nil, nil, 500)
puts "Numbers of photos matching the request: #{photo_list.size}"

# then for each photo, increment the year of the taken date
photo_list.each {|photo|
  # get more details about this photos
  info = flickr.photos.getInfo(photo)
  # increment the year
  taken_array = info.dates[:taken].to_a
  taken_array[5] = taken_array[5]+1
  # re-set the taken date
  flickr.photos.setDates(photo, nil, Time.gm(*taken_array), 0)
}
# we're done

Written by Alexis

August 28th, 2008 at 6:45 pm

Posted in Uncategorized

it’s been a while…

leave a comment

since my last post. here I’m back for another attempt ;)

So today I joined the CommunityOne event. I did not register to JavaOne, too expansive and maybe too java-centric. And some friends and I have been joking about the “CommunityOne being the JavaOne for the poors”… well we were not completely wrong… The schedule was not really attractive and the sessions I attended were pretty boring.
The take-off by Ian Murdock was promising and dynamic (really nice and innovative sketchy slides), but after 30 minutes 5 guys (literally) on stage and got me sleepy.
Then I decided to listen to Charles Nutter on the Road to Babel. It took us through a review of a dozen of langages (out of 200!) running on the JVM: Kawa, Jython, JRuby, Groovy, Javascript, etc then he focused on JRuby developing what the main technical issues are (eval function, strings as byte not char, etc). His next intention was to explain why and how all the language implementers could benefit from reusable features if provided by the JVM itself. Common issues in porting a language could addressed once for all. All of this happening within the Da Vinci Project.
The missing part was the time factor: we headed for lunch with no time line, just a rough estimation of 2 years before a release.

On this afternoon, I took a seat in the Ruby Panel room. Reaaally boring. No material, no real baseline, just a speaker decorating random questions from the audience to the panel. Result, nothing much as “what IDE should I use for ruby?”, “yes, you might have to read some code in place of javadocs”. no kidding?

Flabbergasted, I stayed on the comfortable couch in the lobby till 6pm. By the way, Thumb up for the organization.

ohh, before I sleep, I’ve started a Twitter feed. I have the feeling the 140-char format could suit me.


Ian Murdock's slides @communityone2008 (by p3t0r)

Written by Alexis

May 6th, 2008 at 9:11 am

Posted in Uncategorized

My Firefox add-ons

leave a comment

Once again, I wasted some time trying to find a firefox add-on I lost. Time is a rare commodity, and I’m always picky about the Firefox add-ons I use. Well, Firefox is one of the software I use the most, and add-ons are intended to fit your personnal needs. So it’s the thing to be very particular about, isn’t it?

I know there is no exciting information in this post, my friends would tag it as “RDM” which stands in french for “Recyclator De Merde”. A rough translation could be “F… Recyclator”
Nevertheless I post my list here as a backup, with a few comments.

  • Aardvark 2.2
    damn useful when you want to clean up a web page before printing. I got it from Aurelien and use it mainly for Assaf’s articles ;)
  • InfoLister 0.9f.2
    This list was initially generated with Infolister. This extension allows you to backup your firefox information at startup in local a file , or over FTP or HTTP.
  • It’s All Text! 0.8.2
    I installed this add-on to avoid committing suicide when Firefox crashes in the middle of a wiki page editing, email writing, etc. Very bad memories…
  • PDF Download 1.0.0.2
  • Personal Menu 3.0.9
    How many times a day do you use the toolbar menu? Once? Twice? 10 at worst? So why should you lose that space? Get ride of the toolbar menu, hide it behind a single button. You might even customize the menu list if you wish so.
  • Tab Mix Plus 0.3.6
    If I was stranded on a desert island, this extension would be one of the 10 items I would bring with me. Many great features for tab management, good documentation, reliable,… addictable.
  • Better Gmail 2 0.2
  • CustomizeGoogle 0.68
  • del.icio.us Bookmarks 1.5.44
  • Download Statusbar 0.9.5.2
  • Firebug 1.05
  • Google Notebook 1.0.0.18
  • Google Toolbar for Firefox 3.0.20070525L
  • Greasemonkey 0.7.20070607.0
  • Web Developer 1.1.4

Written by Alexis

January 10th, 2008 at 8:01 pm

Posted in Uncategorized

not-so-wildcards

leave a comment

As I was browsing the Mustang JVM reference documentation, I came accross by accident the paragraph about this new feature named “class path wildcards”.

grater.jpgIt reminds me of this Java Evangelist woman at the Paris Sun Techdays making her best to sell the “great” new features of Java 6. 16 slides about annotation processors, sub-pixels, splash screen, tray icon and… classpath wildcard. The content was so poor that she spent 15 minutes on this feature, explaining how powerful it is. She was really doing a perfect evangelist job by delivering word for word the corporate and over-marketed speech, but without conviction. You know like these sales demonstrators at the supermarket flogging the latest super-fully-loaded grater because well they have to pay the rent… My heart was full of compassion for her.

So, as I was browsing the Mustang JVM reference documentation, I stoped and spent 2 minutes to read carefully the paragraph about classpath wildcard as a tribute to my Java Evangelist woman. To my surprise I realised that only the single ‘*’ is implemented. Nothing as powerfull as the Ant file pattern. No ‘**’ to include subdirectories recursively! I might have been too focused on the evangelist to miss that during the presentation.

Under the pressure of Seb, I wrote a quick test to exclude a documentation inaccuracy (see below), but no doubt only the single ‘*’ is implemented.

I really can’t understand why only half of the feature is implemented. And Mark Reinhold, the spec lead of the JavaSE6 (JSR270) did not say much more about this staged process, he simply put:
“There’s no equivalent to Ant’s /** construct, though that could be added later on.”

Come on Mark… why stopping in the middle for such a simple thing?

public class WildcardTest{
   public static void main(String[] args){
           System.out.println(System.getProperties().getProperty("java.version"));
           System.out.println(System.getProperties().getProperty("java.class.path"));
   }
}

The output could look like:

$ java -cp .:'.m2/repository/ant/ant/1.6.5/*':'.m2/repository/**' WildcardTest
1.6.0_02
.:.m2/repository/ant/ant/1.6.5/ant-1.6.5.jar:.m2/repository/**

Written by Alexis

January 4th, 2008 at 9:04 am

Posted in Uncategorized

Finally, we moved…

leave a comment

These last weeks in Paris were damned busy. We had to pack all our belongings, send them on a boat, do one ton of paperwork to leave Paris (taxes, phone accounts, insurances, etc), and another ton to settle in San Francisco (taxes, phone accounts, insurances, etc ;). To my surprise we’ve gone through all that busywork pretty smoothly, we have even found a preschool for our 3-year kid. After 4 days we are almost settled.

Here is a random list of my first feelings in the US.

What I like so far:

  • the family plans for mobile phones. This idea is nice and cheap.
  • the sunny weather
  • the amazing beauty of the bay area
  • all the friendly and helpful people we’ve met so far
  • our apartment
  • my 20-minute commute with SF Muni
  • how easy it is to deal with your banker: accommodating opening hours, not-tied to a specific banking center. Generally speaking my experience with my american bank is better than with my (not online) french one.

What I’m not a big fan of so far:
Bandwidth by JasonCross

  • my no-SIM-card mobile phone. I can’t use my French mobile phone with Sprint, I can’t reuse the provided mobile with another operator, and if I want a new phone I have no choice but go to a Sprint store. And of course the Sprint representative did not mention this point to me. This vendor lock-in situation reminds me Microsoft or Apple. In France, all mobile operators provide you with a SIM card and have the obligation to unlock you phone after 6 months if you request so.
  • the no-choice situation for high-speed internet. In San Francisco the only way to get easily an internet connection is to go with Comcast, and it costs a lot of money. In Paris, with the same $45 you can pick among several Triple-play offers and get a true high speed internet not just a marketing word. Of course the US is 16 times vaster than metropolitan France but the scale argument cannot solely explain the lack of competitors and bandwidth.

to be updated as remarks come into my mind…

Written by Alexis

December 14th, 2007 at 6:53 pm

Posted in Uncategorized

Posters on the drugstore wall

leave a comment

A few weeks ago, the drugstore at my block corner was fully remodeled. Evertyhing from floor to ceilings has been revamped. That was a real mess. The whole external facade was also torn out, which revealed very old political posters. Obviously those posters were stuck up on the wall before the very first shop opened, as it often happens with vacant commercial properties.

The poster on the right advertises a meetup of the french communist party on a Tuesday February 22nd. I guess 1983 is the year. At that time Charles Fiterman was a leader of the communist party and a minister.

The 2 questions impel for debate and introspection: “What is at stake for Paris?” and “Where is the the left wing?”.
It sounds so present, while people of the left poster look so rinky-dink… Some things never change, but fashion does… hopefully ;)

Old political poster

Written by Alexis

November 9th, 2007 at 10:31 am

Posted in Uncategorized

IntelliJ IDEA 7.0 Released

leave a comment

fishman.jpgJetBrains has just announced the release of IntelliJ IDEA 7.0. This new version of my beloved IDE has some great new features but you willl fall in love with any other previous versions only because of its smooth and smart editor: shortcuts trip off your fingers, refactoring is magic, inspections are always great advices,… I could keep going for hours.

Nothing to compare with Eclipse austerity, and the Netbeans guys know it so well that they copycat many IDEA features and shortcuts!

IDEA is my loyal fellow for almost 4 years and I can’t think of a more useful software in my developer everyday-life. It’s time to own my personal licence. Great job JetBrains!

Written by Alexis

October 16th, 2007 at 11:29 pm

Posted in Uncategorized