Architecture

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…

Functional Programming Principles Every Imperative Programmer Should Use thumbnail

Sometimes it seems like functional programmers are a totally different breed. Even by programmer standards, they seem more nerdy than the rest. They use weird terms, such as "monad," "for-comprehension," and "lambda." They use languages that don’t end every line with a semicolon. And, no matter how uneasy Java programmers…

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…

Removing Roadblocks in the Move to Angular 4 thumbnail

Angular has become the de facto front-end MVC framework of the Web. We had been slowly adopting Angular 1 here at Lucidchart, but the vast majority of our crucial components were built in jQuery and vanilla JavaScript. We were one of the early pioneers of Angular 2. We found Angular…

Let’s be honest. Setting up a “modern” front end application in 2016 can be painful. Luckily the Angular 2 team has provided a command line tool, angular-cli, to help ease the pain. Although it is still in beta, angular-cli is a great way to set up an Angular 2 project…

Tracking data in complex Java code:  A functional programming approach thumbnail

Companies across all industries are increasingly adopting cloud technologies. Naturally, many Visio users move to Lucidchart as they step into a more modern, collaborative, and integrated diagramming environment. To help make their transition as smooth as possible, users can import existing Visio documents into Lucidchart.  We’re constantly collecting feedback on…

Angular 2 and Observables: Data Sharing in a Multi-View Application thumbnail

Recently, I started on a project to migrate JavaScript to TypeScript in one of Lucidchart’s Angular 2 applications. This application has several components, each with its unique view. For those not familiar with Angular 2, a component is merely an encapsulation of a view on a webpage with its associated…

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…