Karaoke in Tokyo

In a new environment, everything takes a little bit longer, and it was already early evening when we arrived at our hotel (booked just an hour earlier at the Tourist Information), a really nice Ryokan called Andon, near the Minowa Train Station. The area was residential, so what to do for dinner? We tried our luck by wandering the streets, and found a place that could pass for a restaurant, but that wasn’t too clear, as the writing on the door was unreadable. We didn’t have much time to hang around, as the door was suddenly opened, and a friendly woman asked us to come in (in Japanese, of course). It turned out that we stumbled into the tiniest Karaoke-Bar in Tokyo – one wall was just a long bench, and after Maha and I were seated, it was full with the two of us and three Japanese, and we were sitting there like birds on a wire.

Nobody spoke English, not even a word – but that didn’t stop them to try to make us as comfortable as possible. And after some beer and some Sake, communication indeed got better. Places like this one are referred to as Izakayas, and all the guests (all male except Maha) called the owner who ran the place just “Mama”.

Even though the place was tiny, it was big enough for two TV screens and… the Karaoke machine. And every once in a while, Mama would throw a coin in the machine, and one of the guests would sing – and at some point, one of the guests was singing a duett with Mama, and they were both pretty good! It goes without saying that Mama had plenty of flirtatious energy for her boys. And of course, Maha and I had no chance of excusing us from singing either. First we tried to point out that we couldn’t read the Japanese texts – only to be hit by a telephone book-sized catalog of songs that included an extensive English section. Oh, well. We made asses of ourselves, but we were with friends and had a blast.

Much later, when we stumbled out of the place, drunk and jet-lagged, we whole heartedly agreed that this was the best welcome to Japan we could have wished for.

One Night in Istanbul

The first impression of Istanbul was almost disappointlingly unexoctic – the city could easily pass for any modern cosmotolitan city – except the stunning architecture in downtown Istanbul, called Sultanamed. Finding a place to stay was easy too, as the city had its own “tourist-ghetto”, with one cheap hostel/hotel next to another. With the flight being delayed and the last tram gone, it was 1 am by the time we checked into the hotel. To excited by everything, we took a nice walk looking at the magically iluminated Blue Mosk and drank tea in a melow summer night.

We rose early to enjoy the city – our shuttle to the airport was scheduled for 3 pm, so there wasn’t much time. The list of things to do was long, but due to time constraint mercyless reduced. At daytime we could see the Blue Mosk from the inside – a stunning structure, supported by four pillars they call “elephant feet”. Next, we were fighting our way past countless carpet-salespeople to the Great Bazaar. As it turned out, the carpet salespeople were a great preparation for the bazaar, where the intensity of touts increased tenfold. It was a tough battle, but we survived it without loosing a Lira to any compleately unnecessary goods (let’s see how strong we’ll be when we return in October).

Almost time for the shuttle. We were back and even had 20 minutes to kill, and decided to spend the time on two glasses of tea and a game of backgammon. After a while, the owner of the Teahouse joined us and explained to us the differences of Turkish Style vs. American Style backgammon. Soon a friend of his joined, and we talked about everything from religion to tourism. And best of all, they did not try to sell us a carpet. What a refreshing and memorable experience.

It’s travel time again – eight weeks Japan

You receive this email either because you signed up for travel news at https://jastram.de, or because you followed my Asia Trip in 2000. Either way, you’re on my Travel Mailinglist which has been quiet for a long time but will get busy shortly. From mid August until mid October I will explore Japan with my wife Maha. She will send out alternating messages which will give you two perspectives on one country.

Feel free to forward this message to friends who may be interested, and if you’re fed up with what I have to say, you can unsubscribe by replying to the email or by editing your profile.

Sun & SOA

SOA is an ambiguous term – Suns sees it as follows: “we are talking about SOA as it relates to integration and composite applications” – very high level statement, but certainly makes sense and is powerful – if executed correctly.

As far as execution goes, acquiring the company SeeBeyond was a step in that direction, which provided them with a sales force that understands SOA. This is complemented with a suit of tools – Java based, of course. Interesting is that Sun doesn’t want to focus too much on vertical integration – a route that IBM took – quite successfully.

