25.10.2009BarCamp Rapperswil

Das gestrige BarCamp in Rapperswil hat riesigen Spass gemacht.

BarCamp
Rapperswil

Als erstes will ich mich gleich bei Corsin als Organisator bedanken, war echt super. Das BarCamp fand in der Hochschule für Technik Rapperswil (HSR) statt, von dem her ein für mich vertrautes Terrain. Es war ein Treffen technisch interessierter Leute über die unterschiedlichsten Facetten der IT. Da gab es einen Speech von Urs (ComMetrics) über Blogs, Social Media und deren Messbarkeit. Dann war Yvonne-Anne von Fybit vor Ort um ihr Produkt RIATrax vorzustellen (Rich Internet Applications in Pure Java), oder Frank, welcher eine Diskussion leitete über die Zukunft des Web 2.0, welche Konzepte überleben, welche nicht und warum.

Ein weiteres Highlight war die Präsentation von Markus Stolze (Professor an der HSR) über den Multi-Touch Table, welcher an der HSR mitentwickelt wurde. Multi-Touch
Table

Alles in allem war es ein Event unter Gleichgesinnten um sich auszutauschen. Wir haben viel gelacht (z.B. über das Hashtag #bcrappi) und nachgedacht, kritisch betrachtet und kommentiert.

Ich ging mit vielen neuen Ideen und Eindrücken nach Hause, genau so sollte das sein. Ich freue mich bereits auf nachfolgende BarCamps, ist sicher nicht das letzte Mal, dass ich da war.

Die Bilder zum Event gibts auf Flickr.

PS: I don’t want to miss to mention Joel our Swedish guy, who made this BarCamp truly international ;-)

23.10.2009PostFinance SMS Service

Vor einigen Tagen bekam ich Post von PostFinance, meinem Kontoverwalter der Wahl.

Darin wurde ihr neuer SMS Service angepriesen (mit einem etwas arg lustigen Comic)

Die Idee an sich gefällt mir:

  1. Ich kann jederzeit von unterwegs Zahlungen tätigen, vor allem spannend wenn ich kein Bargeld da habe, und ich welches von einem Freund bekomme (“Gib mir doch 100.-, ich überweise es dir aufs Konto”)
  2. Jederzeit kann mit einem SMS der aktuelle Konto-Stand geprüft werden (ohne E-Banking und Anstehen am Postomat)
  3. Wurde XY schon bezahlt? Man kann sich die letzten 5 Bewegungen auf dem Konto per SMS schicken lassen.

So funktionierts

Über das E-Banking kann man sich bequem für den Service anmelden (unter Service -> SMS), dann bekommt man einen Prüfcode aufs Handy, und registriert diesen online.

Dann können einfach Keywords an die Nummer 474 geschickt werden: SALDO = aktueller Saldo (=1 SMS)\ BEWEGUNGEN = letzte 5 Bewegungen ZAHLE CHF “Betrag” AN “Kontonummer” “Text” = Überweisung

Beispiel: ZAHLE CHF 50 AN 85-4887-4 Mittagessen, Gruss Stefan

Echt praktisch!

23.10.2009Insert text at top of a file

If you want to insert text at the end of a file (“append”) you can simply use:

 $ echo "test" >> my_file.txt

which then adds “test” on a new line at the end of the “my_file.txt”. In my case I had to insert text at top of a file. If you start to google for that you discover quite fancy solution like using vi or some sed magic.

For me this was all too much. I have a file with quite static text in it. At the end of a shell script I want to insert the content of this file at the beginning of a logfile created by the script.

When using files it’s getting easier:

 $ cat my_static_file.txt logfile.txt > temp_logfile.txt 
 $ mv temp_logfile.txt logfile.txt

But my script can run parallel and therefore this approach is very dangerous. I was looking for a quick solution and came up with this:

 $ cat my_static_file.txt logfile.txt > $$ && mv $$ logfile.txt

