Archive for the 'general' Category

I told you: Presentations

When working with teams, I happen to explain over and over again what I think is a good presentation and what I think is a bad presentation. Now I post that wishful thinking of mine here, so that I can redirect everybody here who wants to know what I appreciate when putting together a presentation.

Mandatory: Title slide

The first slide must contain

  • the date of the presentation
  • the names of each presenter
  • the title / subtitle of the presentation

Mandatory: Slide numbers

I want slide numbers on every slide. If there are no slide numbers, people cannot take notes and refer to a particular slide afterwards.

Mandatory: PDF only

There is no way I accept a PowerPoint or Keynotes file when handing in the presentation to the customer. It has to be PDF. However, it is OK to use the Keynotes project to present the presentation, because the Mac OS PDF full screen view sucks.

Mandatory: Rounded corners

Yes, I could put this into “Nice-to-Have features”, but it is so little work and so much effect that I request it. Use black, rounded corners for your presentation. If you don’t know how to do that, take it as an opportunity to learn how to do that. Keynotes should be shipping with a rounded corners function :)

Mandatory: No animations

The presentation mustn’t have any animation.

Nice-to-Have: Backups

Everybody in the team carries the presentation on a USB stick. Even better: bring some print-outs to be sure.

It-depends: Dark / Light slide background

Guy Kawasaki made a stunning remark about why slides should have a dark background: Did you ever see the credits in the end of a movie on white background? At any rate, I recommend that you use a dark background (gray/black/blue) when the audience is sitting in a very small room and the screen is right in front of their eyes and they have to look at presentations all day long. In that case it is exhausting to look at a huge bright wall. If the presentation is a rather unique event of the day, you should use white background (easier to print as well). Check out the Apple Keynotes for good-looking dark background, they’re hard to make.

The Laptop…

  • doesn’t need to reboot for VGA output
  • has the monitors synchronized, so that the presentation will be on the one and only main monitor
  • doesn’t have any icons on the desktop (looks very unprofessional)
  • does have an unspectacular, neutral desktop wallpaper (preferably black)
  • was tested on the beamer BEFORE the presentation started
  • has NO other program open (like messenger, outlook) except the presentation
  • has REALLY NO other program running, that includes the screensaver!
  • is connected to the power or has a full battery

The Presenter…

  • does NOT introduce the next speaker. You just leave the stage when you said your part.
  • will have a remote control (if not, let the others take care of controlling the slides)
  • does NOT look at one person (e.g. professor) – look at all the people
  • has practiced his part at least 3 times in front of the mirror and hits his time limit exactly

The Others…

  • stand on the SAME side while not saying anything
  • give the presenter FULL attention and are completely silent

Etwas mehr Privacy bitte (pgp, gpgmail, snow leopard, google suggest)

Glimmerblocker ist meiner Meinung nach der Beste Adblocker. Zu bekommen auf: www.glimmerblocker.org

Damit kann man dann auch einfach Google suggest queries blocken (einfach hosts blocken, die “/complete/search” im path haben)

Endlich gibt es GPGMail auch für Snow Leopard.

Direkt download: http://dl.getdropbox.com/u/20215/GPGMail-1.2.1.mailbundle.zip

Hintergrund für die Beta: http://discussions.apple.com/thread.jspa?threadID=2136007&start=30&tstart=0

(Snow) Leopard + Rails + Passenger + VirtualBox + Windows 7 and localhost

How do you test your Rails app in Internet Explorer? Crossover? Parallels? VMWare?

However, I use VirtualBox and Windows 7 and it turned out to work out of the box.

In your PassengerPrefPane just rename one of your applications to begin with “a”, so that it is alphabetically the FIRST entry! You can verify this by listing the contents of this directory:

/etc/apache2/passenger_pane_vhosts

The first one will be available on “localhost” in your Mac. That should be the application you would like to test in IE.

Now just boot up your Virtualbox with Windows 7 and hit 10.0.2.2 in the IE, and you will see that particular application.

Imagemagick on Snow Leopard

This is what the world has been waiting for:

http://github.com/maddox/magick-installer/tree/master

Because AFTER THAT you can sudo gem install rmagick

Passenger für Ruby on Rails aus TextMate “automatisch” neu starten

Manchmal möchte man seine Ruby-on-Rails-Applikation im Passenger manuell neu starten. Sprich eine Datei my_app/tmp/restart.txt anlegen. Ich habe ein kleines Command-Skript für TextMate dafür geschrieben. Wenn man es ausführt (in diesem Beispiel mit APFEL+R), wird beim nächsten Browseraufruf alles neu geladen. Praktisch wenn man Plugins entwickelt :)

