This book shows you how to build an app with JHipster, and guides you through the
plethora of tools, techniques and options you can use. Furthermore, it explains the UI and API building blocks
so you understand the underpinnings of your great application.

It's been awhile since I've posted anything on this here blog. That usually means one thing - I've been off having fun! That couldn't be more true this summer. The day after my last post, I began traveling and haven't stopped since. In fact, this weekend will be the first weekend I've been home since writing that post. Hawaii, Montana, Denver, Montana, Colorado Springs and Utah - it's been a fabulous summer. I'll write more about those adventures soon.

In the meantime, I wanted to mention some upcoming events you might be interested in:

September 10: Devoxx4Kids Denver has an upcoming workshop on Exploring JavaScript with the world famous Dr. Venkat Subramaniam. If you know Venkat, you know this is a session you shouldn't miss. Your kids will love it, you'll get a lot of good laughs and everyone is sure to have a good time. Make sure and RSVP soon so you get in before this baby fills up!

September 1: One of my favorite conferences, Devoxx, is coming to the US! DevoxxUS recently announced that registration is open. Even more interesting is that the CFP begins September 1st. I'm biased because I'm on the program committee, but I'd love to see your ideas for great talks!

September: I'm looking for new clients. My current contracts end on August 31 and I'm searching for the next cool team to work with. My expertise: Java, JavaScript and I'm really good at CSS. This is a hard combination to find! LMK if you have a need.

Last night, I had the pleasure of attending the HTML5 Denver Meetup with two talks by Will Klein. I was motivated to attend because React has been on my radar for a while and Will's first talk was titled How to ReactJS. Will's presentation doesn't show the real meat of this talk, which contained lots of live coding. Will started with a static webapp, then converted it to use React bit-by-bit. His live coding was greatly helped by the fact that he had 3-4 co-workers in the room, so there was a sense of pair programming when things didn't work. During the presentation, he mentioned the JavaScript Jabber Podcast on React. I listened to it this morning, and I recommend it if you want to learn about the history of React.

Will's second talk was titled Tooling is Awesome. In this presentation, he showed us how to use npm and webpack. Again, the presentation doesn't capture the vast amount of knowledge demonstrated during the live-cli session. I hadn't heard of webpack before, so I was pumped to learn about it. If you need to complete/translate to JavaScript or CSS from another language, chances are that webpack will work well for you. During this demo, Will converted the previously developed React code to require/export modules, as well to do transpilation using webpack's jsx-loader. He also mentioned Keith Cirkel's How to Use npm as a Build Tool. If you're just getting started with JavaScript development and don't want to learn tools like Grunt or Gulp, this article will help you use npm as your only build tool.

Even though you can't experience the live-coding that happened last night, the code has been posted to GitHub. If you're looking to have talks about developing with React, I'd suggest contacting Will. He delivered great talks on subjects I've been keen to learn more about. Thanks Will!

In other Denver-related tech news, ThingMonk is coming March 3-4 and HTML5 Denver has lightning talks on March 23rd. ThingMonk is "a meeting of the tribes for people building the Internet of Things" and is sure to be a great conference. The Redmonk crew is always fun to hang out with and knows how to create a conference. Did I mention it's at a distillery?! The lightning talks in March are always a great time too. You can really learn a lot in a short period of time and it's a great way to share knowledge about cool technology you've recently used. Heck, you could attend ThingMonk, then create a lightning talk about what you learned for HTML5 Denver!

Last year, I updated those statistics for a presentation
on AngularJS at Denver's Derailed. Angular had a similar amount of jobs as Backbone and a lot of people added it
to their LinkedIn profiles. I found that Ember had grown around 300%, Backbone 200% and Angular 1000%!

Before presenting on AngularJS at last night's Denver Open
Source Users Group, I updated these statistics once again. The charts below show how the number of jobs for
Angular has doubled in the last year, while jobs for Ember and Backbone have fallen slightly. As far as skills,
developers learning Ember and Backbone has increased 200%, while skilled Angular folks has risen 400%.

Yes, AngularJS has experienced huge growth in the last couple of years. You might even say it's the Struts
of the JavaScript world.

For the presentation I delivered last night, I made a number of improvements over last year's. I added a live coding
demo based on my Getting Started with AngularJS tutorial. I used IntelliJ's live templates to make it look easy. However,
since the audience was quiet, and some were falling asleep, I skipped over the testing demo.

