Breaking the React Barrier
The hype and shortcomings of the software revolution • what did software developers do in hunter-gatherer times? • how one developer teaches MIT and Harvard students how to make almost anything
Welcome to the first edition of Electronic Atoms! My goal is to inspire software engineers who want to work on substantial hardware, robotics, energy, aviation, biotech, or AI problems. I hope to build a community of engineers, investors, journalists, and other operators interested in deep tech.
The first bit introduces this Substack, what it is about, and considers where software engineering fits in the technology space. The second contains today’s article, where today’s guest Leo McElroy helps software engineers build software-enabled technology to manufacture and manipulate physical objects.
Introducing: Electronic Atoms
This series of interviews with interesting software technologists is born out of my personal opinion that software is not living up to the hype. Software is supposed to transform everything we do: help us advance medicine and eliminate disease, manage our supply chain to secure material prosperity for everyone, and connect us around the world so that we stop fighting each other. If we don’t, it should at least supercharge our defense and crime-fighting capability to keep us safe.
As an engineer in the startup business, I get to talk to other startup engineers on a regular basis. Most of us are building web-based SaaS applications with high UX value and low performance SLAs where a high percentage of data interaction is CRUD. In lay-person terms, it’s one of the many beautiful web apps composed of sleek dashboards and well-designed forms, backed by months of user research and days of coding. It probably helps you manage employees, eke a few dollars through some clever insurance arbitrage scheme, or most commonly, figure out a smarter marketing or sales strategy.
If this resonates with you and you want to read about people who build software for a prosperous society, then this Substack is for you. In particular, if you are a software engineer, our guests will show you that you don’t need that much more know-how than what you have right now. That which you do, you can typically acquire incrementally. This is similar to how you typically learn new things in web development, for example, how to use to a new kind of database or deploy to a new hosting service.
How to make almost anything with software
The goal for the inaugural edition of Electronic Atoms is to help software developers expand the possible medium of expression they can interface and the possible effects they can have on the world and assume the role of the technologist in building impactful solutions for the modern tribe. In this chapter, I will cover how to get started learning hardware skills.
Society has people who do basic things to function (e.g., grow food). Technologists support these people. The technology we build has become too focused on supporting technologists and disconnected from essential things which lead to productivity and prosperity. - Leo McElroy
Our guest is independent software researcher and educational technologist Leo McElroy. He’s one of the most interesting people I know, as well as the closest to real-life Tony Stark; if a miniature arc reactor was physically possible, he’s the most likely of all the people I know to be able to build an Iron Man suit in a cave.
Leo writes software libraries that help engineers design, simulate and manufacture real objects. He got his start when he opened the Middlebury Makerspace. To learn digital fabrication and how to use the tools, he tried to take Fab Academy, but no Makerspace was offering the course during the Summer, so he found a space with the tools and watched the lectures online. He went on to build his own tools for digital fabrication, including the Gram language and SVG-PCB, two software programs which are now taught as the standard tools in Fab Academy. After Middlebury, he won a Watson Fellowship to travel the world to meet makers and work in different Makerspaces and Fab Labs. He now designs tools and kits at Hack Club, a global community helping teenagers learn to code, as well as helps instruct the Harvard/MIT course How to Make (almost) Anything.
The software advantage
There is a misconception that the hardware and manufacturing space is accessible only to developers skilled in embedded systems and manual memory management. Leo discovered that a background in web development is actually an asset, and now codes primarily in JavaScript. Using JavaScript allows Leo to easily share tools with a wide audience through the Web.
His first projects were inspired by his work with fabrication machines such as 3D printers and laser cutters. He found the design and production software unintuitive and wrote Gram as a system of describing structured 2D patterns that is friendly both to the user and the machine. Out of this came the realization that good tools are essentially IDEs to craft programs. Also, most hardware designs are programs: they are parametric, hierarchical, and composable. This insight is the key behind the SVG-PCB program, an IDE to build electronic boards using either a drag-and-drop GUI or a specialized programming language, which is now taught in Fab Academy and How to Make (almost) Anything.
With Hack Club, Leo led the development of Sprig, a handmade hardware console and software toolkit. Teenagers can obtain a copy of the console for free if they build a game ins the online editor and submit it as a pull request. It uses a runtime engine built by the kids at Hack Club that allows JavaScript games to run on the console. No C, no memory management, just vanilla JS!
The rewards: becoming a technologist
Knowing that you can build manufacturing technology with vanilla JavaScript should convince most software engineers that you can expand the boundary of what they think they can do. Leo teaches students to go from an SVG-PCB design to milling copper boards and soldering chips to building functional devices with embedded computers.
If empowering oneself by building electronic components and devices is not enough, becoming a true technologist opens the door to learning about a diverse set of fields that building React apps just doesn’t. Through his work on CAD tools, for example, Leo learned about computational geometry, numerical optimization methods, graphics, and constraint solvers. You can learn about any field you’re interested in by building software tools for it.
Finally, becoming a competent technologist and acquiring the ability to work in any real, physical context opens your career prospects. There are startups in energy, biotech, manufacturing, agriculture, and other real, physical fields who need people who can think of their designs as programs. Breaking the React barrier allows you to believe you can help solve some of the most pernicious and painful problems in society.
How to get involved
Leo accepts pull requests, and contributions to his many open-source tools for digital fabrication are welcome!
If you want a crash course, you can take Fab Academy. It’s a course offered by many Fab Labs around the world. It does cost time and money. The curriculum is freely available online: by devoting 10 hours per week you should be able to mill a copper board and make a computer in two months.
You don’t have to take a class, though. If you think of something you want to make, you will likely be surprised by how easy it is to obtain the skills to prototype it, and your software engineering skills will go a long way in helping you. If you need equipment, look for a local Makerspace.
Once you can do that, make something for yourself, like a peripheral for your sick gaming rig or a little device that allows you to turn the AC on from your phone.