Archive

Archive for March, 2008

We’re famous!!!

March 30th, 2008 makii Comments off

I just found out that fettgaumen.de just recognized us as “serious in-house competition”. We’re getting famous, even without bad-taste monday. And yes, Guenni acutally has the copyright on research and destroy, but I asked him in advance and he had no objections. He’s used to it, as he, as you might recall, also has the copyright on fettgaumen! :)

Categories: Work Tags:

Review of Neil Gafters’ talk

March 24th, 2008 makii Comments off

Yes, it’s a little late, but so what?

About two weeks I visited a quite interesting talk by Dr. Neil Gafter, developer of Google Calendar, whom, in his spare time, proposes new language features for the Java Programming Language and Sun’s javac-Java compiler. The latest proposes BGGA closures, in conjunction with other nice features like control abstraction, function types and lots of other pretty useful things,is under heavy discussion.

At first I was unsure what to think about closures, lots of people compained about the syntax, and that noone ever will understand the code when here are some function types in it. But, honestly, can it get any more confusing than with generics? NEVER!!. During the talk I recognized the pattern, which clearly is derived from the code blocks I used to love in Smalltalk. Clearly there are some slight differences taking into account that Java is, contrary to Smalltalk, a strongly typed language.

Further than that, it gets really nice when using closures in conjunction with control abstraction: Often used example, which actually doesn’t make sense, as Java5 has a foreach loop built in, but let’s just say someone wants to implement a method like foreach, taking as parameter any type of Collection<T>, as well as a block of code, which itself takes as parameter one item of T. This method then can be imported statically by any class which has need of this particular foreach loop. This abstract functionality is, right now, hard-wired in the java compiler to the Java Collections framework from the runtime environment. *hick* Yes, exactly the way around it should NOT be.

Closures in conjunction with control abstraction have the power to enable APIs to implement their own control statements like, for example, a foreach-loop for Collections or Maps, performance logging, cleanup work, whatever you can imagine. Despite my reservations in the beginning, I can’t wait to see the BGGA proposal into Java7 or Java8. Hopefully we will see it!

Categories: Java, Technology Tags: , ,

Curiousities in sci-fi series

March 20th, 2008 makii Comments off

Blogging about curiosities in sci-fi series, I’ve discovered another one. Everybody might now what Star Trek is. And everybody admires the neat looking, glossy touch controls on these cute space ships. They just touch these changing, screens to start a sensor sweep, fire the phasers or eject the warp core. At least that’s what it looks like. Underneath all this advanced technology using gel packs, power conduits and whatever there is still simple, probably serial pointing device, manifesting in a mouse cursor :-)

Pointing Device?!?!?!?

Stargate: Basecode of the Replicators

March 19th, 2008 makii Comments off

I confess, I’m a Stargate fan. I watched every show. At least twice.

And now, due to a recent discovery by The Daily WTF we know why the Asgard didn’t stand a chance against the Replicators. The Replicators’ basecode was written in the most powerful language in the world: JavaScript!!

Replicator Basecode

As derlanders pointed out, take a good look at the code style: What a mess!!!

Categories: Sci-Fi, Stargate, Technology Tags: ,

Encoding problem

March 17th, 2008 makii Comments off

Isn’t this a true and really really cool T-Shirt?

Categories: Common Tags:

The Challenge

March 10th, 2008 makii Comments off

OK, if anybody et al has read this blog up to now, you might have asked yourself why we do the funny things we do and what it’s all about with this 16 millisecods and stuff.

We are a small team of (right now) three software developers which were assigned to replace a PHP web application which is now up and running for about 10 years with a new one written in Java. The website itself, despite the underlying technology is quite successful, right now only present in the german market, and has more than 100 million page impressions per month, by more than 13 million visits, attracting more than 600.000 uniqe users in the same time period. OK, it’s not Google, but it’s not that small either.

The former PHP website isn’t that bad. It does what it is ment to do. It’s pretty fast. So why the rewrite?

As often it all comes down to TCO. The basic principles of the PHP webapp aren’t bad and even aren’t that outdated, for a ten year old vessel, but over time, with a lot of different maintainers and no good documentation or big picture, software degrades and becomes a pain in the ass to maintain. Thus the decision for the rewrite was born, with the main goals of easier (read: cheaper) maintenance and as least as fast, or not this much slower than the current website.

As you might see from the previous posts the general feeling right now is quite good, but we will see in the next few days/weeks when QA starts testing the thing. Knock-on-wood.

Categories: 16ms, Common, Technology Tags:

Neil Gafter in Cologne

March 7th, 2008 makii Comments off

For everybody who doesn’t know yet: This monday Dr. Neil Gafter visits the JUGCologne and gives a talk about JDK 7 language features and Closures.

