The Emoji Timeline

This post was originally published on the Cooper Hewitt Labs blog.

We made an emoji timeline. You can see it on any object page — it looks like this:

Screen Shot 2015-11-19 at 3.44.57 PM

I want to frame the work we did on the timeline around web accessibility. Web accessibility — the idea that something should be fully-usable for all users regardless of disability status — is something we need to place as a higher priority on our websites. We do things like subtitling all of our videos and releasing the .srt file over our API and employing progressive enhancement to ensure that no content is withheld from visitors using older / alternative web browsers. But turning on VoiceOver and having my computer read an object page recently revealed some of the many opportunities to improve accessibility on the site.

A few months ago, we started talking about updating our previous timeline to integrate it with the new object page layout we’d recently completed. I opened up NYPL’s Digital Collections because I really like their timeline (it’s at the bottom of the page) and wanted to use it as a conversation-starter for how we could improve ours.

We quickly realized the accessibility concerns that something like this poses. The two main concerns were first that a purely-Javascript solution, as we had before, could be troublesome for someone using a screen reader, so it would need to have a “non-JS” version. The second was that a timeline that relies on color to differentiate events could be troublesome for a colorblind person, so we would need to provide a legend.

The first issue would be easy enough to solve. We would add the timeline’s contents to the markup (HTML) first and then add any extra functionality on top of it.

The thought process for the second issue (use of color) went like this:

Color will be useless so we will have to use shapes as well. But then we’ll need a legend because color or shape don’t have anything to do with timeline events like “date created” or “date exhibited.” But legends are a bummer — so old media! Maybe we could use symbols instead? Maybe we could use EMOJI?!?!?

Beyond the fact that their symbolic nature transcends the “map a color to an idea” style of legend, emojis further a second goal that we have with the collections site, which is to “avoid feeling like a database.” They allow for novelty, comfort and humor to be injected into the digital world as quickly as typing a letter on a keyboard. In fact, as I write this post, the Oxford English Dictionary announced that the crying face emoji is their word of the year.

Thus, the emoji timeline was born. No legend required, compact in size and fun to look at!

The vast majority of objects have a timeline that looks like this:

Screen Shot 2015-11-19 at 3.49.05 PM

We acquired it in 1941 as a gift. We took a picture of it in 2015, and we’re happy that you found it now! (We borrowed the “found by you” idea from NYPL; it makes me feel so warm and fuzzy.)

There are some other ways that we acquire objects, and we use different emojis to signify them. We acquired this object by bequest, so it gets a scroll:

Screen Shot 2015-11-19 at 3.48.37 PM

Some objects are “found” in our collection; these get a magnifying glass:

Screen Shot 2015-11-19 at 3.53.05 PM

We purchased this object, presumably with dollars:

Screen Shot 2015-11-19 at 3.57.20 PM

Some objects have more frantic timelines:

Screen Shot 2015-11-19 at 4.16.47 PM

The default, emoji-free experience looks like this:

Screen Shot 2015-11-19 at 12.11.47 PM

You’ll notice a lot of cameras, too. This means that we photographed the object that year, and the icon serves as a link to take you straight to that picture – see this sidewall as an example. We actually just limit one photograph per year, because some of our objects have a lot of photos and the timeline started to look like this:

Screen Shot 2015-11-17 at 4.14.30 PM

Exhibitions, symbolized by the big eyeballs, are also clickable. They will take you to the exhibition page to see all the objects that your current object was displayed alongside.

I don’t mean to say we’ve solved accessibility issues through this timeline. As I mentioned before, a concerted look at our site’s accessibility issues will be an important next step for us.  But like our previous timeline, it’s more of an opportunity to experiment than anything else. In this case, we’re experimenting with ways to approach a project by talking about accessibility first. And of course, we’re experimenting with emoji. Always be experimenting with emoji.

Pull up a random object and check it out!

The Trophy of the Future, Version 2


