small refactr logo
At refactr we believe in the value of connection, the utility of agile processes, and the power of great ideas. We are creating the next generation of software for people who expect more from their web applications.
refactr

Archive for November, 2007

Refactr Contributions to Grails and Groovy

Thursday, November 29th, 2007

I’ve still been working with Groovy Builders in my free time lately. With quite a bit of help from Andres Almiray to refactor my builder example to use Groovy’s FactoryBuilderSupport, ObjectGraphBuilder was contributed to Groovy core about a month ago. That’s pretty exciting news around here: Groovy 1.1 will contain ObjectGraphBuilder. Many thanks to Andres for making that a reality.

In addition, a couple weeks ago I contributed a related subclass to Grails: DomainBuilder. This does the same as ObjectGraphBuilder, but relates collections of objects following the convention used for Grails Domain classes, using ‘addTo’ methods. The plan is to commit it to subversion once Groovy 1.1 is out, so DomainBuilder will ship with Grails 1.0, which is also exciting.

I expect to use DomainBuilder quite a bit on most projects. At the very least, it will help me keep BootStrap data more readable and maintainable.

Update: DomainBuilder was committed to Grails Head this morning (December 6).

Kindle: No more books? Not quite yet.

Monday, November 19th, 2007

Kindle reader friom AmazonAmazon’s new Kindle looks really interesting to me. I like to read in bed before going to sleep, but it drives me crazy if I’m on my side - I end up turning over (and back) with almost every page (I know that makes me somewhat crazy, but I’m comfortable with that). I also don’t always want to read online content on my laptop, since that means I typically have to sit upright. So Kindle seems right up my alley.

However, after reading the product page and watching a couple of the videos, I have more questions than answers. And a couple complaints.

  • I can read newspapers and magazines, that’s sweet. The list seems a bit limited so far, when will more be added?
  • I can read “more than 250 top blogs …..” That’s a fine start, but I want full web access.
  • I can load my personal documents … but I have to pay amazon to convert it and load it wirelessly? That kinda sucks. I want some way to load it myself.
  • It automatically saves my place in the book. That’s good. How does it handle multiple readers? I’m guessing through the use of its bookmarks, which is fine.
  • No wifi? Fine, I can understand not wanting to be tied to wifi hotspots, but wifi would be sweet.
  • I echo Jason Kottke’s views regarding charging for subscribing to weblog content. That sucks.
  • And I want to get my hands on it before I drop $400.

Amazon seems to be big on the fact that there’s no requirement to have a computer. I think that’s smart, but let me use my computer if I know how.

Like I said, I think it could probably be just the thing for me, but it’s still limited enough to perhaps end up being more of a pain than it’s worth … pretty close, but not quite what I’m looking for. I think I’ll wait until someone hacks it to open it up for full web access.

It should be noted that Ben is much less excited than I am - since he says the iPhone can already do most of this and that an ebook reader will likely come out with the developer kit (or, rather, because of it). Ben also takes issue with the “uninspired design.”

Update: There is a web browser and you can move some files to it via USB. More info here (via kottke)

With Power Comes Responsibility

Friday, November 16th, 2007

Last night’s panel discussion “The Language Debate” hosted by OTUG was fun. There was a lot of good discussion both during the panel and after the event. Charles Nutter, Robert Fischer, and Paul Cantrell were all great panelists.

One thing that often comes up in the static vs. dynamic discussion is the question of maintainability: With the lack of static typing, can future programmers look at a piece of code and understand what is happening in order to efficiently maintain that code?

My response (though I’m not sure it came off as clearly when I mentioned it last night) is that “With Power and Flexibility comes Responsibility.” That is, dynamic languages allow you to do many things that static languages typically do not. Whether to use certain features, however, is a different matter. The developer has the responsibility to make sure that the code is readable and understandable. This is why so many developers appreciate good design and the use of design patterns. When it comes to maintainability, this is no different than static languages. I have seen both beautiful and horrific code written in each type of language.

That’s why having good developers matters so much. To build good software, people need to think about what they are doing and why.

Aside from static typing, other features common to many dynamic languages also fall into this category of responsible coding. Metaprogramming is a big one often discussed lately and it wasn’t left out of the discussion last night.

My favorite quote of the night:

Code is an Information Design Problem
- Paul Cantrell discussing code aesthetics after referring to Edward Tufte

My favorite points about static vs. dynamic languages (found from one of the links on the wiki provided by OTUG before the event):

- Many programmers have used very poor statically typed languages.
- Many programmers have used dynamically typed languages very poorly.

Thanks to all at OTUG for pulling this together.

Dynamic and Static Language Smackdown!

Wednesday, November 14th, 2007

Thursday, Thursday, THURSDAY! At the O’Shaughnessy Science Hall! See your favorite dynamic language take on the statics!

Ok, actually, The Object Technology User Group is hosting a panel discussion titled “The Language Debate: Panel Discussion on Dynamic and Static Type Systems in Programming Languages,” so it may be a little more low-key than a full-fledged smackdown, but it will definitely be good.

More info can be found at the OTUG website or the OTUG Languages Wiki.