Wednesday, December 26, 2012

The boundaries are blurring

1981759130 caster semenya zwitter leichtathletik 9It's interesting to watch how the recent trend to mobile and browser applications is changing the traditional understanding of client-server separation and how the traditional territories of some technologies are blurring.

Two recent examples in the field of persistence technologies illustrate this blurring of boundaries quite well:

  • JBoss Errai
    JBoss Errai represents the opposite trend compared to Rack::CoreData: It takes JPA into the browser! JPA is traditionally a server-side (or at least server-interfacing) technology. I am pretty sure that it was not intended as a browser technology. But with the rise of HTML5 and browser-side persistence there is the pressure to take that programming model to the web client.

It seems that the triumph of mobile apps and rich internet applications has quite a disruptive effect on the traditional server-side technologies and frameworks.
I am wondering where this will lead? Both of the above examples do not feel quite right in my opinion… but hey, maybe we will get JPA support in HTML6 or Oracle will include direct CoreData support in the future ...

Friday, December 14, 2012

Presentation: vert.x - asynchronous event-driven web-applications on the JVM

This week I was invented again to speak at the SBB Developer Day 2012.

My presentation was about vert.x:



I enjoyed the event very much, and I hope to be invited again next time.

Thursday, September 13, 2012

Tidbit: Hibernate bashing deluxe

