TechAtom
Physical programming bricks for children and students to experiment with data processing
What is TechAtom?

TechAtom logo
The TechAtom physical programming bricks are an idea I starting following in 2019. The ambition was to allow children and students to understand programming and data processing without having to use a computer (or other screen based devices).
The way you connect the bricks determines the program and you can easily experiment with different configurations. It turned out to be similar to node editors, but it's a unique experience to be using your hands to do the configuration of the blocks.
Every block is a unit in a data processing pipeline and can either serve as input, output or a processing node or a combination of those. The simplest "program" is using a button as a input device and a light as an output. Connecting these two bricks make the light turn on when the button is pressed.
On data processing and data types
Visual programming languages with blocks do require data input blocks to be configured. For example a color block will also need you to choose the color with a color picker. While this is fine on a computer screen, for physical devices it poses a much more complex challenge.

Data processing with multiple type conversions in the initial simulation
Therefore TechAtom needed to be designed so that few simple physical blocks would allow many interesting variations while still being intuitive to use. This was enabled by using an universal flexible data type with implicit conversions rules to allow a lot of variation with just a few building blocks.
Status: project paused
In 2020 we started a company to bring TechAtom to the market as a product. We build the first prototypes and did user tests with children aged 10 to 14. Unfortunately the market situation and product complexity were such that we decided not to continue the project.
While we still see potential in the idea, it would require a lot of resources and partners to bring it to market.
My goal is to document the project and share the idea with the world. I'd be happy to open source it if anyone is interested.
The story
In the beginning of 2019 I was once again playing way too much factorio when I started thinking about how this amazing world of 2D visual programming could be brought into the physical world. I quickly realised that hexagons are bestagons, because it would allow for many different configurations and especially allow typical operators (i.e. two inputs, one output) to be build.

One of the early props using a D1 Mini and a LED ring (output atom)
I quickly wrote a first simulation. The possible configurations seemed to allow interesting configuration. I started designing and coding the first prototype. A 3D printed version of the brick with a ESP8266 D1 Mini was the first working prototype to connect two bricks and make them communicate.

3D model of the first operator brick (data processing atom)
One of the trickiest parts was to get the connectors right, because they needed to be low cost and very reliable while being constantly used (and remember it's children using those). After experimenting with magnets, gold plated needles and popo-pin connectors, I settled on machine pin headers, which worked reasonably well.
I went through a ton of iterations of 3D models, PCB designs and different types of bricks before even the software part became the real challenge. Working with Arduino is fun until algorithms, protocols and tesing becomes the real challenge. Uploading every change to a brick and debugging it on hardware became too time consuming, so I decided to finally set up a more professional pipeline. One that allows testing, modularity and running simulated hardware. It had been a while since I worked with C++, so I learned a lot. Getting low-level is always fun.

A configuration for a light keyboard with the final prototype
Some iterations later I settled on a first set of bricks, including multiple input, output and data processing bricks. Those were supposed to be used for the first real world test. Designing and implementing all bricks took some months, but when it all came together, we had a lot of fun playing around with many different configurations.
The first user tests with kids aged 10 to 14 showed promise and it was super satisfying to see them actually use the real bricks the way they were intended to.
Links