Frustrated with traditional computer programming languages, Czaplicki developed his own
Programming doesn’t have to be painful.
To prove the point, Evan Czaplicki, A.B. ’12, developed Elm, designed to ease some of the most common headaches caused by traditional programming languages.
Czaplicki never set out to rewrite the rules of computer programming—he just got tired of feeling frustrated.
“The kinds of problems I kept running into were so silly,” he said. “For example, trying to center an image in a box or reuse visual elements on multiple web pages was so incredibly difficult. I became obsessed with fixing these foundational issues.”
That obsession fueled the development of Elm, which Czaplicki began working on during his senior year as a computer science concentrator at Harvard.
Through his coursework at the John A. Paulson School of Engineering and Applied Sciences (SEAS), he saw that many of the best ideas generated by academic computer scientists never entered into mainstream computer programming. With Elm, he set out to bridge that gap. Developing the language grew into a senior thesis project, which he completed in collaboration with Stephen Chong, associate professor of computer science.
Elm is designed to let programmers quickly achieve their goals without struggling through hundreds of what Czaplicki calls “historical accidents,” computer programming rules that made sense for the web 15 or 20 years ago, but have not aged well. His creation draws on the sub-discipline of computer science known as “functional programming,” which has flourished in academia for the past 40 years, but has been given limited attention in the mainstream. This sub-discipline allows programmers to focus on the essential core of the problem without getting caught up in the accidental complexity, issues that are indirectly related and must be resolved along the way, with traditional programming languages.
“Elm is a wonderful language. It cleanly and elegantly applies functional programming paradigms to building web-based user interfaces. It's fun and satisfying to use,” Chong said. “Evan has done a fantastic job of not just creating an exciting and practical language, but also building community around the language.”
One of Elm’s most popular features is the elimination of runtime errors, which are crashes that occur when a user runs a program. In typical languages, programmers must conduct time-consuming tests to determine whether errors will occur, and it is nearly impossible to catch them all before a piece of software is released. Elm avoids this by incorporating "type inference," a breakthrough from the 1970s that allows the computer to conduct thorough testing on its own. Elm automatically detects these potential errors, preventing crashes for users and lowering the overall testing burden for programmers.
Czaplicki designed Elm with many of the features he felt were missing from well-known programming languages. For example, Elm runs in a web browser with no software to download or install, so users can easily access it. The system is also optimized to run quickly and integrate smoothly with other programming languages, like Javascript.
“One thing that has really driven the attention and the adoption of Elm is that it emphasizes simplicity and ease of use in a way that rocks the boat a bit within the existing functional programming community,” Czaplicki said. “I’m consistently looking for ways to reduce the learning curve.”
The strong—and growing—Elm community that contributes to the development of new features is a major reason for its popularity. Czaplicki, who now works on Elm full time as a team member at the cloud-based presentation software firm Prezi, is excited that his programming language is attracting such a dedicated following. The number of users, which now reaches into the thousands, has doubled each year since Elm was launched, Czaplicki said. At least five firms now use the language in production, including NoRedInk and CircuitHub.
While he enjoys the challenging technical work involved in crafting and refining Elm, he said being able to share his project with so many people has been the most rewarding part of the process.
The current focus of Elm is programming in web browsers, but Czaplicki has his eye on expanding this to other platforms, like iPhone and Android, and perhaps even to robotics. He hopes the language might someday change the way people think about computer programming.
“Elm has simplified the process for professional computer programmers, but maybe we can use it to simplify programming for everyone,” he said. “That would make programming a lot more fun, and a lot more accessible, for many more people.”