How others see the USA

Canada, Britain and Germany are also high on the list before America.

What I find interesting and worrysome is the fact that these opinion are only to a degree related to George W. Bush. The article states that “the Pew polls provide strong evidence that anti-Americanism is more than a blip associated with Mr Bush or Iraq.” And “more than half [of the people] think of them [Americans] as greedy and violent and, in the Middle East, as immoral.”

I have been living in the USA for ten years now, and sadly, I have to agree with the article. I met many wonderful Americans here, and many have actually quite a harsh opinion about their own country. But the big middleclass certainly things of America as the greatest country in the world, and many sincerely believe that the whole world is knocking on America’s door, trying to get in. Well, not any more.

Applied Minds – Paradise for Geeks

I spent only half a day there, but some of the things described in the article I’ve seen, like the interactive map-table. Cool place! Should I ever consider moving to LA, this is where I would consider working for free!

Sell your house NOW!

Here are some tidbits from the paid-for article that worry me particularly:

What happened to other countries where the bubble burst? The Economist gives two examples: Australia (last year) and Japan (15 years ago):

    “In Australia, according to official figures, the 12-month rate of increase in house prices slowed sharply to only 0.4% in the first quarter of this year, down from almost 20% in late 2003. Wishful thinkers call this a soft landing, but another index, calculated by the Commonwealth Bank of Australia, which is based on prices when contracts are agreed rather than at settlement, shows that average house prices have actually fallen by 7% since 2003; prices in once-hot Sydney have plunged by 16%.”
    “Japan provides a nasty warning of what can happen when boom turns to bust. Japanese property prices have dropped for 14 years in a row, by 40% from their peak in 1991. Yet the rise in prices in Japan during the decade before 1991 was less than the increase over the past ten years in most of the countries that have experienced housing booms. And it is surely no coincidence that Japan and Germany, the two countries where house prices have fallen for most of the past decade, have had the weakest growth in consumer spending of all developed economies over that period.”

And last, it’s scary what situation some people get themselves into by accepting irresponsible mortgage terms:

    Interest-only mortgages are all the rage, along with so-called “negative amortisation loans” (the buyer pays less than the interest due and the unpaid principal and interest is added on to the loan). After an initial period, payments surge as principal repayment kicks in. In California, over 60% of all new mortgages this year are interest-only or negative-amortisation, up from 8% in 2002. The national figure is one-third. The new loans are essentially a gamble that prices will continue to rise rapidly, allowing the borrower to sell the home at a profit or refinance before any principal has to be repaid. Such loans are usually adjustable-rate mortgages (ARMs), which leave the borrower additionally exposed to higher interest rates. This year, ARMs have risen to 50% of all mortgages in those states with the biggest price rises.

Just the right time then to sell my house and to move back to Europe.

Who is Hamilton Naki?

He was part of Dr. Christiaan Barnard team who performed the world’s first heart transplant. But he didn’t receive any credit at the time, although privately he was treated well: “Look, we are allowing you to do this, but you must know that you are black and that’s the blood of the white. Nobody must know what you are doing.”

His is the story of a modest, hard-working, selfless, deeply religious man, who in spite of everything stayed cheerful and happy:

“He took it well. Bitterness was not in his nature, and he had had years of training to accept his life as apartheid had made it. On that December day in 1967, for example, as Barnard played host to the world’s adoring press, Mr Naki, as usual, caught the bus home. (…) Because he was sending most of his pay to his wife and family, left behind in Transkei, he could not afford electricity or running water. But he would always buy a daily newspaper; and there, the next day, he could read in banner headlines of what he had done, secretly, with his black hands, with a white heart.”

Maven: Einführung und Tutorial

Geschichte

