Mittwoch, 3. April 2013

Devoxx UK 2013


This year Devoxx came to the UK for the first time after having a record of rather successful editions in Belgium. After failing to attend the Devoxx in Belgium for a few times due to loaded work schedules at the end of the year I thought why not try the UK edition in March, so this year was my first Devoxx as well.

 

General stuff


I must admit as it was the first UK Devoxx I was expecting a lot of issues and stuff going wrong, as it usually happens when an event gets organized for the first time. But to my pleasant surprise the whole event went very smooth and it was over all a lovely experience so I will definitely try to be back for the next editions. It was noticeable that the organizers put a lot of effort as well as sweat and tears into everything and that they really cared about it. We had some sponsor booths that handed out goodies, some raffles (I even won an infinispan book at the red hat raffle ;-)), free wifi (yes, everyone takes that for granted nowadays but still…) and an app to plan your talks, the latter was a bit buggy though but that was fixed for next year, so it is also a plus for me.

That said there are also a few things I think could be improved or suggestions that came to my mind and that I would like to share here. What bothered me somewhat was for one, that one BOF almost did not happen as the responsible speaker just did not show up. BUT cudos to Dan from the organization who took a few minutes of his time to get the group started about what a BOF is about (mainly more a big discussion among everyone who showed up rather than a regular talk) so we put up a list of questions and issues and just went from there. The other thing that pissed me off a bit was that the abstracts of the talks quite often did not resemble what the speaker really spoke about in the end. Quite a few times the topic form the abstract was done within 5 minutes and the rest of the time was spent on stuff related to it and even though it was usually also interesting it was not what one expected and it is annoying when you realize that 20 minutes into a 50 minutes slot. And yes, I am aware that this is a common problem at conferences but hey, it can’t hurt to mention it ;-)

Regarding suggestions the following things came to my mind:
  • Put the wifi access data into the welcome package
  • Try to have more power supplies in the talk rooms for people that want to try out coding examples on the fly because recharging in the breaks is usually not sufficient
  • The website did not say too precisely what kind of refreshments would be available for free and which ones would be sold (at least neither I nor my mates knew about that) and free tab water would have been cool (or did we just miss that?)
  • Maybe don’t shut down the wifi as soon as the ending keynote is over ;-)
  • The Quickies on the first day really cut into the lunch break and in order not to gulp done your meal you had to skip one of them while on the second day there were only half as many  and in general longer breaks. Would be cool if that could be evened out a bit in the future
  • Lunch was a broad variety of sandwiches, wraps and bagels so I think everyone found something suitable but the fact you had to give away a lunch coin when picking up your meal caused people to stack up their plates quite a bit and I am sure that not all of it was eaten in the end.
I know that all of that is nothing crucial and as I said before it was a nice conference and everyone should consider attending in the future. Oh right, move the date to summer!!! ;-)

 

Day 1

 

Keynote


Not much to say here, nice introduction of the team and the obligatory Queen joke that did not catch on much. Then there was a humorous talk by Kevlin Henney about the everyday life of programmers and developers with some funny analogies etc.

 

Continuous Delivery – David Farley


Good introduction talk about CD and even though I am familiar with the topic it did help to reiterate over the concepts and think about how they can be applied to your current work. The things I remember most are:
  • Do the difficult/annoying stuff as often as possible so you get better at it
  • Use the same deployment mechanism for each environment, something that we do only partially right now
  • Automate as much as possible
  • Everybody is responsible to get the stuff done
Especially the last point got me thinking what we can do at my work place. If you have external client applications that depend on your backend and that run on certain mobile devices you have to use those for your acceptance tests and this cannot automate those at least for new features.

 

Banking, how hard can it be? – John Davies


Somehow I was hoping for a bit more in this talk. Basically John pointed out how hard it is to establish new technologies in a large bank or any other big company. The sheer amount of Oracle databases that where in use at that particular bank was quite overwhelming (several thousands) and the idea you have to migrate all of them kinda blew my mind. All in all it sounded like an overly complex environment and the migration project was surely a huge effort. Also interesting was the fact that the FPML data structure in use in the banking sector could not be simply thrown at regular ORM tools like hibernate because those would generate 1700+ tables. He then did show some in memory dbs that they used instead but I must admit that I don’t remember which ones because it just was not very important to me.

 

