iMac auf der Arbeit

Habe ich schon erwähnt, dass ich einen iMac als Arbeitsrechner verwende? Nicht? Dann wird es aber mal Zeit.

Ich kenne nämlich den einen oder anderen Ex-Kollegen der sich tierisch freuen würde, wenn ihm sein Arbeitgeber ein solches Geschenk machen würde. Ich habe mich jedenfalls gefreut, als die Kartons mit den 27′ iMacs in unsere IT-Abteilung geschoben wurden und ich mir Einen aus dem Stapel nehmen durfte. Das nenne ich mal Mitarbeiter-Motivation. Da macht das Arbeiten am Rechner gleich doppelt so viel Spaß.

Seit dem ersten wohlklingenden Start von OSX auf der Arbeit sind schon einige Tage vergangen. Der Rechner ist nun komplett eingerichtet und die Programme haben ihren festen Platz auf den so genannten Spaces gefunden. Das riesige Display ermöglicht ein bis dahin unmögliches Arbeiten mit der Entwicklungsumgebung Eclipse. Bisher war es immer notwendig die einzelnen Unterfenster von Eclipse wechselweise zu maximieren. Bei einem Bildschirm von 27′ reicht der Platz für eine fest definierte Aufteilung der Entwicklungsumgebung.

Livingston Konzert in Hamburg

Jetzt war es schon das zweite Mal, dass mich Livingston ins Konzert gelockt hat. Eine Freundin von mir ist an meiner Konzertkarte zwar nicht ganz unbeteiligt, aber trotzdem. Obwohl ich die Musik seit dem letzten Auftritt von Livingston im Dezember rauf und runter gehört habe, kann ich sie mir immer noch ohne Ohrenbluten antun. Beim nächsten Konzert in Hamburg werde ich bestimmt wieder in der Menge stehen und mit grölen. Und wenn ich mir die Karte selber besorgen muss.

Wer die Musik von Livingston mag, wird sicher auch von den Trommeln angetan sein. Auf dem Konzert haben sie mal wieder ordentlich Gebrauch davon gemacht.

Zum Video

Beim letzten Mal hatte der Sänger der Band bereits die Lautstärke des Publikums in Hamburg gelobt und uns versichert, dass ein Konzert in der Hansestadt so ist wie nach Hause zu kommen. Dieses Mal hatte der Gute sogar einen Zettel mit aneinander gereihten deutschen Wörtern dabei, deren konzentriertes Ablesen tatsächlich eine verständliche, deutsche Version dieser Äusserung ergab. Ich muss schon sagen, er gibt sich wirklich Mühe. Beim nächsten Mal vielleicht ohne Zettel.

Leider habe ich von dem deutsch sprechenden Bandleader kein Video zur Hand. Aber wenigstens ein englisches Lob auf Hamburg.

Zum Video

Inzwischen habe ich schon das eine oder andere Konzert besucht, aber keine Band hat diese Wärme ausgestrahlt und solch eine Nähe vermittelt. Fast zum Anfassen und Kuscheln. Obwohl, so manches Band-Mitglied konnte man nach dem Konzert tatsächlich anfassen. Den Gitarristen habe ich zum Beispiel beim Simsen beinahe umgelaufen. I’m so sorry.

Last.fm

lastfmtoplist Bisher nutze ich den Dienst von Last.fm kaum. Ab und zu mal ein paar Musikvideos schauen und die Radiostation einer bestimmten Gruppe hören, um den Horizont etwas zu erweitern. Auf diese Weise entdecke ich manchmal sogar einen musikalischen Leckerbissen. Praktisch finde ich das Scrobbeln (schreibt man das so?) mit dem Last.fm Scrobbler, wenn ich meine Musik in iTunes höre. Meine Playlist wird dadurch nach und nach online in meinem Profil gespeichert. Sobald ich stolzer Besitzer eines iPhones mit Datenflat bin, werde ich mir das Kopieren meiner Musik auf einen Player sparen können und den lieben langen Tag die/meine Musik von Last.fm aus dem Netz lutschen. Irgendwann wird es soweit sein.

Wenn ich mir die Liste meiner bisher gespielten Künstler so ansehe, scheine ich die Gruppe Snow Patrol zu mögen…stimmt.