Maven entstand, weil Java-Projekte, die lose zusammengehörten, untereinander nicht “kompatibel” waren. Jedes Projekt hatte sein eigenes Ant Skript (das meistens auch mehr oder weniger die selben Tasks ausführte), aber dennoch unterschiedlich aufgebaut war. Hinzu kam, dass Depenencies (meistens JAR Dateien) einfach über das Source Repository verwaltet wurden – zwar sehr effektiv und zuverlässig, aber das machte es problematisch für Projekte, Dependencies zu teilen (und eines der Grundprinzipien in der Softwareentwicklung ist DRY: Don’t Repeat Yourself!). Maven wurde entwickelt, einen Standard für die Java Softwareentwicklung zu setzen, Kollaboration einfach zu machen, und gute Praktiken zu fördern.

Aufbau

Hinweis: Ich beschreibe hier Maven Version 1.x. Version 2 ist momentan in Alpha und wird sich in vielerlei Hinsicht erheblich von 1.x unterscheiden!

Im folgenden werde ich parallelen zu Ant ziehen, wenn das sinnvoll ist. In Ant wird der Buildprozess von build.xml gesteuert. Mit Maven sind es drei Dateien, die man kennen muss:

  • project.xml – das Herzstück für ein Maven-Buildsystem. Diese Datei beschreibt Quellcode, Entwicklungsumgebung, benötigte Resourcen (JARs, Plugins), Mailinglisten, Sourcecode Repository, und alle anderen Elemente die zu einem gesunden Softwareprojekt gehören. Diese Datei wird oft mit POM (Project Object Model) bezeichnet.
  • project.properties – optional, aber eigentlich immer erforderlich. Hier werden Aspekte des Projektes konfiguriert, zum Beispiel die JVM Version.
  • maven.xml – Wenn der Rahmen, den Maven vorgibt, nicht flexibel genug ist, können Skripte über diese Datei in das Buildsystem eingeklingt werden – zum Beispiel die Generierung von Artifakten mit XDoclet.

Maven hat eine Plugin Struktur. Viele Plugins werden mit Maven mitgeliefert, aber es gibt auch viele zusätzliche Plugins. Diese müssen nicht installiert werden – wie JARs, werden diese in project.xml definiert und von Maven automatisch heruntergeladen.

Repository

Was habe ich gerade gesagt? Automatisch heruntergeladen?!? Das ist eine der Stärken von Maven. Alle extern benötigten Resourcen brauchen nicht von Hand installiert zu werden. Statt dessen werden diese in build.xml beschrieben zum Beispiel folgendermaßen:

 <dependency> <groupId>log4j</groupId> <artifactId>log4j</artifactId> <version>1.2.8</version> </dependency> 

In diesem Beispiel wird das Artifakt “log4j” im Projekt log4j heruntergeladen, Version 1.2.8. Maven sucht die Resourcen unter

http://ibiblio.org/maven/

Die heruntergeladenen Resourcen werden projektunabhängig auf der Workstation des Benutzers gespeichert, unter

$HOME/.maven/repository

Beispielprojekt

Genug Theorie - wie sieht das ganze in der Praxis aus? Ein neues Projekt mit Maven zu erstellen ist sehr einfach. Einfacher, als ein besehendes Projekt zu Maven zu migrieren, aber dazu später mehr. Ich gehe davon aus, dass Maven installiert ist, und wir uns in einem leeren Verzeichnis befinden, wo unser neues Maven-Projekt entstehen wird. Dort führen wir den folgenden Befehl aus:

$ maven genapp

