What I learned building my first news product, JuxtaposeJS



 

Just in time for last week'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 a while 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.


About the author

Alex Duner

Student Fellow

Latest Posts

  • Capturing the Soundfield: Recording Ambisonics for VR

    When building experiences in virtual reality we’re confronted with the challenge of mimicking how sounds hit us in the real world from all directions. One useful tool for us to attempt this mimicry is called a soundfield microphone. We tested one of these microphones to explore how audio plays into building immersive experiences for virtual reality. Approaching ambisonics with the soundfield microphone has become popular in development for VR particularly for 360 videos. With it,...

    Continue Reading

  • Northwestern is hiring a CS + Journalism professor

    Work with us at the intersection of media, technology and design.

    Are you interested in working with journalism and computer science students to build innovative media tools, products and apps? Would you like to teach the next generation of media innovators? Do you have a track record building technologies for journalists, publishers, storytellers or media consumers? Northwestern University is recruiting for an assistant or associate professor for computer science AND journalism, who will share an appointment in the Medill School of Journalism and the McCormick School...

    Continue Reading

  • Introducing StorylineJS

    Today we're excited to release a new tool for storytellers.

    StorylineJS makes it easy to tell the story behind a dataset, without the need for programming or data visualization expertise. Just upload your data to Google Sheets, add two columns, and fill in the story on the rows you want to highlight. Set a few configuration options and you have an annotated chart, ready to embed on your website. (And did we mention, it looks great on phones?) As with all of our tools, simplicity...

    Continue Reading

  • Join us in October: NU hosts the Computation + Journalism 2017 symposium

    An exciting lineup of researchers, technologists and journalists will convene in October for Computation + Journalism Symposium 2017 at Northwestern University. Register now and book your hotel rooms for the event, which will take place on Friday, Oct. 13, and Saturday, Oct. 14 in Evanston, IL. Hotel room blocks near campus are filling up fast! Speakers will include: Ashwin Ram, who heads research and development for Amazon’s Alexa artificial intelligence (AI) agent, which powers the...

    Continue Reading

  • Bringing Historical Data to Census Reporter

    A Visualization and Research Review

    An Introduction Since Census Reporter’s launch in 2014, one of our most requested features has been the option to see historic census data. Journalists of all backgrounds have asked for a simplified way to get the long-term values they need from Census Reporter, whether it’s through our data section or directly from individual profile pages. Over the past few months I’ve been working to make that a reality. With invaluable feedback from many of you,......

    Continue Reading

  • How We Brought A Chatbot To Life

    Best Practice Guide

    A chatbot creates a unique user experience with many benefits. It gives the audience an opportunity to ask questions and get to know more about your organization. It allows you to collect valuable information from the audience. It can increase interaction time on your site. Bot prototype In the spring of 2017, our Knight Lab team examined the conversational user interface of Public Good Software’s chatbot, which is a chat-widget embedded within media partner sites.......

    Continue Reading

Storytelling Tools

We build easy-to-use tools that can help you tell better stories.

View More