Seven Habits of Highly Effective Gems

These days, writing a Ruby gem is incredibly easy, but writing a good one isn’t. I recently flew down to San Antonio to give a talk at RubyConf on specific ways that gem authors can make their users and contributors happy. Happy users means more traction for your library, which means more bug reports, more contributions, and, most importantly, more fame for you as the library author.

The habits cover a range of concerns, from documentation (make sure your Quick Start is incredibly short, and your README is incredibly long) to code design (use a layered architecture to enable your users to use your software in ways you didn’t expect) to ease of contribution (use Bundler and Vagrant to give your contributors a turnkey test environment).

After the talk, Austin Ziegler, maintainer of the mime-types and diff-lcs gems, told me that it was a good talk and I only got two things wrong. This number was later revised to three.

Enjoy the whole talk here:


Posted on November 25, 2015 .

Genius on Android: Typography and material design

The last few months have been an exciting rush of designing and building our recently released Android app—a brand new app, built from the ground up with the principles of material design. For our initial version, we designed a simple, clean UI with Genius’s bold brand colors.

That’s because the real showcase was our content—2 million song lyrics and millions more annotations from users and artists, full of rich content like quotes, in-line annotations, links, embedded videos, images, and (of course) GIFs.  We knew this content needed to render quickly and seamlessly now, and in the future, no matter how it was displayed—in a separate pane, in a complex tablet layout, or interposed with other UI elements.

To accomplish this, we used a custom TextView and custom Spans, an object that stores appearance information about a String.  Our video thumbnails, images, and GIFs are displayed by slicing this rich text and inserting it with ImageViews into a list.

I spoke at Droidcon NYC on August 28, 2015 about achieving the effects of professional print typography in Android’s native TextView, from essentials such as line spacing and custom typefaces to fully custom effects, using real-life examples from the code base of the Genius Android app.

You can watch the video now, and if you’re attending Droidcon London, you can catch an expanded version of this talk, or chat with me in person, October 29-30. 

And a reminder: if you too are excited about thoughtfully designed apps for people who love music, Genius is hiring mobile engineers for both Android and iOS

— Lisa Wray (@lisa), Android engineer at Genius

Posted on October 1, 2015 .

New API Integration: IFTTT!

We’re excited to announce that as of today, Genius is available as a Channel on IFTTT! IFTTT (If This Then That) — pronounced like “gift” without the “g” — is a tool for wiring together accounts and services. This builds on our existing developer API and continues expanding the ways you can get creative with Genius as a platform.

We’re starting off with two actions to take and two triggers to which you can respond.

The actions are following annotations on a web page or on a song with your Genius account. These make it easy to start hearing about annotations on things that matter to you.

For example, if you’re a SoundCloud user:

IFTTT Recipe: Follow SoundCloud songs you like on Genius connects soundcloud to genius

Or if you want to keep up with music that’s getting press instead:

IFTTT Recipe: Follow music articles from Entertainment Weekly on Genius connects entertainment-weekly to genius

The triggers are for new annotations created by you with Genius Beta on any web page or new annotations by anyone on a specific web page. These can be used in Recipes that respond to annotation activity from across the web.

Using Genius as a research tool?

IFTTT Recipe: Save your Genius web page annotations to Evernote connects genius to evernote

Or maybe there’s a site you want to keep tabs on:

IFTTT Recipe: Get a daily email digest of Genius annotations on a web page connects genius to email-digest

Want to let Genius control your lighting?

IFTTT Recipe: Blink your lights when a web page is annotated with Genius connects genius to lifx

Okay, that one might just be for the extreme fans. But plenty of our other published Recipes can really expand your Genius experience.

Maybe what’s most exciting is that this integration multiplies the potential for apps built directly on our API. Now when your client creates new annotations, that can be linked up to trigger actions on other services.

So give it a try! We’re excited to see how you use IFTTT with Genius and what new Recipes you come up with.

— Daniel Luxemburg (@dluxemburg), engineer in test at Genius

Posted on July 13, 2015 .