Saturday, March 28, 2009

DevNexus Report Part 2

In part one I provided an overview of attended DevNexus sessions. Here are some more details I took away from the presentations. The first days of the conference started out with Neil Ford, who always seems to provide those excellent but more high-level-off-the-beaten-path-type presentations (The presentation certainly contained an interesting Angelina Jolie picture). In his presentation he talked mainly about a quality work environment and how to be more productive as a developer. In his opinion giving developers their own office would be the best as it allows them to fully concentrate on the given development tasks. If that is not feasible and you're not working for Joel, then an open room configuration is the next-best compromise. And finally the worst solution: cubicles. Those suckers simply slurp your brain dry…



Well, afterward I headed over to Ari Zilka's talk about Terracotta. He gave an overview/introduction of Terracotta's capabilities. The presentation was quite similar to the talk we had at our monthly AJUG meeting last year but since then Terracotta published a new reference web application (Examinator) that really looks sharp and consist of a very good technology stack besides the fact that it uses Terracotta:
  • Spring MVC
  • Spring Webflow
  • Spring Security
  • JPA (Hibernate)
  • FreeMarker
  • SiteMesh
  • MySQL
One example he gave that stuck with me quite well, was the typical email registration process, when signing up for a new user account. You provide an email address, but before the account can be activated, you need to verify the email address using a verification email. However, using Terracotta, you're able to defer saving the email to the database until verification is complete and thus you can keep "state" information out of the database.

Afterward, I listened to Charlie Hubbard's talk on GridGain. This was an interesting talk in that GridGain is tackling distributed computing from a different angle than Terracotta. You are basically using it to farm out little chunks of data that are then processed by those nodes. It feels very reminiscent to using JMS with Publish/Subscribe with some processing logic bolted on.

After this talk I attended Bill Burke's talk on REST. It is interesting how various frameworks converge to a common point these days - RestEasy looked like Spring MVC 3.0 :-)

The last talk I visited was on Jared's Richardson's talk on 'using agile to optimize' which was a good talk. It reminds me that I still need to read his book Ship It!

At the end of the day we all headed down to the bar and had a few drinks. I met a former colleque of mine and chatted a while with Charlie Hubbard and Lance Gleason. A long good day…

Thursday, March 26, 2009

RIA, Flex and Excitement

I cannot believe that already two weeks passed by since the Atlanta DevNexus conference. Since then I have been quite busy learning Flex. My desire to explore Flex started back when James Ward talked at one of our AJUG meetings several months ago. Unfortunately, beyond some initial explorations, I never found the time to make the next leap forward.

The presentations at the DevNexus conference, though, finally pushed me beyond that initial hump. At the conference I attended the talks for GWT, JavaFX and Flex. Here is what I took away from it:

No doubt, GWT looks great and I think it is in the process of capturing a good share of the pie among Java developers. Since you write the GUI using Java (Compiled into JavaScript), it is a really nice component-based Framework (forget JSF). The ability to unit test your GUI code with just jUnit is cool, too. Something I was not aware of prior to attending DevNexus is the ability to also embed GWT into existing applications (e.g. a DIV on a page). However, at the end of the day you're still creating HTML with its limitations in terms of richness.

In terms of that, JavaFX has potential in my opinion. While it comes with its own scripting language you are still able to use the the full breath of exisitng Java libraries. Unfortunately, JavaFX does not seem to be there, yet. While some of the example application look nice, it still lacks some important pieces, e.g. lots of standard components. At the end of the day, most developers are building business apps and thus need standard components for datagrids, charting etc.

This was also one of the key complaints Yakov Fain (See picture) made at his DevNexus presentation which gave the audience an overview of various RIA technologies. (Another perspective on the JavaFX was posted by Javalobby: Where in the world is JavaFX?)

And therefore, by the end of the conference I was mostly convinced that Adobe Flex is the best technology at the moment for delivering rich internet applications. Don't get me wrong, I still hope that JavaFX can make it and maybe IBM fancies with the idea of becoming a player in that area and provides some more resources once BlueSun is born.

