Amsterdam: Where to drink and where to eat

So if you travel to Amsterdam and have only a couple of days to explore this beautiful city, you do not want to waste time finding the best restaurants or the best bars there. I have listed some of my personal favorite places to stay for lunch, dinner or drinks in Amsterdam. I have also a short list of accommodations to stay while in Amsterdam.

Continue reading

Was Unis falsch machen und FHs (vielleicht) weniger falsch

Der Herr Köhntopp hat wieder einmal einen Blogpost geschrieben, der mir direkt aus der Seele spricht. Ich kann das ganze mehr oder weniger Voll und Ganz unterschreiben, möchte vielleicht lediglich etwas ergänzen.

Ich habe ja das Gefühl, viele Universitäten – also die Theorie-Institutionen und Nachwuchs-Produzierer – haben einen gravierenden Fehler (zumindest in meinem Fachbereich der Informatik). Es wird zu oft von zu schlechten Unis zu viel für vermeintliche Wissenschaft gemacht sowie Theorie erlernt die in der Realität weit daneben ist.

Was mir fehlt ist der Blick auf die tägliche “Drecksarbeit” die man als Software-Entwickler nunmal zu tun hat. Die Welt ist Schmutzig und so ist deren Modell. Schön Java entwickeln und dabei alles “from scratch” programmieren ist zum Erlernen des Handwerks dienlich. Nur hilft mir das Ganze nichts ohne entsprechende Refactoring-Kenntnisse.

Fachhochschulen haben hier aus meiner Sicht einen kleinen Vorteil. Aus eigener Erfahrung arbeite ich seit dem ersten Semester (und eigentlich bereits davor) in der Branche und lerne sozusagen, dass jegliche Theorie in der Praxis oft anders aussieht und man die schönsten Entwurfsmuster oftmals nicht anwenden kann. Eine ausgiebige Verknüpfung von Praxis an der FH mit dem Beruf nebenher führt zu einem bereits nach Ende des Studiums mit vielen Wassern gewaschenen Absolventen. Ich persönlich habe durch Auslandssemester, Praktikum, Selbständigkeit sowie Nebenjob sehr vieles bereits während meines Studiums an der FH erlebt und habe für diese kurze Zeit auch einiges aus der realen Welt kennengelernt. Ich glaube nicht, dass ich an einer Uni ähnlich viel Erfahrung sammeln hätte können.

Den Code den ich täglich sehe ist grausam. Das meiste davon ist von mir aus früheren Tagen. Da hatte man a) das technische Know-How nicht, b) fehlten Anfangs die “richtigen” Requirements und c) war vielleicht das Umfeld (zB Programmiersprache) noch nicht so weit entwickelt wie heute. Einzig und allein der Wille, diesen Code bei jedem drüberstolpern kontinuierlich zu verbessern ist mehr oder weniger mein Job. Die Probleme der Product-Owner sind meist bereits gelöst. Nur nicht in unserer Codebase. Das Zusammenführen von bestehenden Lösungen mit bereits besehenden Code ist mehr oder minder mein Job. Und ich mache es dennoch gerne.

Bio ist gescheitert

Was vor Jahren noch nach einer guten Idee aussah, ist wohl spätestens 2012 gescheitert. Was ursprünglich einen richtig guten Hintergedanke aufweisen konnte ist zur Masche der Lebensmittelindustrie geworden.

Es gibt wohl keinen einzigen Supermarkt, ja auch keinen einzigen Discounter mehr, der keine Bio-Produkte im Sortiment hat. Blöd nur, dass das nichts mit dem Gedanken Bio an sich zu tun hat.

Heute werden uns mitten im Winter Bio-Tomaten (in der 4er Plastikverpackung) angeboten, zu Weihnachten gibt es Bio-Erdbeeren und der neueste Schrei sind Bio-Avocados aus Mexico. Nun, hierbei sehen wir das Problem. Bio als Gütesiegel liefert uns nicht das was wir eigentlich wollen. Gerne hätten wir doch nachhaltig und saisonal angepflanzte Produkte mit regionalem Ursprung in der Papierverpackung. Oder etwa nicht?

Man könnte jetzt behaupten, dass dies auch vielen Menschen ein Anliegen ist und Bio à la “Zurück zum Ursprung”, “Ja! natürlich” oder “Natur Pur” niemals auch nur als “richtiges” Bio angesehen wurde. Dennoch, das Gütesiegel ist darauf anzufinden und wird von vielen als “das Bessere Produkt” gekauft. Nur, wirklich besser ist das nicht.

