The last couple of weeks I have been mystified. My iPad doesn’t have GPS but it always knows where I am down to a couple of meters. I know that Apple has been using WiFi based geo-location already in the iPhone but I just couldn’t explain how my private hotspot and my friend’s down the street or even the one at my office could have ended up in Apple’s database.

The only explanation I could come up with was that Apple had used my iPhone’s GPS to gather geo coordinates for all WiFi hotspots I came close to. That sounded too scary and conspiratory-theory like to really contemplate.

And then I read this: >> more…

Sometimes the easiest way is the right one – after a considerable time of research, trial and error we figured out, how to pretend to be a certain browser in a grails tests:

  1. controller.request.addHeader("USER-AGENT", "mozilla")

The information is stored in the request header, so the obvious solution to add an user-agent-header worked. That we didn’t even consider this solution at first is maybe a sign that testing in grails seldom does what you expect…

About a month ago we relaunched this blog with fresh colors and a crispy new layout. On the left you can see a reminder to the old green and grey theme as it was before. Its seriousness and tediousness didn’t seem to perfectly match our attitude (allthough we are of course serious after all). Some evenings of moving around pixels and poking around in php templates (enough is enough now) finally produced this colorful spring theme.
Enjoy!

We are using Groovy on Grails for an incubator project, which is incredibly refreshing! Groovy as a dynamic language with optional type annotations doesn’t quite rock my boat though. With static type checking the types you define are an essential element of design. I like to point out that Groovy’s creator wrote:

“I can honestly say if someone had shown me the Programming in Scala book by by Martin Odersky, Lex Spoon & Bill Venners back in 2003 I’d probably have never created Groovy.” >> more…

Grails supports filters, which are applied to each action – before or after executing the action or after rendering. The scope of those filters can be constrained by a regex-like syntax to a subset of all actions.

That’s a pretty neat method to check for authentication, incorrect parameters etc. Unfortunately, filters are not applied during unit or integration tests – you need functional tests that simulate http-requests and responses to verify they are doing the right thing.

Grails does not support functional tests directly, you need a plugin (we chose “functional-test”): >> more…

I admit it. I had to get it and I did.

Now I have this shiny (more on that later), magical and revolutionary device sitting on my desk.

And here is the answer to the most asked question of the last week “how do you like it?”

I like it a lot, but I am still searching for a proper place for it in my life.I have my laptops (yes, two: one MacBook Air for iPhone coding and one Lenovo X60 for real work – I couldn’t function without Office 2007), one of them typically is within easy reach. On the road I have my iPhone which does pretty much all I want to do on the road. >> more…

When switching companies, it is usually hard if not impossible to find out in what culture you will end up. You do the job interview, or today rather multiple instances of interviews, meet the people, show what you have done and what you can do, but usually they will not show what they can do. I wonder why, and have had some nasty surprises in the past. They might show you around the office, demonstrate the table football, show you the Wii and the lounge, but I have never seen that you get to see their source code. Wouldn’t that be even more important?

As software developer, you focus more on the code, the architecture, the tools, the inspiring and ingenious desings around you. So why not demonstrate what a cool company you could be joining by showing you the self-explanative code, the well-founded architecture, the smooth continous build system and how little build breakages are there, for you to work with? I think this tells a lot about your potential future colleagues and their skills, and obviously also whether you will be spending the next months implementing new features or cleaning up their stuff. >> more…