Nevertheless, once the conference was over, I made the decision to take the Flex deep dive. I mostly finished reading Learning Flex 3 and I just started reading Pro Flex on Spring. For both books I am planning on publishing book reviews soon.

As an example I am in the process of creating a simple Flex-based front-end (highly experimental) for jRecruiter my open source project. So far I have setup the Spring BlazeDS 1.0M2 integration and I am pulling back job postings from the server using AMF and showing them in a data-grid component. Furthermore, I added Google Maps to the Flex application which works pretty neat. It gives you the ability to show job postings on a map (and thus helping you estimate possible morning commutes). I hope to have a deployed version available soon. In the meantime, here is an early screen-shot:

Monday, March 16, 2009

DevNexus Audio Files Available Now

Originally we did not plan on recording the sessions during DevNexus 2009, but thanks to the help of Stephen Davis we are able to provide recordings of ten presentations. The quality could be better but I think the presenter is mostly intelligible. The recordings are available here.

Friday, March 13, 2009

DevNexus 2009 Report Part 1

More than half a year of preparation finally culminated in the grande finale from March 10 to 11 at the DevNexus conference. The result was in my opinion a great success. We received many emails from speakers and attendees alike, commenting on the very good quality of the DevNexus conference. This was the biggest event that I helped organizing, yet. I already have a few ideas and areas of improvement for DevNexus 2010. But that is subject of a future blog post…

Overall, I truly enjoyed the speaker line-up. Here are the presentations I attended:

March 10
  1. On the Lam from the Furniture Police by Neil Ford
  2. Terracotta - Real Apps, Real Frameworks, Real Use Cases by Ari Zilka
  3. Introduction to Grid based computing with GridGain by Charlie Hubbard
  4. Scaling RESTful Services with JAX-RS by Bill Burke
  5. Software Teams Tuneup: Using Agile to Optimize by Jared Richardson
  6. Scaling Hibernate: tips, recipes and new perspectives by Emmanuel Bernard
March 11
  1. JavaFX: The Platform for Rich Internet Applications by Doris Chen
  2. Picking the right technology for the Rich Internet Application by Yakov Fain
  3. GWT by Bruce Johnson
  4. Developing Modular Web Applications with Spring 3.0 by Keith Donald
  5. Automatic generation of Flex/Java CRUD applications by Yakov Fain
By the way the slides are available here.

I will try to provide some more details and impressions about the attended talks in the next few days. Stay tuned.

DevNexus 2009 Presentation Slides Available

This evening I uploaded a whole bunch of presentations from DevNexus 2009, the Atlanta developer conference. The majority of the talks is now available at: http://www.devnexus.com/download.html

I hope that within the next couple of days, we will be able to make the remaining presentations available as well.

Thursday, March 12, 2009

I18N your Java Web Application

I went through the exercise of internationalizing (I18N) my home project. It is still work in progress but I added support for German in most places. Unfortunately, I got a bit bitten by the fact that by default properties files in Java have to be encoded in ISO-8859-1. Up to today, all web applications I helped developing, were created for an English speaking target audience, and therefore, even though they often used properties files, they never went beyond the standard character set.

Interestingly, though, if you like using typographically correct characters like the ellipsis or quotation marks, you would run into the same issue. For that reason alone I think everything (Your JSP files, server, database, source code etc. should all be able to handle UTF-8)

Nevertheless, the limitation that properties files by default are not cannot be in UTF-8 is quite annoying, as it would require you to escape special non-ISO-8859-1 characters or use a conversion tools such as native2ascii. This blog post summarizes the general issue nicely.

For my project I am using Struts 2.1. By default it does not allow for UTF-8 based message resources. Since Java 6 introduced support for creating a custom loader when accessing resource bundles, I was looking into ways of maybe extending Struts 2. Well, it looks like Struts 2 does neither allow a custom ResourceBundle Control nor for easy patching of Struts itself. See also: https://issues.apache.org/struts/browse/WW-2774