Intro to NoSQL for busy developers (Quickie) – Trisha Gee and Kim Ross


Trisha and Kim gave a brief overview over the different types of NoSQL databases:
  • Graph
  • Document
  • KVS
  • Column Family
  • Sorted Maps
Also some typical use cases for a few of those and how eventual consistency works. This talk got me thinking if MongoDB was the best choice for our use case, maybe Riak or some Column Family database would have been more suitable.

But what I want to point out the most is that rhetorical this was an extremely pleasant talk, Trisha and Kim created a very comfortable atmosphere and it was just nice to listen to them. That is not a given at tech talks ;-)

 

Applications’s development using JavaFX2 – Thierry Wasylczenko and Jim Weaver


Now this was one I put great hopes in, I knew Jim Weaver’s book on JavaFX from a few years back and figured he would give some insights on the changes.  Thierry’s part was okay information wise apart from that he did not intend to give a demo of the visual editor even though that was announced in the abstract. Jim then said he’d cut his part 5 minutes short so we can see that demo, nice gesture but should not have been necessary in the first place. The downside of Thierry’s talk was that it was really monotone and hard to understand. To me it seemed that he had not much talking experience and I hope he does practice on that some more because I guess he could become a good speaker with his technical knowledge. So Thierry, if you read this, consider it an encouragement ;-)

Then Jim took over but not with much JavaFX stuff but instead he was talking about Java 8 features like Nashorn support, Websockets and web workers. All in respect to how they can be help with JavaFX development but still it was not quite what I was hoping for. But of course it was a good talk, so I am not unhappy with it.

 

Stop doing retrospective and start your Toyota Kata – Mattias Karlsson and Hakan Forss


This one was something different. Mattias and Hakan prepared a dialog where Mattias acted as a scrum master and Hakan was Kata coach that gave Mattias an introduction and they went through a typical Kata cycle together. Even though both were clearly not actors and should not try to become ones it was very refreshing and also entertaining.

Kata is a method to improve your processes in a continuous way. You first have to find out where you are at and write down your current state then you set a vision that should be quite ambitious as well as a set of target conditions that are some kind of intermediate goals you want to achieve. For a cycle you choose a target condition and how to reach it, that is your challenge. That is the improvement Kata. In the coaching Kata you then do some kind of mini retro to see what you accomplished and what problems you have. The cycles can be quite short, maybe even one or two days.

 

Hitting the limits of your hardware with Java – Peter Lawrey

 

Okay, this one was a disappointment, sorry I have to say it so harsh but that is how I feel. The sad thing is, that Peter Lawrey does know his stuff but in this talk, sheesh. First of all it was very hard to understand him then he did not really cover the basic problems a programmer should be aware of or how you can help with proper coding to avoid hardware limitation issues. Instead he did show slides with some performance tests he made and the resulting graphs. Also some graphs of performance issues and the audience had to guess what caused the problems. And then after 20 minutes (of a 50 minutes slot) he ended his talk for questions. The questions were then not even repeated aloud so that everyone knew what they were talking about. Well... enuff said..

 

Lambdas and Collections in Java 8 – Maurice Naftalin


Simply a good talk. Covered the basics of lambdas and how they can be used with collections for efficient coding. How and why the boilerplate parts can be omitted, what map reduce is about plus Guava features like Optional and Predicate that are part of Java 8. Pleasant to listen to, so nothing for me to moan about ;-)

 

Beyond Beauty: JavaFX, Parallax, Touch, Gyroscopse and much more (BOF) – Angela Caicedo


This was basically how you can get a pseudo 3D illusion with motion sensors to run on Raspberry PI with JavaFX. Well, it was not that much FX stuff in it, and most of the time was spent on the hardware spec of the PI and how sensors and signals can be read on pin level. IMO that was not too useful especially the latter as all of that is abstracted by the PI4J lib she introduced in the end. But it was a nice demo and it was obvious she knows her stuff. As that BOF ended early I staggered into another one of the same slot.

 

Is NAO your robotic overlord? (BOF) – David Snowdon


NAO is very impressive small robot, but this just seemed like a product demo, so no conference stuff IMO.

 

Get your head around git, Team Collaboration – John Stevenson


