In the continuing series of interviews with the Wicket community, I was fortunate to interview Jeremy Thomerson and to meet him in person at ApacheCon US 2008 in New Orleans. As I expected, Jeremy is really a great guy (just as Bruno Borges, whom I also had the honor to meet in person).
Jeremy develops the Wicket based website "Texas Hunt Fish", one of the long standing public facing websites using Wicket. And he is giving training for Wicket which you can book through wickettraining.com. If you want to learn more about Jeremy's style, just browse the Wicket user list archives or read his
blog and see how he's doing. If I didn't write the book about Wicket, I'd hire Jeremy to teach me :) I'm honored to share this interview with Jeremy with you.
Can you please give a short introduction to yourself?
I’m a native Texan through-and-through, but I currently live in New Orleans, LA, USA, where my wife and I relocated to do volunteer relief work about three years ago. I am 26, have been a developer for a little over seven years, and worked for eBay for the first four or five years of that time.
Your volunteer work involves rebuilding houses that were devastated by the Katrina hurricane in 2005. What challenges do you face?
This work was very rewarding – rather than working day after day so a company can make money, you are doing something that directly affects people’s lives. Sometimes it was hard because I would rather be living in Texas, riding my four wheeler through the countryside. But the reward of helping rebuild someone’s home so that they can move out of their FEMA trailer is worth the small self-sacrifice. During the past few years, my main role was to fabricate and install Corian countertops with materials donated from large US-based corporations. After we completed a home, we were immediately able to put these countertops to work – eating some homemade Louisiana gumbo! Nearly every family has their own recipe, and they always wanted to treat us. One challenge was finding a balance – you’re volunteering all day, and you have to support yourself, too. Fortunately, you can program at night – the beauty of tele-commuting. All in all – if you ever have the opportunity to leave the “stable” life of working every day to do something truly rewarding – I’d say GEAUX FOR IT! (In Louisiana, GO is spelled GEAUX!)
And for which company do you work, what does it do?
How did you first find out about Wicket?
Around the time I was planning on leaving eBay, my friend Ryan Crumley and I were discussing the best frameworks for upcoming projects that we were each planning. He mentioned Wicket as being a great option, I tried it, and it’s the only web framework I’ve used since.
How long have you been using Wicket?
It was nearly three years ago when I made the full-time switch to Wicket.
What other web frameworks have you used and how do they stack up to Wicket?
We used Tapestry in the last couple of projects I did at eBay. No offense to the Tapestry / HLS fans, but I hated it. I just did not enjoy the style, all the configuration, and the odd ways of doing things. It wasn’t straight-forward OO programming, and pure HTML. I tried to stay in the middle tier and below, letting others do the web part. That all changed when I made the switch to Wicket – it’s probably the only time in my career I have ever enjoyed doing UI-level work.
What are your thoughts about the Wicket community?
The Wicket community is by far the most vibrant and helpful open source community that I have been a part of. If you have not joined the wicket-users list, you should definitely join! Even after using Wicket every day for several years, I still find new tidbits here and there. By doing this, you also get to be a part of the process of guiding the future of Wicket. The only thing is that you see such competence already within the community, it is sometimes daunting to feel like you can offer valid contributions. But, don’t be afraid to jump on the list and start answering questions, and pick some small JIRA issues and submit a patch. It feels good the first time Martijn or Igor takes your patch and commits it!
How does your development environment look like (for example IDE, frameworks, servlet container, JDK version, etc)?
Eclipse with the web tools project plugin, running Jetty for development (still using the standard Start.java included with the quickstart). Apache HTTP on the front end and for serving static files, images, etc. I mostly use Ubuntu on my desktops / laptops. Maven for building releases / dependency management. As far as frameworks, my standard setup is Wicket / Spring / Hibernate. I also use Freemarker for generating emails, and I use Lucene extensively for search engine features. I use a lot of the Apache commons projects.
How does this compare to the deployment environment?
About the only difference is that for most deployments, I have been running Tomcat. TexasHuntFish.com is the only site I’m running that runs on Windows boxes, mostly because of an existing dependency on Microsoft SQL Server. I’d like to see at least the app servers switch to Linux soon. I’ve also been considering switching to Jetty in production just so that I’m using the same thing in both places.
What are Wicket’s strongest points?
Separation of concerns, pure Java programming, and pure HTML markup. Although Wicket does a lot of things auto-magically, it’s not as if you have to know a lot of magic. You just program straight-forward components, and create the markup you need rendered.
What are Wicket’s weakest points?
I have a hard time with this one. Typically every time I think I find something that is a weak point, I learn why it is that way, and it just makes sense. I don’t think there are any real big weak points. A centralized component repository has been discussed on the email list, and I think that would be a good idea. I also wished that there was a little more structure and discipline to the wicket-stuff project, generating releases that match the Wicket releases, etc.
If you could put one feature in Wicket, what would it be?
I would like to be able to generate bookmarkable URLs for stateless pages without having to use PageParameters. I’ve always thought that putting the marshalling and unmarshalling of String values in the page itself wasn’t good design – it should be separated into it’s own logic somewhere else. At TexasHuntFish, I have done this by use of custom coding strategies, but it seemed like a hack, and I ran into issues doing it. It works, but it’s not elegant by any means. I think the ability to do it right is probably there, but it just hasn’t been done.
Rich internet applications (RIAs) are hot now, what is your experience with them, and how does Wicket fit into this RIA future?
Where would you take Wicket the next year?
I think getting 1.4 with generics out will be really important. It’s too bad that it didn’t go as smoothly as we anticipated when we originally said it would be a quick generified-1.3 release. But, I think it’s been a good learning curve for everyone. It would be nice to see some more whole-stack options for getting new users off the ground quicker – letting them quickly get a complete environment set up, possibly from an existing database.
Any closing thoughts or remarks?
Thank you for this privilege of being interviewed – it’s a joy for me because I enjoy Wicket so much. Also, for anyone who may be reading this that is not experienced with Wicket – please buy the book Wicket in Action and specifically study as much as you can on the proper use of models. I think that’s the one thing that new users have the hardest time understanding, and it can make such a big difference for performance down the road. Of course, if you don’t mind a shameless plug, I’m also available to help you get started with or advance your knowledge of Wicket over at WicketTraining.com.