18 May 2017
Solving Big Problems on Tiny Computers
Not all big software problems require big computers.
When people talk about scale in the computing world, it’s usually related to managing heavy website traffic or processing large amounts of data. At Gaslight, I love to solve large scale problems. It’s a way for me to improve how I design code and exercise my creative thinking skills. It also means that I’ve built something valuable and people are using it.
Since joining Gaslight, I have worked on projects with databases containing millions of rows, high uptime requirements, and apps with a large number of simultaneous users. Projects at Gaslight often require large-scale problem-solving.
I also love the other end of the scale: using tiny, resource-constrained computers to solve big problems.
Bring on the Tiny Computers!
Thanks to advancements in technology, computers that cost about the same as a fancy cup of coffee can fit in your pocket and run on a small battery for hours. They also come with WiFi, Bluetooth or even cellular data connections!
This new tiny hardware opens up exciting possibilities. For example, the OpenAPS project is shaping the future of Type 1 Diabetes care. It runs on a tiny computer and controls an insulin pump to keep blood glucose in check. I’ve seen what OpenAPS has done to improve the lives of people close to me. I’m happy to have contributed to the project, and I also gave the T1D and Tiny Computers talk about it at the CinciJS meetup.
Businesses are using tiny computers for fleet and asset tracking, warehouse management, security and more. People are using voice-activated assistants like Amazon’s Alexa to control tiny computers throughout their homes. A company called FarmBot is even building an automated farming machine.
Tiny But Powerful Solutions
It might seem like large and small scale computing don’t share much in common, but they complement each other well. The design and development practices at Gaslight work at both ends of the scale. Gaslight designers have mobile usability in mind from the start (phones are tiny computers too!), and our development practices on the server side have evolved to support lots of always-on, connected devices.
My own development skills have also evolved as a result of my experience with tiny computers. Last year I started working with the Elixir language because it works seamlessly on a server or on a resource-constrained device. I’ve also joined the Nerves Project as a core team member. Nerves is a game-changer for developing software for tiny computers, and it’s so exciting that I’m giving it a full blog post soon.
Exciting innovation is happening in both large and small scale computing, and I’m fortunate to have a front-row view of the convergence with my work at Gaslight and in the open source community. The next time you hear me talking about project scale at Gaslight Coffee, don’t be surprised if I have a tiny computer in hand.
Further Reading
- The OpenAPS Project - https://openaps.org/
- T1D and Tiny Computers Talk - https://youtu.be/dFNNfa72UVY
- Farmbot - https://farmbot.io/
- Greg Mefford’s Elixir Meetup Talk - https://youtu.be/YMVL4275Zog
- Nerves Project - https://nerves-project.org