Now, John did not show up, no clue why. But Dan from the organization team spent a few minutes with us and got us started. We put down some questions people had and tried to answer them in a group discussion. Two voluntary helpers where also there and those had some git experience. I myself have only used git-svn until now but to my surprise this meant I had the third most knowledge on this subject in the whole group. But it was an interesting discussion so now time wasted for me.

 

Opening the hidden door: JavaFX development everywhere (BOF) – Angela Caicedo


So we met again ;-) This time there were only 4 people in total so we got together at a table and Angela gave a short presentation how packaging and development works with JavaFX. Of course I had some things to complain ;-) Like finding out in what mode you are, embedded or not, depends if the main routine gets a stage object handed to it that is something that should be abstracted by a static method call returning an enum. But it was informative and as such a nice end for the first day.

 

Day 2

 

Creating Games with WebGL and Three.js – James Williams


Cool talk. Gave a good overview of what WebGL can do, where it is supported what the drawbacks are and how Three.js as an abstraction layer can help to immensely reduce those by wrapping a lot of stuff. Gave me the urge to check it out and toy around with it.

 

Getting started with Websocket and Server-Sent Events using Java – Arun Gupta


Even though it took me some time to get used to the Indian accent, this was a solid talk. We saw detailed examples how Websockets and Server-Sent Events can be implemented, what client requirements they impose and also a working live demo. Kind of obvious but still worth to mention are the main differences between the two technologies. Websockets are truly bi-directional but require special browser support for it, while Server-Sent Events can be implemented using plain HTTP and thus can run on any browser but only provide one way communication. Websockets provide mapping functionality for JSON, binary and other request types and parameters are typed according to their position. I am sorry I don’t have much more to say here because this talk was surely a good one.

 

Dark Side of Agile – Mazz Mosley


Mazz spoke about her experiences with a large agile team working on the UK government website and what problems she witnessed. Sadly she did not provide any new insights or yet unknown solutions, it was more stuff that everyone with project experience already knew. Like that it can cause problems when the team is growing too fast, that documentation is essential but must not be overdone and team spirit is vital to success. But what I like was the way she presented her talk, very solid speaking, funny anecdotes and nice to listen too. So I hope to see her at another Devoxx again, maybe with a more complex topic.

 

What do you mean, backwards compatibility? – Trisha Gee


Now this topic sounded extremely interesting, finding new ways to change APIs without breaking the clients is always useful and after Trisha’s first talk on Day 1 I was really looking forward to this one.  Unfortunately the backwards compatibility part was done in five minutes as the original driver did use the wrong package namespace “com.mongo” instead of “org.mongo”, so the new API simply uses the new namespace and the old API can still coexist. Well, that’s what I call a disappointment. At least the talk itself was entertaining and had some interesting bits of information about the monog project itself. But still if I had known beforehand I would have chosen a different talk for this slot.

 

Does your WAR resemble the world’s largest bowl of spaghetti? Enterprise OSGi can help – Holly Cummins


Entertaining, solid talk about the basics of OSGi. While we have quite a few visibility mechanisms inside JARs etc. there is nothing like that on the level of JARs itself so the classpath gets rather polluted by all classes of all JARs even though only a few should be exposed. Also searching for classes throughout the complete classpath is a bit tedious. OSGi provides encapsulation for JARs and also has a graph like classpath structure. In addition OSGi modules can be removed, added and updated without any need to shutdown the virtual machine. So it could be a nice addition for many large scale applications but on the other hand you first have to modularize them properly. But maybe I get a chance to try it someday.

 

Introduction to Riak – Chris Molozian


Usually I don’t like product presentation talks but the NoSQL intro the other day got me interested in this topic so I figured I’d give it a try. As expected Chris focused on the key selling features of Riak but who can blame him for that ;-) The ones I found most remarkable are:
  • Data is stored in logical buckets using hierarchical structured names for faster lookups and query optimizations
  • Patches to the Riak engine can be deployed without downtime
  • There are no slave nodes and so you can issue read and write requests to each node
  • The interface is HTTP based and thus requires only very loosely coupling to application code
But on the other hand there were also a few drawbacks:
  • You have to run at least four nodes in a Riak cluster, recommended would be five
  • Conflict merging in case of data inconsistency seemed a bit strange, but maybe I just did not get it
  • A deleted record can still be read for a few seconds <- eventual consistency is not for every use case
The talk in general was okay and it seemed that Chris knew what he was talking about while he took on all kinds of questions.

 

