Rambling notes on HTML5-based slideshow tools

I can’t seem to write cohesively anymore, so I’ll just ruminate a bit and hope it’s not too dis-organized.


I recently been creating training materials for JavaScript and related stuff at work; mostly presentations1. For the last few years, I’ve tried to create my presentations in HTML: as a Linux user, I of course can’t use Powerpoint, and I loathe OpenLibre Office, so using it was never even an option.

Back in the day before HTMLized presentations were famous, Eric Meyer created a great tool called S5. I loved it — and still do, but it lacks the oomph of more recent tools (though I admit that I haven’t taken a look at it recently). Anyone who wants to investigate the current landscape should take a look at the Wikipedia article on Web-based slideshows.

Most of my recent presentations have been built using Landslide — a nifty little application that uses some Python magic to transform Markdown-formatted slides into great presentations. It is quite simple to create customized themes for it, with a bit of fiddling. It also has a nice ‘presenter notes’ mode that seems to have been inspired by Keynote. Overall, Landslide definitely is one of the best tools for the job right now.

Another tool that I’ve been investigating recently is deck.js — a more modular approach to creating HTML presentations. It exposes a great API, and has a nice extension system. In fact, one of the extensions, deck.js-codemirror incorporates CodeMirror’s excellent live code editing and syntax highlighting features into presentations: perfect for creating training materials for JavaScript!

The only issue I have with deck.js at present is that it requires me to write in HTML; do-able but I would much prefer writing presentations in plain text. Still, it’s a pretty interesting tool — the next few presentations I create will use it.


  1. Which we may put online sometime, let’s see.  

On being a polyglot (programmer)

I’ve grown up speaking multiple languages, like most Indians1. My childhood was defined by clear-cut language separations: Gujarati for home, Hindi when talking with friends, English (and to a smaller extent, Marathi) at school.

Each language ended up occupying a certain part of my brain. To this day, I can’t think of anything scientific or computing related in any language other than English: I just don’t know the right words. Conversely, talking about some topics in English just doesn’t feel right. Oh, and don’t even get me started about different styles of the same language2.

I have a lot of fun with language: conversations with my sister, for example, often ends up with us switching languages often in between sentences.

Keep this in mind when I say that the best advice for a novice programmer is to learn as many programming languages as possible.


In random order3, here are some of the languages I’ve learned (and at times, used):

  • C++
  • Python
  • SQL
  • ActionScript 3.0
  • Common Lisp
  • C
  • JavaScript
  • Java
  • Scheme
  • Ruby
  • C#
  • PHP

For most of these languages, I can be considered to be a tourist: someone who has read a basic travel guide and knows a few phrases in order to get around. For others, I could be an academic: someone who studies the language, but never uses it in real life. I’m only fluent in a few of these. I do not consider myself to be a master of any of them.

Still, knowing multiple languages has had a tremendous impact on my career as a programmer; I always end up using a concept learned with one language elsewhere.

It opens up your mind to the possibility of alternate ways to do things. You write better code. More importantly, you begin to understand the value of writing simple code. Understanding different patterns of behaviour in different languages leads you to being able to think out of the box, so to speak.

From a more pragmatic point of view, knowing multiple languages is good for your paycheck. The computer industry moves at a very fast pace. If you are just a one-trick pony, well, you aren’t going to hire-able for long. Sure, there’s still a market for COBOL programmers who work on mainframes, but it’s pretty small.

There are a few drawbacks to being a polyglot programmer: you are always learning, and never quite feel like an ‘expert’ at anything. You may give-in to the temptation of over-thinking and over-complicating things while coding. And, you may not be able to ‘market’ yourself for a job, you may not pass the keyword screening tests of the HR department in large organizations.

The Indian IT industry is at times a strange place4. People willing pigeon-hole themselves, saying ”I am a X Programmer“ (replace X with Java/.NET/PHP/etc). Very few of us actually enjoy programming, and most don’t want to learn anything new. I’ve only met a few people who’ve learned languages because they want to; a sad fact that depresses me at times.

But if you do end-up being a language nut like me, the benefits will far out-weight the costs. You just need to actually care about what you do, the rest comes easy.


  1. It seems to me being proud about being bilingual is a profoundly American trait.  

  2. Delhi-Hindi, for example, is very different from Mumbai-Hindi.  

  3. Seriously, I couldn’t figure out in which order to put things, so I ended up randomizing the list!  

  4. Of course, I don’t know how the industry is out-of-India, as I’ve only worked here.
     

A fresh start

I have been stuck with writer’s block for a while now. It’s shameful really, and look, I have a sparkline that proves it: Monthly Posts (blog posts per month)

I need to do something drastic in order to break this habit. Here’s the plan, in no specific order:

  • Move my blog off WordPress, and use one of these newly-fashionable static site generators. I think it’ll make me want to tinker with things (more).

  • Have been cooking a lot, lately. Write more about food!

  • Photoblogging.

  • The ‘learn a new programming language and blog about it’ plan.

  • Tweet less.

  • Stop enumerating things and start doing things.

Well, stay tuned!