Photo by Bank Phrom on Unsplash

When I read Clean Code, there was one passage that stuck with me more than any other. Robert Martin was writing about the structure of code in a way I hadn’t heard anyone do before (he’s referring here to what journalists call the “inverted pyramid”):

We would like the source file to be like a newspaper article. The name should be simple but explanatory. The name, by itself, should be sufficient to tell us whether we are in the right module or not. The topmost parts of the source file should provide the high-level concepts and algorithms. …


Many of our customers have been telling us that Lingo is becoming their team’s ultimate source of truth for both brand assets and UI component designs.

But there’s a missing piece: for some teams, Lingo can’t fully do its job without a level of automation and integration with other tools. We’ve heard you say you want to add a build step for your apps that pulls the latest icons into code repos, generate design tokens from colors stored in Lingo, and more.

Today we are making this possible by releasing the first public version of our REST API to Plus…


Photo by Alexander Andrews on Unsplash

We’re working on some improvements to the navigation experience on Lingo, and I needed a large number of images to upload, in order to make sure the navigation features scaled well. After hunting around for a bit, I remembered that NASA maintains huge image archives with lenient access and usage policies.

I thought it might be fun to see if I could download several thousand images from NASA’s archives using only command line tools. Here’s what I ended up with. …


Photo by chuttersnap on Unsplash

During a recent overhaul of Lingo’s private API service, which is built in Python’s Flask framework, we started exploring a “Ports and Adapters” style architecture. There are several components to this architecture, but the pattern I’m going to share here is what we call the ActionRunner, which is a variation on the Command Bus pattern.

The goal is to provide a common gateway for any operation that could change the state of the app (ie write to the database). Part of the inspiration for this came from the adoption of Redux in our web client, which made debugging complex state…


GitUp’s Map view

Joel Chippindale recently transcribed an old talk called “Telling stories through your commits,” that is an excellent guide to maintaining a useful commit history in git (though it applies to any version control system).

One aspect of this post that I want to highlight is the idea that your commit history is a crucial piece of documentation. The key insight Joel shares here is that unlike other forms of documentation, the commit history is never out of date. …


One of the revelations of adopting Redux for state management in a frontend app is the ability to follow state changes precisely through Redux dev tools (available as a browser extension). Debugging is an order of magnitude easier when app state is explicit, unified, and each update can be traced to a specific action. This is great for development environments, but what about error monitoring in production?

Until recently, we had been using Opbeat to monitor the Lingo web app frontend built with React & Redux. Their setup was pretty nice, almost what we needed: nice stacktrace, list of Redux…

Ben Judson

Software Engineer at @literati, previously @nounproject & @lingo_app. Austin, TX.

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store