Posts
Re-election Predictions
I would like to start by apologizing from having a political entry in my blog. I believe that politics is intertwined with other intellectual endeavour. As scientist and engineers, we have a duty of social awareness, to see that our creations are being used for the benefit of humanity.
I was saddened by tuesday’s election results. Up until the eve of November 2nd (Central European Time), I was hoping that the Unites States would wake up from the state of collective insanity it has been suffering from for the last four years, and join the civilized world.
read morePosts
DualMock - an EasyMock extension
When I have been using easyMock Mock Objects for testing I often find it helpful to intersperse expectations and test code, for example:
mock.start(); control.replay(); server.handleCommand("START"); control.validate(); control.reset(); mock.shutdown(); control.replay(); server.handleCommand("STOP"); control.validate(); Doing this with easyMock requires me to validate and reset the object frequently. I was thinking: What is stopping me from just calling doing this:
mock.start(); server.handleCommand("START"); // call from the object-under-test, mock automatically assumes replay mode. mock.shutdown(); // Call from the test-harness puts mock back in record mode.
read morePosts
Using HSqlDb for in-memory DAO tests
Spring has shown us how to effectively separate the business logic from data access logic. This allows for easy testing of business logic without having to deal with the database, but it does not provide any easy way to test the DAO code. A new feature in the Hypersonic database might just be what the doctor ordered.
HsqlDb 1.7.2 introduced RES urls. If you access your database with a RES-url, you get an in-memory database initialized with data in a jar file in the class path.
read morePosts
Comment Spam
For a long time, I have been plagued by comment spam on my blog. To battle this problem, I have now installed a Movable Type plug-in that verifies that posters are not robots. This will hopefully improve the situation.
The plug-in is called scode. It displays a number in an image that the user needs to type to verify that he is not a robot. The plug-in was a bit of a pain to install: My version of the perl GD image creation library did not support PNG, so I had to use GIF, which took some time to find out.
read morePosts
Software Patents
On JavaZone (which was an huge success, IMHO), Richard Stallman was the guest of honor. He talked about the four freedoms which free software gives you, how the Sun Java implementation is not free, and why that might concern us. Then, he talked about something that should concern all of us, even if you think Free Software is bogus: software patents.
As I understand Stallman, if software patents become law, you can violate a patent without knowing it.
read morePosts
Do Mind the Gap
I am currently reading Hackers & Painters by Paul Graham. It contains many brilliant essays, but it also has a few not so brilliant ones. In “Mind the Gap”, Graham proposes the idea “in a modern society, increasing variation in income is a sign of health”. The rationale for this is that some people have the potensial to be more productive than others and by rewarding them proportionally, everyone as a whole would be better off.
read morePosts
The Three Faces of Requirements
When I look back at the lessons from User Stories Applied, I realise that many approaches to requirements muddles different purposes of requirements together. There are three things requirements need to address in one form or another:
First, the development team needs an understanding the needs (requirements) of the user. Second, the project needs a specification of what is inside and outside the scope of the project, as well as the priority and status of different deliveries.
read morePosts
Book Review: User Stories Applied
I bought User Stories Applied to get help with practical problems with writing good user stories and requirements in general, but it ended up changing the way I think about requirements and tracking them.
The book first fullfills one very important mission. It answers “what is a good user story” with a mnemonic rule: Independent, Negotiable, Valuable, Estimatable, Small, and Testable (INVEST). Cohn refers to William Wake as the source of this mnemonic, but expands further upon how to achieve it.
read morePosts
RUP: A more comprehensive analysis
Today I attended a meeting where IBM/Rational got to extol their glorious Unified Process (RUP). RUP has a lot of good sides, and I think a lot of the high-level ideas are very good. Phases, workflows, artifacts, and roles all make sense. The concepts can be used to understand any process, even “non-processes” like code-and-hack. The central question then is whether the components of RUP individually are the right ones for a given project and whether their composition is appropriate.
read morePosts
One RUP to Rule Them All, and in Darkness Bind Them
I have a confession. I looove gadgets. With many knobs and blinking lights and cool stuff. Stuff like Blinkenlights makes me quite excited. When I was young, I used to play with hours with math. I invented the hyperparabola, which was my own term for a formula that combined a hyperbolic function and a parabolic function. I could make a neat curve based on the formula.
Opening Rational’s RUP tool gives me the same feeling.
read more