Thinking Inside a Bigger Box
Welcome to Johannes Brodwall's blog. I use this space to work on articles mostly about software development, with a focus on Java, SOA, and Agile software development. Many of the articles you will find here are not much more than drafts, and I certainly appreciate input on how to make them better.
If you wonder about the title of this blog, Thinking Outside the Box may answer your questions.
I work as the lead software architect of BBS, the company that handles interbank services in Norway. In my copious free time, I develop software and consult companies in development practices and architecture. For more about the services I can offer, please see my resume.
Submitted by Johannes Brodwal on Mon, 03/08/2010 - 20:00.
This article is a summary of a seminar I had on the topic. If it seems like it’s a continuation of an existing discussion that’s because, to some extent, it is. If you haven’t been discussing exchanging your app server, this article probably isn’t very interesting to you.
By putting the application server inside my application instead of the other way around, I was able to leap tall buildings in a single bound.
Read more ...
Submitted by Johannes Brodwal on Mon, 03/08/2010 - 18:48.
This article is a summary of a seminar I had on the topic. If it seems like it’s a continuation of an existing discussion that’s because, to some extent, it is. If you haven’t been discussing exchanging your app server, this article probably isn’t very interesting to you.
By putting the application server inside my application instead of the other way around, I was able to leap tall buildings in a single bound.
Read more ...
Submitted by Johannes Brodwal on Thu, 02/18/2010 - 16:00.
I’ve pair programmed the Java EE spike kata in Eclipse with a number of people, I’ve found that a number of keyboard short cuts and preference settings recur as useful new information. I’ve compiled the most popular ones in this article. The article is subject to change, but I won’t change the number of shortcuts.
Top five shortcuts
There are some keyboard short cuts that everyone who uses Eclipse should know:
Read more ...
Submitted by Johannes Brodwal on Thu, 12/31/2009 - 07:53.
After seeing some of the great examples of coders working on practiced problems on KataCasts, I decided to try make my own. I am not happy with the pacing of the video. I’m about a minute too early relative to the music.
But I thought I’d post the video here, to see what you all think. Comments are welcome!
I hope the video will demonstrate how to use refactoring effectively to drive the design of a program.
Read more ...
Submitted by Johannes Brodwal on Wed, 12/23/2009 - 08:00.
Lately, I’ve been working on two code katas, that is, programming exercises that I repeat until the motions are secure in my muscle memory. The katas I’ve chosen are:
Read more ...
Submitted by Johannes Brodwal on Wed, 12/02/2009 - 17:00.
For å bli bedre må man trene. For å bli bedre med avanserte ting, må man forstå de grunnleggende tingene bra. For å vite hvorfor man bruker avanserte verktøy, må man prøve å jobbe uten dem. Derfor har jeg de siste ukene trent mange ganger på å lage en veldig enkel webapplikasjon i Java. For hele applikasjonen har jeg startet med å skrive testene før koden som implementerer funksjonaliteten.
Read more ...
Submitted by Johannes Brodwal on Tue, 11/03/2009 - 13:40.
Just three weeks ago, I was asked to step in for Ted Neward to give a tutorial at Öredev on Effective Enterprise Java. As I did not have time to get the tutorial materials printed, I present them here on the web for the participants and others.
Read more ...
Submitted by Johannes Brodwal on Sat, 10/24/2009 - 12:47.
When I write Java-projects that produce web pages, I test on several levels. First, I use Jetty and WebDriver to test the result via http. (WebDriver even lets me test JavaScript!)
But for speed and agility, unit-level tests beat even the fastest integration level tests. Unit tests run much much faster, and lets me pinpoint problems much more accurately. As a general rule: If you introduce a bug, you want a unit test to be the one that sees it first.
Read more ...
Submitted by Johannes Brodwal on Tue, 08/11/2009 - 11:51.
What will the daily experience of software development look like, say, five years from now? Have our current processes reached their peak, or will the world continue to change? Alan Kay said “the easiest way to predict the future is to invent it.” Here are some ideas of the future I want to invent: I hope it will be dramatically better than what we currently do.
Read more ...
Submitted by Johannes Brodwal on Thu, 07/30/2009 - 05:52.
In my current project, we use Flex as the user interface framework of choice. Flex has some nice features, but it takes a long time to build changes and start up, so it takes a while to validate our changes. Yesterday, we found a problem with one our UI components, and used JUnit to hunt down the same problem all over our code.
Read more ...
Submitted by Johannes Brodwal on Sun, 06/14/2009 - 12:59.
Here’s a neat trick if you want set an object in a specific state in a unit test, but you don’t want to violate encapsulation:
Read more ...
Submitted by Johannes Brodwal on Tue, 04/07/2009 - 16:56.
This is a test case from my current project:
Scenario: Finish gathering information
Given I have an open case
And the case has a task "gather information from X"
And the case has a task "gather information from Y"
When the user confirms that task "gather information from X" is completed
And the user confirms that task "gather information from Y" is completed
Then the case should generate a new task "evaluate customer standing"
It seems pretty run of the mill. A tester will sit down with a bunch of these and try out the application.
Read more ...
Submitted by Johannes Brodwal on Sat, 04/04/2009 - 18:56.
Doing the Code Dojo at Oslo XP meetup last Monday, I realized a new concept that I’ve been using unconsciously for a while: I only add to the structure of my system when I have a test that cannot be satisfied by the current design. The rules of test-driven development tells me to wait to create a more advanced design until I have a reason to do so. And that reason should be a failing test. However, the rules of refactoring require all tests to be green during a refactoring. So the failing test must be Ignored during the refactoring.
Read more ...
Submitted by Johannes Brodwal on Sun, 03/29/2009 - 12:57.
Agile development is easy to understand and hard to do. One of the hardest things to do is to base plans and actions on value instead of effort.
An article by Alistair Cockburn includes a story that illustrates the point:
A boy is behind on his German language home work. He now has to read ten stories and answer a set of question for each. He will be graded on the number of correct answers.
Read more ...
Submitted by Johannes Brodwal on Tue, 02/24/2009 - 03:56.
I’ve all but stopped using mock objects in my tests. The reason is that mocking have had a detrimental effect on the design of my systems. I’ve often ended up having the mocks trick me into adding a needless layer of indirection that does nothing except delegate to the next layer, just to satisfy the mocks.
Read more ...