TrueCrypt mit Groovy automatisieren

Als Benutzer eines Unix-Systems schreibe ich mir gerne mal ein Script, um wiederkehrende Aufgaben zu vereinfachen. Für das automatische Einbinden von virtuellen, verschlüsselten TrueCrypt Laufwerken in mein Home-Verzeichnis habe ich mir ein Script mit Groovy geschrieben.

Bei dem unten aufgeführten Script werden alle in der Variable „mounts“ definierten TrueCrypt Dateien in die angegebenen Ordner eingebunden. Die Logik geht davon aus, dass man ein Password bei dem Aufruf des Groovy-Scripts in dem Kommandozeileninterpreter übergibt. Alle virtuellen Laufwerke müssen mit diesem einen Password zu öffnen sein.

$ groovy TCMounter.groovy PASSWORD

Dieses Passwort wird für alle virtuellen Festplatten verwendet.

// List of mounts
List<Mount> mounts = [
 new Mount("PATH TO SOURCE", "PATH TO DESTINATION"),
 new Mount("PATH TO SOURCE", "PATH TO DESTINATION")
 ];

// Invocation of routines
TCAutoMounter mounter = new TCAutoMounter(mounts, args[0]);
mounter.mount();

// OOP
/**     
* Mounts automatically all defined sources to destinations.
**/
class TCAutoMounter { 

 private String TRUE_CRYPT =
   "/Applications/TrueCrypt.app/Contents/MacOS/TrueCrypt";            
 private String OPTIONS =
   "--non-interactive --mount --password=";       
 private String SHELL = "/bin/bash -c ";

 private String password;    
 private List<Mount> mounts;

 public TCAutoMounter(List<Mount> mounts, String password) {
 this.password = password;
 this.mounts = mounts;
 }

 /**
 * Mount automatically with password.
 **/
 public void mount() {
 if (password == null || password.length() == 0) {
 println "No password was given!";
 } else if(mounts == null || mounts.size() == 0) {
 println "No mounts defined!";
 } else {   
 //int size = mounts.size();
 //println size + " mounts defined";
 for (item in mounts) {
 execute(item.source, item.destination);
 }
 }
 }

 /**
 * Executes the mounts within the command line.
 * @param source The source file.
 * @param dest The destination folder of mount.
 **/
 private void execute(String source, String dest) {
 String command = TRUE_CRYPT
    + " " + OPTIONS +  password
    + " " + source + " " + dest;
 //println "Command will be executed: " + command
 def proc = command.execute();
 proc.waitFor();   
 if (proc.exitValue() == 0) {
 println "Mount of " + dest + " to " + source + " successful.";
 } else {
 println "";
 println "Mount of " + dest + " to " + source + " FAILED!";
 println "";
 println "Error text  => ${proc.err.text}";
 }
 }
}    

/**
* Bean for definition of mounts.
**/     
class Mount {

 String source;
 String destination

 public Mount(String source, String destination) {
 this.source = source;
 this.destination = destination;
 }
}

Wenn Jemand eine Verbesserung parat hat, immer her damit.

Meine neue Wohnung

… in Hamburg Hohenfelde ist nicht unbedingt ein Palast, hat aber alles was man so braucht. Alles nur etwas kleiner. Ich könnte mich auch schon so richtig wohl fühlen, wenn die Bauarbeiten am Gebäude endlich abgeschlossen wären und mein Internet-Provider den Zugang termingerecht einrichten würde. Durch die Bauarbeiten im Eingangsbereich des Gebäudes wird eine Menge Dreck und Staub produziert. Der Staub geht durch die Ritzen der Türen und den Dreck trägt man an seinen Füßen selber in die Wohnung, wenn einem der Wind beim Öffnen der Haustür nicht die Arbeit abnimmt. Da die Wohnung nur aus wenigen Quadratmetern zwischen Haustür und Stubenfenster besteht, verteilt sich das Zeug mal eben in der gesamten Wohnung. Wenn nach einem langen Arbeitstag Langeweile aufkommen sollte, kann ich mir die Zeit mit Putzen vertreiben. Da habe ich momentan immer etwas zu tun.

Umtrunk in der Küche

