Between the end of high school and the first years of university, a few friends and I built a satellite the size of a soda can. We flew it under drones and balloons, put it on a stage at PyCon, on national TV, and in classrooms full of kids and teachers. We did most of it during a pandemic, with masks on, learning as we went. I was the one writing the software. This is the story from my side of the table.
6:21 in the morning
There is a photo I keep coming back to. A Raspberry Pi 3 in a red case, a breadboard with more jumper wires than it has any right to hold, and a monitor showing the same Python traceback three times in a row. The module that crashed was called Houston. It was our ground station, and it could not find the radio.
It was 6:21 in the morning. I know because the clock is in the corner of the screen, right under a low voltage warning I was ignoring. The wiring I was fighting with was not even for the radio. I was trying to get a small screen working, and a few days later I burned something on that Pi and it never booted again. Those were the first steps. Nothing about that night made it into a satellite, and all of it made it into how I work.
A satellite in a can
A CanSat is a satellite that fits in the volume of a soda can. It does not orbit anything. It goes up on a balloon or a drone, measures what a real satellite would measure, and radios it back to the ground while it comes down. The point is that everything a satellite has to do, power, sensors, a computer, a radio link, a ground station, fits on a table and can be built by people who have never built a satellite. That was us.
We called the project Octa Aerospace and the can OctaSat. The goal was simple to say and hard to do: make a CanSat good enough to be a teaching tool, so a classroom could go from "print hello world" to reading live telemetry from something they had programmed themselves.
I was the software lead. In a team that small, that meant the flight code, the ground station, the radio link, and the dashboards were mine to make work, with a lot of help from the people I'll get to at the end.
Space Apps and a promise
In October 2021 we entered the NASA Space Apps Challenge with OctaSat. Chile did not have a local event that year, so we competed under Santa Fe, Argentina, in the "Near-Space Near You!" challenge. We won the local event and went on as a Global Nominee. An Argentinian TV station interviewed the team about it, which was the first time strangers took the thing seriously.
That first version streamed telemetry over a LoRa link into NASA's Open MCT, which is an open source mission control interface. It was a good way to start and a bad way to finish. Open MCT is built for people who already run missions. We wanted something a fourteen year old could read at a glance, so Rodrigo and I later replaced it with our own dashboard. Every CanSat we built after that had its own live telemetry view, and the data stayed around for analysis afterwards. I never did find a decent photo of it, which is the kind of thing you regret years later.
The talk
A month after Space Apps, Rodrigo and I gave a talk at PyCon Chile 2021 about applying Python to nanosatellite development. We walked through what a CanSat is, why Python was the right tool for a team like ours, how the dashboards worked, and how the project had changed the way we communicated as a team. It is in Spanish, and I still look impossibly young in it.

What was actually inside
By the third revision, OctaSat SN3, the hardware had settled. The on-board computer was a Raspberry Pi Zero W running Linux, sitting on a custom PCB with the sensors mounted as hats. This is the one-pager we handed out, and it explains the can better than I can.
The flight code was a set of Python modules, one per subsystem: GPS, the environmental sensor, the IMU, the camera, a buzzer. A main loop read everything, packed it, and handed it to the radio. On the other end, Houston received the packets, decoded them, and fed the dashboard. The photo of four boards on one laptop is what "fleet" looked like for us. Each one had to get the same code, the same calibration, and its own dashboard before a test day.
It is worth remembering when this was. The most capable model anyone had access to was GPT-3, and later an early GPT-4. GitHub Copilot existed and helped a little with boilerplate, and that was it. Most of that code came out of Stack Overflow threads, Udemy courses, datasheets, and reading library documentation until something clicked. Nobody was vibe coding a satellite. Every line was earned, and the ones that broke taught me more than the ones that worked.
What stayed with me from that part is less about satellites than about software. Hardware does not care how clean your code is. A loose wire, a dead sensor, or a radio that drops packets at range will find every assumption you made on the bench, and the only defense is to test the way you will fly: same board, same power, same distance, same weather. I have never since trusted something that only worked on my laptop.
The code is open
Most of the latest codebase lives in one open source monorepo, and the rest is spread across the Octa Aerospace organization on GitHub. A fair warning: this is code written by students learning as they went, so read it as a working example of what a CanSat actually runs and not as the way to do it. It is real, it flew, and if you want to build one it is a place to start.
Octa-Aerospace/octa-launchOpen source CanSat for stratospheric exploration: schematics, PCB and flight software in one place.PythonMIT6 Octa-Aerospace/OctaSatSN3The SN3 board's software, the revision in the photos above.PythonEverything else, from the balloon flight simulator to older experiments, is under github.com/Octa-Aerospace.
Tests, drones, and a homemade antenna
We tested a lot. Bench tests, then range tests, then drone tests where the can went up under a quadcopter and we watched the telemetry come in live. I was there for every test and every launch attempt we made. The last of those attempts has its own story and deserves its own post, so I'll leave it for another time.
Pointing a Yagi at a small dot under a drone while someone reads packet counts off a laptop is not glamorous, but it is the moment the whole stack either works or does not, in front of everyone. Some of those test days were filmed by Chico Maker, a friend and the nearest thing we had to an influencer, who covered what we were doing on his channels when nobody else was looking.

Teaching it back
I was never the teacher of the group and only took part in a couple of the workshops we ran, but those are among my favorite memories of the whole project.
I have always pictured myself as a kid with odd interests and big ideas about engineering, so I treated the kids the way I would have liked to be treated at that age: tell them how things actually work, cheer for them, celebrate the small wins, and protect that spark of curiosity so they go after their own ideas. What surprised me was how sharp some of them were. There is a kid with glasses in the photos below. I showed him a handful of commands to move around a Linux terminal and he picked them up almost instantly. Later I found him wandering through directories on his own, fascinated. That is the whole point of the project in one afternoon.
We also ran a separate workshop for STEM teachers, who wanted to bring this into their own classrooms, and in January 2024 OctaSat became one of the courses in the summer STEM academy at Pontificia Universidad Católica de Chile, OctaSat, mi primera misión satelital, with a first day titled Hello Universe, and welcome to Linux. The feedback from both kids and teachers was better than we expected, and a lot of the people we still know in this world we met in those rooms.
On the news
Along the way the project got covered by outlets we grew up watching. The one I still send to people is the T13 segment, where Adonis and Matilde brought the can to the studio.

A few more, if you want the outside view:
- Conclusión TV on the Space Apps result, October 2021.
- Cooperativa Ciencia ahead of a balloon launch, September 2023.
- Colegio de Ingenieros on the team, February 2024.
- The Space Apps 2021 team page and the Academia STEM UC 2024 listing.
The people
None of this was mine alone. The original team was Manu, Mati, Rodrigo, Cata, Jorge, Fer and Adonis, with me on the software. Andrea, Paula, Jota, Javier and Nelson joined for the last stretch and did real work on top of that baseline; most of them are in the field photo. Thanks as well to Chico Maker for showing up with a camera. There are also friends who worked on this with us and are not in these photos, and I'm grateful to them too.
Most of the team eventually had to step away to survive their degrees. That is a normal ending for a student project and not a sad one. We learned to build something real, we taught it to people younger than us, and we had a lot of fun doing it.
The last launch attempt, and where things went from there, is a story for another post.