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…

Apt transport for S3 thumbnail

How Apt transports work, how we wrote one for S3, and how you can write your own. Debs in S3 Lucid Software uses Debian packages (debs) for packaging and installation. Custom scripts download the debs from a private AWS S3 bucket. As much as we loved the quirks of homegrown…

Who the Heck Wrote This? 3 Ways to Deal With Bad Code thumbnail

We’ve all been there. After hours or even days of tirelessly trying to narrow in on the cause of some small bug, you finally close in on a particular section. You know the problem is in there somewhere, but the code is spaghetti—an impossible-to-read, jumbled mess of logic that does…

Angular 2 Best Practices: Change Detector Performance thumbnail

Introduction: Angular 2 and Lucidchart Lucidchart launched in 2010 as one of the very first and most impressive graphical applications on the web. Over the course of several years, it has grown organically to include an incredible array of features. However, for many users it has become unwieldy over time,…

Simplify your AWS config with Cumulus thumbnail

We’ve all been there: your production system is running great and uptime has never been better. One Wednesday morning you wake up, enjoy a nice breakfast, and head off to work—when a few dreaded notes from your phone tell you that production has just gone down. You buckle the racing…

7 leadership lessons from a first-time manager thumbnail

I joined a rapidly-growing startup called Lucid Software (creator of Lucidchart and Lucidpress) in January 2013 after turning down a job offer from Microsoft. While I was grateful for the Microsoft offer, I wanted a job where there would be opportunities to move quickly into a leadership position. I love…

Uglier than a Windows backslash, odder than ===, more common than PHP, more unfortunate than CORS, more disappointing than Java generics, more inconsistent than XMLHttpRequest, more confusing than a C preprocessor, flakier than MongoDB, and more regrettable than UTF-16, the worst mistake in computer science was introduced in 1965. I…