It is not a secret that the SRMvision platform is developped using the Apache Wicket framework.

As our application became bigger and so our team, it's getting harder to find the correct Wicket class beneath the view of the page we get in our browsers.

To help the team in this process, I made a simple Chrome extension and a IntelliJ IDEA plugin allowing to send class names to the IDE from the web browser (at the cost of a very simple class in your project, disabled in deployment mode).

Getting your project ready

In the chrome-wicket-idea-example github repository, you have a very simple example of what needs to be done to enable navigation between your browser and your project opened in your IDE. Have a look at the WicketApplication class (specifically in the the init() method) and at the DebugComponentBeforeRenderListener class (it is where the 'simple' magic happen). The good thing is you only need to use this class in your project (confirmed working with Wicket 1.4, 1.5, and 6), and to mimic the initializer logic to get started.

Please notice that you can specify which classes you want to track in your markup (by restricting on package names) at the listener's instanciation.
To test the sample project, you can run the embedded jetty server by running :

mvn jetty:run

Wicket Open In IDEA

IDEA part

The IntelliJ plugin listens for classnames to open on a http socket (10462, overridable in plugin settings).

You can get the IDEA plugin in its github repository, to install it, you have to select "Install plugin from disk" from the "Plugins" category in your IDE settings.

Chrome part

The Chrome extension is really simple, like my TrelloScrum fork, it is not (yet) available on the Chrome Web Store, thus, you have to download the release here and drag and drop it on your chrome://extensions page.
If you want, you can tweak its settings, via the "Options" page :

  • IDE Host : if you change the setup of the plugin in your IDE (or run your IDE on another machine than your browser), you might need to change the host and port to reflect this.
  • Context menu presence host : if you want the context menu icon to appear only on sites where it should, you can narrow the domains here.

To use it, you only have to right click on an item in your "enhanced" web application and select "Wicket debug this".

From there you'll get a modal window listing the matching classes names (sorted by parent order, the first is the closer to the element you pointed to, the next one is the parent class and so on). If there is not any opened modal when you try to use it, it means the extension did not detect any classname in the markup.

Each classname, when clicked, is sent to your IDE which will in turn opens the class matching the classname so you can edit it. The lower part of the modal window will inform you about the status of your last action :

  • If the plugin is not enabled, or the IDE not running : it will display an error message
  • If all went like expected : it will display a confirmation message

I hope it will help other teams using this great framework, or it will give ideas to user of others frameworks.

There is a lot of buzz around Scala these days. The language is now known to divide a lot of programmers (specially ones with a Java background). To chose the side I'm on, I read the excellent book from Martin Odersky, Lex Spoon and Bill Veners : Programming in Scala. The book is really well written, it explains a lot of great things about the language, but reading without exercising is not really efficient (of course you can try the examples yourself, but as I read it in bed, it is not that easy to do).

In the meantime, I found that Martin Odersky, via coursera, gives a free course "Functional Programming Principles in Scala". I am actually attending it, and, I have to say I enjoy learning this language. I am starting to think differently when coding, I found myself really more critic regarding the side effects of my methods for example.

If you're curious about Scala or about functional programming paradigm, you should attend this course and do the assignments, it takes time but really worth it.

At SRMvision, we use agile methods since day one, mainly Scrum, which we rearranged to fit our needs and goals at times. We've always looked for the perfect computerized alternative to good old stickies.

TrelloScrum Chrome Extension

When it came out, it was clear to me that Trello could be the cornerstone of our internal workflow, we started from the very good TrelloScrum plugin available on the Chrome Web Store to count story points. This plugin is really useful in planning sprints, it allows the Scrum master to track story points scheduled in order to fill every single day in the sprint.

Forking the extension

After a few sprints, we realized we needed more than what was included in the plugin. The main thing needed was tracking consumed story points to get a really rapid and efficient feedback on our sprint (real-time burndown values). Thanks to the guys behind the plugin (Q42) and to Github, I was able to fork the project and add these features :

  • if you note points in square brackets : [3] they are considered as consumed points (contributed back to the plugin available in the Chrome Web Store)
  • on card detail, hitting the "Done" button flags the whole card points consumed and moves the card to the bottom of the list, then the card view is closed so you can focus on something else (only available in my fork)
  • plugged to the Trello client API, less flickering when updating cards

With this plugin, you'll get two counters on the top of each list and on a top of the board : consumed points in light blue and scheduled poins in blue. The scheduled and consumed terms are the one we use at SRMvision, but you can use it the way you like to manage your sprints.

Using the extension

If you want to use my fork of the extension, you'll need to get it in my Github account. As it is not available in the store, you'll need to drag and drop the downloaded file on the chrome://extensions page.

Next, you'll need to authenticate the plugin to your Trello account, to do so, there is a little circle on top of your profile picture which is on the top right corner of Trello.

You can use the plugin without allowing it to authenticate, if you do so, you won't be able to flag cards as Done using the button and thus, cards won't be moved to the bottom. To authenticate, you need to click the circle, it will popup the authenticate dialog, just follow the steps in this popup (and close it manually when you see a blank page - limitation of the extension).

Once authenticated, you should see a green circle and a "Done" button on cards details.

If you have feature requests or bugs, don't hesitate to use the Github issue tracker.