Now that’s odd

It is somewhere between ‘oddly disturbing’ and ‘outright terrifying’ to have another guy write poetry about me.

More to the point, it is also terribly inaccurate.   I do fear receiving more adoring prose by responding, but I feel I do need to point out the more obvious flaws.

  1. Process freezes and applications hung.   I find it difficult to blame java for all my hung applications.  I did try, but since some weren’t written in java I had to desist.
  2. Netbeans is a good IDE – I use it for java and C development and i’m hoping to use it for Scala development.  It’s not perfect, but fantastic for the price.
  3. I never said do system programming in Java.   Though there are*extremely* good reasons for doing this and I should really write about it at some time.   Funnily enough I recall being called a heretic for writing system code in C rather than assembler so it’s quite funny to be accused of this – well it did make me laugh anyway.
  4. I felt the point was lost when suggesting python was the language to use….  Clearly delusional thinking.  Python is good for glue code and that’s really where it should stop.  Yes, I know i’ll probably burn in hell for saying that.

It’s been a long week so i’ll conclude by saying that the poem was odd, factually incorrect, clearly the product of a sick vogon mind.  Anyway, in case anyone wonders, the poem author and I work together and it’s all in good jest – well I hope it is, but if you hear of some strange event on the news then it may be because the poetry has turned into……….. s…o…m…e…t..h…i…n…g……s..i…n…i…s…t…e…r


Oh java…. what are you doing?

Lots of people complain about java performance (and you know who you are 😉 )

But if you ask them if they’ve actually looked to see what their application is doing many say ‘nope’.  This is of course frustrating for everyone.

Mostly this happens because people just don’t know how to investigate how their application is performing and in the past it’s been difficult to do.  It’s also possible that they’d rather just complain rather than fixing things – much like me previously whinging about the shortcomings of HTML5 😉

However, if you’re running a  JDK (1.5.0+) which implements the Java Management Extensions then you can use tools such as jconsole or jstat to gather information about the execution profile of your application with a goal to correcting any anti-social behaviours.

Let me give you an example of using these tools on a well known Java application – Tomcat.To utilize these tools you have to turn on the management interface which allows the application VM to be monitored from the local network or across the network ( yes, you can secure the management connection )

So, modifying the Tomcat startup to include – start up Tomcat and then you can use jconsole <pid>  to get a look at what the JVM is doing for your application.

Attached are some pictures. Of course now that you have some better diagnostic data you can try to understand what may be causing it, possibly tune it better, produce better bug reports for the developers or even use them to assist you in fixing the application yourself – it’s ok, you can still say Java sucks but at least now you’ll have some evidence to support you.


jconsole window showing some performance statistics.


Some basic performance statistics.



Of course, if you want to collect trending information over a longer period then make sure you have a look at jstat.

Ding Dong the Frame is dead

So the W3C released a draft of HTML5 and I tried to get excited but there wasn’t a lot there really to grab my attention – well there was one thing – no more damn frames. It’s got to be worthwhile upgrading just to see the end of that filth 🙂
From a structural perspective most of the formatting constructs have been removed or more correctly delegated to the CSS. As such HTML5 is structurally far simpler than HTML4 so that has to be a good thing.

Has anything interesting been added to HTML5 in the *gasp* nearly 10 years since HTML 4.01?

Well there are some good web application constructs, such as :

  • 2D drawing API which can be used with the new canvas element.
  • API for playing of video and audio which can be used with the new video and audio elements.
  • Persistent storage. Both key / value and a SQL database are supported.
  • An API that enables offline Web applications.
  • An API that allows a Web application to register itself for certain protocols or MIME types.
  • Editing API in combination with a new global contenteditable attribute.
  • Drag & drop API in combination with a draggable attribute.
  • Network API.
  • API that exposes the history and allows pages to add to it to prevent breaking the back button. (This API has the necessary security restrictions in place.)
  • Cross-document messaging.
  • Server-sent events in combination with the new event-source element.

In summary, some stuff that may make the development of web 2.0 applications a bit easier and hopefully allow some of them to suck less but how long do we have to wait for this draft to turn into something concrete – 2010 . Too little, too late. Give me more – but feel free to take the frame away right now.

Gutsy and Vmware-Server – you’re in for some pain

For those who are looking to run vmware-server on gutsy there are some things you really need to do to the vmware-server config after you’ve installed it otherwise you will get some seriously crap performance.

The 20 cent summary is if you make the following changes to the vmware-server config file

prefvmx.useRecommendedLockedMemSize = “TRUE”
prefvmx.minVmMemPct = “100”

and then add the following to each of your vm’s vmx files then performance will return to something quite acceptable.

sched.mem.pshare.enable = “FALSE”
mainMem.useNamedFile = “FALSE”
MemTrimRate = “0”
MemAllowAutoScaleDown = “FALSE”

Wonder about the level of performance improvement? Surely it can’t be that big a thing? Here is some sar output where the *only* changes made to the environment were the above changes.

15:25:01        CPU     %user     %nice   %system   %iowait    %steal     %idle
18:25:01        all     11.73      0.00     60.93      0.32      0.00     27.02
18:35:01        all     12.18      0.00     55.72      0.73      0.00     31.37
18:45:01        all     10.93      0.00     58.32      1.03      0.00     29.72
18:55:01        all     12.23      0.00     48.99      0.72      0.00     38.06
19:05:01        all     11.09      0.00     64.69      0.46      0.00     23.76
19:15:01        all     12.24      0.00     55.00      0.74      0.00     32.03
19:25:01        all     11.83      0.00     51.72      0.73      0.00     35.71
19:35:01        all     12.22      0.00     58.18      0.52      0.00     29.07
19:45:01        all     12.81      0.00     50.40      0.62      0.00     36.16
19:55:01        all     10.31      0.00     62.12      3.46      0.00     24.11
20:05:01        all      1.00      0.00     11.85      6.60      0.00     80.55
20:15:01        all      0.03      0.00      0.48      0.40      0.00     99.09
20:25:01        all      0.01      0.00      0.48      0.35      0.00     99.16
20:35:01        all      0.01      0.00      0.41      0.24      0.00     99.34
20:45:01        all      0.02      0.00      0.46      0.20      0.00     99.32
20:55:01        all      0.01      0.00      0.38      0.20      0.00     99.40
21:05:01        all      0.01      0.00      0.39      0.26      0.00     99.34
21:15:01        all      0.02      0.00      0.39      0.37      0.00     99.21
21:25:01        all      0.01      0.00      0.51      0.30      0.00     99.18
21:35:01        all      0.01      0.00      0.37      0.23      0.00     99.38
21:45:01        all      0.02      0.00      0.43      0.22      0.00     99.33
21:55:01        all      0.00      0.00      0.28      0.22      0.00     99.49

Thanks Cath for finding all that!