Ken Kousen
Ken Kousen
@kousenit@kousenit.org

I am a Java Champion and the author of the books “Mockito Made Clear” and “Help Your Boss Help You”, (Pragmatic Bookshelf), “Kotlin Cookbook”, (O’Reilly Media), “Modern Java Recipes” (O’Reilly Media), “Gradle Recipes for Android” (O’Reilly Media), and “Making Java Groovy” (Manning), as well as over a dozen video courses at Safari Books Online. I’m a regular member of the No Fluff, Just Stuff conference tour and have given talks all over the world. Through my company, Kousen IT, Inc, I’ve taught training courses to and worked with thousands of developers.

241 posts
8 followers
  • Silly GORM tricks, part III: SQL keywords as attributes

    I was writing a very simple Grails application and ran into a problem when I accidentally used a SQL keyword as a property name. This post documents what happened, and how I (pretty easily) fixed it. To illustrate the issue, consider a trivial Grails application called “messaging” with a single class called Message. class Message…

  • Silly GORM tricks, part II: dependent variables

    This post discusses a relatively simple topic in GORM: how to use dependent variables in a domain class. It’s simple in the sense that it’s been discussed on the mailing list, but I haven’t seen it documented anywhere so I thought I’d do so here. I started with a simple two-class domain model that I…

  • Silly GORM tricks, part I: Lists

    In GORM, when one class has a hasMany relationship with another, a java.util.Set is injected into the class. Sometimes, though, I want to use a List instead in order to maintain ordering. The Grails reference documents (see section 5.2.4 specifically) discuss how to do that, but there are other issues that I needed to solve…

  • assert != assertEquals (duh)

    It’s probably not great for my reputation to show how I made a very silly error, but since I did it so consistently I thought showing it might help somebody avoid it. My Groovy course materials consist of far more scripts than classes. That’s probably not surprising, given that teaching Groovy involves writing lots and…

  • Some notes about the Windows installer for Grails

    This isn’t really a problem, but I don’t think it’s documented anywhere, so I thought I’d record it here. (And by the way, if your reaction to my Windows-based comments is going to be “why not use something other than Windows,” my answer is (1) at least one of my machines is always running Windows,…

  • Integration tests of controllers in Grails

    The documentation on doing integration tests of controllers is a bit thin. I had to ask on the mailing list about how to do some of the basics, so I thought I’d make a record of the results here. First of all, Grails distinguishes between unit tests and integration tests, in that integration tests involve…

  • Using Groovy to determine Unicode characters

    (Technically speaking, this post doesn’t require Groovy. You could do the same thing in Java. Still, as usual, Groovy is easier.) I’m teaching a Groovy course this week and having a great time doing it. One of the exercises I put together is to create a concordance, which is a map relating individual words to…

  • Turning Java enums into Groovy ranges

    It turns out that it’s easy to turn a Java enum into a type that can be used in a Groovy range. Consider a simple enum representing the seasons: public enum Season { WINTER, SPRING, SUMMER FALL } Since enums implement the Comparable interface, they have a compareTo() method. Despite that, however, you can’t use…

  • Nothing makes you want Groovy more than XML

    I’m in Delaware this week teaching a course in Java Web Services using RAD7. The materials include a chapter on basic XML parsing using Java. An exercise at the end of the chapter presented the students with a trivial XML file, similar to: <library> <book isbn=”1932394842″> <title>Groovy in Action</title> <author>Dierk Koenig</author> </book> <book isbn=”1590597583″> <title>Definitive…

  • A few 2GX notes

    Late last night I returned home from the Groovy/Grails Experience (2GX) in Reston, VA.  I met many wonderful people and learned tons of new things, which I’m sure will spawn blog posts over the next few weeks. Just to get started, though, I thought I’d mention a few random observations from the conference. Buy Scott…