Larry Page on ads for Google

Larry Page, after approving the first ad campaign for Google in ten years:

It’s obviously very contrary to what we normally do, and I think part of the reason we wanted to do it is for that reason. It sort of violates every known principle that we have, and every once in a while, you should test that you really have the right principles. You don’t want to end up too rigid.

Minimalist searchbox for Firefox

As you know, I love how the Firefox UI can be customized with only a few lines of CSS. This time, I wanted to simplify the Search box of Firefox 4 — because I don’t think we need a bright search-engine icon, and the useless magnifying glass button. Here is the result:

Firefox 4 minimalist search bar — with a few lines in
userchrome.css

Compare with the original theme:

Firefox 4 searchbar using the default
theme

And here are the few lines you can add to your userChrome.css to achieve this result:

/* Remove the magnifying glass icon on the right of the searchbox */
.search-go-container { display: none; }
.searchbar-textbox .textbox-input-box { padding-right: 7px !important; }

/* Replace the active search engine icon by a magnifying glass */
.searchbar-engine-image { display: none; }
.searchbar-engine-button {
  padding-left: 16px !important;
  background: url("chrome://browser/skin/Search.png") 4px 4px no-repeat;
}

Tested with Firefox 4.0b8 — but should work with Firefox 3.6 too.

Firefox 4 comme IE9

La nouvelle interface d’Internet Explorer 9 a été dévoilée hier. Elle a ses défauts, mais son côté minimaliste est vraiment agréable.

D’ailleurs, avec Firefox 4 bêta, il y a moyen d’obtenir la même interface — sans extension, simplement en réorganisant les barres d’outils.

Firefox avec l'interface
d'IE9

Il suffit de glisser la barre d’adresse et les quelques boutons nécessaires dans la barre d’onglets, et voilà : une interface simple à la IE9.

Easter-egg dans la BO d'Inception

J’ai bien aimé la musique d’Inception. Il n’y a pas vraiment de thème qui reste précisément en tête : on se souvient d’une idée générale, de fragments — ce qui colle très bien avec les rêves imbriqués du film.

Bref, Hans Zimmer a mentionné ses sources d’inspiration et la manière dont il avait composé ces musiques dans plusieurs interviews — donc on voit à peu près d’où certaines choses viennent. N’empêche, l’entendre, c’est encore autre chose. Enjoy.

</param></param></param> </embed>

Fix "duplicate symbols" when linking a universal static library with iOS SDK 4

If you updated to the recently released iOS SDK 4, you may have encountered a rather annoying issue. All projects that link again a static library which is the combination of multiple sub-libraries now fail to link, producing only a “duplicate symbols” error. It is the case, for instance, with the widely used Three20 library for iPhone development.

This is because of a bug in libtool : when building an universal library (understand “with multiple architectures”, like the “Standard” build option that includes both armv6 and armv7), if you are merging multiple libs together, libtool will fail to strip properly some parts of the libs, then try to merge them, adding the same symbols several times. It will only be noticed on a linker invocation, such as when building the application that uses the library. This is perfectly explained with much details in this blog post of James Briant.

He suggested a script to fix this issue with Three20. I generalized it, so it can be used for any library that has the same issue.

To use it, open your library Target in Xcode, add a new “Shell Script build phase”, and copy the content of this script inside :

#!/bin/bash# (c) 2010 James Briant, binaryfinery.com# Edited by Pierre de La Morinerieif [[ $TARGET_BUILD_DIR == *iphoneos* ]] && [[ $ARCHS == *\ * ]]thenecho "Rebuilding library as proper multiarch file"LIB_ARM6=$TEMP_FILES_DIR/Objects-$BUILD_VARIANTS/armv6/$EXECUTABLE_NAMELIB_ARM7=$TEMP_FILES_DIR/Objects-$BUILD_VARIANTS/armv7/$EXECUTABLE_NAME# Libtool skrewed up, and built fat binaries in place of the arch-specific ones : strip them.lipo $LIB_ARM6 -remove armv7 -o $LIB_ARM6lipo $LIB_ARM7 -remove armv6 -o $LIB_ARM7# Now recombine the stripped lib to the final productlibtool -static $LIB_ARM6 $LIB_ARM7 -o $BUILT_PRODUCTS_DIR/$EXECUTABLE_NAMEelseecho "Skipping arm multi-architecture rebuild"fi

Now, each time your project is built, the architectures in the output binary will be correctly merged. This should be as unobtrusive as possible — but hopefully Apple will fix the bug soon.