It wasn’t quite the speedrun I anticipated when I first started working on version 2 of the Trophy, but I’m finally ready to call my work done (for now) and ship it off. Here’s a changelog of sorts:

  • [Hardware] Mounted the Arduino to the base using standoffs
  • [Hardware] Trimmed the cables exiting the trophy body and soldered on header pins for a clean connection
  • [Hardware] Glued the base to the trophy body using Amazing Goop
  • [Software] Developed and implemented yun-easy-wifi-switch to allow for user-friendly WiFi network switching
  • [Software] Developed and implemented linino-to-serial for Linino -> Arduino communication
  • [Software] Linino notifies Arduino of boot via linino-to-serial and displays a “loading” message until then (previously displayed nothing until boot)
  • [Software] Trophy displays the full message cycle only once an hour via cron + linino-to-serial (previously was always on)
  • [Software] Updated the Python code to allow for granular control over the trophy’s message buffer
  • [Software] Handle errors thrown by the Kimono API
  • [Software] Overhauled the Arduino code to accept communication from Linino and act accordingly

Continue reading

Yun Easy Wifi Switch

Last week, I retrieved the Trophy of the Future from Dave, our former champion and the caretaker of the trophy for the past year. Now that I have it back, I’m speedrunning some improvements on it before shipping it off to another person named Dave, the new champion.

When initially handed off the trophy one year ago, I noted the four things I hoped to continue working on when I got it back. To sum them up:

  1. Stagger message cycles so that it the program runs once an hour (i.e. make it less distracting to cats)
  2. Create a dead-simple way to reconfigure the Yun’s wifi connection.
  3. Remote login / updating
  4. Animation on the LED array (instead of just scrolling text)

I think number 2 is the most important because the trophy functions best when connected to the internet. The former Dave had the luxury of an in-home installation, but the latter Dave lives much further away and I wanted to make configuring internet on the trophy as easy as possible. This past weekend I decided to make it happen, and  the result of this work is available on GitHub.


Continue reading

Upgrading OpenWrt on an Arduino Yun Without a MicroSD Card

An entire fantasy football season has passed since finishing the Trophy of the Future, my “world’s first internet-connected fantasy football trophy,” and my league has a new champion. That means it’s time to revisit the project to tie up some loose ends! More on that will come in time, but first I want to share the solution to the initial problem I encountered.

I wanted to upgrade the Yun to the latest version of OpenWrt because opkg was throwing weird “failed to download” errors. From scanning the Arduino forums, it seemed like updating OpenWrt was the recommended first step (and as it turns out, the update also fixes Heartbleed, so it’s worth doing anyway). The instructions assume you have a MicroSD mounted in your Yun, which I don’t, but it is still possible to do the upgrade without one.

The OpenWrt image clocks in at 16 MB, and by running df -h I saw that the Yun’s onboard memory had around 20 MB free in the /tmp directory. I downloaded the latest Yun image from the Arduino website and unzipped it on my Mac, then used scp to move the file to the Yun:

scp openwrt-ar71xx-generic-yun-16M-squashfs-sysupgrade.bin root@arduino.local:/tmp/

According to Arduino’s upgrade guide, the next step would be to run run-sysupgrade on the OpenWrt image, but a second problem surfaces here. It turns out that the first thing run-sysupgrade does is copy the image to /tmp, which errors because the file already exists. I could move the file to a subdirectory so run-sysupgrade could copy it back, but the Yun’s onboard memory doesn’t have enough space for that.

The solution here, noted on OpenWrt’s system upgrade page, is to use sysupgrade – note the lack of run- in that command’s name. Like this:

sysupgrade /tmp/openwrt-ar71xx-generic-yun-16M-squashfs-sysupgrade.bin

Three minutes later, you have upgraded OpenWrt on your Arduino Yun! All the configurations should be the same, but you will have to reinstall any opkg packages.