When I was hired on at Lucid, we had fewer than 100 employees. At that time, computer and hardware responsibilities were split between DevOps, security, and office management. If you had any issue with your computer or other hardware, your best bet was to figure it out yourself or just…

Remember writing a detailed lab report or paper in school? We’ve all been there, and I doubt many of us really enjoyed it. Process and product development documentation can leave that same sour taste in your mouth if it’s just documentation for the sake of documentation. Documentation can take hours…

Recently, my team was tasked with delivering a limited version of Lucidchart to embed inside another application. Because Lucidchart would only represent a small part of the total functionality visible to the user, we wanted to make sure that we didn’t bog down the overall load time. Our total time…

Introduction Welcome back to the blog, and welcome back to this series on hiring fantastic testers. Previously in part one, I talked about what to consider before you even start the process of hiring a tester. To find a good candidate, you have to look for certain traits: curiosity, creativity,…

The perfect cross-platform solution. The Holy Grail. The El Dorado of app development. The dream that multiple languages have promised, but none have delivered. As we speak, there are likely a dozen cross-platform projects in the R&D phase—all with a couple years worth of funding and all being built with…

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…

At Lucid, we automated half of our manual regression testing for our Lucidchart Android app—knocking the regression cycle down from six to three hours.  As Lucid moves toward a continuous release cycle, we are working to reduce manual QA testing for server and native releases to only one hour of…

The Play Framework provides a lot of features, which makes it incredibly easy to scale infrastructure. However, scaling a codebase is more difficult. As developers create new components and more complex relationships, the codebase can become unruly for all. To help with this problem, one can use a dependency injection…

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…

At Lucidpress, we recently decided to revamp our image manager experience by creating a completely new image manager written in Angular 2 and Typescript. One of the key new features we wanted to add was bulk image upload, which is the ability to upload a folder with all of its…