A little more than a week ago, on a beautiful Saturday morning, a number of Denver kids converged at Assembly to learn about hardware concepts with littleBits. This
meetup was a bit different than our last
meeting in that the kids built stuff with their hands rather than on computers.

The workshop was taught by
Juan Sanchez of Tack
Mobile. Juan did an excellent job of keeping his presentation short and sweet and got the kids building
things within the first hour. The event space provided by Assembly was excellent and we look forward to
December's Greenfoot Workshop at the same
location.

The class will be held on Saturday, November 22nd, from 10am - 12pm at Assembly Workspace. Cost is $10, but you'll get that back in the form of a t-shirt. Age requirement is 9-18 and kids should have basic computer skills (copy/paste, opening applications, etc.).

I'd like to thank Juan Sanchez for reaching out to me about this class and inspiring his company (and workspace) to make it all happen. It's been great working with you and your team Juan!

When I started Devoxx4Kids Denver, I was hoping to host a class or two per year. Our first meetup in May was a wild success. After taking the summer off to relax, I started looking for more speakers in early October. The response has been great and we'll have another class about GreenFoot on December 13th. We're even in the planning stages for another session on NAO Humanoid Robot programming in Q1 2015.

The first Devoxx4Kids Denver was a wild success!
This last Saturday, 20 enthusiastic Minecraft hackers gathered at Thrive in Cherry Creek to learn from one of the best. With
masterful skill,
Scott Davis, founder of ThirstyHead.com,
taught everyone how to get a development environment setup, run a local Minecraft server and install plugins into
it. You can see the materials we used for this class on Scott's site, at
Introduction to Server-side Minecraft
Programming.

Last night, I had the pleasure of delivering two talks at the Denver Java User Group. The first talk, The Modern Java Web Developer, was inspired by the book titled The Well-Grounded Java Developer. Ben Evans and Martijn Verburg mention in the beginning of the book that they wrote it as a training guide to get new Java developers up to speed. For my talk, I wanted to do something similar, but for Java Web Developers.

I mentioned that the first thing you have to do to become modern is to change your title from a Java Web Developer to a JVM Web Developer. After doing that, you have a whole slew of new and wonderful technologies at your disposal. From there, I believe the Modern JVM Web Developer:

The second talk was on Java Web Application Security and was largely an updated version of the talk I gave a couple years ago, starting with an appearance at the Utah JUG. It was mostly a live demo session using my Ajax Login application. To prepare the project for this talk, I created branches for each step. This means you can checkout the "baseline" branch and use Git to compare it with the "javaee" branch. You can also compare the "spring-security" branch vs. the "apache-shiro" branch. Finally, you could see what I needed to do to fix many of the vulnerabilities found by Zed Attack Proxy.

I have the biggest apple tree I've ever seen and it drops apples like they're going out of style. I counted them in a 24-hour period last weekend and there was 100 new apples! I thought it was cool when I first moved in, but now it seems like a lot of work. However, it's such a good shade tree, it'd be a shame to do anything to it.

I've since grown to love my apple tree, plumb tree and grapes. They produce a lot of fruit, but I rarely pick and eat it.

Because I have so much fruit, I was pumped when my good friend Jason Barton moved back to Denver and started Yard Harvest. Their homepage explains their mission:

What We Do: Each fall, homeowners who register their trees with us call when those trees are dropping apples, cherries, peaches, and other food in their yards. Our volunteers harvest the fruit, leave as much as the homeowners would like, and deliver the rest to daycare centers, homes for the elderly, community kitchens, and other places that serve people around Denver who are at risk of going without fresh, healthy food.

Jason started a similar initiative in Vancouver, BC a few years ago and had great success. I'm writing this post to create awareness of Yard Harvest in Denver and invite you to the Kick Off Party. Below is a picture of the flyer that's being passed around and you can download the PDF if you want to print it out and help spread the word.