Security in the real world – Matt Kilner


Matt gave a nice overview over the latest Java security issues and how they were caused by sometimes minor changes. Like changing the visibility of field in the ToolKit class gave way to the critical security hole of running any native command from a Java class taking advantage of the exploit. Another interesting point was that fixes cannot always be applied easily because the fix would break something else. Details about that can be seen on the slides to this talk and sure are worth a look. At first I had the impression the talk would also cover how application development should take security into account but that was just a misunderstanding of the abstract on my behalf. It was obvious Matt knows his stuff but I hope he gets some more speaking practice in because he did not seem that comfortable or used to speaking in public. Once he gets the hang of that I am confident his talks will become very popular.

 

The Future of Agile – Nigel Runnels-Moss


Oh boy... what can I say… When Nigel announced that he was hijacking this talk to speak about something else I should have just left but for some reason I never learn and always hope for a happy end. Man that was mistake.

Basically this was a “Why managers suck and are responsible for the death of our industry” rant, backed up with diagrams showing data of unknown sources that he drew questionable conclusions from.  Summing it with “this is intentionally provocative” did not help much IMO. Granted some aspects of the talk did make sense but those were rather quotes from books he referenced, e.g. managers are usually bad at what they do because as long as they do well they get promoted until they are above their level competence. But still it seemed as if he just held this talk because he likes to hear himself talking. Which he btw did… very slowly… by always making... pauses after… a few words… as if he was... reading to a child… Well, sorry to say but I just did not like that one, even though others seemed to enjoy it.

 

Summary



As I pointed out at the start of this rather long post, I did enjoy the conference even though there were some issues. Of course not all speakers are world class with a huge list of references and recommendations but that does not necessarily mean they are not good. And even if you get one or two not so good talks… that can happen at any other conference as well but with the cheap ticket price Devoxx offers one of the best values for your money you can find. So go and sign up for  next edition!!

Sonntag, 31. März 2013

London 2013

When some of my ex-colleagues told me they were going to London this year to visit the Devoxx conference and also spend some time in the city I figured it might be a good idea to join them.  So I talked my boss into paying me the trip to London (at least the conference related stuff) and hooked up with my former co-workers for some cultural sightseeing and enjoying some London pubs ;-)
Fortunately we had some lovely English spring weather, meaning 0-2°C snow and rain plus a chilling wind that tried to rip the flesh from our soaked bodies... man, how I hate that bloody weather over there…

Nevertheless we got to see a few really noteworthy attractions during those days, the first one being the Tower of London. On a few maze like tracks through a few dozens of towers, galleries, halls and chambers you explore the old fortress and get to know some interesting facts about the Tower’s history. Due to the narrow and steep staircases, like you only see them in the Netherlands these days ;-), this trip can be quite a challenge but is still worth it if you are keen on English history, medieval stuff or ancient architecture. Unfortunately a greater part of the tours require you to get outside into the inhabitable area of rain and chill. But as long as you stay inside, e.g. visiting the crown jewels (very impressive stuff) it is rather pleasant. As we just arrived that day, and some of us acted as if they were freezing to death, this was the only sightseeing we did that day.

For dinner we fancied some curry and the hotel staff sent us to “Brick Lane”, it took us some time to figure out that this was not the name of a specific restaurant but instead a street name where you can find a lot of Indian restaurants next to each other. And what happened there was something we have never encountered before. In front of each of those restaurants was a guy advertising rather aggressively for said restaurant, telling us that this was the best place etc. Well, we were there for the food after all so we just took one and went in, after the guy outside promised us a 20% discount on the food. Inside we saw that all tables were full and the place was rather crowded. But before we (a party of 5 people after all) could leave again we were given some drinks and told to wait as there would be a table available soon. And so the ushering began…  A two person table just got free and on the other side of the aisle a three person party seemed to finish their meal. But those two tables could not be connected on the other hand there was a small table next to the three person table where two girls just got their food and were enjoying it. So those two simply got relocated by the staff to the other side of the aisle and suddenly there was enough room for us. To be honest, something like that would get the place shut down very quickly if you tried that in Germany ;-) So we sat down... ordered… and ate the food that was IMO rather tasty. But as soon as we finished our plates were taken away, in some cases in the very same second the cutlery hit the plate (and I am NOT exaggerating here). Well, we paid up and emptied our drinks but we were not quick enough to avoid being asked to leave... politely but nevertheless it was clear they wanted us out as soon as possible… Now that was a first to all of us…