This has the advantage of being on a single line and using “\$\$” as filename. \$\$ is the process ID (PID) of the current running script, and therefore cannot exist twice at the same time.

Because of the usage of && and calling everything on one line is, that the following command is only executed when the predecessor command finished successfully. Otherwise the whole command quits. In my case this means the logfile will be kept and not moved.

23.10.2009Delete all symlink of a directory

It seems like a simple task, and it really is. But I always have to google for such simple stuff, that’s why I start to post things here, so I don’t have to look up the same things over and over again.

To list all files of a directory you can use (sort by date)

 $ ls -lt
total 35
lrwxrwxrwx   1 oracle   dba           13 Jan 30 09:47 etc -> /etc/
drwxr-xr-x   2 oracle   dba         8192 Jan 29 11:40 data
drwxr-xr-x   2 oracle   dba         8192 Jan 29 11:23 info
drwxr-xr-x   2 oracle   dba         8192 Jan 20 15:27 main
-rwxr-xr-x   1 oracle   dba         2643 Dec 18 15:11 run.sh
drwxr-xr-x   2 oracle   dba         8192 Nov 20 14:16 _old

As you can see the symlink is marked with the “l” at the beginning, you can use that to get only links in the output using grep:

 $ ls -lt | grep '^l'
lrwxrwxrwx   1 oracle   dba           13 Jan 30 09:47 etc -> /etc/

To delete the files we are only interested in the filename this can be done using awk. Finally xarg is a tool that runs a given program on every element of it’s input, so the final task can be done by:

 $ ls -lt | grep '^l' | awk '{ print $9 }' | xargs rm

23.10.2009Sie haben Post: Ihre Admin.

Erstmal: Mit “Admin” meine ich die Administration einer Firma, also meist das Team rund um den “Empfang”. Bekanntlich sind dies die “Tätschmeister”…

Ich kenne zwar noch nicht viele Firmen, aber es scheint gängiger Kodex zu sein: 1. Grundsätzlich alle Mails nur im Subject zu schreiben (sonst liest sie eh niemand) 2. Möglichst viele Ausrufezeichen (!) zu verwenden !!!!!!!!1!!!!!!!111!!! 3. Einen möglichst breiten Leserkreis zu erreichen (obwohl es nur die Abteilung XY betrifft).

Ich möchte hier gerne einige Müsterchen wiedergeben (to be continued):

  1. From: Admin To: _ALL Subject: Wir bitten euch die Früchte ganz zu essen und nicht angeschnitten zurückzulegen !!!!!! Body: -no data-

  2. From: Admin To: _ALL Subject: Hallo, wir suchen verzweifelt den grossen Bostich vom 5. Stock. Bitte zurücklegen. Danke !!!! Body: -no data-

  3. From: Admin To: _ALL Subject: Wir suchen verzweifelt den Moderatorenkoffer hat den jemand bei sich? Lieben Dank fürs checken. Admin Body: -no data-

  4. From: Admin To: _ALL Subject: Da es heute draussen so heiss ist: Bitte Fenster nicht öffnen !!!! Body: Gruss Admin

  5. From: Admin To: _ALL Subject: Schlechte Nachricht für die Hungrigen! Body: Leider kommt heute der Znüni-Express nicht vorbei, wegen Unfall. Die Ware wurde leider beschädigt. :(

  6. From: Admin To: _ALL Subject: Zur Info….. Alarmanlage wird in wenigen Minuten ausgelöst, ACHTUNG !! ist nur ein TEST…..Gruss Admin Body: -no data-

  7. From: Admin To: _ALL Subject: Achtung Radar!!! Zwischen Tankstelle und Autobahn… Fahrt anständig;-) Grüessli Admin Body: -no data-

  8. From: Admin To: _ALL Subject Wir suchen dringend den Besitzer von dem schwarzen Audi A3 ohne Nummernschild! Bitte bei uns melden, Grüessli Admin Body: -no data-

23.10.2009Ausreden fürs Nicht-Trinken