Opening Day is a special event in Denver. The night before, it feels like the whole city is alive in anticipation of the big event. On Opening Day, it's typically a gorgeous spring day and serves as a great kickoff to baseball season. This year, we decided to take things up a notch and hit two opening days instead of one. The dates just happened to line up so we could go to the Rockies Home Opener on April 1st, fly to Kraków for the 33rd Degree Conference and make it back to Boston for the Red Sox Home Opener. Since Trish's brother lives near Boston, and I have good friends there, it sounded like the perfect vacation. To make a crazy vacation schedule even crazier, Trish and I moved in together the day before it all started. With moving and trying to finish my basement sauna before we left, we've definitely had a hectic few weeks.

After attending the Rockies Home Opener and having a great time with friends, we got to bed early and woke up on Saturday for our flight to Kraków. It was a 2 o'clock flight, so we got lots of sleep and then proceeded to thoroughly enjoy our flight when we upgraded to Business Class from Chicago to Munich. Business Class is the way to travel internationally. We arrived just after noon on Sunday and spent the afternoon exploring Kraków's Old Town and trying to stay awake. The weather was beautiful and it seemed like it might've been the warmest day of the year.

On Monday, we spent more time in the center of Kraków, wandering through the Main Market Square, Wawel Castle and the very cool Dragon's Den. We had lunch outside, again enjoying the great weather and some local beers. We were surprised to find that kamikaze shots are served in groups of four, rather than just one like it's done in the US. That evening, we enjoyed an excellent Italian dinner at Aqua e Wino.

On Tuesday, we headed to Aushwitz. This was a very sobering experience, but I'm glad we did it. It made me wonder if this type of thing could happen again, only to realize that it has. That evening, we sipped on martinis at the Metropolitan.

We woke up Thursday and headed to the airport for our flight back to the US. We landed in Boston at 6:30 pm and headed to my friend Chris's house in Concord. You might remember Chris from my first game at Fenway Park. Friday, we joined other friends, hopped on the train and headed to Yawkey Way for a beer before the game. Our seats were in the bleachers, but we had a fantastic time watching the Red Sox win their first game of the year.

We went to another game on Saturday with Trish's brother and a friend of his. We then proceeded to spend a relaxing Lazy Sunday with his family before flying back Monday morning.

Thanks to all our friends who participated in the opening day festivities as well as to Grzegorz Duda for inviting me to speak at 33rd Degree. We had a blast!

This evening, I attended Denver JUG to hear Johnny Wey talk about WebSockets. This month, the location moved and even though I had a nice bike ride to the meeting, I showed up about 20 minutes late. Johnny's talk lasted about 40 minutes, so I missed the first half.

When I arrived, he was talking about workarounds for implementing push applications in browsers. He had a slide that talked about Comet and iframes as the common implementation, and the other major option being ActionScript's XMLSocket. The biggest issues with XMLSocket (according to Johnny) are:

The biggest issue with implementing push on a client is managing it all, especially if you need to support older browsers. Socket.IO is one possible solution. It rides on the coattails of node.js. Features of Socket.IO include:

Abstracts socket methods into a unified API.

Open source (MIT) with active community.

Multiple server implementations (including Java) with the "reference" implementation developed in node.js.

jWebSocket is another solution and it's where a lot of the Java WebSocket development is ending up right now.
Highlights about the project include:

Open source (LGPL) with relatively active community.

Servlet-like API.

More "enterprisey" than Socket.IO.

Other options include CometD, which is a Dojo-driven Comet implementation that uses a specification called Bayeux. Jetty and GlassFish both support WebSockets in various forms of functionality and stability. Finally, there's Pusher (a SaaS implementation of push with a RESTful API) and Atmosphere (a container-agnostic framework).

How do you scale web sockets? The same way you make a webapp scale:

Go stateless

Use short request / response cycle

Use the smallest payload possible

Cache as much as possible>

Scaling challenges with web sockets:

Connections have intrinsic state (they never close!)

Communications pipeline to your app server

Some sort of introspection on LB side (JMX)

There's also some existing controversy in the WebSockets Community, mostly around using Upgrade vs. CONNECT with HTTP. An (IETF) experiment found Upgrade portion of HTTP protocol was often improperly implemented by proxy servers and other network hardware. This seems to have caused Google Chrome to deprecate using Upgrade in favor of CONNECT. CONNECT used in this manner is seen by many as an abuse of the web.

I'm glad I attended Johnny's talk. I've been a little leery of using WebSockets in my applications because of older browsers. Now that I'm aware of frameworks (like Socket.IO) that solve this problem, I'm eager to try it when the need arises.