Digital Color Meter

Posted by Patrice Neff Thu, 19 Apr 2007

As a web developer I often have to find out the exact color that the designer gave me to implement. I always used to do that with opening the image in the Gimp and then using the color picker.

Now I find that OS X actually comes pre-installed with a tool for that: Digital Color Meter. It’s in your Utilities folder and allows you to find out the color of anything on the screen.

Thanks to Chregu for the tip.

Yeah, that was finally a topic to blog again. ;-) I have shifted priorities at the moment and blogging is not terribly high there. More updates to come on what’s the current priorities.

Custom photo importing on the Mac

Posted by Patrice Neff Sun, 24 Dec 2006

I’m quite picky about my photo management. The thing I’m most picky about is my folder structure as I want to be able to live independent of a single photo management application. So far iPhoto did not allow me to keep my own structure and still use it. But that became possible with version 6 of iPhoto and as it came pre-installed on my MacBook Pro I’m now using it.

Today I spent a short while to get it nicely integrated into my workflow. Without my strict folder naming requirements I could just set iPhoto to download my photos automatically and import them whenever I connect my camera. To move them into my own structure it’s a little bit more work – but not much.

First I created the following Ruby script and saved it as ~/bin/organize-pictures.rb.

#!/usr/local/bin/ruby
require 'rubygems’
require 'exifr’

TARGET_DIR = “/Users/pneff/Pictures/Digicam/”

ARGV.each do |pic| obj = EXIFR::JPEG.new(pic) if not obj.nil? picdate = obj.exif.date_time picdir = TARGET_DIR + picdate.strftime(”%Y/%Y-%m-%d”) picname = picdir + “/” + File.basename(pic) begin Dir.mkdir(picdir) unless File.exists?(picdir) File.rename(pic, picname) puts picname rescue puts “Could not rename #{pic}” end end
end

For the script to work the “exifr” module must be installed. You can do that by executing sudo gem install exifr on the command line.

This script accepts a list of file names as command line parameters. It parses the EXIF tags of each file to determine the photo’s date and then moves it into the folder specified with TARGET_DIR. The folder naming is configured inside the strftime. In my case it’s a basic folder with the year and inside that a folder with year-month-day. The script will probably fail if the year folder does not exist yet, I may fix that in the future.

Replace the value of the TARGET_DIR constant with your own folder where you store the pictures.

Afterwards I created an application using Automator with the following three actions:

  1. “Download Pictures” from the application Image Capture. You can optionally check the “Delete images from camera after download” checkbox, but I chose to leave it unchecked until I really trust that setup.
  2. “Run Shell Script” from the application Automator. Put in this script: /Users/pneff/bin/organize-pictures.rb “$@”
  3. “Import photos” from the application iPhoto. Choose the album where pictures should be imported.

Save that script as an application. I chose to save it into my bin directory in the home as well. You can test that application now by double-clicking it. The pictures should be moved to the correct folder and then imported into iPhoto.

Once everything works, launch the application Image Capture. In the preferences you can select an action that will be executed when you connect a camera. Select the application you just created with Automator.

Update August 23, 2007

Rob wrote me an e-mail with the following comment:

It looks like the version of automator included with 10.4.10 adds some fancy stuff to the first and last file in the argument list (strange quotes) which of courses messes up the file processing.

