We’ve been busy for a couple of weeks now refactoring a fairly complex code base of just under 500 classes. None of us really knew all the details about this part of the system, but we didn’t let that stop us of course. After some regrouping/-shuffling/-factoring/*ing, the whole thing built OK and all unit tests were green again. All that was left to do was fix the Fitnesse tests. I remember thinking this should be easy since we had all those green unit test.
Evil laughter sounds.
(more…)
Filed under General, Testing, Tools | 2 Comments »
This is the first update since we started development on the LogStore. Despite the bumpy ride, we have quite a lot accomplished.
To summarize, the LogStore is a storage solution for logging statements. It’s based on CouchDB (document oriented database) and Elastic Search (schemaless search engine). The view on the log statements stored is built on CouchApp, a tool on CouchDB for creating HTML pages that are served directly from CouchDB instead of a separate application server.
Filed under General | Comments Off
Q: “Where in the world was the situation in Egypt the hottest talk of the town?”
A: “People in UK / London were all over it, also the Middle East and US east coast cities show more interest than the rest of the world.”
Q: “How do you know?”
A: “Just take a couple hundred thousand Twitter messages containing ‘egypt’ and run them through a MapReduce job that counts the number of messages per location and plot that on a map like this:”

(http://geocommons.com/maps/49541)
The map shows the number of Twitter messages containing the word ‘egypt’ that originated from locations around the world. A larger circle means more messages from that place. The messages were gathered during a five hour period on january 28, the day after the Egyptian internet was crippled.
(more…)
Filed under General, NoSQL | No Comments »
Trying to produce bad quality code is quite hard when you are using Test Driven Development (TDD), even when you are doing it wrong on purpose.
Recently Iwein and me were preparing some labs for a developer training and the plan was to create some really bad quality Java code as a starting point. Students would then be asked to clean it up and add some new features, all this of course with the intent to show the effect of bad code quality on your ability to quickly add new features. This was going to be a piece of cake!
After some brainstorming for interesting standalone programming challenges, we came up with the idea of writing a JSON to XML converter. It should be able to take any valid JSON string and convert it into a simple XML representation. Out of habit and without really considering the option of skipping this step, we started with a simple failing test. Here it is:
@Test
public void shouldConvertTopLevelEmptyArray() {
assertThat(converter.convert("[]"), is("<array></array>"));
}
Simple, right? To implement our converter we decided to use the well known “red, green, as little refactoring as possible” anti-pattern, which we expected to result in lots of copy-paste duplication, very long methods, and the other typical code smells we all know and loath. Our first implementation approach was to go for some all-time favorite candidates for producing bad code: string manipulation and regular expressions. As Jamie Zawinski famously said: “When some people have a problem, they think: ‘I know, I’ll use regular expressions’. Then they have two problems.” We had created a sure thing recipe for disaster. It was going to be all downhill from here, or so we thought.
Tags: code quality, json, TDD, XML
Filed under Fun, General, Java, Testing | 3 Comments »
What is it about waterfall we want to avoid ? It’s mostly the transition moments ! A lot of information is simply lost when you transfer it from one person to another. Another thing we want to avoid is to create a strict order in things because this leads to limiting flexibility. Still, Sprint Zero, is a commonly used practice, and it implies to happen before anything else right ?
So how to do a Sprint 0 in a smart way ? Use these principles :
Filed under Agile, General, Scrum | 5 Comments »
This blog is the second of a series of blogs in which I will examine the role of architects in Scrum. Last week I started with the forgotten questions of Scrum. In this blog I will look in more detail to the Agile Manifesto and the agile values.
Architects and the agile values
Most of the literature concerning the role of architects in an agile context focuses on the Agile flow itself and how architects can avoid disturbing that flow. Mike Cohn, in his book “succeeding with agile” makes the distinction between coding & non-coding architects. In where he states that the coding architects will have less trouble finding their new role in de Agile development process.
An architect within a team has to be able to code himself. He is a team member, who has more experience in structuring the application being build compared to other team members. By using that experience he can add value to the team. Scrum has no particular role for non-coding architects. The question rises if this is totally true. (more…)
Tags: Agile, architects, Architecture, Scrum
Filed under Agile, General, lean architecture, Process, Scrum | 5 Comments »
Just like the Agile Manifesto was a shock 10 years ago, the MoreAgile Manifesto creates some shock effects now.
Responsibility is scary, Business value is undefined, partnership feels impossible and change is kind of accepted but not loved.
It took us 10 years to create a world where the ideas of the Agile Manifesto are accepted and commonly used. Likewise, MoreAgile is not something we will easily achieve. The ideas are bolt and a lot of things need to change before we can really work MoreAgile.
This year I spend New Year’s Eve at the beach near the small village of Marsa Alam in Egypt. The point of the holiday was to go scuba diving for a week on some of the best reefs in the world in the Red Sea.
What I learned during this week is just how powerful stories are. And that they do not need to be big or elaborate. Let me explain.
(more…)
Filed under General | 3 Comments »
2010 has ended and a new year has begun. 2010 offered us a lot of learning opportunities. It was a good year for the Agile community in the Netherlands and in the world. We saw more and more big corporations embrace Agile methodologies and put serious effort into making it work for them, mostly as a project methodology. ‘Agile adoption’ was THE 2010 word, maybe on par with ‘Wikileak’. So what do we think will be hot in 2011?
(more…)
Filed under Agile, Architecture, General, Performance, Process | 2 Comments »
I was listening to the JavaPosse a minute ago. Dick Wall is saying that he figures there is never going to be anything as big as Java ever again.
A couple of weeks ago, I overheard a discussion between a couple of people involved in the music business. They concluded that the days of the megastars are officially over; they didn’t think there would ever be another artist rising to the same levels of stardom as Madonna, Elvis, Michael Jackson or the Beatles.
(more…)