This short speech from JavaZone 2011 is just ingenious! It really made me laugh out lout again and again.
I can fully recommend to watch the video (it's only 9 min), you will be amused, even if you don't know much about hibernate...

Hibernate should be to programmers what cake mixes are to bakers: beneath their dignity. from JavaZone on Vimeo.

Favorite quotes:

Frameworks like Hibernate leave you with pretty much exactly the same amount of work you had to do anyway, only now you are not enjoying it at all.
I present to you: Hibernate - the naked emperor's hairy butt-cheeks!
If Hibernate was a part of your team, you wouldn't even let him anywhere near your database.
We used to write algorithms, now we are writing annotations. Are we meant to be happy about that?

Monday, September 10, 2012

QuickTip: Programmatic MBean access under JBoss

I have been struggeling a bit with the programmatic access of MBeans under JBoss. This is my current conclusion.
With JBoss 5 there are two methods for accessing MBeans:
  • By JNDI-lookup of the RMIAdaptor. With this method you need the JBoss client libraries (the jars in your $JBOSS_HOME/client) on the classpath since the RMIAdaptor is a type that is provided by JBoss.
  • By pure JMX. You don't need the JBoss client libraries your class path here. 

The following snipped shows both methods:

With JBoss 7 the way to access MBeans changed quite a bit: The tricky thing here is, that you need the JBoss client libraries (the jars in $JBOSS_HOME/bin/client) on your classpath even though you don't explicitly import types provided by JBoss.

If the client libraries are missing, you get the following exception: Unsupported protocol: remoting-jmx

As far as I could figure, this is the only way to access MBeans under JBoss 7.

Tuesday, September 4, 2012

/ch/open Workshop-Days 2012


Simon and I are holding a workshop about object relational mapping with JPA2 next Thursday at the /ch/open Workshop-Days 2012.

This year is the first time since we are doing this course that the workshop is not fully booked… probably JPA is getting an uninteresting legacy technology?

So if you don't know what to do next Thursday, you can still get a seat in our workshop … however if I am honest I would suggest to have a look at the parallel course "Java EE testing revised with Arquillian" … it looks very promising. I would definitely attend that course, if I had a choice. 

Tuesday, July 31, 2012

Tidbits: Lines of Code

According to the discussion in JavaScript Jabber episode 20:
  • the code base for the Cloud9 IDE fronted (correction by @javruben) consists of about 300'000 lines of JavaScript. 
  • The GMail frontend consist of about 400'000 lines of JavaScript. 

Update 2013-05-25: According to this Hanselminutes episode, the LucidChart frontend codebase contains about 200'000 lines of JavaScript (about 88% of that is "strongly typed" with the closure compiler)

Tuesday, July 10, 2012

Impressive speech about the future effects of social networks

[in German]

This impressive speech nails down what social networks are all about and how the internet has a revolutionizing effect on modern society:

This is what I call a very impressive talk: 3 min and every word fitting a very concise and scientific analysis.

Thursday, July 5, 2012

Bookreview: MVC4 in Action

Another quote made it on the cover of a manning title: ASP.NET MVC 4 in Action


Palermo3 cover150I think this is a good book for developers that want to learn ASP.NET MVC. And I think today every .NET Web Developer should learn MVC. Learning MVC will help you understand basic web concepts and even when you are developing WebForms applications you can profit a lot from that.
I like the book, because it looks a bit further than just ASP.NET MVC as it comes out of the box. With chapters about  full system testing, AutoMapper, MvcContrib and NHibernate it deals with advanced topics that are neglected in most other books about MVC. The authors give a somewhat more opinionated overview how modern web applications should be created. This makes the book stand out among typical MVC books.
What I miss in the book is primarily the integration of MVC with the EntityFramework. The book only focuses on NHibernate. This was the right thing to do with the first version of MVC, however today the EntityFramework has made a lot of progress, and in my opinion it should be considered the default choice for ASP.NET MVC.
If you are already familiar with ASP.NET MVC or have even read a previous version of the book, don't expect to learn too much about the new features of MVC 4. Only the last two chapters of the book deal with specifics of the fourth release of the framework (probably the book was initially planned for MVC 3, but the fast release cycle of the MVC team made the authors skip directly to MVC 4).
Nevertheless, for developers that want to learn MVC, I think this book should be a must-read.

Monday, July 2, 2012

Quotes of the Week: Agile Backfire

The single most important thing on a project is picking the right people. If you have good people then it doesn't matter if you are using Scrum or not, it will turn out well anyway.

We were used to getting shit done … then they told us about Agile.

There are no agile projects. Nor were there ever any waterfall projects. What we had were just a bunch of guys trying to get a bunch of stuff done.

We must destroy these methodologies that get in the way of programming.

These statements make even less sense. They are just babble, and they’re not about your trade in any conceivable way.

I don't read agile books. They are a waste of time!

Agile books out there are just people telling stories about stuff. Stories are great -- love to hear them. But I can't trust the authors of most of these books to tell honest stories and learn honest lessons from them. Instead they have a theme.

The problem is, real life doesn't have a theme.

I used to be an agile consultant, but I am alright now.

Tuesday, June 26, 2012

Gojko's 5 BDD myths

Primarily for my own reference I am listing the 5 myths that Gojko Adzic is busting in his presentation: Busting BDD Myths

Go watch it, it's brilliant ... and while you are at it watch also his even more provoking presentation Reinventing Software Quality.

Myth #1: Instoolation
Belief that process problems can be solved by installing a tool

Myth #2: Businessting
Belief that business users should write acceptance tests

Myth #3: Acceptegration
Belief that tests are either unit of acceptance-integration

Myth #4: Rolation
<insert role> should do BDD in isolation (eg testers do everything)

Myth #5: Longression
Belief that the long term value of BDD is in regression testing

And as completion the five ways to misuse FIT by James Shore:

Misuse #1: Use Fit for Test Automation
Misuse #2: Customer? What Customer?
Misuse #3: Write Integration Tests
Misuse #4: Spin Your Propeller
Misuse #5: Specify Everything

A conclusion from all this myth-busting is probably that BDD is a concept that is rarely understood and still very much in flux:
BDD starts out as "tests are specs" now it's "full stack methodology" wondering where it will stop!

There's a cargo cult of Cucumbering going on and people need a reminder for when it's a good fit.

If we wait another year, then practicing BDD will be identical to what XP was in 1999

Sunday, April 15, 2012

Rethinking Automated Testing

While you’ve been worrying about your BDD adverbs the iFart dev just made $40,000.

Can you give 140 char synopsis of "opportunity cost of TDD?"

Is always a "Best Practice"? Is there even any such thing? When shouldn't you use it? What could you do instead?

Testing implementation is terrible terrible terrible.

The pendulum is swinging back and forth in the TDD and developer-testing world...
I blogged over two years ago about Testing Backlash and then again one year ago Are you too agile for TDD/BDD?

PendIt seems the time has come for the pendulum to swing by once again. In an almost mystical conjunction a lot of alpha geeks are voicing current "new" insights about automated testing and TDD.

Maybe this is the developer community climbing the ladder to another stage of competence or to another stage of grief (the viewpoint is probably depending of the pains in your current project)… but maybe it is just that alpha-geeks like any other intelligent beings are getting bored after a while and turn to new topics.

Anyways, here is a list of the recent tide of "let's rethink automated testing":

Just for completion I am reenumerating older reflections on the topic:

Tudor shows in When testing does not cut it that testing is not always the best alternative to ensure certain properties of a software system.

Tuesday, February 21, 2012

Thoughts about Dependency Injection

I just discovered, that a quote of me made it to the cover of Dependency Injection in .NET:

Looking at the book in its final form, I am surprised at how well that quote fits my current thoughts.

I like the style of the author. This stackoverflow answer is just a nice example of his style: dependency injection can be dangerous for your career.

A quote from my original review of the manuscript:
This is one of the best programming books I have read in the last three years. I like about everything in this book. The technical insights. The way  it focuses on concepts and not on tools or technologies. [...] It is definitely suited for programmers that want to learn good design and development techniques. It is not a reference book for a technical framework.

However I have a problem with the hype of dependency injection in general. It definitely goes into the direction of accidental complexity. I mean 584 pages, is a bit heavy for a promise to get better internal quality ... given I do everything else right. Especially compared to other, much wider topics that can have a much broader impact on your development:

From this perspective "All you need to know ... and more!" fits quite well: You will learn a lot reading the book, but it is sad that the current state of software development is that loaded with accidental complexity so that you have to be concerned with that much non-essential overhead ...

I also recommend reading a real critique of the current state of dependency injection: "Dependency Injection" Considered Harmful

Thursday, February 2, 2012

The future smells like JavaScript

Of course I am only repeating what others are preaching about the recent rise of JavaScript.

But I think the movement is significant and can't be overstated. And recent developments are really even making it more and more interesting.

Nobody can deny hat JavaScript is the de facto programming language of Html5. Every other language trying to bolt itself onto Html5 looks like pure friction so far. And Html5 is looking upon a prospering future.

Today we are used to some established JavaScript frameworks that make working with JavaScript more fun and productive. jQuery seems to emerge as the clear leader by popularity here.

More recently tons of javascript application frameworks (so called MVC frameworks) are emerging, that facilitate programming complex applications inside the browser and taking most of the traditional presentation-logic away from the server.

On the other hand we have the node.js ecosystem that takes JavaScript to the server and allows us to use the same language, concepts, libraries and tools for the full application development stack.
And that ecosystem is thriving! JavaScript is the most popular langage on GitHub ... and have a look at the impressive node modules list.

Now this is all well and alpha-geeky, but there are showing up the first "real-world" success stories: Voxer, Walmart, LinkedIn ...

Of course there are the critics.

Surprisingly Microsoft recently positioned itself to become one of the most influencing conveyor of the JavaScript hype. It seems that they are investing heavily into JavaScript on different frontiers:

Microsoft was pushing node.js onto the the Windows environment.
Now they are pushing it into their Azure cloud platform. And evolving a 3rd party ecosystem around that.

But probably the biggest step for the future of JavaScript is the new strategy of Microsoft for Windows 8 desktop and tablet applications (Metro style apps). While there are several options for developing Metro style apps, JavaScript seems to become a major pillar.
This move opens up yet another area for JavaScript and JavaScript developers, completely adjacent to the web.
Developing for the desktop (or tablet) will most likely always be pretty different than for the web. For Metro style apps there will be a lot of new concepts, libraries and tools that are different to the ones that are used in web development (just have a look at WinRT, WinJS ...).
But the desktop- and the web-stack will move closer together and JavaScript with HTML5 and CSS will be the common denominator. Which I think is a very interesting evolution.
For instance look at this example of a drum sequencer (a traditional client application) that is using JavaScript and jQuery for its UI.
The prospect of reusing code and knowhow between desktop-ui- and web-ui-programming seems tempting ... even if a lot of .NET developers and other gurus are not so thrilled by the prospect of omnipresent JavaScript.

Of course another interesting thing will be to see how Metro style apps will change the architecture of future desktop applications. I think some concepts from web development will get adopted into desktop development. A stricter enforcement of separation between UI- and backend-components within a single application will most probably be a result (i.e. there seems to be no notion of traditional data-access in WinRT).

PS: This is my first cross-post between my blog and Thanks @danielmarbach for inviting me.

Friday, January 27, 2012

Vacation Books and Screencasts

I am looking forward to spend another vacation mostly under water.

For the travel and the time above the water I am filling my Kindle and my iPad with the following material:

Thanks to bertolami, mbaumeler and j_graber for the recommendations.

Monday, January 2, 2012

Presentation: Can JavaScript be elegant?

Last month I was invited again to speak at the SBB Developer Day 2011. Here is the presentation I held about JavaScript:


I enjoyed the event very much, and I hope to be invited again next time.

Related Posts Plugin for WordPress, Blogger...