Tuesday, 06 March 2012

A presentation from hell: when nothing else could possibly go wrong

As a seasoned public speaker, I don’t easily get flustered by minor glitches that inevitably occur when presenting or doing live code demos.  I expected a recent JUG and JBUG tour of the American mid-west to be no different. I was prepared to speak about JSR 107 and JSR 347, Infinispan, and a wee bit on Hibernate OGM and NoSQL. All subjects I’m pretty familiar with, totalling to about an hour of yacking. Followed by a live coding demo to walk people through Infinispan’s core API. Simple.

imageSo where does one start when talking about what went embarrassingly wrong at the Madison Java User Group on the 29th of Feb? Well, I suppose mistaking my iPad VGA connector for the mini displayport to VGA connector for my MacBook when leaving London was a start. Mix in the fact that this realisation only happened in a room full of people, with a few minutes to go before the start of the talk. Nice. Unable to connect my laptop to the projector, I had no choice but to present off my iPad instead. Which was fine, except that ten minutes into my talk, my iPad spuriously decided to shut down. Epic fail. But who needs slides, right?  Not me, for sure - I’m way too cool for that.  So I continued on, unfazed. Now try explaining Eric Brewer's CAP theorem without any visual aids. Fun, right? I tried to use the whiteboard. No pens! The organiser rushed out to find some. And none of them worked! Even old-school technology was failing on me that day.

Then come demo time, I was able to borrow a Linux laptop from Red Hatter Jey Paulraj who was in the audience, and transfer my demo to it. Given that the laptop didn’t have the tools needed to actually run the demo, the entire demo consisted of me just walking people through an Infinispan configuration XML file. For half an hour. Suspenseful and thrilling! Well, peppered with anecdotes about the life of an open source developer and several tangents on the architecture of various parts of Infinispan, the time did actually fly by (and the audience did seem at least somewhat engaged!)

imageThe clincher, though - I had a PDF containing URLs where people could download the demo, and learn more about the JSRs and Infinispan. Bringing this PDF up on Jey’s laptop, still projecting for the benefit of the room, resulted in his PDF viewer crashing. That’s when I threw in the towel - any more information from me would require tequila, preferably delivered intravenously!

Now for the moral of the story, don’t trust technology. Always be prepared to get your message across with no visual aids whatsoever. Oh, and don’t forget your Macbook’s VGA adapter. :)

imageAddendum: I repeated the talk a few times in Milwaukee and Chicago, and everything ran really well - after a quick trip to the local Apple store to replace my VGA adapter!

Addendum 2: I now am on a short break climbing in the Canadian Rockies, but will soon be presenting the same in Washington DC - drop by if you’re in the neighbourhood!

Cheers Manik

Posted by Manik Surtani on 2012-03-06
Tags: presentations event user groups

News

Tags

JUGs alpha as7 asymmetric clusters asynchronous beta c++ cdi chat clustering community conference configuration console data grids data-as-a-service database devoxx distributed executors docker event functional grouping and aggregation hotrod infinispan java 8 jboss cache jcache jclouds jcp jdg jpa judcon kubernetes listeners meetup minor release off-heap openshift performance presentations product protostream radargun radegast recruit release release 8.2 9.0 final release candidate remote query replication queue rest query security spring streams transactions vert.x workshop 8.1.0 API DSL Hibernate-Search Ickle Infinispan Query JP-QL JSON JUGs JavaOne LGPL License NoSQL Open Source Protobuf SCM administration affinity algorithms alpha amazon annotations announcement archetype archetypes as5 as7 asl2 asynchronous atomic maps atomic objects availability aws beer benchmark benchmarks berkeleydb beta beta release blogger book breizh camp buddy replication bugfix c# c++ c3p0 cache benchmark framework cache store cache stores cachestore cassandra cdi cep certification cli cloud storage clustered cache configuration clustered counters clustered locks codemotion codename colocation command line interface community comparison compose concurrency conference conferences configuration console counter cpp-client cpu creative cross site replication csharp custom commands daas data container data entry data grids data structures data-as-a-service deadlock detection demo deployment dev-preview devnation devoxx distributed executors distributed queries distribution docker documentation domain mode dotnet-client dzone refcard ec2 ehcache embedded query equivalence event eviction example externalizers failover faq final fine grained flags flink full-text functional future garbage collection geecon getAll gigaspaces git github gke google graalvm greach conf gsoc hackergarten hadoop hbase health hibernate hibernate ogm hibernate search hot rod hotrod hql http/2 ide index indexing india infinispan infinispan 8 infoq internationalization interoperability interview introduction iteration javascript jboss as 5 jboss asylum jboss cache jbossworld jbug jcache jclouds jcp jdbc jdg jgroups jopr jpa js-client jsr 107 jsr 347 jta judcon kafka kubernetes lambda language leveldb license listeners loader local mode lock striping locking logging lucene mac management map reduce marshalling maven memcached memory migration minikube minishift minor release modules mongodb monitoring multi-tenancy nashorn native near caching netty node.js nodejs nosqlunit off-heap openshift operator oracle osgi overhead paas paid support partition handling partitioning performance persistence podcast presentations protostream public speaking push api putAll python quarkus query quick start radargun radegast react reactive red hat redis rehashing releaase release release candidate remote remote events remote query replication rest rest query roadmap rocksdb ruby s3 scattered cache scripting second level cache provider security segmented server shell site snowcamp spark split brain spring spring boot spring-session stable standards state transfer statistics storage store store by reference store by value streams substratevm synchronization syntax highlighting testing tomcat transactions uneven load user groups user guide vagrant versioning vert.x video videos virtual nodes vote voxxed voxxed days milano wallpaper websocket websockets wildfly workshop xsd xsite yarn zulip

back to top