Monthly Archives: July 2012

Yahoo! announce that the new CEO is…a coder?!

So Yahoo! have announced that their new CEO (the third in the last year) will be Marissa Mayer, an executive from Google.

This is big news but why? It’s not just that she’s a woman or that she’s only 37 or that she’s leaving the dominating Google for the beleaguered Yahoo!. Actually it is all of these things but to me it’s also that she used to be a software engineer. For start-ups, it’s obviously common to have a techie as the CEO since they are normally the ones that kicked things off but for mature companies it’s almost unheard of. Then again, maybe this is Yahoo!’s style since they did the same with previous CEO Carol Bartz, another pure CompSci grad and former “field analyst”. Tech companies like their C-levels to have some level of CompSci but normally along with some sort of business degree. It’s just not that usual to see engineers make it to that level.

Developers are normally seen as being unable to see the bigger picture or stay hands off. They struggle to move from an individual contributor to a strategic force multiplier since there is rarely a sense of achievement at the end of the day. In strategic posts decisions may take months or even years to come to fruition, completely unlike the minutes or even seconds long cycle of code>compile>test>deploy that developers are used to.

Whatever the successes or failure of Marissa Mayer, and I hope she does better than Ms. Bartz, it shows that these attitudes are changing as people realise that developers are more then just code monkeys.

Vert.x – a competitor for Node.js?

With all the hoopla around node.js and threadless concurrency it’s only to be expected that we would see similar (but different) efforts. Vert.x is one of these efforts.

Vert.x is another technology that claims to bring “effortless asynchronous application development for the modern web and enterprise”. What Vert.x really brings to the party is the ability to program in JavaScript, Ruby, Groovy and Java. The reality is that it is possible to write Vert.x applications in any JVM compatible language since that’s where it runs.

Since a vertex is a synonym for a node in graph theory, it’s fairly obvious that imitation is the sincerest form of flattery. I’m still not a huge fan of the event loop as a general concurrency strategy (as I wrote here) since it requires that you know what sort of requests you are getting. I think it’s ideal for systems concurrency rather than general concurrency since you need to know about the request before your can deal with it but it’s apparent that your mileage may vary as Node.js has proven insanely popular.

Anyway, vert.x boasts better performance (yes I know; lies, damn lies and microbenchmarks!) more languages, as many features as Node.js and even a compatibility layer so that you can run your node applications on vertex with zero changes (allegedly). The only thing it doesn’t have is the amazing community support of node.js but it certainly looks interesting.

It looks pretty interesting so why not go have a look at http://vertx.io/

Quick Tip – Tomcat silently fails when a Filter fails to start

I was throwing together a prototype to demonstrate some caching strategies but for some reason Tomcat was failing to start up cleanly. Annoyingly, the only error message was underwhelming.

SEVERE: Error filterStart
Jul 6, 2012 3:39:05 PM org.apache.catalina.core.StandardContext startInternal
SEVERE: Context [] startup failed due to previous errors

There was obviously some bad config or setup but lets be honest, that’s a rubbish default message. The solution was to create a file called logging.properties and put it on the classpath: so either in WEB-INF/classes or list it directly on the classpath. Maven users can put it in src/main/resources. This file should contain the following config which will output the stacktrace of the offending error.

org.apache.catalina.core.ContainerBase.[Catalina].level = INFO
org.apache.catalina.core.ContainerBase.[Catalina].handlers = java.util.logging.ConsoleHandler

This produces the more informative stacktrace below.

Jul 6, 2012 3:34:33 PM org.apache.catalina.core.StandardContext filterStart
SEVERE: Exception starting filter cacheFilter
java.lang.ClassNotFoundException: com.betfair.web.filters.CachingFilter
...
SEVERE: Error filterStart

In my case it was a simple misconfiguration of the project where I hadn’t included it, d’oh!