Hier der Command in TextMate:

restart_passenger

Und hier der Code dafür

18
19
20
21
22
23
24
#!/usr/bin/env ruby
 
require "#{ENV['TM_BUNDLE_SUPPORT']}/lib/rails_bundle_tools.rb"
f = File.open File.join(RailsPath.new.rails_root, "tmp", "restart.txt"), "w"
f.close
 
puts "Rails Application will be reloaded!"

Musik vom Apple TV zurück in iTunes retten

Gleich vorweg: Es kostet dich deine Apple-TV-Garantie und ein 2,5″ externes Festplattengehäuse (IDE, oder neu-deutsch: PATA). Aber: Es war’s wert.

Denn plötzlich war iTunes leer (lange Geschichte) und das einzige Backup war… der Apple TV! Der wurde natürlich sofort ausgesteckt, weil der sich sonst wieder synchronisiert hätte und dort auch alles futsch gewesen wäre.

1. Festplatte vom Apple TV ausbauen
Dafür hätte ich nicht einmal eine der zahlreichen Anleitungen benötigt, denn die acht Schrauben (T8 und T10) stellten kein sonderliches Problem dar :) Natürlich musste ich zuerst die aufgekleisterte Gummi-Bodenplatte abmachen. Das ging jedoch ohne Sauerei und man kann die wieder ankleben. Aber vorsicht: Die reißt sehr schnell ;)

2. Externes Gehäuse für 2,5 Zoll IDE (=PATA) kaufen
Schnell gemacht. Kostet 12 Euro ;)

3. Apple TV Festplatte einbauen und am Mac anschließen
Die Platte soll natürlich nicht von Spotlight indiziert werden! Dafür hält man sich ganz ganz schnell folgende zwei Terminal-Befehle bereit und feuert sie ab, sobald die Platte (und ihre beiden Partitionen Media und OSBoot) erkannt wurde.

touch /volumes/Media/.metadata_never_index
touch /volumes/OSBoot/.metadata_never_index

Wichtig: Platte abklemmen und wieder anklemmen, Spotlight wird seine Änderungen die er in den ersten Sekunden gemacht hat wieder rückgängig machen.

4. Drag’n'Drop der AppleTV Media Files in iTunes
Die Dateien auf dem Apple TV haben zwar die gleiche Struktur wie das iTunes Verzeichnis eines jeglichen Macs, jedoch sind die Dateinamen alle nur ein paar kryptische Buchstaben á la DDHX.mp3, NKKZ.mp3 usw. Das ist iTunes beim Import zum Glück egal, denn alle Metainformationen (inkl. Cover) sollten IN den einzelnen Dateien enthalten sein.

5. Apple TV wieder zusammen bauen, anklemmen, synchronisieren, läuft.

PS: Bei der Gelegenheit fragt man sich natürlich, ob es nicht so schwer sein könnte, einfach eine größere Festplatte in den Apple TV einzubauen ;)

Apache2 auf dem Mac macht nur 401 wegen FileVault

Wenn man FileVault benutzt kann es zu Schwierigkeiten mit Apache kommen. Man bekommt ständig einen 401 um die Ohren gehauen. So lässt sich Passenger natürlich nicht verwenden!

Folgender Befehl schafft Abhilfe:

sudo chmod +a “www allow search” /Users/DEINBENUTZERNAME

(ggf. sollte man VORHER noch mit dem Festplatten-Dienstprogramm die Verzeichnisrechte generell einmal reparieren lassen).

Rails 2.2: NoMethodError von create_time_zone_conversion_attribute?

Nachdem ich jetzt mehrere Stunden nicht verstanden habe, wieso meine Rails Applikation nur einen Klick lang funktioniert, möchte ich euch dran teil haben lassen. Ich habe mehrere Libraries und Plugins die alle meine Models erweitern und dachte schon es läge daran, dass immer dieser Fehler auftauchte:


You have a nil object when you didn't expect it!
You might have expected an instance of Array.
The error occurred while evaluating nil.include?

Recherche brachte mich hier her:
http://rails.lighthouseapp.com/projects/8994/tickets/1339

Das ganze lag nur daran, dass in Rails 2.2 ein Bug ist, der einen ein ActiveRecord Model nicht in eine Konstakte packen lässt!

Ich hatte eine Config-Datei die

1
MEINMODEL = MeinModelName

machte und später im Controller dann

1
MEINMODEL.find(....

Und das darf man nicht :) Jedenfalls noch nicht.

SVN Commands

