Mural Mate is a new concept application I am working on and planning to hopefully release this summer. The name Mural is simply short for intramurals. The idea is it will be your handy little helper (or Mate, ha!) for organizing intramural teams. How many emails do you send each week trying to figure out who is playing? Who’s going to the bar after? If it’s a co-ed team, will you have enough girls/guys for any particular game? What about contacting alternate players? The list of annoying little questions an intramural team manager has to answer each week goes on and on. Enter Mural Mate!
The entire application is being built with Groovy and Grails and will be hosted on BeanStalk. I plan to use the new Spring Social project for integration with the major social networks. I’ve got a pretty good start on the coding for an initial release, but still have a ways to go. I plan to launch an initial pilot with my kickball team this spring to work out the bugs as well as simply see if the idea is any good, ha! It the pilot is successful and people actually like using it, I hope to open it up to any interested intramural team sometime this summer! If the idea isn’t any good, well then I guess this is a big waste of time, ha!
I have to admit that reading Groovy in Action 2E is like being a kid cleaning your room and finding toys you never even knew you had, ha! A new chapter was recently released in the MEAP titled Compile-Time Metaprogramming and and AST Transformations and I had a chance this afternoon to sit down and read it. In order to be able to do any of the examples in the chapter though, you need to get Groovy 1.8. I was a little confused when I started trying out the examples in STS and received a bunch of “unable to resolve class” errors. STS 2.6.0 comes with Groovy 1.7.8. Once I downloaded and configured the latest release candidate of Groovy 1.8 though, I was good to go.
So what exactly is this chapter about? Well to answer that, let’s first take a step back and talk about Spring Roo and code generation. Spring Roo is good, right? Well, not in my opinion! I know there are a lot of people that like Spring Roo and the productivity boost it provides to Java development, but it just seems like a bad idea to me. I feel like it’s just a modern-day PACBASE, ha! Spring Roo generates source code for your project. This source code then needs to be managed and checked into source control just like any other source code. Why use a tool to generate a bunch of code that then needs to be managed when I can use something like Groovy that simply does it at compile-time and I don’t have to manage it? The Spring Roo argument is that you should simply never touch the generated code (AspectJ files). If you are working on a project with developers from around the world though, do you really trust every member of the team to never touch those files? I sure don’t! Another argument for code-generation is that if you have to, you can modify what gets generated by tweaking the configuration (think of all the wsdl2java options). Well, enter Compile-Time Metaprogramming and AST Transformations in Groovy!
With this feature, you can modify what gets generated by Groovy at compile-time! For those of you not familiar with Groovy, it essentially takes the code you write and adds a bunch of stuff to it at compile-time to make the end classes, well… “Groovy” ha! For example, you never write getters/setters with Groovy like you do in Java because they are added automatically for you. Having the ability to modify what gets generated seems like a pretty cool feature, right? Absolutely! And this new chapter goes through many examples of doing just that. You can even easily add new features to the language! There’s lots of practical examples in the chapter and I wouldn’t even do it justice in trying to explain them here. If you are a Groovy developer, you really should buy the MEAP if you haven’t already. It certainly has opened my eyes about what is possible with the Groovy language. I’m not sure how much I’ll use compile-time metaprogramming doing standard Grails development (which is all I use Groovy for), but just understanding how they work and what’s possible is great to know.
I’m looking forward to future Groovy in Action MEAP updates. In particular, the new chapter on DSLs and updates to tips & tricks. There were quite a few aha moments when I read that chapter in the first edition.
WIth the release of the new MacBook Pros, I decided that it was time to add to my collection of computers! As expected, many people have asked me, “Bobby, why on Earth do you need another computer?” So, I thought I’d write a blog post to explain!
First, I love technology. It’s not a job for me, it’s a hobby. I get excited about having a quad-core laptop, ha! Second, I love my 27″ iMac, but I really need to be mobile these days. My iMac is actually only a year old and does everything I need from a technical standpoint, but with trips to the cabin and meeting people around town, it was definitely time for a new laptop. Finally, I’ve learned that simply always having my MacBook Pro with me has actually inspired me to pursue new ideas (frameworks, tools, languages, etc.) just because I love OSX so much more than Windows, which is what I use at Target. So, those are my reasons to justify my new purchase, ha!
Here are the specs for my new favorite toy:
- 15 inch hi-resolution display
- 2.2GHz quad-core Intel Core i7
- 8GB 1333MHz
- 500GB 7200-rpm
- Intel HD Graphics 3000
- AMD Radeon HD 6750M with 1GB GDDR5