Nevertheless, even though Struts 2.1 improved substantially compared to Struts 2.0.x, I am still debating whether long-term Spring MVC (Especially Spring MVC 3.0) might represent a better choice—With Spring 2.5+ both web frameworks are certainly getting very similar. The nice thing about Spring (Core) is, that it provides the ReloadableResourceBundleMessageSource which provides exactly what was looking for:

<bean id="messageSource"
class="org.springframework.context.support.ReloadableResourceBundleMessageSource">
<property name="basename" value="classpath:messages"/>
<property name="defaultEncoding" value="utf-8"/>
</bean>
Unfortunately, as mentioned above, it looks like there is not an easy pluggable way of convincing Struts 2's textprovider to use Spring's messageSource implementation. As I am already using Spring MVC for some of my actions, I decided to use Spring's message tag within my JSPs, I am not crazy about it, as I now mix different web-frameworks but it seems to work like a charm right now.

Two last questions to answer are:

What is the best way to edit resource bundles using eclipse?
How do ou structure your resource bundles without loosing track of things?

After searching the web for a while, I finally settled for Eclipse Resource Bundle Editor. It works quite nicely, I just wish something useful like this would be built into Eclipse by default.

As for structuring the property files, I settled pretty much on a jsp-by-jsp structure. E.g. if I have a file edit-settings.jsp and I want to customize the page title, then I create a resource bundle entry jsp.edit-settings.title=My settings

Similarily I deal with class files:

class.AddUserAcion.success = The user has been successfully registered.

Just as additional information: I wonder, whether it might be a cool thing, to be able to structure properties files similar to Rails 2.2+. There is an interesting RailsCast available about how to do I18N in Ruby On Rails.





Tuesday, March 10, 2009

DevNexus is here—See you there!

Over half a year in the making and the conference is finally here. The last preparations are done, the goody bags are stuffed (yesterday). Let's rock :-)

Hope to see you there tomorrow!

Sunday, March 8, 2009

Information Resource regarding Climate Change

While reading Thomas Friedman's latest column in the New York Times, he pointed out the blog of Joseph J. Romm, which you can find at http://climateprogress.org/. It is an interesting blog that summarizes the latest developments regarding climate change.

Friday, March 6, 2009

jQuery UI and ThemeRoller

I use jQuery quite extensively in my projects these days, but I kind of ignored jQuery UI for too long. The last two days, though, I finally got more into jQuery UI, after I was looking for a modal dialog component and realized that jQuery UI provides a very nice implementation by itself.

I haven't done much directly with the available components (except the dialog component), but
I was very much impressed about the way you download jQuery UI. They call it "Build Your Download" which let's you pick and choose which components of jQuery UI you may want to use and it creates a customized download bundle for you.

But substantially more impressive is "ThemeRoller", which not only let's you select between various themes but also allows for editing and creating new themes. All changes are applied right on the spot and once you're done you can include the theme in your customized jQuery UI download.

From there I discovered that jQuery released a new CSS Framework called "jQuery UI CSS Framework". It looks quite promising and I wonder if it might be applicable for my pet project. I certainly need to learn more about it...it would be nice if it could serve as the main CSS for my web application and therefore allow for easy theming of the application.

Anyway the docs can be found at http://docs.jquery.com/UI/Theming/API and the wiki pages are located at http://jqueryui.pbwiki.com/jQuery-UI-CSS-Framework

There is also a themeswitcher component available.
http://docs.jquery.com/UI/Theming/ThemeSwitcher

Lastly there is an interesting article on the blog of filament group, one of the main sponsors of jQuery UI, about styling buttons and toobars.

Sunday, February 22, 2009

Résumé and Career Advice – A Panel Discussion

Last Tuesday at our monthly AJUG meeting, we had a panel discussion on what hiring managers are looking for in software developer candidates and what you can do to improve the odds to get hired.

The panel consisted of:

  • David Brooks - VP Technology at LexisNexis

  • Mike Nearman - Consultant

  • Deran Ross - Partner at Enablus

  • Pat Baumgartner - Director of Sales at Anteo

  • Dion Deloof - President at Anteo (Moderator)


In case you missed the presentation, the presentation was recorded and is available for download here.