Wer also richtiges Bio möchte, darf sich nicht hinter dem (deutlich) teureren “Bio”-Produkt aus dem Supermarkt begnügen sondern fährt zum Bauernhof oder Bauernmarkt seiner Wahl und kauft saisonsbezogen direkt beim regionalen Hersteller.

Mein Travel Setup

Der Bloging-Kollege Martin Eichenberg hatte eine coole Idee. Lasst uns doch unser Travel Setup teilen. Dazu hat er schnell mal eine kleine Miniseite “Das Travel Setup” auf seinem Blog erstellt und freut sich auch neue Einträge. Ein paar Einträge gibt es schon und ich habe auch gleich daran teilgenommen.

Blogging from iPad

Since I recently got an iPad2 from my employer, I am able to update my blog from everywhere thanks to pretty decent 3g coverage in Austria. However, what you want to use if you start blogging from your iPad with your WordPress blog, is the native WordPress App which is available for free in the Appstore.

I will hopefully start to blog more often with this new opportunity. Let’s give its a try.

Start an Android Intent without pushing on the history stack

I was wondering how to create an Intent with the Android SDK which will not be pushed on top of the history stack. Which means, if another Intent will be started, the back button pressed event will not move back to the specific Intent. Actually this is done pretty easy with setting a FLAG_ACTIVITY_NO_HISTORY. An example the is given with the following code snipped.
Continue reading

Authorship on blog posts

Google released . But what they are doing is actually fight back Content-Farms with stupid “content” and Facebooks Social-Graph.

Their first step was change the algorithms to calculate the search results different. Do not trust websites which just give you lots of buzz- and keywords. Remove content in search results which was optimized by companies (SEO) to generate a lot of traffic. That is neither what the web is in need of nor what a typical user wants to read. So they had to add more value on people recommending content not keywords. The added the Google +1 Button. Letting people decide which content added value to their research.

The next step had to be adding recommendations from your friends to your search results. To identify your friends, Google could not just relay on data they get from Google Contacts (e.g. GMail) but were in need to create something like Facebooks Social-Graph. Which is exactly what Google did with Google+. (Thumbs up, a social network that adds more value than Facebook or Twitter ever did).

So the next logical step is, adding semantics to articles, blog posts or any other content that you as a user produce online. Google adds Authorship (with complete description). A way of linking your content back to your Google+ profile, which is then processed by Googles Searchbots. This is actually done by adding the:

<a rel="author" href="https://plus.google.com/<your-id>">Your Name</a>

to each content you produce.

Et voila. This leads to more semantic and more value of search results and even shows my profile picture beside search results for my friends. This is great.

Let’s see what’s next. I am excited.

Anonyme Amazoniker

Ja, wie es bereits Kristian Köhntopp schreibt, man hätte diese Statistik wohl besser nicht erstellt. However.

Nur amazon.de, keine digitalen Bestellungen sowie keine amazon.com Bestellungen.

Annotations with Symfony2

With Symfony2 much configuration can be added directly to actions with annotations. With Symfony1 there have been cache.yml, route.yml, security.yml and many more configuration files for a single controller. This has not changed with Symfony2. You still are able to configure your (bundle) controller with single files. However, there is a new way which offers more flexibility and adds the configuration right to the place where it is used: to the specific action as meta-info with some sort of annotations.

First, your route.yml has to be edited and your bundle has to be added.

# app/config/route.yml
your_bundle:
    resource "@YourBundle/Controller/YourController.php"
    type: annotation

This is needed in every setup, but as you see, you can specify the route type as annotation. This means, Symfony2 will parse the doc block on any action of your controller file, and import this to route.yml. But don’t worry, Symfony2 does this just once and stores the information on the cached route.yml file.

Now you have to add the routing information on each action which should be imported as route, as shown below. You can also insert params to your route. Additionally to the route you can add various other settings direct to the action as also shown below.

class YourController
{
  /**
   * @extra:Route("/action/{id}", name"route_name", requirements = {"id" = "\d+"})
   * @extra:Template("YourBundle:Controller:action", vars={"your"})
   * @extra:Secure(roles="ROLE_MEMBER")
   * @extra:Cache(expires="+7 days")
   */
  public function yourAction($id)
  {
    $your = 'code ' . does('something with', $id);
  }
}

There is much more to come and everything is still under development. So expect changes and additions to these existing annotations.

Update 24.05.11
Yesterday, Fabien Potencier announced a change in the Annotation System of Symfony2. There is a official blog post explaining the changes.

Pressespiegel Österreich – Finde den Fehler

Der heutige Pressespiegel Online aus Österreich. Finde den Fehler.

Bilder Copyright:
www.kurier.at, www.derstandard.at, www.orf.at, www.heute.at, www.oe24.at, www.diepresse.com, www.krone.at