If you are a real developer you most likely have already been in a situation, where a group was welcomed with the phrase hey guys – on IRC, mailing lists or even in personal talk. Some of you might share the experience to not feel being addressed by this salutation. This situations leave me personally a little angry, because I don’t like to be ignored. As I am a calm and non-aggressive person my usual reaction is to just ignore the speaker as well and to behave as if the salutation didn’t take place (as if nobody talked to me). Unfortunately this way most people won’t notice they did something wrong, because they really aren’t aware of the exclusive nature of their language. >> more…

This question was raised and discussed at stackoverflow recently. Having used Grails for the sixbee project I shared our experiences compared to standard J2EE application development, especially to the subquestion:

Does it really confer rapid development benefits?

Definitely, it does. Even if the scaffolding path is left early and conventions are overriden to the own needs, the start-up period is very short, as we don’t have to care for many different technologies. That kind of lightweightness makes us work not only faster, but also more precise and clean. >> more…

Neither does 37signals: http://www.inc.com/magazine/20100601/never-read-another-resume.html

The code candidates send us is much more interesting than the typical alphabet soup project listings you normally find in developer resumes (“worked on XML/SOAP/J2EE/AOP project using Oracle, IntelliJ, Java 1.6 and Rational Rose”)

Typically we can tell just from the code if we want to hire somebody. The interview is typically to check for cultural fit. And most people we hire spend a day here working with us. In the last two years we only had one false positive, whom we had to let go during the initial months.

workstyle - one person : three screens workstyle - one screen : three persons

Do you love to be surrounded by as much and good as possible technical equipment or do you prefer to sit in a group of at least three peers discussing a detail no matter how small the screen is? And what do you like about your favourite setting? In our team both work modes coexist peacefully completing each other and also the happy medium (2:2) can be observed sometimes – and of course also the small screens are of high quality.

An image of the Artemide Tolomeo lamp

Last week I not only finally managed to get my beloved reading lamp repaired, of course an Artemide Tolomeo ;-) , but also to utilize the newly provided cozily, brightly, and energy-savingly lit space to finish the book I had started the week before. And because I am excited about it, let me share my excitement with you:

The book title “Scrumban” is the combination of Scrum and Kanban, two management methods. Scrum is one of the predominant inhabitants of the Agile management method zoo, while Kanban originates from the lean management revolution attributed to the car manufacturer Toyota. >> more…

Did you ever want to use builders in your grails taglib and wondered why the approach mentioned in the grails documentation doesn’t work at all? Here is what I found out after a lot of trial and error and digging in the MarkupBuilder, BuilderSupport and GroovyPagTagBody sources. Let’s stick with the example from the documentation and correct it until it works (the impatient can scroll down):

  1. def dialog = { attrs, body ->
  2.   def markup = new groovy.xml.MarkupBuilder(out)
  3.   markup {
  4.     div(‘class’: ‘dialog’) {
  5.       body()
  6. } } }

>> more…

To achieve full test coverage for our new product sixbee, we chose to try out Selenium. It works perfectly fine for simple stuff like clicking on static links with static texts or IDs:

  1. selenium.clickAndWait("link=Click") // click on a element labeled "Click"
  2. selenium.clickAndWait("btn") // click on element with id "btn"

When it comes to testing components using Ajax, it’s getting trickier, as not all generated elements have an ID to reference it. Fortunately, Selenium offers some more possibilities for locating elements, such as XPath or CSS-selectors: >> more…

Grails claims that it encourages writing test – for example, a test class is created every time you create a controller or domain. However, working on my first Grails project I find it quite confusing which kind of test supports what.

For example, we use GreenMail in our testing environment. To check for sent mails, we have to use GrailsUnitTests, even if we are testing a Controller, because the content of mails is always empty in ControllerUnitTests.

Checking view names or redirects in those two types of tests is also slightly different:

  1. //ControllerUnitTest
  2. assert controller.modelAndView.view == "send"
  3. assert controller.redirectArgs.controller == "delivery"
  4. //GrailsUnitTests
  5. assert controller.modelAndView.view == "Message/send"
  6. assert controller.response.redirectUrl == "/delivery"

This is pretty annoying and I hope it will be unified in future versions of Grails. >> more…

This is a short article I write because it would have saved me some significant time had I been able to google it (no time-travel google (yet) – find articles you will write in the future). So maybe somebody in the future will find this useful ;-) .

What we were doing is to use a Microsoft Business Intelligence/Reporting Server to report on data in an Oracle production database.

Creating the OLAP cubes in the MS system, everything worked fine until I tried to pull in aggregate data over a date field from the database, giving me the mysterious “Not a legal OleAut date” error message that can be found in the various forums, but none in the context of OLAP cubes. >> more…

Per default, Google Analytics tracks the whole URL. As a lot of our URLs contain some parameters or IDs, and we’re not interessted in tracking them, we needed to find a way to truncate them. As Grails unfortunately does not provide methods to access the current view and controller (which is basically what we’d like to track) in GSPs, we used this code:

  1. pageTracker._trackPageview(${request.getServletPath()‘/grails/’‘.dispatch’});

Not as clean as we’d like to have it, so suggestions are welcome!

Older Posts »