It was an interesting event and the room was certainly packed. It looks like the recession is slowly hitting the IT job market here in Atlanta. There were a few more unemployed attendees than we had been accustomed to in the past. One question raised during the panel discussion was how the Atlanta job market for software developers looks like right now. The panelists thought that Atlanta, while not being perfect, is one of the stronger IT job markets in the US currently, and stressed that the situation is certainly not horrible. Prior to the start of the meeting one visiting company was actually actively looking for quite a few developers.

Anyway, the panel discussion raised a few other interesting points providing valuable career advice, of which some was new to me and some was pretty much common sense, such as not to have a résumé consisting of more than two pages—Well, some time ago I was interviewing a candidate who provided an eight-page résumé…

Some general résumé advice was that: Simple is better. Include your formal education but then show progression and growing responsibility on your résumé. Summarize your experience for specific projects. Don't put references onto your résumé. Also, references these days are a mere pro forma check for the hiring company, important but less so.

One aspect that the panel stressed more than once was to concentrate on the last five years of experience and to make sure that your career follows a holistic picture, meaning not to branch out into vastly different areas of expertise (E.g. one year I am a DBA, the other year a BA and yet another year I develop some code).

Another question that was addressed was: How important is it to know the latest and greatest technology out there? It is more important to understand the business and get the job done. The panelists made the point that it is important for software developers to be able to provide a holistic software solution, to stay current more in a broader sense, and not follow the latest greatest hype.

This also played into one of the later questions: Is it better to have a broad focus on technology or to learn a very specific set of technologies and do them really, really well instead? The panel certainly seemed to be more split on this question as the best approach depends on your career goals. It was mentioned that knowing a specific technology can be very advantageous either while it is still cutting edge (E.g. Adobe Flex) or at the tail end of the popularity curve (Ever heard of PowerBuilder?), particularly when doing consulting. For more permanent long-term employment, this may not be as significant, however.

A question from the audience was about which value do certifications have in regards to hiring candidates. All panel participants voiced the importance of experience over having certifications. Another point that was mentioned several times was the importance of soft-skills. How well developed are your estimation skills? How do you handle and execute given tasks? How well do you understand the larger picture of your business and your customers?

Also, when you are looking for jobs, don't necessarily trust the job description. Internal recruiters may use a canned job description or the job description may deviate quite a bit form the actual duties. Thus, always ask lots of questions and don't get discouraged by a bad job posting. It may be better than the posting indicates.

When asked about contracting and the advantages and disadvantages of Corp-to-Corp versus W2, the panel was not too excited about Corp-to-Corp contracting but they noted that as long as your corporation consists of just yourself you won't run into too many issues.

Someone from the audience asked about current hot technologies. The panelists thought that while there are still good opportunities in custom software development, there are even better opportunities around business intelligence projects. They also thought that knowledge in JBPM, Rules Engines and AJAX are very useful.

What I thought was interesting from my European perspective, was, that companies especially in the financial service industry may actually check your credit-score. Thus, don't plan on doing too many bankruptcies.

Another member from the audience asked about how companies use social networking services in order to source candidates. The panel indicated that they are not paying too much attention to it but that it might be very useful to check out connections of a potential candidates. Maybe the hiring manager knows somebody in your connection list. Therefore, pay attention to it, but keep in mind that your profile is public information and it needs to be a good and accurate reflection of yourself.

Another question dealt with the current recession and for ways to prevent lay-offs. The panel said that you should concentrate on doing a good job and not to get affected too much from the economic situation, otherwise your work quality may slip which may cause issues by itself. Notwithstanding, you want to concentrate on how to market yourself best. You may take on charity projects, contribute to user groups or write a technical blog.

In an interesting question, a member from the audience asked for advice regarding a new-hire's first couple of weeks on the job. The panel advised to use the first couple of weeks to learn. Get self-sufficient. Several panelists said that is is not good if a company does not provide any ramp up times. This may however differ when working as a consultant. Nevertheless, if in doubt regarding your performance, talk to your manager.

I think this covers the core of the panel discussion. All in all it was an AJUG meeting worth attending. See you at DevNexus next month!