Continuing with our recent theme of abstraction in data applications, Dave King gave a talk last month explaining his design principles for "Making Code Sing: Finding the Right Abstractions." Nailing the best abstractions is a quintessential software challenge. We strive for generality, flexibility, and reuse, but we are often forced to compromise in order to get the details right for one particular use case. We end up with projects that we know have amazing potential for use in other applications but are too hardcoded to make repurposing easy. It’s frustrating to see the possibilities locked away, just out of reach.
Dave's talk discussed design principles that balance object-oriented and functional programming techniques to create a hybrid abstraction architecture. The result is both high levels of customization and easy reconfiguration. And, like a Lego box filled with potential, it’s really fun, leveraging our creative lateral thinking just as much as our linear mind. How is visualizing genes like visualizing music? How is analyzing countries like analyzing proteins? How does manufacturing line look like a social network? The answer is in the abstractions.
The sharing economy is rapidly becoming a collaboration economy, and the ability to build off of others’ work—and more fluidly off of our own—is key. By writing software with this in mind, and by supporting abstractions that allow for analogies to be drawn between use cases, we give our code wings.
As you'll see in the video, Dave shared a data application built with these concepts in mind, a version of Conway's game of life. Try it out, take it in some unexpected directions, and tell us about it!