Afterwards we were to meet up with friend of one of my companions who already lives in London for a few years now. He took us to some kind nightclub in the city. As I am not much of a clubbing person that was not my favorite part of the trip ;-) But I learned that people are people no matter if you are in London or Munich or anywhere else… add loud music, enough alcohol and heat and the idiocy emerges ;-) Yes, I know… I am just too cranky about that topic so let’s just move on… When we left the club the tube was already shut so we had to find a bus line taking us back to our hotels (I stayed at a different place than my mates) but that was rather tricky as our guide had not much clue himself about the bus night lines. At least we found a line at Picadilly that took us to my mates’ hotel and I decided to join them and take a cab from their place. So we already saw Picadilly and I had London cab ride… Check ;-)

On the next day we met up at Hyde Park, had a look at Speakers’ Corner and walked south to the Buckingham Palace. Then took a turn through the government quarters looking at Downing Street and then at the Houses of Parliament as well as Westminster Abbey. Too bad it was Sunday, so Westminster was closed for tourists. After crossing the Thames to the Eye of London we walked all the way to the Tate Modern Museum too look at some crazy shit… Yeah right, I am not an art person, congrats for figuring that one out… As that was a very long walk we had, we decided to go back to the hotel and so crossed the Thames again to St. Paul’s via the Millenium Bridge and had another nice bus ride. This time we decided to go for an Italian dinner, which actually was quite nice in a rather classy place. But when it came to the check there was some confusion, the check had a service charge on it (about 12.5%) and as far as we knew that meant that we should not give an additional tip. But our waitress did not look too happy so we just asked and she told us, that this service charge was for the company only but also that it was “okay”… So we all put in some extra for a nice tip, but after some more research on the topic it now seems that the bitch screwed us over. Afterwards we headed for pub next to the hotel and had a nice chatty evening while enjoying funny named beers like “Doom Bar” or “Panzerfaust”, yes that’s right, that is how those English people name beer. The experience of a bar closing down at 11 pm, even though it was expected, was somehow weird though.

Okay, final sightseeing day. We started out at Harrods, holy cow they sell a lot of crap there… It was really impressing seeing such a big and overwhelming shopping mall especially with a lot of luxury stuff. On the top level I found the following item in the sports section, please note the very reasonable price on the sign sitting on the right side of the seabob (okay, looks like you can't zoom in, well the sign says you can buy this nifty toy for the very reasonable price of 80.000 GBP):


After about an hour we headed off to Madame Tussauds to see some wax celebrities and I must say, some of them look _really_ impressive. My favorite of live like look is Sean Connery, that face seemed almost alive. All in all there was quite a lot to see but the “horror show” does not deserve its name and the “Marvel Experience” has just nothing to do with the rest. Even though, the visit was well worth it and I can only recommend it to anyone who has the chance to see it. Afterwards we were considering to try Westminster Abbey again until we found out it had already closed down for that day, darn it! So we did call it a day and headed back to the hotel again. This time our dinner plans took us to a Mexican place that was close to the Italian we were at before, for some reason I could not interest anyone in an English dinner ;-) After a really lovely but rather expensive meal we tried a different pub which was also quite lovely.

The next two days were filled with conference stuff which I will write about in some other post. On the first evening I was at the conference until 10 pm but the others left earlier as the later talks were not interesting for them. So they went back to the pub from the day before but had a not that pleasant experience with a obviously drunk fellow that tried to get them started on “the war, that we lost” etc. When I heard about that I was pretty happy I stayed at the conference ;-) But seriously, is that really something English people need to talk about? Or do you consider it funny to annoy us? Or do you just like to make Nazi references? I really hope that one was an exception… 

On our last evening after the conference ended we went to another Italian place and a pub afterwards near the conference venue. This one got by without any trouble what so ever and was kind of a perfect ending for our trip. 

I must say despite being an awful expensive place to live London seems like a real nice place, at least for  a short vacation even though it seemed to me that an awful lot of litter was laying around everywhere. But the tube took me any place I had to go very reliably and the huge amount of signs and service people everywhere (all way more friendly and helpful than those at home) made it very easy for me as a foreigner to find my way. So I guess I will be back some day to get to see the stuff I missed this time... Beware!!!

