When Google launched the iGoogle service in 2005, it became my default home page. I especially liked the capability its dashboard capabilities. My favorite gadget was the one displaying my bookmarks.
When they announced its retirement, I looked for a viable alternative, a hosted service, with multiple account support, with an adaptative layout, etc.
Because I did not find something for my taste, because I see here an opportunity to mix many of my favorite technologies, I started this project to primarily store my bookmarks..
I've been using the Google App Engine service since the beginning, for personal and professional services. So I naturally decided to use GAE to host this service.
After one project with JDO on GAE, and others with JPA and Hibernate (JPA 2 compliant), I switched to Objectify. While being specifically made for Google Datastore (with a smaller set of features, like the absence of join support), it offers a standardized approach (in the JDO spirit) and it's an effecient implementation.
A long time ago, I designed and implemented my own transport layer between back-ends and Web clients. Nowadays, there are so many libraries doing it with the support of huge communities, like Spring or Jersey. For this project, I've chosen the light RestEasy.
Jackson is the best library for manipulating the JSON data format within the JVM.
As a contributor of a Web 2.0 framework for the Oracle Collaboration Suite in early 2000, I really like the JavaScript programming language while recognizing it's a difficult one to master. When I joined IBM Rational, I had the chance to use and to contribute to (through the IBM community) the Dojo toolkit. Since then, it's my favorite JavaScript framework and with the AMD support, its build system, and its large widget library, it's the perfect fit for enterprise-class Web applications.
As many programmers, my UI design skills are limited. Relying on Bootstrap which provides nice looking widgets and a grid management system is an easy win. As Martin Pengelly-Philips did port the Bootstrap theme to Dojo, I use his dbootstrap library.
Whoever wrote the style sheet for a complex web site knows how easy it becomes messy. After LESS and Sass, two popular CSS pre-processors I want to give a try to Stylus. I really like the use of mixins: to reduce the cluter with vendor prefixes, to define 'flexible layout' compliant classes, etc.
Intern is a relative new testing library that supports unit and functional tests. It uses node.js too, like Stylus.
Even if Intern supports the functional tests, I like the ease of Selenium WebDriver test development. It relies on the server developer skills to test the Web client: it's not the same person doing the code and the tests.
- Guice for the dependency injection
- Apache Shiro for the authorization
- Joda Time for handling dates
- maven, especially for its extensible framework and the strong community building plugins