Behind the Scenes

Package Management: Stop Using Version Ranges thumbnail

The problem Package and managers Packages are collections of software: data files, binaries, executables, source archives, etc. These are published, resolved, downloaded, and installed with package managers. Unfortunately, in 2017, almost every package manager has the the ability, the default, or even the common practice of creating nondeterminism in the…

Upgrading From Play Framework 2.3 to Play 2.5 thumbnail

Recently I had the opportunity to upgrade the Play Framework from 2.3 to 2.5 on all of Lucid’s JVM-based services. A lot of the upgrade involved pretty routine things like changing implicit parameters from Lang to Messages or updating uses of play-json to match the new API. However, over the…

Angular 2 has several different paradigms for bootstrapping an application. The default platform that is used in Angular’s examples is the dynamic browser platform. Platform browser means that this application is going to be bootstrapped in a browser and will therefore have direct access to the DOM and other browser…

How to Make a Presentation in LaTeX thumbnail

When I was tasked with creating a presentation to share with my co-workers at our weekly tech talk, I chose to use LaTeX. While I briefly considered other tools, like Google Slides or PowerPoint, using LaTeX allowed me to easily separate the styling from my content and create my own…

How to Create a Downtime Dashboard Tool with Zapier and Google Sheets thumbnail

At Lucid we want to monitor the health of our services both individually and in aggregate. Last month we worked on setting up a new downtime dashboard tool. We wanted the following functionality: a record of incidents containing the duration of downtime, the service(s) affected, and information about the cause…

5 Smart Strategies to Increasing Productivity in the Workplace thumbnail

In the information age that we live in, attention is one of the most precious resources a person has. Traditional advertisers, online companies, and device manufacturers fight hard for every millisecond  of a consumer’s attention. At a workplace, frequent distractions are one big productivity killer. On average, it takes 23…

Improving Angular 2 Load Times and a 29KB Hello World App thumbnail

At the beginning of this year, Lucidchart rebuilt its editor in Angular 2. The new editor delivered a better experience with far fewer lines of code. Both engineers and product managers enjoyed it because it made writing features easier. The old (left) and new (right) Lucidchart editor But, there was…

If you’ve ever scripted in Ruby before, you’ve more than likely encountered deeply nested arrays and hashes. These nested structures often come from Ruby’s JSON parser, but Ruby itself doesn’t have effective methods for dealing with them. Specifically, sorting these structures: the standard routine only shallow sorts the top layer…

Lucid Software validates every pull request for its internal code base. Running over 1000 builds a day across 80 projects strains the robustness of our code, tests, and tools. For example, several times a week, builds complained about the default Java version. It didn’t make much sense. Our servers are…