Samstag, 4. August 2012

"Attaching plugins to Maven goals" or "How to shoot yourself in the foot - Part 2"

Well, this is basically a case of "Should have read the manual more thoroughly" but as this issue does not seem very obvious to me even after reading the documentation and I found several people asking something similar on the web I guess this is worth sharing.

In my current project I had an issue that at first seemed like a problem with the maven configuration. When deploying a new release artifact to the project nexus the generated javadoc and source jars were always uploaded twice to the repository (both artifacts were configured via the corresponding plugins). So in order for the release process to complete successfully we had to allow artifact redeployment for the repository.

This was a major issue for me in matters of build stability and especially reproducibility as it gave the option to overwrite an already released version of an artifact but for a long time the project's budget and deadlines did not allow for a proper analysis. Luckily we were able to handle this problem by being extra cautious during releasing.

Lately I was able to prioritize this issue properly and could spend some time on it. At first I suspected an issue with our maven configuration as the project consists of a lot of modules organized in a complex hierarchy. So I spent a few hours dissecting the POMs to find a working setup but to my surprise I was able to reproduce the problem even with a single dummy POM and the plugins were configured properly according to their documentation.

So I decided to hit the web for a search about this problem but after reading through a lot of forum and mailing list posts I just got the idea that for some reason the plugin executions got attached twice.

Then I took a closer look at the maven documentation and tried to understand how attaching plugin execution to goals and build phases works. And this let my suspicion grow stronger but the final solution was given by another post to the maven mailing list by Stephen Connolly (unfortunately I didn't save the link to the post).

The problem was simply a wrong invocation of our maven build. We were invoking "mvn clean install deploy" as we were not aware the jar goal is not only bound to the install phase (or rather the packaging phase) but also to the deploy phase. Again, I don't consider this as obvious and if anyone has a link to a page were this is described properly is very welcome to share it here.

Anyhow this means the solution is rather trivial, just use "mvn clean deploy" if you want to build an artifact and deploy it to the remote repository in one step ;-)

Sonntag, 19. Februar 2012

Maven Transitivity Hell - How Dependency Mediation Can Snap Your Neck ;-)

Lately I ran into a problem at work which at first puzzled me somewhat so I figured putting it here could help others.

We have a rather complex maven hierarchy in our project with a lot of artifacts on many dependency levels. After the rather common task of changing an artifacts dependencies to their new release versions the tests crashed with a NoSuchMethodError within one of the changed dependencies. At first I suspected duplicate libs in the main artifact to be the cause but all libs were present only once and in the correct versions.

To illustrate the actual problem imagine a dependency hierarchy like this:

main artifact
    base lib V1
        data lib V1
    specialized lib V1
        base lib V2
            data lib V2

It immediately becomes obvious that during dependency resolution maven has to decide which version of base lib and data lib have to be added to main artifact's libs... Dependency Mediation TO THE RESCUE!!!

Following the mediation algorithm maven decides to use V1 of base and data lib now if specialized lib uses classes or methods of base or data lib that were introduced in V2 those will not be available at runtime causing NoSuchMethodErrors or ClassNotFoundExceptions.

In the above example a fix should be easy by simply change the pom of main artifact to depend on the new version of base lib but often enough real world scenarios are not solved that easy. In our case we were lucky to have full controll over all involved artifacts so we could adjust the code as needed. But if you are using third party libraries which in turn depend on other libs that you are also using in your own code like e.g. apache commons or similar an upgrade of said libraries can cause a lot of trouble.

What if specialized lib was a third party lib of which we need to use the newest version because it contains some vital enhancement or bug fix but on the other hand including the new version of base lib would cause severe runtime errors, e.g. LinkageErrors because now a different version of class is used as the container provides (happened to us with QName in weblogic which was the reason why we used V1 of base lib in the first place)? Then you could end up between a rock and a hard place...

The same problem could also occure if base lib was not a direct dependency of main artifact but a transrient one of another lib which makes it even harder to discover thus discrepancies.

Unfortunately the only thing you can do about it is to check the dependencies of the libs you plan to include in your project and make sure they are not conflicting with each other which can become quite cumbersome with growing projects and sometimes even impossible (especially when using large frameworks or application servers etc.).

