Position: PhD Candidate
Current Institution: University of Washington Seattle
Abstract: Programming Language Tools and Techniques for Computational Fabrication
Recent democratization of fabrication techniques has revolutionized manufacturing. Desktop versions of devices like 3D printers laser cutters and CNC mills are now available at affordable prices making them increasingly common among end-users hobbyists and non-experts. While the reduced hardware cost of manufacturing devices has created new opportunity for casual makers to innovate and explore the corresponding software pipeline has not advanced as dramatically. Design tools mesh editing software and CAD frameworks are developed primarily for trained experts and thus pose a steep learning curve for beginners. Even with crowd-sourced solutions working with pre-existing models requires substantial expertise. Together with the fact that the fabrication process (typically multi-stage) itself is slow and hard to debug these design level challenges frequently lead to delayed results failed prints wasted resources and frustration. My work focuses on some of these challenges by viewing the entire computational fabrication pipeline as a compiler. First it provide formal semantics to commonly used representations for 3D modeling. This formal foundation aids the development of a decompiler that automatically reverse engineers high-level computer-aided designs from low-level representations by recovering latent structure. An equality saturation based second decompilation phase discovers even high-level representations using dynamic rewrites and inverse transformations. A second application of dynamic rewrites in the domain of carpentry shows wider applicability of this approach for developing optimizing compilers for different kinds of fabrication techniques. Both these equality saturation based approaches require manually writing the rewrites which itself is tedious and error-prone. A novel framework for automatically inferring rewrites shows how the entire pipeline can be automated and be applied to more traditional compilers.
Chandrakana Nandi recently graduated with a PhD from the Allen School of Computer Science & Engineering at the University of Washington Seattle. She was a member of the Programming Languages and Software Engineering lab. Her PhD work focused on developing programming language foundations and applying them to computational geometry and fabrication for building useful tools like program synthesizers and optimizing compilers. She won an Adobe Research Fellowship in 2019 for her work on using program synthesis for decompiling meshes to recover high level structure in the form of Constructive Solid Geometry. She is currently working on generalizing some of her techniques and applying them to general-purpose compilers and program synthesizers.