Here’s my hacky fix:


 ...
 ARGV.each do |pic|
   # clean up the crap automator adds to the first and last filename
   pic = pic.sub(/^[^\/]*\//, '/')
   pic = pic.sub(/\.JPG.*$/, '.JPG') 
   obj = EXIFR::JPEG.new(pic)
 ...

It’s hacky because it relies on a “/” to indicate the start of the filename and they have to end in .JPG but it works for my needs and might help someone else out there.

Using TextMate for SQL queries

Posted by Patrice Neff Tue, 05 Sep 2006

TextMate offers an SQL bundle. That bundle can also be used to query MySQL and PostgreSQL databases directly from TextMate.

The configuration for the database access is done though environment variables. Specifically the following ones in the case of PostgreSQL:

  • PGHOST: Database host
  • PGPORT: Postgres port (usually the default of 5432 just works)
  • PGUSER: User name
  • PGDATABASE: Database to run queries on
  • TM_DB_SERVER: Tells TextMate to use PostgreSQL.

You can either set up these environment variables in the TextMate settings or – much more helpful – per project. In the project drawer deselect all files (by clicking on an empty spot) and then open the properties. There you can add project-specific environment variables.

Next open a file in the SQL mode. I now do that by having a specific directory in my project with SQL files. In that file prepare your statements, then select the one you want to run and press Ctrl+Shift+Q (or select the bundle item “Execute Selection as Query”).

Two queries that may be helpful:


— list tables
\dt

— describe table
\d tablename

TestXSLT on OS X

Posted by Patrice Neff Tue, 30 May 2006

At work the templating is done with . I have the Bitflux freaks to thank for that.

Currently I'm writing a really tricky XSLT template (for me), so I was investigating a tool for getting things done quicker. And Marc Liyanage is my hero. He has written an OS X application called TestXSLT to quickly test an XSLT stylesheet against some XML file.

It accepts an XML and an XSLT file and gives you the parsed output. You can look at it in text mode, HTML mode (exactly what I need) and even XSL-FO (which I have never used).

Reisen mit Mac OS X

Posted by Patrice Neff Thu, 13 Oct 2005

Bei meiner Reise nach Peru habe ich einige Elemente von OS X neu zu schätzen gelernt. Drei Beispiele: iCal, Sprachen und das Dashboard.

iCal, die Kalender-Software von , kann sehr gut mit Zeitzonen umgehen. Oben rechts im Fenster kann ich die verschiedenen Zeitzonen definieren. Danach ist es möglich, Kalendereinträge in verschiedenen Zeitzonen anzulegen und die Zeit wird dann korrekt in die jeweils aktuelle Zeitzone umgerechnet. Als ich meinen PC von Europa/Zürich auf América/Lima umstellte, hat iCal beim ersten Start gleich nachgefragt, ob da die iCal Zeitzone auch umgestellt werden soll.

Sprachen sind auch sehr hübsch. Falls installiert, ist es möglich, praktisch on-the-fly die Systemsprache zu ändern. Nachdem die Einstellung in den Systemeinstellungen geändert wurde, verwendet jedes neu gestartete Programm die neue Sprache. Der Finder (mit Desktop, etc.) ändert die Sprache nach einem Login. Das ist aus verschiedenen Gründen sehr praktisch. Erstens habe ich mein System jetzt auf Spanisch gestellt um mich schneller an die Sprache zu gewöhnen und auch um die Computer-Ausdrücke zu lernen. Dann wollte der Typ im Internet-Café einige Netzwerk-Einstellungen vornehmen (ja, ich kann da jetzt meinen Laptop verwenden!). Dies viel ihm einiges leichter mit spanischen Begriffen. Und schliesslich ist es praktisch, die Sprache ändern zu können, wenn ein ausländischer Freund etwas am Computer erledigen soll. Oder umgekehrt: als ein Freund und ich in Japan mal die Apple Präsentations-Software Keynote austesten wollten, haben wir die Sprache von Japanisch auf Englisch geschaltet und konnten so etwas mit Keynote anfangen.

Und dann noch das Dashboard. Heute standen im Internet-Café wieder mal drei Leute um mich rum, weil sie mein PowerBook so schön, super, famos und so weiter fanden. Da hat jemand nach dem Preis gefragt, den ich natürlich nur in Schweizer Franken wusste. Um das in eine bekanntere Währung umzurechnen habe ich dann erstmal finance.yahoo.com als Adresse eingegeben, bis mir dann einviel, dass ich ja im Dashboard einen Währungsrechner habe. Der hat nur den Nachteil, dass die Währung Nuevo Sol nicht zur Verfügung steht. US Dollar reicht aber meistens.
Und was ich im Dashboard auch noch habe sind drei Uhren in den verschiedenen für mich relevanten Zeitzonen: Lima, Zürich und Tokyo. Sehr praktisch für einen kurzen Check, ob ich auf eine Mail oder SMS gleich eine Antwort erwarten kann oder nicht. Und natürlich für Telefonate sowieso.

Ach ja, wenn jemand eine gute Software sucht um Vokabeln zu lernen: erledigt die Aufgabe sehr gut. Ursprünglich vermisste ich es, dass es bei der Abfrage von Vokabeln die Sprache nicht automatisch wechseln kann. Was ich wollte war, dass die ersten beide male von Spanisch auf Deutsch abgefragt würde (da einfacher) und danach von Deutsch auf Spanisch (da schwieriger). Mittlerweile vermisse ich das nicht mehr, ich lasse immer Deutsch auf Spanisch abfragen.