Weil ich sie immer wieder suche, hier eine Liste von SVN Befehlen, einfach erklärt und mit schönen Beispielen. Besonders svn:ignore benutzt man immer wieder. Auch wenn ich gerade git installiere, der ein oder andere versteht SVN sicher besser mit diesem Dokument.

– SVN PROPERTIES –

ANZEIGEN

Properties des aktuellen Verzeichnisses anzeigen
svn pl

Zeige alle Änderungen für den nächsten commit, ignorierte Dateien sollen trotzdem angezeigt werden:
svn st –no-ignore

Alle Properties rekursiv anzeigen
svn pl -R
Merke: “Properties on ‘config’: svn:ignore” bedeutet nicht, dass “config” ignoriert wird, sondern dass im Verzeichnis config, gewisse Objekte ignoriert werden. “config” ist in gewisser Weise nur der Träger der Eigenschaft, die Werte widerrum sind die Inhalte in config, welche ignoriert werden.

Alle svn:ignore Properties rekursiv anzeigen
svn pg svn:ignore -R

Details über ein Property erhalten
svn pg PROPVAL PATH –strict
Beispiele:
Welche Objekte werden im aktuellen Verzeichnis ignoriert?
svn pg svn:ignore . –strict

SETZEN

Property des aktuellen Verzeichnisses setzen
svn ps PROPNAME PROPVAL PATH
Merke: Der aktuelle Wert des Properties wird dabei überschrieben! Möchte man ihn behalten, muss man ihn neu mit hinzufügen.
Merke: PROPVAL für z. B. svn:ignore ist ein Objekt je Zeile. Das wird mit z. b. “objekt1[RETURN]objekt2″ erreicht.
Merke: Ein mit “svn mkdir” erstelltes Verzeichnis kann nicht direkt ignoriert werden. Verzeichnisse die ignoriert werden sollen, müssen manuell erstellt werden und können anschließend ignoriert werden.
Beispiele:
Das Verzeichnis test im aktuellen Verzeichnis ignorieren
svn ps svn:ignore test .
Das Verzeichnis test im Unterverzeichnis public/images ignorieren
svn ps svn:ignore test public/images
Die Verzeichnisse test1 und test2 im aktuellen Verzeichnis ignorieren
svn ps svn:ignore “test1[RETURN]test2″ .
Alle *.log Dateien im Unterverzeichnis log ignorieren (Das hat keine Auswirkung auf das Verzeichnis log an sich, sondern nur die Dateien dort drin)
svn ps svn:ignore *.log log

LÖSCHEN

Property PROPNAME von PATH löschen
svn pd PROPNAME [PATH]
Merke: Wieder hat das keine Auswirkung auf das Verzeichnis PATH, nur auf dessen Inhalte! (Es sei denn natürlich PATH ist eine Datei)
Merke: Wird PATH weggelassen, wird das Property vom aktuellen Verzeichnis gelöscht
Beispiele:
Alle Objekte im aktuellen Verzeichnis sollen nicht mehr ignoriert werden
svn pd svn:ignore
Alle Objekte im Verzeichnis public/images sollen nicht mehr ignoriert werden
svn pd svn:ignore public/images

– LEGENDE –

PROPNAME ist ein Property
z. B. svn:ignore oder svn:executable

PROPVAL Wert eines Properties
Die Belegung des Properties mit z. B. dem Namen eines Unterverzeichnisses

PATH Verzeichnis zu einem Verzeichnis oder einer Datei usw.
z. B. dir/subdir oder .

[RETURN] Entertaste
Ist ein Zeilensprung mit der Returntaste

Mailinator Update

Mailinator hat eine neue Funktion eingeführt und die möchte ich kurz vorstellen. In Diesem Artikel haben wir ja bereits über Bugmenot und Mailinator gesprochen.

Das Problem bei einem Mailinator-Account war bisher gewesen, dass jeder, der deine Emailadresse kennt, auch deine Emails lesen kann (ziemlich gravierend, oder? :)

funkensturm@mailinator.com brauchte man nur auf www.mailinator.com eingeben:

mailinator funkensturm login

Und man konnte die Mails lesen:

Um das zu verhindern, sieht man jetzt klein im obigen Bild:
“Alternate Address for this Inbox: M8R-9rdddd@mailinator.com”

Wie hier erklärt, handelt es sich dabei um eine Art Hash-Wert für das Wort “funkensturm”. Das heißt, man gibt in Zukunft nur noch die Adresse M8R-9rdddd@mailinator.com weiter und keiner weiß, dass sich der Account “funkensturm” dahinter verbirgt.