Architecture

Soon after I joined Lucid Software, three years ago, we decided to build infrastructure for a new kind of data-driven diagram. One that derived its primary structure from the data itself, that would enable people to think visually about their data. Our goal was to prototype a simple diagram that…

Working from home changes everything When the world started working from home in mid-March 2020, we noticed substantial and sustained changes to our customer’s usage patterns. Our performance metrics demonstrated these drastic changes. By the end of March, load times were 20-30% slower across the board, even more anomalous than…

This article is the second part of our series on why COBOL and lack of COBOL developers aren’t the real problem in maintaining legacy systems. See the first piece here. In the first part of this series, we headlined the most common mistake non-technical people make with legacy systems and…

This article is the first part of a two-part series on dealing with technical debt. The second part is here. Our modern world runs on an enormous amount of technology. A lot of it is older than people realize. This technology is mostly invisible when it is working, but when…

Seven Steps Of Highly Effective Warehouse Migration thumbnail

In the spring of 2018, our data science team at Lucid decided to move our data warehouse from Redshift to Snowflake. We decided to make this change because we felt like Snowflake was a better fit for our data flow and analysis. We knew it would be a significant change…

Cryptography Techniques: A Simple Overview thumbnail

I’ve always loved learning about different ways messages are encoded. As a little kid I used simple substitution ciphers and created my own alphabets to encode messages to myself. From different books and my computer science classes in college, I learned more about cryptography. I found that, no matter how…

Streams and Temp File Cleanup: Fixing a Real Production Issue thumbnail

Mismanaging resources is one of the easiest ways to bring down a production system. In a development environment, it’s easy to ignore open streams and temporary files, but at production scale, they can have a hugely negative impact. Unfortunately, it’s far too easy to overlook these issues while developing, even…

4 Problems with Java's Exceptions and How Scala Can Help thumbnail

Error handling is important for many common operations—from dealing with user input to making network requests. An application shouldn’t crash just because a user enters invalid data or a web service returns a 500. Users expect software to gracefully handle errors, either in the background or with a user-friendly and…

Compile-time Dependency Injection With Play thumbnail

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…