"genapp" erzeugt ein leeres Maven-Projekt. Dieser Befehl ist interaktiv:

 __  __ |  \/  |__ _Apache__ ___ | |\/| / _` \ V / -_) ' \  ~ intelligent projects ~ |_|  |_\__,_|\_/\___|_||_|  v. 1.0.2 Enter a project template to use: [default] Please specify an id for your application:  [app] maven-beispiel Please specify a name for your application:  [Example Application] Maven Beispiel Please specify the package for your application:  [example.app] de.jastram.mavenbeispiel build:start: genapp: ... BUILD SUCCESSFUL Total time: 1 minutes 32 seconds Finished at: Mon Jun 06 14:43:41 EDT 2005 

Wenn wir uns jetzt das Verzeichnis anschauen, werden wir feststellen, dass 10 Unterverzeichnisse und 7 Dateien erzeugt wurden, und ich lege dem Leser ans Herz, diese Verzeichnisstruktur zu untersuchen. Unter anderem wurde ein Einstiegspunkt in die Anwenung und ein paar JUnit-Tests erzeugt.

Um einen besseren Überblick zu bekommen, Erzeugen wir HTML-Dokumentation für unser Projekt:

$ maven site

Es kann eine Weile dauern, bis Maven damit fertig ist. Alle erzeugten Objekte sind unter target zu finden, und die Dokumentation ist unter target/docs - auf jeden Fall clicken und ausprobieren!

Auf jeden Fall auch das Untermenü "Project Reports" erkunden - dort kann der Sourcecode gebrowst werden, Unit Test Ergebnisse untersucht werden, JavaDoc ist verfügbar, und vieles mehr.

Dokumentation

Beeindruckend, was Maven für uns macht. Aber die Optionen und Möglichkeiten sind so vielfältig, dass es anfangs schwierig ist, sich zurechtzufinden. Zum Beispiel, wo kommen die Argumente "genapp" und "site" her, so sind sie dokumentiert?

Zunächst: das Argument ist gar nicht "site", sondern site:site. Aber das Default-Goal (Goal ist das Maven equivalent zu Ant's Target) für das Plugin "site" heißt "site".

Alle Plugins sind auf der Maven Website dokumentiert, und die Dokumentation der Plugins enthält eine Liste der Goals. Außerdem sind dort auch Properties beschrieben, die in build.properties untergebracht werden können. Das site plugin, zum Beispiel, führt eine Reihe von Properties aus, die es erlauben, die Projektseiten per FTP auf einen Webserver hochzuladen (per site:deploy Goal).

Weiterhin lohnt es sich, die Dokumentation für build.xml, den Project Descriptor, durchzulesen.

Und noch ein wichtiger Hinweis: Maven benutzt nicht Ant, sondern Jelly als Skript-Sprache. Allerdings ist es nicht schwierig, per Jelly Ant-Skripte auszuführen.

IDE-Integration

Maven hat Goals um Projektdateien für IDEs zu generieren. Zum Beispiel erstellt der folgende Befehl ein Eclipse-Projekt:

$ maven eclipse

Love and Hate

Ein eindrucksvolles Werkzeug - warum gibt es doch eine Reihe von Leuten, die Maven hassen? Diskussionen zum Thema gibt es genug, aber hier sind meine Gedanken und Kommentare in der Hoffung, die Frustration mit Maven zu minimieren:

  • Maven ist noch nicht stabil - es hat lange gedauert, bis sich Version 1 stabilisiert hatte, und im Moment werden viele Fehler in Version 2 korrigiert - aber 2 ist auch noch im Alpha-Stadium. Wenn viele Änderungen zur Frustration fürhen können, rate ich von Maven ab.
  • Anfangs weniger Einfluß auf die Projektstruktur - Maven gibt eine gute Projektstruktur vor, aber die gefällt bestimmt nicht jedem. Die kann zwar geändert werden, aber man muss sich schon eine Weile mit Maven beschäftigen, um das ohne Frustration tun zu können. Ant ist wesentlich einfacher den eigenen Bedürfnissen anzupassen. Aber die Maven Projektstruktur besteht aus einem guten Grund - viele schlaue Leute haben sich viele Gedanken darüber gemacht. Natürlich ist es akzeptabel von dieser Struktur abzuweichen, aber ich würde mir bei jeder Änderung gut überlegen, ob die Änderung die Projektstruktur wirklich verbessert.
  • Migration von Altanwendungen lohnt sich oft nicht - ein bestehendes Projekt mit einem gut dokumentierten, funktionierendem Ant-Skript sollte nur dann zu Maven überführt werden, wenn es wirklich einen guten Grund gibt. Durch die eigenwillige Projektstruktur und die nicht elegante Ant Integrierung kann auch das zur Frustration führen. Aber zum Beispiel die Integration mit anderen Maven-Projekten wäre ein guter Grund.