Back in Time

Eddy Recio
3 min readOct 20, 2015

--

Time travel has become a popular topic in posts, talks, software tools and for good reason. Arguably it is a powerful concept for all areas, but perhaps even more so in the software and programming world where timing concepts are specially useful, hard to cope with and envisioning how programs run is often difficult.

So perhaps it’s apropos to take a look at several of these being we are fast approaching October 21st 2015, a significant date in the Back to the Future trilogy, and begin our journey Going back in time.

Tell me, doctor, where are we going this time
Is this the 50’s, or 1999
All I wanted to do — was play my guitar and sing

So take me away, I don’t mind
But you’d better promise me, I’ll be back in time
Gotta get back in time

Back in Time is the title by Huey Lewis and the News, is part of the sound track for Back to the Future.

*Disclaimer: If you haven’t already listened to the song, I highly recommend it, though you may find yourself singing the chorus throughout the day, it’s that catchy.

Now let’s look at these time traveling techniques.

First up a post from Tonic titled Time Travel in NodeJs Notebooks. Tonic is a neat tool that lets you add executable code blocks inside a Medium like editor. What is even more interesting is that you have the full power of NPM inside your notebook at your disposal. And code gists can be used anywhere in the document, further enriching the notebook. I also find it way more accessible than tools such as Mathematica or the various TeX based ones.

Another neat tool that first evolved out of the React.js ecosystem is Redux. Redux is a Flux inspired library for state management. Though more recently Redux seems to be escaping the React-only label and could be used as more general solution with other UI libraries and Frameworks. Dan Abramov, the original author, presented much of the original motivations behind Redux at react-europe. One of the killer parts is the kind of tools Redux enables, including going back “in time” and replaying application state. You’ll have to watch the ~30 minute video for the rest of the spoilers, but it’s well worth watching.

Last but not least, there is an interesting video from Microsoft’s Channel 9, Time-Travel Debugging for JavaScript/HTML Applications.

The video is quite insightful about the techniques used to create such a debugging experience as well as demos of course. The authors share their novel approach for taking snapshots of state and how it compares with other tools such as HyperV and Docker on the abstraction stack. It’s really worth watching if nothing else in terms of sheer technical excellence. Though they allude that their approach could be used in other managed runtimes.

One thing all of these have in common is a novel and interesting approach to capture and handle state. Data management and state mutation are hot topics these days with focus on things such as functional programing, immutability, asynchrony and multicore processors, going back in time sure is fun. Be sure to contribute where you can and never stop questioning the status quo, we are all part of the future.

Enjoy the journey,

Eddy

--

--