Es soll vorkommen. In der Abteilung in der ich zur Zeit arbeite, ist es der Donnerstag. In der Cafeteria trifft man sich. Es wird eine Flasche Wein geöffnet und reihum kriegt jeder sein Glas gefüllt.

Wenn man das nicht will, steht man blöd da. Hier Tipps für die passende Ausrede:

  • Ich komme gerade von einem anderen Apéro
  • Ich habe einen 0,0 Promille-Grenze für die Autoversicherung
  • Ich trinke nur Bier (welches zufälligerweise gerade nicht zur Hand ist)
  • Ich habe nachher noch ein Meeting - mit meinem Chef
  • Ich geh gleich ins Fitness-Studio

Weitere Ideen sind willkommen und werden gerne aufgenommen.

23.10.2009Zusammengesetzte Wörter

Zur Zeit ist wieder ein Deutsch-Groove in mir. Ich weiss nicht ob dies schubweise kommt - was am ehesten mit einer Krankheit zu vergleichen wäre - oder ob es gar ein Dauerzustand ist, der immer in mir schlummert und zu gegebenen Zeiten ausbricht. Dies wäre wohl eine … äähm … chronische Krankheit?

Egal, jedenfalls fällt es mir wieder vermehrt auf, seitdem ich intensiver mit unseren Deutschen Kollegen zusammenarbeite. Ich finde es witzig mit welchen schweizerdeutschen Ausdrücken sie Mühe haben (z.B. dass eine Wähe ein Kuchen ist, klingt eklig, ist aber so. Und is(s)t dazu noch lecker :) ).

Umgekehrt ist es so, dass mich unsere nördlichen Nachbarn immer wieder mit zusammengesetzten Wortgefechtsfetzen auszuschalten versuchen. Sei es ein “Wortspiel” (jemand beginnt mit einem Wort, an das ein Neues gehängt wird, welches als Grundlage für das nächste dient: Hausdach - Dachziegel - Ziegelstein - Steinschleuder - Schleudersitz - Sitzplatz - Platzregen [..] usw.). Welch ein Spass.

Während sonst viele im Business mit Anglizsmen um sich werfen, um ihre Hippheit zu manifestieren, gelingt es den erwähnten Kollegen sich davon zu befreien und erfrischend unverfroren einen Koloss eines Wortes einzuwerfen. Entscheidet selbst, was klingt besser:

  • Kundenstellvertreterzuteilungsveränderung

oder

  • Change beim Substitute Customer Responsible

Feel free. Oder sollte ich sagen: Hier herrscht Selbstentscheidungsfreiheit.

23.10.2009dvd::rip and gentoo

dvd::rip (or dvdrip at the gentoo repository) is a very comfortable ripping software to bring your DVDs on your harddisk.

When I emerged it and wanted to rip a dvd, I just got no result.

  1. the logfile showed no error
  2. in the status bar the text appeared Grab preview - title #3 Duration: 00:01 [Error]
  3. dvd::rip did nothing.

The chapter has been ripped and the file existed on the filesystem, but I was unable to transcode it or do anything else with dvd::rip.

A lot of googling did not provide the solution, but finally I saw that dvd::rip prints the exact command that is executed in the logfile, so I tried to run it manually to eventually see an error.

And then there was theerror:

convert: no decode delegate for this image format `/tmp/dvdrip24111.snap/snapshot001.png'.

I quick search with that showed me, that the problem was imagemagick, which obviously did not have png support. I added the USE-flag “png” to imagemagick in /etc/portage/package.use and re-emerged imagemagick.

Another problems was that transcode was missing the “mp3” USE-flag.

Since then dvd::rip just works!

23.10.2009Generate n rows from dual

I needed to generate exactly n rows and then this is very handy.

select * from (
select level lvl
from dual
connect by level <= N
)

Found at: http://awads.net/wp/2005/07/01/generating-n-rows-from-dual/


enabled: