I did a d3.js workshop at ThoughtWorks Bangalore yesterday (31st July, 2012). I split the workshop in to two parts. The first was a basic introduction to d3.js - SVG, Scaling, Axes etc. The second part was an exercise to hack together a Scatterplot with some Cricket dataset.
Around 30 people attended the workshop. I spent too much time on the first part and hence we did not have enough time to complete the second part. This was the first ever workshop I have done and my time plan was way off. I should fix it the next time.
It was a great learning experience for me. In the process of preparing for it and conducting it, I realised that giving talks and conducting workshops are way different. For a talk, you have the freedom to pick examples that are easy to explain. For a workshop, the examples have to be easy to understand and easy to put together during the workshop.
I was really looking forward to watching the video of the workshop and learning from my mistakes. Unfortunately, the video camera had some issues and ended up recording only the first 10 minutes of the 1 hour workshop. That was not fun.
However, the 10 minutes the camera managed to capture was still helpful. I realized that I no longer have the annoying habit of saying “Right…” when speaking in front of a crowd. I appear a lot more calm and collected. I am really happy to see that slowly but surely, I am getting better at this.
I did the slides in reveal.js and the slides are here. The examples I used are here
If you have questions or comments about this blog post, you can get in touch with me on Twitter @sdqali.
If you liked this post, you'll also like...
- Implementing feature toggles for a Spring Boot application - Part 4
- Implementing feature toggles for a Spring Boot application - Part 3
- Implementing feature toggles for a Spring Boot application - Part 2
- Implementing feature toggles for a Spring Boot application - Part 1
- Importing the Yelp dataset into MongoDB
- Clojure Dojo - Levenshtein edit distance
- A simple JMeter test with login
- Implementing Rate Limiting in Rails - Part 2
- Implementing Rate Limiting in Rails - Part 1
- Python Hack - Dynamically override an object's attribute
- Fitting an Image in to a Canvas object
- Accessing Environment Variables in Gradle
- Reading user input in Gradle scripts
- Ruby, Named Capture Groups and Local Variables
- Named Capture Groups in Regular Expressions
- Decomposing URLs in Python
- Shared history in Bash
- Managing Gemsets in Rbenv
- Looking up Compiler params used to compile a Ruby version
- Navigating Stacktraces in Emacs
- Python's bool type
- Graph databases 1 - Modeling
- Validating JSON in Emacs
- Emacs hack: Viewing Git logs while composing commit messages
- Configure Git's comment character
- Oh I can build it in...
- JavaScript, clipboard access and hidden flash widgets
- Reducing Emacs startup time while committing
- My first Firefox plugin: GetCache - View cached version of the current page
- GetCache - A Chrome plugin to view cached version of the current page
- On REST, Content-Type, Google Chrome and Caching
- How Browsers Detect If You Are Offline
- Curse of the Community Shield?
- Visualisation - How European clubs dominate their leagues
- XConf 6 - Data, My Heart!
- Understanding Python's "with" statement
- Heredocs in Ruby and Python
- Micro Journal - simple Git-backed journal in Python
- VodQA NCR: Maintaining Large Test Suites
- Know Your Tools - Don't Shoot Yourself in the Foot
- Managing security certificates from the console - on Windows, Mac OS X and Linux
- Indian and Pakistani cricketers - who make better debuts?
- Finding un-merged commits with git cherry
- Bullet proof Jenkins setup
- Why your project should have a Getting Started guide.
- Debugging: C Sharp's HttpWebRequest, 100-Continue and nginx
- Banyan Tree: Football and Politics
- Wikipedia Page Hopping
- Empathy Log Parser
- Binary Signature Art
- Java Arrays in JRuby
- Autorun.py - Execute stuff on file change