umtrunkMutti sagt: „Der alte Sekt muss weg!“ Also Restbestände aus dem Keller des Elternhauses schaffen, rein ins Auto und ab nach Hamburg in die WG. Mit drei Mädels in der Wohnung findet man bestimmt Abnehmer für die vier Flaschen Prickelwasser. Und tatsächlich. Einen Abend später war lustiger Umtrunk in der Küche mit O-Saft und … ach ja, Sekt.

Richtig gemütlich wurde das ganze mit Kerzenlicht und Musik aus dem Rechenknecht. Wenn Jeder nacheinander bestimmen darf was gespielt wird, ist keiner musikalisch gefrustet. Bei so stark divergierendem Musikgeschmack wie bei uns, eine gute Idee.

Praktisch sind dabei die Möglichkeiten die iTunes einem von Hause aus bietet. Wenn die Anderen in der WG ihre Musiksammlung im Netzwerk freigeben, findet Jeder auch gleich seine Lieblingsmusik in seinen eigenen Wiedergabelisten.

Hoffentlich gibt es noch ein paar solcher gemütlichen Abende. Von mir aus ohne Sekt. Mir hat das Zeug nicht gut getan.

Parken in Hamburg

parken_00Wer in Hamburg einen Parkplatz sucht sollte sich den Parkplatz mal genau anschauen. Neben der prinzipiellen Möglichkeit des Parkens sollte man sich bei dieser Parksituation das potenzielle Einparkverhalten anderer Verkehrsteilnehmer durch den Kopf gehen lassen.

Obwohl alle Autofahrer in der Fahrschule das Einparken gelernt haben und die Natur Jedem ein räumliches Vorstellungsvermögen geschenkt hat, scheint das Nehmen einer Parklücke immer wieder ein Kampf mit dem inneren Schweinehund zu sein. „Will ich sie (komme was wolle) oder suche ich weiter, weil ich da nicht rein passe?“

Folgende Parksituation findet sich in einer Hamburger Seitenstrasse (linkes oberes Bild).

Nach dem Einparken eines mäßig begabten Verkehrsteilnehmers ergibt sich folgende Oberflächenbeschaffenheit der Stoßstangen (untere Bilder).

parken_01parken-02

Auszug aus der alten neuen Wohnung

wohnung_pulverteich_01

Jetzt ist mein Einzug in die WG gerade mal 6 Wochen her, da habe ich schon eine neue Wohnung angemietet. Wenn man die Gelegenheit bekommt eine Wohnung für 420 Euro/Monat mieten zu können, ohne Courtage zahlen zu müssen, dann kann man nur schwer nein sagen. Eine WG war ohnehin nur zweite Wahl. Ursprünglich habe ich eine eigene Wohnung in Hamburg gesucht. Trotzdem gehe ich nun mit gemischten Gefühlen in meine neue, eigene Wohnung. Mit meinen Mitbewohnern verstehe ich mich nämlich super. Wir haben schon so manches nette Gespräch geführt und einige Biere gemeinsam geleert. Irgendwann fängt man sogar an über das Leben zu philosophieren und tiefsinnige Unterhaltungen zu führt. Mit so etwas baut man eine echte Verbindung auf, habe ich das Gefühl.

Glücklicherweise ziehe ich nicht so weit weg. So kann man den Ex-Mitbewohner auch mal einen Überraschungsbesuch mit Sechserträger abstatten. Mit Notebook und externen Lautsprechern kommt sogar in der verbauten Altbau-Küche eine nette Atmosphäre auf.

Und genau das ist letztendlich der Grund für meinen Umzug. Die Wohnung ist verdammt alt. Die Vermieter haben anscheinend keinerlei Interesse an der Pflege und Erhaltung der Wohnung. Interessanter Weise sind sie selber die eigentlichen Mieter der Wohnung und vermieten diese Wohnung an Leute weiter, die verzweifelt nach einer Wohnung in Hamburg suchen. Also an mich.