All of this got me thinking about the size and complexitiy of today's average JEE applications and how many of them may be only working by coincidence because some of their libs have been compiled against other libs with versions that are not available in the deployment unit. Those applications can still work if, applied to the example above, specialized lib does not use any features of base lib that are only available in V2. This can happen a lot since when starting a new project you usually use the newest version of a library available but you might only be using methods and classes that have already been available for several versions. Of course the methods might work differently or even have some bugs in them that would have been fixed in the new version so you might run on broken code without even knowing.

So you now might like to go and check your projects dependency hierarchies... ;-)

Sonntag, 12. Februar 2012

Bavarian Burger

Today I had an idea for a new dish which turned out rather tasty, so I thought why not share it here :-)

The base is a simple slice of bread on which you spread some tomato purée, sprinkle some oregano and basil onto the purée and then put some onion rings on top of it.

As the next step you heat a pan and fry one or two slices of a German meat loaf (a.k.a. Leberkäse) from both sides. While frying the second side you put some cheese (in my case Gouda *yammy*) on the meat loaf so it starts to melt a bit.

When the meat loaf is done just put it on the bread and then make one or two fried eggs which you then put into the cheese covered meat loaf.

Finally add salt and pepper to the mix and enjoy :-)

Samstag, 31. Dezember 2011

Besuch im Legoland

Nachdem es hier jetzt einige Zeit sehr ruhig war, dachte ich mir ich poste mal etwas über unseren diesjährigen Besuch im Legoland Günzburg.

Für meine Freundin und mich war das bereits der zweite Besuch dort und wir sind mal wieder hellauf begeistert :-) Únd neeeeiin, das ist nicht nur was für Kinder :-p Aber natürlich muss man damit rechnen, dort auf viele Familien zu treffen, von daher bietet sich ein Besuch eher außerhalb der Ferienzeiten an.

Zu erwähnen sind zum Einen die zahlreichen Fahrgeschäfte die es in den verschiedenen Themenbereichen gibt (Ritter, Piraten, Bionicle, Abenteuer...), die alle unterschiedlich wild sind und so doch für so ziemlich jeden was passendes bieten. Hervorheben muss man da aus meiner Sicht besonders die Bioncles bei denen man einem großen Roboterarm sitzt den man zuvor selbst programmieren kann und damit die Fahrt selbst bestimmt. Das ist aber nichts für Leute mit schwachem Magen...

Außerdem ist die Wildwasserrutsche erwähnenswert die feuchtfröhlchen Spaß garantiert *g*




Weitere Attraktionen sind Goldwaschen, Führung durch die Legofactory und das Aquarium, letzteres bietet einen wirklich interessanten Rundgang durch eine aufwendig gestaltete Unterwasserlandschaft mit vielen exotischen Fischen.

So weit, so gut, aber die, zumindest für uns, interesantesten Bereiche fehlen noch. Im Build- und Testcenter kann man das tun, was jeder Legofan gern tut... BAUEN!!! Es werden verschiedene Modelle mit unterschiedlichem Schwierigkeitsgrad angeboten, wobei die größte Schwierigkeit oft darin liegt auf den relativ klein kopierten Bauplänen alles richtig zu erkennen ;-) Trotzdem macht das basteln immer viel Spaß und man bekommt danach auch eine nette kleine Urkunde *g* Zusätzlich bietet das Testcenter auch Workshops an, z.B. für Mindstorms in den wir reinkamen. In dem Workshop konnte man eine Stunde lang einen bestehenden Roboter programmieren und etwas herumexperimentieren, als Spätfolge gab es dann zu Weihnachten bei uns ein Mindstorms-Set :-)

Aber das Highlight sind eigentlich immer die Miniaturwelten die einige der schönsten oder beeindruckendsten Bauwerke/Stadtkulissen Europas darstellen und inzwischen gibt es dort auch einen "Star Wars"-Bereich.

Ein Hingucker ist hier vor allem das Schloß Neuschwanstein:






Oder der Reichstag unserer Hauptstadt:


Und für Sportfans gibt es natürlich auch etwas :-)






Das Legoland bietet aber noch weit mehr als das was ich hier beschrieben habe, von daher sollte man sich einen Besuch dort wirklich ein mal überlegen. Mehr Bilder von unserem Besuch gibt es in meinem entsprechenden Picasa-Album.