We are off again! I could grow to like this traveling stuff. But airport food…
Bruised
I did say that I would try to write something each Tuesday after training at what is now The Sword, London, so here we go.
More work on stepping and footwork last night, and it feels like it is starting to come together, although I must say it only feels natural to me with a sword in hand.
More relevantly I sparred briefly with TinyTim last night, the first free sparring in almost a year, and with long sword to boot. To my surprise I didn’t suck as much as I expected. Which isn’t to say I was not soundly trounced and now have some embarrassing bruises, and am so out of shape it felt like a marathon. But I did start to relax and get the flow back, and toward the end was not letting him get away with the easy shots and delivered some satisfying strikes.
Apart from the obvious – being out of shape and still coming to grips with long sword – I noticed that I am suffering from two problems to resolve:
1. I have been conditioned to telegraph hits and to strike outside the body
2. I am forgetting to keep mobile and maintain distance.
More sparring please. Bruises are a sword’s way of telling me I was in the wrong place at the wrong time.
Twirling
I popped back to the Wallace to have another look at the plates from Thibault that Dave R was demonstrating here. (and just spent 10 minutes explaining it all to an American actor)
They key point of the plates for me is that Thibault’s turn is very much on the spot, but crucially is only done when Alexander’s body is well past Zacahry’s point: he turns inside the blade. It’s a very restrained and careful action (apart from the context of ramming the rapier through someone up to the hilt) and there is no opening for Zachary to exploit.
Waiting…
We are about to go on a tour of the Noble Art of The Sword at the Wallace Collection with Toby Capwell the curator, followed by dinner. Let me just say we like the Wallace greatly.
Bigger Steps
I decided last night as I took the train home from training (the training train?) that one way to help cement each evenings training would be to write about it. Simply recounting what we did will be of limited use, so rather I need to consider how I reacted to the training each evening.
We focused again on the cuts along the diagonals, given that they are simple and natural but also because they lead into many areas of investigation. The true-edge cuts went smoothly, with just a bit of adjustment to my footwork. To echo Meyer’s body shape, I have to extend my body more forward over my left foot, and reach for that almost-but-not-quite falling forward feel. My previous training wants me to put all my weight on the left leg, but I need to keep some of it on my right too so that I can push forward with my right as I take a big step forward. Thats something new I learned: the forward motion is a step and not a jump.
One thing I am still not doing with the cutting drill is getting the cuts coming through the face: the centre of the cross is still somewhere down around my chest height. When I do focus on getting the pattern shifted up higher, the line of the cuts suffers and the edge wobbles all over the place. I suspect when I return to doing them with dussack that will improve though: I feel like I am muscling the long sword around as though it was heavy, rather than just relaxing and letting it flow.
We started on the false edge cuts, which initially felt weird until I stopped thinking about them and just restricted myself to thinking: my sword is here, and I want it to go along that next diagonal to wind up with the false edge at the other end of the diagonal. My body knows how to do that, I just have to turn off my mind so that it doesn’t get in the body’s way. Any philosopher who wants to argue against Descartesian dualism should be required to wave a sword around.
The reworking of the mechanics of the big step made the zornhau drills work better: in general I found that if I relaxed, got the sword moving ahead of me so that I had to follow it, and bought my hands through the line to cut through rather than striking the target, then I was arriving where I needed to. What I learned: “covering the line” in my head maps onto “keep the sword between me and his sword”.
I still have to work on the Big Step: I think that I am trying to cushion my landing by touching my foot down with the front of the foot, rather than just stepping out as though walking. This is pulling me up short. Thinking is in progress.
Jetty and JNDI and Atomikos.
Yes yet another “hey I just found this out, so you need to know it too”. And by the way, if you do find this useful, I would really like you to comment on this post so that other people will find it too.
I need to set up Jetty 8 to use a JTA provider. Quick googling around suggested that I need to take into account the following:
- Setting up JNDI resources on Jetty: http://docs.codehaus.org/display/JETTY/JNDI
- Finding a JTA provider: http://stackoverflow.com/questions/777636/what-is-a-good-open-source-j2se-jta-transactionmanager-implementation
- Using Atomikos in Jetty: http://docs.codehaus.org/display/JETTY/Atomikos
The kicker being of course that those documentation resources are out of date. Pause here for a quick rant: please, so that you do not go to a special hell reserved for people who cause huge numbers of lives to be wasted, if you are releasing code and documentation into the wild: update the frakking documentation!. Sadly, most google searches for anything about Jetty go to those elderly Codehaus pages, rather than the more up-to-date but obscure pages at http://wiki.eclipse.org/Jetty
In order to get the combination of Jetty 8.x and Atomikos 3.8.x and JNDI working, you need to look in the right place, and put the right class path in your Jetty JNDI definition:
<New id="tx" class="org.eclipse.jetty.plus.jndi.Transaction">
<Arg>
<New class="com.atomikos.icatch.jta.UserTransactionImp"/>
</Arg>
</New>
and to copy the following from the Atomikos lib/ directory into the Jetty lib/ext/ directory:
geronimo-j2ee-connector_1.5_spec.jar
geronimo-jms_1.1_spec.jar
geronimo-jta_1.0.1B_spec.jar
and finally to copy all the JARs from the Atomikos dist/ directory into the Jetty lib/ext/ directory.
Note that I have not yet tested this exhaustively, and suspect that not all of these JARs are needed.
Going Backwards
So one of the things that showed up in the bundle of mail I received on the weekend was the annual statement from my Superannuation fund. In Australia there is a compulsory scheme, where part of your salary is stuffed into a super fund, locked away until you retire (or die). This has made a lot of people very angry, and a very small number of people very wealthy, and is probably indirectly responsible for the obscenely high rents in most of the major cities.
Then there’s the insult on top of the injury: my money that they claim to be carefully invested lost somewhere over $8,000 in the year. And they charged me a bit over $1,000 to carefully manage my funds backwards. Any other business would be out of business if they tried that, but the Super funds are hallowed, sacrosanct and politically immune.
Let’s just say that I intend for the fund managers to be first up against the wall when the revolution comes.
Geronimo!
Ok. More adventures with open source. One of the things I’ve got on my (lengthy) list at the moment is to have a look at some light(er) weight servlet and J2EE containers. JBoss is giving me hives. You may be aware of that, I’ve mentioned it before.
So the first one I wanted to look at was Geronimo, partly because it’s from Apache, party because it’s got the option of being wrapped around either Jetty or Tomcat. I trotted off, grabbed the 2.2.1 tar ball and threw it onto my Mac so that I could run it up on the train. That’s where the irritation started. From the documentation, it was evident that in other *nix environments, I should just be able to unpack the tar ball and run bin/geronimo.sh run
. I tried that on my Mac, and was hit by the dreaded Unable To Decrypt error.
It was pretty obvious that there were two parts to the solution: get a full JDK installed on the Mac, and ensure that the run time environment for Geronimo has JAVA_HOME pointing to the right place.
I could rant endlessly about Apple’s arcane treatment of Java, but won’t. If you have a developer account, it’s reasonably easy to grab a fairly recent JDK and get it installed. What’s not so obvious is where the hell the JDK winds up on your machine after install. Apple aren’t particularly helpful with this: the JDK winds up in /Library/Java/JavaVirtualMachines
. Hence for me I needed to add JAVA_HOME to my profile:
JAVA_HOME=/Library/Java/JavaVirtualMachines/1.6.0_31-b04-415.jdk/Contents/Home
That sorted Geronimo out nicely – the boot log showed the right JARs were being found:
Runtime Information:
Install Directory = /Users/robert/Desktop/geronimo-jetty7-javaee5-2.2.1
Sun JVM 1.6.0_31
JVM in use = Sun JVM 1.6.0_31
Java Information:
System property [java.runtime.name] = Java(TM) SE Runtime Environment
System property [java.runtime.version] = 1.6.0_31-b04-415-11M3646
System property [os.name] = Mac OS X
System property [os.version] = 10.7.3
System property [sun.os.patch.level] = unknown
System property [os.arch] = x86_64
System property [java.class.version] = 50.0
System property [locale] = en_US
System property [unicode.encoding] = UnicodeLittle
System property [file.encoding] = MacRoman
System property [java.vm.name] = Java HotSpot(TM) 64-Bit Server VM
System property [java.vm.vendor] = Apple Inc.
System property [java.vm.version] = 20.6-b01-415
System property [java.vm.info] = mixed mode
System property [java.home] = /Library/Java/JavaVirtualMachines/1.6.0_31-b04-415.jdk/Contents/Home
System property [java.classpath] = null
System property [java.library.path] = {stuff in java.home}
Nice! Trouble is – the problem persisted. Here’s the trick: the initial install of Geronimo creates various properties files. If that initial startup fails, the properties files have borken information in them, and you will never get it to startup. Let me repeat that:
You MUST get JAVA_HOME in the Geronimo environment pointing to a valid JDK before you try to run Geronimo, or daemons will fly out of your nose and eat your face. You have been warned.
Sharpening the tools
Before I packed it all up, I had a workshop habit that I suspect other makers of sawdust shared. Before embarking on any work, I would spend some time cleaning up the workshop area. I would make sure the bench was clean and clear, sweep the floor, check that tools were sharp and sharpen them if necessary. I’d check the tables on the big tools for rust, and the tracking on the bandsaw. Sometimes I would get out particular tools and lay them out on the bench, ready to go.
And all the while I was doing this, I would be thinking about the work I was going to engage on, think about the processes I was going to follow, the pattern of work. I find this enormously relaxing, and a fantastic way to focus. I found that I would be trimming away, sweeping away, everything in my head that I didn’t need for the job at hand.
Over the past few years I’ve been trying to take the same approach to programming work, with a similar resultant focus (and one day I hope that I find it relaxing too). Thus, today, I’m re-reading Better Builds with Maven. Sharpening the tools and cleaning the bench.
One nice thing about re-reading books like this, particularly well written ones, is that there is always something to learn, some nuance that pops out that was previously invisible, highlighted by fresh experience. Even the import of a simple statement like “convention over configuration” can change over time.
Just like buses
You wait forever, and then two turn up at the same time.
Which is what happened with job offers on Friday. In a couple of days time, when contracts have been signed, I’ll tell you which two companies, and why I chose one over the other, but suffice it to say that I found myself in the remarkable position of having two really good offers come in within a couple of hours of each other.
I’ve dealt with a lot of agencies and agents while I’ve been hunting for work in London. Most of them have been ok, a few of them have felt incredibly dodgy, and three of them proved to be very good. Maybe I’m biased since these were the ones that got me the best chances, but it did feel that these three companies seriously thought about my reported history and interests, and made intelligent and dedicated attempts to match that against client needs. So, some free advertising for them. If you’re looking for work here in London, I strongly suggest you talk to these guys and gals:
- ABRS went out of their way to put interesting things in front of me;
- Salt have a good focus on marketing candidates and helping candidates market themselves
- Bearing have an excellent understanding of the market sectors they aim to service, and a good understanding of technology
I’d also like to throw some laurels in the direction of BITE Consulting. They’re a small shop, with a fairly specific aim – placing people into contract roles, generally folk sourced from the colonies – but the products they offer to contractors are extremely competitive and sensible. If I’d been pursuing contract work (which I would have turned to if these permanent positions hadn’t popped up), there is zero doubt in my mind that I would have worked through and with BITE.
We now return you to regular programming.