Wenn man das Prinzip des Wohnungsmarktes in Hamburg verstanden hat, drängt sich das Vermieten an Untermieter eigentlich auf. Die Leute suchen nicht selten aus der großen Ferne nach einer Wohnung. Man hat aufgrund der Entfernung nicht immer die Zeit, die Lust und das Geld mehrmals die Woche nach Hamburg zu fahren und eine Wohnung zu besichtigen. Eine Wohnung, für die sich via Internet 100 Leute interessieren und bei der etwa 20 bis 50 Leute persönlich bei einem Besichtigungstermin erscheinen. Aber ich schweife ab…

In den nächsten Tagen beziehe ich meine neue Wohnung. Internet ist bereits bestellt und Klohpapier, Spülmittel usw. warten bereits im Kofferraum meines Wagens auf ihren Einsatz in der neuen Wohnung. Eigentlich warte ich nur noch darauf, daß der Techniker des Internet-Providers meines Vertrauens den Eintritt in die Wohnlichkeit verlangt und den Anschluss auf Tauglichkeit überprüft. Sobald das passiert ist, bekomme ich meinen Internetanschluß freigeschaltet. Da man als IT-ler von Heute nicht ohne Internet leben kann, ist mir das natürlich ein Anliegen. Wie sonst kann ich ich meine Freundin trotz 142 km Distanz regelmäßig sehen. In bewegten Bildern, meine ich.

MySQL – Unterabfragen vs. temporäre Tabellen

Bei der Erstellung von Datenbankabfragen mit SQL kommt man bei der Auswertung vieler Daten sellten mit einer einfachen Abfrage aus. Oft benötigt man eine Ausgabemenge, welche als Argumente einer weiteren Abfrage dienen soll. Für diese Zwecke eignen sich verschachtelte Abfragen die aufeinander aufbauen und mit einem Mal die gewünschte Ausgabe erzeugen können.

Leider reicht nicht immer die Leistung des Datenbankservers für eine komplexe Unterabfrage aus und man wartet ewig auf seine Ausgabemenge. Der Grund für dieses Problem liegt auf der Hand. Durch die aufeinander aufbauenden Abfragen wird viel Arbeitsspeicher benötigt. Reicht der Speicher für die Komplexität nicht aus, ist der Server momentan überlastet oder ist er nicht optimal konfiguriert, wird die Abarbeitung deutlich ausgebremst.

Um die Ressourcen des Server zu schonen kann man temporäre Tabellen anlegen und die Ausgabemenge einer einzelnen Abfrage vorübergehend in dieser Tabelle speichern. Diese Logik kann auf eine beliebig komplexe Unterabfrage angewendet werden, wobei der Datenbankserver immer nur mit der Abarbeitung einer einelnen Abfrage belastet wird.

Um sich die Erzeugung dieser temporären Tabellen durch DDL Statements zu sparen, kann man es MySQL überlassen den richtigen Aufbau der Tabelle zu wählen. Hierzu verbindet man eine CREATE- mit einer SELECT-Anweisung.

Hier ein Beispiel:

CREATE TABLE temptablename1 SELECT * FROM
  tablename1 i WHERE ...;

CREATE TABLE temptablename2 SELECT * FROM
  temptablename1 i, tablename1 j WHERE ...;

SELECT * FROM tablename1 i WHERE 1 <=
  (SELECT COUNT(*) FROM temptablename2 u WHERE u.attribute1=i.attribute1);

Mein Arbeitsplatz bei Partners Software GmbH

workstation_01An meinem bisherigen Arbeitsplatz in Bremen konnte ich viel über die Konzeption und Realisierung von Multi-Tier Systemen unter Berücksichtigung aktueller, anerkannter Entwufsmuster und Vorgehensweisen lernen. Zu meinen Aufgaben gehörte die Entwicklung von Java basierten Webapplikationen mit aktuellen Technologien und Frameworks, Datenbankdesign, objektrelationales Mapping, Bereitstellung der Softwaresysteme auf diversen Betriebsumgebungen und das Konfigurationsmanagement.

Nun ist es an der Zeit sich neuen Herausforderungen zu stellen. Auf der Suche nach neuesten Technologien und Vorgehensweisen habe ich eine Firma in Hamburg gefunden, die meiner Vorstellung von einem idealen Arbeitsplatz am nächsten kommt.

Meinen Kollegen bei Partners Software wünsche ich alles Gute und weiterhin viel Erfolg. Vielen Dank für die Unterstützung und das kollegiale Miteinander.