Chariot Training Classes

Training Courses

I run Chariot's training and mentoring services. We provide training in AngularJS, HTML5, Spring, Hibernate, Maven, Scala, and more.

Chariot Education Services


Chariot Emerging Tech

Learn about upcoming technologies and trends from my colleagues at Chariot Solutions.


Chariot Conferences



Eclipse (or STS), Javascript, SPA and me... An open rant

Ok, I just sent out a tweet I'll probably regret. But let me state my case: there is only one traditional editing company that 'gets' Javascript IDEs right now in the world of Single Page WebApps - and that's JetBrains. The other option is VIM for me... Or Brackets (AWESOME tool). But I want my CTRL-SPACE code fill-in.

I've been running a training course that involves a JavaScript Single Page Web Application (SPA) in AngularJS. Like many of these platforms, it involves mounting a number of other JavaScript libraries, and they are generally mounted in a minified way unless you need to debug into them (long debate I'm side-stepping here).

My tweet about 30 minutes ago seems to have gotten legs, and I'm about to duck under an earthen barrier to avoid the flack:

Whomever has power over STS and Javascript tooling, can you play nice or integrate with JSHint and ignore my minified SPA libs?

Here is my challenge:

Given a Javascript-fronted single page Web Application, I want:

  • Ability to run my SPA in a simple HTTP server quickly
  • Instant editing of my application scripts with JSHint right there in the problems panel, without redeploying or caching issues
  • Strongly integrated maven-based tools for hinting with JSHint
  • Strong integration with GruntJS - it's the Javascript ANT tool now
  • Integration with Bower to index the source of repositories that we've downloaded
  • Integration with NodeJS's dependencies to install tools, etc...
  • Native integration of Jasmine and Karma (if I have NodeJS integration) to run the tests, or maybe a test generator plugin to generate the test runner on the fly

Is anyone in Eclipse-land working on this? The closest I've gotten to Javascript happiness is using WebStorm. But it doesn't support these tools directly (I have to execute them from a command prompt panel). I love WebStorm for its strong tooling, but even that one is missing Grunt as a plugin.

For clients who need to stay on Java-based build tools (because they're not switching their backend to Node/Express) but who are moving into SPA + RESTful Spring/Java EE apps, I think we'd see good adoption of a forward-leaning Eclipse (since it is kind of the enterprise developer's lingua franca).

Am I off the mark here? Tell me so in the comments...




Javascript's new Development Tools

After revamping Chariot's website and consolidating our blog, podcasts, screencast and other content to that area, I'm doing more technical blogging there.

I'm in the middle of writing up a series of blog posts concerning the new development tools that Javascript developers are wielding to get their jobs done.

Here are the posts as they exist now (I'll update this when we add new ones):

Coming soon:

  • Grunt
  • Yeoman



Galaxy Gear Smartwatch Capsule Review

Update: I picked up a Pebble smartwatch - says is waterproof, 7+day battery life, limited features but mostly a watch with message integration. Will post my impressions separately.

I did a bit of conspicuous consumption this weekend and picked up a Galaxy Gear smartwatch. Here's my mini-review:


  • It's from the future
  • The display is awesome
  • Neat applications
  • Easy paring with Galaxy Note 3 using NFC
  • Great watch faces


  • 24 hour battery life (or less)
  • HUGE, un-replaceable, inflexible band on account of the camera built in
  • Not waterproof
  • Huge cradle needed to charge
  • heavy to wear
  • I can't touch type on a macbook pro when it is on
  • SDK is not available from Samsung even though it's an Android device

Ok, first off, WHY, Samsung, would you create a clasp that sticks out about 3mm from the watch band? Do you know most of your buyers are techies who might just use your watch while typing? Really, that's a fail right there. Secondly, instead of adding features like GPS (yeah, WHY?) to your devices couldn't you use a bit of that space to house a larger battery? And the ergonomics of it? Are there any?

I'm going with either a pebble smartwatch or if I feel a bit more futuristic a Sony Smartwatch 2 - we'll see. But I'm not sure who they are marketing this Galaxy Gear to at this point. Nerds who don't want to type but use their phones everywhere? It's not the future, it's like I'm P-Diddy with a Maybach on my wrist.

PS - I really wanted to like this thing. I just don't see how you could skip ergonomics completely and assume people will just learn how to deform their wrists to use it. Hopefully they learn from this and produce a good watch for their next version, with 3 or more days of battery life, water proofing, and a replaceable strap (no, I DO NOT need a 1.8 megapixel camera).

The only reason I bought it was to program on it - I thought it would be nice to write a few early apps for the platform. But Samsung does not allow public access to the Gear SDK yet. That tells me they are planning on releasing a supportable watch with SDK in the future. I love the Galaxy Note 3 even with all of the bling (as it's a really useable Android platform phone) but this is just a heap of features dumped on a watch.


Chariot's Data I/O 2013 - Be there or be O(2^n)

(updated) Hey there folks. I'd like to alert you to a great one-day show we're putting on in Philadelphia on October 30th. But I'm tired of typing, so here it is in mind map glory:


Hacking the 'Roo... Removing the default web plugins

Let's say you love the productivity of Roo up to a point, but that point happens to be the web. Unfortunately, the default Spring MVC patterns installed in a Roo web app are pretty heavyweight - adding localization, tiles, tags, jspx, etc...

If you ever set up and then backed-out a Roo configuration for the web, and then did the wrong thing and found it regenerated the default web site scaffold, you may have sighed under your breath that you just wish Roo didn't do that.

Well, you have an option. I'd say it's rather voodoo, but if you want to get prototyping in some web-based applications and just make a simple Spring MVC front-end, but don't want to get Roo involved in anything above, say, the service tier, here's what you can do:

  • Make a custom Roo installation directory
  • Expand Roo
  • remove the bundles for web, webmvc, web-json, gwt, jsf, selenium (and maybe one or two more I can't remember)
  • remove the cache directory from Roo (it copies the deployed add-ons into this cache as part of the Equinox OSGi container).
  • start up Roo, and see if it sends any OSGi errors your way. If it does, you've forgotten to remove a bundle. Try again - shut down the shell, follow the removal step, clear the cache directory, and restart.

There you are. Now, you can enjoy using Roo for the Aspect-J ITDs, and to make modeling data easier, but if you are simply using Spring MVC for a RESTful front-end, now Roo doesn't get in your way anymore.

You can always link your shell script for this version of roo to something like /usr/bin/roo-lite.

Happy Roo'ing.