Uncategorized

ZoneTracker: Tracking JavaScript Performance with Zone.js thumbnail

Lucidchart is a highly performant web application. When editing a Lucidchart document, users expect a high frame rate and a responsive UI. To ensure a great experience, we track frame rate and UI stalls. This article describes how we leverage an existing library, Zone.js, to accomplish this. Prereq: The JavaScript…

Lucidchart is Turing Complete thumbnail

I’ve been watching the Turing completeness of Lucidchart for over a year now. As far as I have been able to prove, Lucidchart has been dipping in and out of being Turing complete for most of that time. In the past, however, I have been able to simulate Turing machines…

Why Puppeteer is Better than Selenium thumbnail

At the start of this year, we could only write end-to-end tests using Selenium in Scala here at Lucid. This was just fine for the developers here who mostly write in Scala. The problem was that learning Scala and Selenium was a high bar of entry for developers to just…

How to Debug Disk Full Errors in Redshift thumbnail

When working with Amazon’s Redshift for the first time, it doesn’t take long to realize it’s different from other relational databases. You have new options like COPY and UNLOAD, and you lose familiar helpers like key constraints. You can work faster with larger sets of data than you ever could…

I recently finished a project which required me to modify an annotation macro for Scala using the Scala Macros Paradise project. Because I was extensively modifying a macro that we were already using, I wanted to write tests to prevent breaking our current workflow and to check that the new…

Why I Don't Regret Moving Our Android App to Scala thumbnail

At this year’s Google I/O, it was announced that Kotlin would be a first-class language in the Android ecosystem. By the time of the announcement, I had already transitioned roughly 75% of Lucid’s Android app from Kotlin to Scala (and have since moved to 100% Scala). While I’ve been very…

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…

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…

Disaster-proof A/B Testing, Pt. 1: Managing metrics thumbnail

Almost every product change made here at Lucid is first validated by an A/B test. Over the years, we’ve made a lot of mistakes while running A/B tests and writing the code for managing them. In this series of posts, we’ll be sharing what we learned from these mistakes and…