X
    Categories: Uncategorized

Lessons Learned in Building Image-Comparison Tool JuxtaposeJS

This post originally appeared on Northwestern University Knight Lab’s blog.

Just in time for last month’s Online News Association Conference, Knight Lab announced the launch of JuxtaposeJS, a lightweight, easy-to-use, image comparison tool.

Any product launch is exciting, and I’m excited to see how journalists use JuxtaposeJS to tell stories. But from a personal perspective JuxtaposeJS is more than just a tool — it’s the first tool I’ve ever built from start to finish. It was also my first major Javascript project, and I learned a few things during its development.

I’m sure that most of these lessons are old news to a veteran software developer, but as someone who is now graduating from self-described beginner to self-described intermediate, these lessons seem worth sharing with other beginners.


Everyone is always talking about iterating for a reason

Start small and iterate. When I started building JuxtaposeJS (at the time, it was just “Before/After Slider Maker”) I had grand visions of how the authoring tool would look and all the bells and whistles it would include. But a front-end interface is not much use when you haven’t written any of the code for the sliders themselves.

I started first by displaying a red square and a blue square, then by changing the solid colors to be images. Over time I added features, fixed bugs, and moved on to the next problem.

For all I’ve heard about the power of iteration, I needed to experience it for myself to understand why the process works so well. If you are curious, you can see all of the changes that were made in Juxtapose’s development on its GitHub commit log (and while you are at it, fork Juxtapose and make it even more awesome).

Version control takes away the worry

Version control lets you break everything and not have to worry about putting the pieces back together. Whether it’s seeing how a radical design change looks or rewriting a large chunk of code in an ultimately futile attempt to fix a bug, using GitHub and making regular commits gives you so much flexibility in writing your code. In retrospect, I wish I had experimented more and taken advantage of Git’s ability to create project forks to try new things.

C’mon, you can do it

Challenge yourself. At one point early on, JuxtaposeJS was dependent on jQuery, and it was working. I was really excited about this, and when I showed it to Joe (Knight Lab’s Chief Nerd), he said “Great. Now see if you can make it work without using jQuery.”

I thought it was ridiculous to rewrite perfectly good code as an academic exercise. But by rewriting everything to be independent of jQuery, I not only improved my understanding of JavaScript, but also made JuxtaposeJS more lighter weight and easier to use.

Challenging yourself and trying things you aren’t comfortable with is the only way to learn new skills.

Integrating Flickr was a struggle for me because I didn’t totally understand how to deal with asynchronously calling an API and I was also (and, to be quite honest, still am) a bit confused about object-oriented programming in JavaScript. It took me awhile before I realized that I needed separate Graphic and FlickrGraphic classes, which might not be the best possible implementation, but it works. The best solution is one you understand how and why it works.

A lot of this advice may sound familiar — I’d heard it many times before. It’s not new and it’s not that original. But the only way I could learn them was to build a part of JuxtaposeJS, fail, and keep going. Which is the most important lesson, I guess. Build things. Build things. Build things. Build smaller things, then medium-sized things, then bigger things. Because the only way these ideas ever start to actually mean something is by building things yourself.

Alex Duner is a sophomore at Northwestern University where he is studying journalism and computer science. He’s also a student fellow at the Knight Lab. In his spare time, he co-hosts the podcast Unmoderated and creates digital artwork which he posts and sells here. You can follow him on Twitter: @asduner

The Knight Lab is a team of technologists, journalists, designers and educators working to advance news media innovation through exploration and experimentation. Straddling the sciences and the humanities the Lab develops projects, prototypes and innovative bits of code that help make information meaningful, and promote quality journalism, storytelling and content on the internet. The Knight Lab is a joint initiative of Northwestern University’s Robert R. McCormick School of Engineering and Applied Science and the Medill School of Journalism. The Lab was launched and is sustained by a grant from the John S. and James L. Knight Foundation, with additional support from the Robert R. McCormick Foundation and the National Science Foundation.

Alex Duner :Alex Duner is a freshman at Northwestern University where he is studying journalism and computer science. He's also a student fellow at the Knight Lab. In his spare time, he co-hosts the podcast Unmoderated and creates digital artwork which he posts and sells here. He's a technophile, news junkie, design enthusiast, policy wonk, and an avid reader. You can follow him on Twitter: @asduner

Comments are closed.