Monday, February 16, 2015

docker, Docker, DOCKER!

My first run of the Docker Tutorial Live has been canceled for today, February 16 at TriJUG, alas, Old Man Winter has intervened and we are expecting snow & freezing rain during the TriJUG meeting time window.  And for those of you who have lived in the South, snowflakes are a cause for major alarm - I suspect the grocery stores have already been raided for bread, milk, eggs and ammunition :-)

The next live event will be DevNexus in Atlanta on March 10 to 12th 2015.   DevNexus is an excellent JUG-organized developer-focused event which basically equates to a great speaker line-up at a great price point.  

For those of you following along at home (not physically making it to TriJUG or DevNexus), please check out the written Docker Tutorial materials - the focus is on the Windows-based enterprise Java Developer.  With our JBoss Tools project, we receive opt-in usage data that shows us that the vast majority of enterprise Java developers run Windows as their primary desktop.  While Docker is a Linux innovation, it can be run on Windows via boot2docker (which includes VirtualBox in its installation).  And Java developers do want to understand how building Docker images and running containers could impact their future toolchain and workflow.

I wrote the tutorial documents in markdown (many thanks to Pete Muir for helping my formatting) and stored them in github to make them "forkable" - hopefully allowing anyone who wishes to run their own Docker Workshop use the materials and perhaps even send back a pull request.

Getting Started with Docker, boot2docker, on Windows for the Java Developer

Adding MySQL and additional tips for Java EE on Docker

Once you have a comfort level with Docker builds and runs...then it is time to learn one of the orchestration solutions - basically tools that allow you to start multiple docker containers, linking them, declaratively.  We (Red Hat) are focused on Kubernetes by Google as that piece of the infrastructure.  Check out this short recorded demo of Kubernetes in action.

Monday, February 9, 2015

New Technology Learning Process

I love learning.  I was a curious child and became an even more curious adult.  When it comes to all sorts of enterprise-related software development, I really wish to know what a new technology or technique might bring to the table.

One trick that I will use on myself is to sign up for a presentation as that will force me to learn the technology (or technique) well enough to at least get through a 60 to 90 minute presentation and demonstration...with a hard deadline.   The demonstration being the key thing for me - I tend to work backwards from the demos to the slides - so that the slides reflect what I can actually show off in the demos.

In the last few years, the set a presentation date trick was how I learned:
- Platform-as-a-Service and cloud computing in general
- Vert.x (minute 46)
- Apache Cordova (Phonegap)
and now I am doing it with Docker for TriJUG and DevNexus.

My basic learn something new technique is as follows:
1) 30 seconds: when I first hear about something check the term out on Wikipedia (e.g 6LoWPAN)
2) If the term is so new or esoteric that wikipedia does not have a entry, search Twitter
3) 5 minutes: try to find a sub-10 minute YouTube video on the subject.  
4) 30 minutes: find a decent tutorial/getting started guide - these are very critical to my learning path - therefore I try to craft my own tutorials when possible.
5) 1 hour: find some decent examples - I am definitely a learn by example kind of person.  Some folks call it a "copy & paste" programmer.  As part of my first hour or three of learning...finding some good examples and "playing" with the new technology is critical.  That early feeling of success is a huge motivational factor.  And if the examples fail, then you feel challenged.
6) Look for the deeper dive presentation on YouTube or if I am lucky, seeing it presented at a conference.  I find that the way someone presents the high points of a technology - the advantages and its warts is very helpful in my initial "wrapping my head around it".
7) Find the forums, the better technologies should have a community forum, perhaps a simple Google Group and/or tags out at StackOverflow.  I like scanning through the questions as that gives you a feel for how the technology is being used in the real world.  You can then compare the use cases to your own needs.   I use this same basic technique when reading reviews - does the reviewer (question asker) think as I would?

What is your learning process? How do you prioritize the list of things to be learned and then what steps do you follow to gain some (or great) insight into the new technology?

Saturday, February 7, 2015

HTML5, Vert.x, Leap Motion and other goodies

What follows are some of my favorite presentations/demonstrations of some very fun technology.  Leveraging technologies like HTML5 Canvas, Vert.x - a reactive async platform and Leap Motion for gesture UI.   

One of most fun demos I have created was related to Vert.x 2 and allowing for audience a live demonstration.   Here is a single-user recording of the demonstration I called "paint" as it is a multi-user painting tool.  Audience members use their phones to touch draw via HTML5 canvas something on their smartphone web browser,  those events were captured via JavaScript, sent up to Vert.x running on Openshift and then back to the dashboard running on my laptop's browser.  
This demonstrates not only the power of HTML5 Canvas, but also Websockets and a reactive async platform like Vert.x.  Warning: some of your audience members may draw some rated R or NC-17 images when you are displaying all the individual images via the dashboard, I have had that happen.  I used this demo at Great Wide Open 2014 and Devoxx 2013 (Vert.x is toward the very end). 

Note: Paint is NOT a representation of great coding - it is cool hacking - to make something work with the least amount of pain.  :-)

Taking advantage of Leap Motion and Leap.js to capture the figure gestures to draw on my desktop browser but also leverage Vert.x EventBus to reflect the gestures out to mobile devices.  I think of it as a "reach out and touch somebody" kind of demo - where I can put my hands on the audience's phones.   In this case Leap's gestures are being sent up "to the Cloud" (Openshift) and then back out to the mobile devices.  Basically the opposite flow from the multi-user painting demonstration above.

The Hitchhikers Guide to the JBoss Galaxy presentation has been used on several occasions and different events and I took some time to move it from PowerPoint to Reveal.js.   Based on the experience with gesture tracking and finger painting,  I thought I can hack in simple gesture-based navigation.  It works fairly well but it is hard to capture via video.  
I used the ZiggiHD USB-powered document camera to make the Leap Motion controller visible in the bottom left corner - see video.