While metrics never give the whole picture, they sure help ask interesting questions. For instance, I hooked up CVSMonitor to the repository for my current project, and this was the result:
| Author | Karma | Commits | Added | Removed | Change |
| agreen | 149,483 | 226 | 47,416 | 47,259 | 157 |
| dpinn | 130,282 | 272 | 64,135 | 24,033 | 40,102 |
On the face of it, I've taken away as much code as I've added, leaving David to do all the work. We kicked around a few other hypotheses as well, but overall it reflects the fact that I've worked on some difficult components - like the printing subsystem, which I had five goes at before I hit on a combination of technologies that works reliably.
CVSMonitor has plenty of other tricks too, including finding changesets and allocating blame.
Life in the future will be a lot simpler if surveillance systems are properly installed.
I draw this conclusion from my research with Babylon 5 and Crusade, Star Trek (Original, TNG, DS9, Voyager, Enterprise, movies I – VI, Generations and First Contact), Blake’s 7, Dr Who, Earth 2, Star Wars (five movies), V, fifty-odd other sci-fi movies and (sadly) Space 1999.
A common thread in these stories is the lack of security cameras aboard the good guy’s space ships. The bad guys sometimes have security cameras, but only if the good guys can work around them.
If I were in charge, I’d be deploying surveillance in the form of hundreds of small packages – less than a millimetre on a side – each containing a video camera, and a microphone, as well as sensors to measure magnetic fields, radiation, gravity, and the passage of time. Each corridor and public area would have a few dozen sensors glued to the walls and floor. The sensors would form a self monitoring network, always on the lookout for temporal anomolies, injuries, covert meetings, unexpected structural weakening, and bad-guys. The surveillance recordings would also be available to the captain for review whenever nescessary.
I’m sure the script writers can come up with other ways to make life interesting for their characters, but a captain should know what has happenned on his own star ship or military base. Especially when they should have learnt to expect the unexpected.
I have also concluded that far too many sci-fi TV shows have numbers in their names.
PS: Two upcoming episodes of Star Trek Enterprise will explain why Kirk-era Klingons don’t have much makeup forehead ridges, bulging muscles and long hair. Cool.
Guess the date of Christmas, 2005. According to the NSW department of commerce, the answer is December 26.
Public holidays falling on a Sunday get moved to the next day – as happens with Boxing Day this year. I suppose that’s a good thing. But it’s wierd that December 25 isn’t even a public holiday. Will the shops be open for Sunday trading?
I’m organising a meetup of Sydney Python people next January 13th, a Thursday. It will just be an informal thing with people giving a five minute show and tell, if they feel so inclined. All the details are on the Sydney Python page of meetup.com.
See you there.
PS: Simon, you’re invited, too. I know it’s a long way, but it’s only for a few hours.
While Groovy gets its act together, the Rhino Javascript/ECMAScript interpreter seems a reasonable alternative in some situations.
For example, the project I’m working on requires that the IT department be able to change certain business rules while the application is running. A bespoke administration interface would cost too much, and a rules engine would be too complex. Letting the user specify the rules in a Groovy might have been a good choice, but Groovy is just not ready to be used in a system that will still be maintained in ten year’s time.
Enter Javascript. It has a C-inspired syntax that Java programmers feel comfortable with, it can be loaded and re-interpreted each time the rules change, and is quite well integrated with Java. A perfect replacement for groovy in this case.
Beyond tiny, user-written scripts, Javascript has many of the features that make Groovy attractive, including latent typing and closures. Javascript also has a sophisticated, prototype-based object model that could be used to develop the kind of code that is particularly hairy in Java – marshalling and unmarshalling streams of bytes, for instance.
So it’s Javascript for the time being for us here. Hopefully, in twelve or eighteen months, Groovy will hava a solid specification and a production ready implementation, and we’ll switch.
The Sydney Morning Herald had a report yesterday that some Higher School Certificate students had discovered their results before the official release date. On my reading of the article, the Board of Studies had placed the results on the public web server, and all that was required was for some student to work out the correct URLs.
You’d think an official body would know better.
When somebody puts information on a public web site, that’s the equivalent of writing it on a big piece of cardboard and leaving it on the side of the road. It will eventually get noticed. Trying to hide the information by keep the URL secret is like putting your piece of cardboard under a bush on the side of the road. It’s just a matter of time before somebody curious looks behind the bush and finds your big secret. Moral: if it’s secret, don’t make it publicly accessible.
There is no talk of punishment or sanctions for these kids. This is sensible. It would be a pity if they suffered for the board’s incompetence.
Funny thing is, all the kids who were interviewed by the SMH did very well – mostly 90 plus. Which goes to show – only the smart kids cheat.
I think I’ll start my mid-life crisis in January. You see, I’m 35 so any time now is fine, and these things are best done early. January is good because Christmas will be out of the way, and the year doesn’t really begin until February, when the boys go back to school and everything else starts up again.
So what should it be? A fast toy like a motorcycle, a speedboat, or a rally car? I’ve always wanted to get a glider license. And then there’s the drop-out route – retire to “Nimbin” and become a grass farmer? Some people wuss out and just have a slight change of career, but I reckon joining the fire brigade, would be a respectably sized kind of mid-life crisis.
Hmmmm. So much choice.
Tim Bray organised a meeting of dynamic language gurus – including Guido van Rossum, Larry Wall and James Strachan – and JVM developers. His report of the meeting is good reading.
Dynamic languages are part of the ongoing transition that programming is making from being machine-centred to being people-centred, and it’s great to see Sun positioning Java to play a bigger role in that story.
The word "mnemonic" is kind of anti-onomatopoeic. Has anybody got a good way to remember how to spell it?
We’re using Spring at work, and getting major benefits in our unit testing. We are testing more code, and more thoroughly than on any Java project I’ve been involved with before now. I was going to write something about how Inversion of Control frameworks like Spring provide these benefits, but then I found this:
Large applications can prove troublesome to unit test exhaustively, especially if there is any kind of tight coupling between components. Such coupling of components can make it difficult to test them separately.
Needle [an Inversion of Control framework for Ruby] ... encourages loose coupling of components. Also, because dependencies are never instantiated in code, but are instead accepted via setters or constructor arguments, it is trivial to replace those dependencies with mock objects at unit test time.
(That’s from the Needle Manual. Needle is an Inversion of Control framework for Ruby.)
It was well worth coming to OSDC just on the strength of this first day.
We started with a keynote from Damian Conway on the upcoming Perl 6. There will be some neat things in Perl 6 – multiple dispatch, the ability to temporarily give objects new roles and some of the matching look intriguing – but overall, I’m very happy to be coding Python instead of Perl.
Shortly after, Anthony Baxter spoke on being the past, present and future of Python, from the release manager’s point of view. Python is striking a balance between being completely stable and adding new features that I find appropriate. (That said, one of my fellow attendees still has clients on Python 1.5.2, and is finding it a little difficult now to write programs that span from that to Python 2.4 :)
Richard Jones spoke on the features of Roundup. I think I might explore Roundup customisation a little more.
Nigel McFarlane on XUL was also a standout session. This is something I will look into, as it may come in handy at work over the next few months.
Con Zymaris’ keynote after dinner was all about the how and why of open sourcing in-house, bespoke and product development. Something to show my managers – not that they need a lot of convincing.
My own session, on using CherryPy, Cheetah and SQLObject seemed to go over fairly well, so all the preparation was worthwhile. Most of the questions were about SQLObject – there is definitely interest in Python O-R mappers.
At dinner I spoke with Chris Armstrong about greenlets, which allow Twisted code to be written in a more sane less insane manner. If greenlets make it into the main Twisted distribution, I think a lot more people will be tempted to try Twisted.
There was no Internet access for attendees, which prompted someone – not me – to pronounce:
I find it ironic that my first completely Internet free day in two years was at the Open Source Developer’s Conference.
Heh.
And tomorrow… tomorrow I’m off to my client site to install the final release of the first project. So if I finish early I head over to catch the final sessions of OSDC day 2 in a suit and tie.