Demonstrations

I have built countless demonstrations over my 15 years (and running) time in sales and marketing. In a field that blazes forward at unprecedented speed, many of those demonstrations no longer make any sense.

As an example, I once wrote a version of Allaire HomeSite in Java Swing. I obsessed over every detail, and it was nearly a pixel perfect match for the native Delphi version - except that it ran across platforms. It was nearly feature complete as well, including VTML parsing, and even the Query Builder tool. Who is Allaire? What is HomeSite? Everybody knows Java Swing is horrible, right?

And so technology marches on ...

What follows is a list of some of the active demonstrations that I have built recently, and show frequently to customers and/or conferences. They are placed here for easy reference in those situations. Be advised that demonstrations here today, may not be tomorrow.

Algorithms

If you interview for Google, you will be asked to solve computational problems from almost every person you meet. Most of these computational problems are designed to provide the interviewer with better insight as to how you think - not necessarily to be solved.

How does one succinctly communicate a computational problem in the first place? If you are solving the problem, how do you communicate your approach to a solution?

There needs to be a common vernacular. Most algorithms have names (usually for their creator). Knowing the names of these algorithms, how they work, and ideally, how to write them, is key in establishing a dialog with a Google interviewer. I would recommend pouring over the book Algorithm Design Manual.

In my efforts to solidify these algorithms in my head, I practiced implementing them, and visualizing their results. This page (meant to be viewed in a desktop browser with the console open) is the implementation of a few of those algorithms.

Algorithms

Cars

I started working with physical computing around 2007. At the time it seemed like a unique new angle to bring to the conference stage. So many demonstrations are only in the digital realm. Close the lid of the laptop, and your work disappears. I wanted something that people could see and touch.

From the very first time I showed the digital and the physical interacting, I was hooked. What is currently referred to as IoT (Internet of Things) then became a passion of mine, and I have gone on to include some hardware in virtually every demonstration I give. It has become part of my reputation.

If you see me at a conference, wether presenting or not, you can always stop me and ask to see a hardware demonstration.

My work at Kaazing has been largely focused on real-time data communication. Bringing such a broadly horizontal technology to life, has often meant applying it to whatever technology discussion is currently trending. With IoT in mind, I added a Bluetooth OBD (on-board diagnostics) adapter to my car, hooked up a USB GPS, and began broadcasting my driving in real-time - to include actual metrics from the vehicle's ECU (engine control unit).

Note: This demonstration does nothing without additional parts being involved. Want to see it in action? Hit me up on Twitter, or catch the YouTube video.

Cars

Fingers

I have worked professionally with a lot of programming languages over the years. I have ported QBasic games to ActionScript, written WebSocket server implementation in JavaScript (pre-Node.js), managed I2C bus communication using C/C++, and added dynamic elements to web pages using everything from Active Server Pages, to Python. Just to name a few.

These days I am using mostly Java, C/C++, and web stack technologies such as JavaScript, SVG, HTML, and CSS.

Kaazing Gateway has real-time client libraries for a number of platforms. They are designed to be robust and capable for even the most demanding enterprise requirements. This also makes the learning curve incredibly steep. In order to lower the barrier to entry, for our most common platform (Web stack), I wrote a JavaScript wrapper for our existing libraries.

The wrapper loads all the necessary JavaScript files, logs usage to a cloud database service, and exposes a handful of functions to the developer (connect, publish, subscribe, events, etc.). In this case, the underlying protocol for real-time communication is AMQP, so the wrapper abstracts all of that work (acknowledge, queue, exchange, etc.).

Put together with a getting started guide (written by me), developers can now easily get started using Kaazing Gateway for free without installing or configuring anything. The demonstration looks like nothing to begin with, but put your mouse (or finger) down on the screen, and you will see an animated circle. So will every other screen viewing that page (tested thoroughly across devices).

Note: I like to put Easter Eggs in my demonstrations. The Easter Egg here is a hidden chat() function which will setup an entire real-time chat for the developer (the "hello world" of real-time).

Terry Smash

I worked for Adobe (Allaire, Macromedia, Adobe) for 15 years. While I am already a fairly creative person, exposure to such world-class talent often led me to develop my own sense of design - even though I have a CIS (Computer Information Systems) degree. I was a regular, highly rated, speaker at Adobe MAX for nearly ten years.

One such year the marketing department came up with the idea of putting the Developer Evangelists against the Design Evangelists. A representative from each group would propose and promote an Adobe MAX session using a specific hashtag. The winner would get their session at the conference, a randomly selected person that used the hashtag would get an all-expenses paid trip to Adobe MAX that year.

It came down to me versus Terry White. With but a fraction of the social reach, I put up a good fight, but in the end, was not quite able to win.

Part of my proposed session (JavaScript Animation Techniques) was to cover the use of physics engines. My daughter often plays a supporting role in my demonstrations, and at the time she was fond of an iOS game called Tower Smash. I put the two together and came up with Terry Smash. In this game you destroy a tower of Terry White (and his session on Adobe Muse) blocks by firing blocks of my photo.

Terry Smash

Tetris

I have always been fascinated by game development. Which is odd considering that I do not like to play video games, and that I have never really built one. Until now! Well, okay, Tetris is like the "Hello World" of game development, but I have put my own spin on this version.

The first major spin I put on this version is that it uses the browser DOM - any other version I have seen used HTML5 Canvas. Not that there is anything wrong with using Canvas. If you are porting something like Tetris to the Web, then the drawing routines are probably going to match up pretty nicely. However, getting canvas to render crisply across (high-density) screens is a real chore.

The second major spin I put on this is that it uses a virtual controller. That is to say that you can open the controller screen on your smartphone, and the game on some other screen (iPad, desktop browser, etc), and control the game on one device from the other device. The devices do not even have to know anything about one another. No Bluetooth here - just good old fashion publish/subscribe on the Web, thanks to Kaazing Gateway.

The blocks are filled using pictures of some of the staff around the Kaazing office at the time this project was being developed. The other reason I like using the DOM over Canvas, is that it makes it really easy to change the fill of the blocks using a splash of CSS (or SVG). It could just be solid colors, or faces from presenters at a conference. Company logos, product logos, or rainbow unicorns.

Tetris game with controller.

Tic Tac Toe

Along the way of exploring physical computing and electronics hardware, I discovered the need to have custom enclosures for my projects. Wires sticking out everywhere just never really did the project justice. This led me to fabrication techniques including 3D printing, CNC (subtractive processes), and laser cutting. I have even taught these topics at conferences.

Before fabricating the real thing, using quality materials, I prefer to build a prototype using foam core board, or other materials. This allows me to catch problems with the design before spending too much money on fabrication materials. Sometimes the foam core board prototype ends up being as far as some projects make it.

Building a report with your audience is key to making engaging presentations. What better way to engage the audience than to let them participate in the presentation directly? This project used nine (9) RGB LED modules, an Arduino Yun, and a custom-rolled STOMP implementation. The audience could bring up a web page, select a color from the user interface, and that color would appear at the selected place, with that selected color.

Note: Even without the hardware aspect, the screens will stay in sync, but it really does not do the demonstration justice. To see it in action, hit me up on Twitter, or see the Vine video recorded at one of my presentations..

Tic Tac Toe

Addendum

Want to see more of my demonstrations? Would you like to view the slides for a presentation? Just must get your hands on the code? Let's talk! I am on Twitter, Flickr, and most instant message systems using the handle "parkerkrhoyt".