Woke up at 4 am today. My clock with built-in temperature gauge said it was 11 degrees celcius. In my bedroom. Still no hot water or heating. Bet you can’t guess just how much I’m looking forward to showering this morning.
Went through the usual morning ritual of turning on the shower and sticking my hand in the stream to check the temperature, as we all do. In my case of course, it was in the forlorn hope that the water in the cold pipe had somehow been mystically heated to the perfect showering temperature, and was not, in fact, freezing. Still have no heating system. Probably won’t have next week either.
I’d like to report that cold showers are actually quite invigorating, and remark on how quickly I got used to it, but who would I be kidding? Its interesting how things that were luxury items not 50 years ago are now considered essential. How many times have you said “I can’t function without coffee” or something similar? Its just not true. Take it from someone whose entire body is numb with cold.
Also, the contortions promoted by the cold water, namely trying to wash one bit of myself at a time while keeping the rest of my body out of the flow had the effect, this morning, of causing my feet to slide out from under me towards the front of the bath, toppling me backwards. With surprising presence of mind, or a simple desire to see my own demise approaching, I managed to twist around mid-fall so my hands and arms hit the edge of the bath, and not my head. On balance, a positive result, ie. I am conscious and writing this with only minor bruises.
Have a nice day.
A quick-reference list of some of the tools I am using or plan to investigate further.
- Ant: Build tool.
- Castor: Bean mapping.
- CruiseControl: Continuous integration.
- CVS: Source control.
- Jetty: Servlet container.
- JUnit: Unit testing.
- Marathon Man: Swing GUI testing.
- OpenJMS: Java messaging.
- SAPDB: Database.
- Scarab: Issue tracking.
- TortoiseCVS: CVS GUI.
- Velocity: Templating.
- WinMerge: Diff tool.
- XDoclet: Code generation.
Combined price: zero. Combined worth: priceless.
Something useful I learned about at work today: SAPDB. Those nice folks at SAP have open-sourced their database code.
New job, first day, usual mix of excitement and curiosity. Possibly more so than for other jobs I’ve had, probably because I’m really enthused about working for ThoughtWorks.
Domestically, life could be better due to the complete failure of my central heating and hot water. Cold showers forecasted for this week. Mmm, nice.
Starting messing with Robocode earlier this week. Its fun, in a busman’s holiday kind of way. The complexity of some of the publicly available robots is amazing. Its also a good way to learn about the behaviour of highly event-driven systems (ie. unpredictable).
This site got mentioned by my department head during my farewell presentation from work, much to my embarrassment.
So thanks to everyone, I’ve really enjoyed working with you all, and you have no excuse not to keep in touch!
Was graciously given permission by my current (for the next 2 days) employer to open-source some utility stuff I’d written while there. Expect the following imminently, pending some minor cleanup:-
- TestGenerator – recursively scans all java source code in a package and generates an AllTests TestSuite class. Simple, but useful.
- JScaffold (working title) – Initially developed as a means to mock up a servlet container for testing servlets, but generally useful anywhere hard-to-create interfaces (such as HttpServletRequest) are used. Similar in design to EasyMock, but less concerned with assertions about how the mock objects are called, and more with faking up a convincing environment to persuade servlets to render their output into an easy to handle object like a ByteArrayOutputStream or String which can then be checked using tools like Jakarta Regexp. Useful for high-level testing.
…is surprisingly hard to do. Yesterday I got fed up enough at trying to figure out whether our stats-gathering code was working to actually write a script to generate an artificial sample of perfect data. It took me about 20 minutes. When I’d finished I showed it to a colleague and she said “Why did no-one think of this until now?” I had no answer. If anyone should have thought of it, it should have been me. It seemed so obvious a thing to do, once I actually got irritated enough to sit down and do it. Up until then we’d been doing our testing using real data. More life-like? Yes, but impossible to verify automatically. If the system claims 15,768 occurrences of ‘x’ in a total sample size of 28 million, how do you know it is right? Check by hand?
Automated repeatable tests. Such a small amount of effort for such a huge gain.
Couldn’t pass up this opportunity to divest myself of some news that has seriously impacted my blogging recently. I first heard of Marathon Man at a job interview, from the people who unleashed it on the world: ThoughtWorks. I start there on monday. Woohoo! Can’t wait. Working for the people who brought you not only Marathon Man, but also CruiseControl.
I’ve been bursting to blog about it, which has affected my posting recently. Sorry. I feel much better now.