Surely he wants promote his BGGA closures proposal, which I personally don’t like this much. Function types is a powerful tool, and Java already has a weak kind of function types, namely inner anonymous classes. Of course they are quite inflexible in comparison to the function types suggested, but anyway, they are pretty unreadable, really.

Voices on weblogs.java.net rise and defend Dr. Gafters’ proposal by telling “we have IDEs which support syntax highlighting”, but hey what kind of argument is that, when my  boss tells me  he will, from time to time, check my code using a plain editor, as he doesn’t want to install eclipse and frankly, really has no need to. It pretty often gets mixed up when using generics.

We’ll see what he tells us next monday.

Categories: Technology Tags:

Struts2 interceptor stack for cache index future page…

March 7th, 2008 AVC Comments off

This is the first interceptor stack performance log. What you see below is the log on my local jboss while requesting the index page. It needs only 125 ms to get through the interceptor stack.
All other elements are cached and the interceptor stack is not invoked for them. Maybe we can optimize this for better performance… :-)


16:08:21,449
[125ms] - Handling request from Dispatcher
[0ms] - create DefaultActionProxy:
[0ms] - create DefaultActionInvocation:
[0ms] - actionCreate: index
[125ms] - interceptor: exception
[125ms] - interceptor: alias
[125ms] - interceptor: servletConfig
[125ms] - interceptor: prepare
[125ms] - interceptor: i18n
[110ms] - interceptor: chain
[110ms] - interceptor: debugging
[110ms] - interceptor: profiling
[110ms] - interceptor: scopedModelDriven
[110ms] - interceptor: modelDriven
[110ms] - interceptor: fileUpload
[110ms] - interceptor: checkbox
[110ms] - interceptor: staticParams
[110ms] - interceptor: params
[110ms] - interceptor: conversionError
[110ms] - interceptor: validation
[110ms] - interceptor: workflow
[110ms] - interceptor: navigationInterceptor
[63ms] - interceptor: defaultPageInterceptor
[63ms] - interceptor: queryInterceptor
[63ms] - interceptor: cookie
[16ms] - invokeAction: index
[47ms] - executeResult: success
[47ms] - create DefaultActionProxy:
[47ms] - create DefaultActionInvocation:
[47ms] - actionCreate: tbsContentAction
[47ms] - interceptor: exception
[47ms] - interceptor: alias
[47ms] - interceptor: servletConfig
[47ms] - interceptor: prepare
[47ms] - interceptor: i18n
[40ms] - interceptor: chain
[40ms] - interceptor: debugging
[40ms] - interceptor: profiling
[40ms] - interceptor: scopedModelDriven
[40ms] - interceptor: modelDriven
[40ms] - interceptor: fileUpload
[40ms] - interceptor: checkbox
[40ms] - interceptor: staticParams
[40ms] - interceptor: params
[40ms] - interceptor: conversionError
[40ms] - interceptor: validation
[40ms] - interceptor: workflow
[40ms] - interceptor: navigationInterceptor
[20ms] - interceptor: defaultPageInterceptor
[20ms] - interceptor: queryInterceptor
[20ms] - interceptor: FinanceDataInterceptor
[20ms] - invokeAction: tbsContentAction
[20ms] - executeResult: success

have nice day,
(AVC)

Categories: 16ms Tags:

About new architectures and old filthy systems…

March 7th, 2008 derlanders Comments off
Categories: Technology, Windows Tags:

News from the 16ms frontier

March 7th, 2008 derlanders Comments off

Yay! We were finally able to fake some posable statistics which show that the cache system we use is uber. Okay, uber against partial caching in the file system, but still superior by factor 24. (Sorry, should be 23, we are working on it) Below a test result table for a time test:

42 ms > 1337 ms

“It is all lies! Everything I took for real all these years – a lie.”

As it seems, firebug only measures the time needed for a http response to load, which means our previous results were somewhat wrong. And the results for the PHP system too. The processing time from click to the start of the response is not included in either system. Now we used highly sophisticated software tools to overcome this flaw and produced… interesting results.

Figures spat out by some testing automat have to be regarded with suspicion though, especially if it is a quickly clicked test. However, if these Numbers are right, the Average click time of our JBoss (in transwarp overdrive mode, with solid fuel boosters and native library extensions along with our supportive pedaling) is about 35ms, with an ugly peak of 70 ms. The peak of the php system is 10.

Seconds.

So if you take a look at the graph below, there are the two pointy graphs with the live system (blue) and the qa instance (green). The red graph (The JBoss system) does not look pointy here because of the 10 second peak from the live system which ruins the scale. (The red and blue graph drop to zero because they finished their 100 clicks before the QA system)

ooover niiinethoousand!!!!

Categories: 16ms, Technology Tags: