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



Emerging Tech Conference Day 2 Wrapup

Day two was just as busy as day one. The keynote, by InfoQ founder Floyd Marinescu, was a good summation of the industry today and future technologies and trends. I kept running into people from my past, always a good sign as it looks like the talks brought out lots of people from all over the Philly region (and beyond).

I attended the Adobe Flex talk, which was a good overview of some of the things you can do with a rich internet application to make interacting with your data more interesting. The demo showed a flex frontend to Pentaho's reporting engine, with graphical drill-downs and nice, dynamic charts. Pretty cool.

Another very interesting talk was the one of the last talks of the day, Scala, by Dianne Marsh. I'm not sure I have any practical uses for that language in general, but I think learning it wouldn't hurt. I still have trouble figuring out how it might be useful for me in practice.

Overall the conference was very well attended, well run, and had lots of useful content. If you are in the Philadelphia region and didn't go this year, try to get a ticket in 2009 as I'm sure it will have a lot to offer.


Emerging Tech Conference Day 1 Recap

What an entertaining day! Lots of fun sessions to attend, and attendance hit the 400 person cap, a record for ETE. I attended talks on Flex, OSGi, Hadoop, Seam, and gave a talk on Grails. At the end of the day everyone went to the World Cafe for drinks, and the guitar player actually whipped out Paranoid Android from O.K. Computer--what a riot.

Of the talks, the one that blew my mind a bit was Hadoop. Although I'm not 100% sure I get it yet, it looks like those LISP / AI Comp Sci geeks ended up working at Google, and Yahoo... Time for me to dust off that old engineering hat and start learning a completely different way of programming. For those of you not in the know (believe me, it includes myself), Hadoop is a massively parallel architecture for running queries against data. Think "how does Google manage search indexing and processing" and you get the idea that no software built by standard humans could keep up. It turns out Google runs that web index in MEMORY across many nodes. Wow.

My interest in Grails is still ongoing, and I have to say that you can only talk about so much in one hour. I'm wondering what other presenters end up doing for a one hour intro (and someone from G2One is doing another Grails talk tomorrow at ETE). Mine was mostly setting the stage (Groovy and what it offers, Grails as a platform) then I dove into a 25 minute demo. I ended up covering domains, (a simple domain, scaffold the UI, one to many) and showed them how to switch databases. But I pretty much ran out of time to do anything else. Hopefully in the future I can prepare a more advanced dive.

I liked what I saw from Seam, and have it in my Mac downloads folder to screw around with. I'm not sure I want to use JSF on the front end, although the speaker explained that Seam manages JSF a bit for you and simplifies it. What I don't get yet is the fact that you're constantly re-deploying an exploded WAR or EAR, and I'm wondering how that works in practice. (Then again, Grails re-deploys too, but it's a simple WAR without any EJBs, etc..) More on Seam in a later post.

Finally, I got to see the hubub on OSGi from two speakers--our own Dmitry Sklyut and Michael Redlich from ExxonMobil. Dmitry's was on Spring OSGi, and how you can essentially create a module per ApplicationContext. In the end, it's about injection in Spring, so essentially you can either publish a bean or reference it using Spring DI. Pretty cool. Michael's talk was more general (here is how OSGi works) with some great sample code. He was using Equinox as the container in the demo. I did like the comment made by Dmitry toward the end--he felt that OSGi in general is at least 5 months too early for general use. But he also said (and I COMPLETELY AGREE) that he's been waiting too long for application software that can be treated like pluggable Legos. Maybe OSGi is the answer, but I'm thinking it will take Spring to sort that one out.

I ran the MP3 audio recording of three sets of sessions (lightweight, agile and ruby) so between pulling off audio and making sure things got recorded it was a lot of running around. Hats off to the Drexel student helpers as they remembered to stop/start the audio recording gear. By the way, I'm using the iKey Audio plus, a little hardware box that takes any of three input types (line in, mic in, phono in) and directly records it to an USB memory stick as either an MP3 (128 - 320 kbit) or a full-out wav file. Pretty nifty. As long as the quality holds up, we'll be publishing various sessions on my Chariot Tech Cast podcast.


Presentation and Notes from my Grails talk

Here is a PDF of my Grails talk at the Philly Emerging Tech conference today. It is a general overview of Groovy and Grails, and was meant to be delivered with a 20-30 minute demo. My demo consisted of creating a few domain classes and controllers, and showing scaffolding.

I ran out of time in 60 minutes, but if I had enough I would have shown Glen Smith's Gravl as a sample application (with full props to Glen, as that app is a tremendously useful example).

There were a few questions asked at the end... One of them was whether you can create a jndi datasource in Grails. Yes, you can. An attribute you can apply to a datasource (from the Grails docs):

dataSource {
jndiName = "java:comp/env/myDataSource"

The full URL is here.

Thanks to everyone who attended; it was a packed room and Grails seemed to generate a lot of interest. Right now I'm listening to a talk on Seam, which seems to be JBoss's annotation-driven answer to Rails and Grails. More later.


See you at Philly Emerging Tech

I am giving a talk on Grails at Philly Emerging Technologies for the Enterprise, a two day conference at Drexel University in Philadelphia on March 26-27. Chariot Solutions hosts this conference every year, and it covers Web 2.0, Ruby, SOA and Management topics. I'm speaking on the first day from 11:30 AM to 12:30 PM.

Take a look at Emerging Technologies for the Enterprise. The conference is not very expensive, and it is a great way to see some big name speakers in our industry. I hope to see you there!


A few tips for Grails Database Setups...

Here are a few quick tips for setting up the Grails datasources in grails-app/conf/DataSource.groovy:

  • To log all Hibernate queries, use
    loggingSql = true 
    either in the initial dataSource closure, or in a specific connection pool (Development, Test, Production)
  • If you didn't have time to create a database and are just prototyping domain relationships, don't worry about this file yet! Just open up BootStrap.groovy in the same directory, and wire up your domain classes like this:

    class BootStrap {
    def init = { servletContext ->
    def p1 = new Employee(firstName: "Ken",

    This example above uses the embedded Hypersonic SQL in-memory database. Each time you spin up the application server, the default entry for the development instance creates the tables, and on the way out, drops them (create-drop). You could choose to switch to MySQL, for example, and use Create on one startup. Then, once you're done, switch to update. This will ensure that the data you've created stays in the database (and you can comment out the original BootStrapping code: don't delete it unless you want to type it in all over again once your database gets screwed up).

  • Keep in mind, anything you put at the initial dataSource closure gets inherited into the specific configurations. So, you might have the same database vendor in all three environments: use the same driver.
  • You can have different environments, and not just three. Change the environment names, and when you start up, pass the -Dgrails.env=production or -Denv=supersecretprobation flag to grails run-app and you'll use those configurations.