They say that good things come in small packages. Maybe they should say “micro packages.” Our latest developer of the month, Paul Sokolovsky (pictured below), is working on projects that require microcontrollers (MCU) and software that have been scaled down for use in highly portable formats. And to get the job done, he uses a DragonBoard 410c for development and testing purposes.
“Many projects are about scaling up — to multiple cores, multiple servers, the cloud. However, our project ‘MicroPython’ is about scaling down and running a well-known, popular high-level language Python on small embedded MCU systems, allowing users to prototype and develop IoT and other applications quickly and easily. MicroPython isn't solely for MCUs though, it's very portable and configurable product intended to open innovative uses of the Python language.”
Paul, who is based in Antalya, Turkey, is one half of the MicroPython team. He works with UK-based Damien George, who started the project. According to Paul, the seemingly crazy idea of running Python on an MCU belonged to Damien, who ran a successful Kickstarter campaign (amassing nearly 1,400 backers) to build a Cortex-M4 based board with MicroPython. At that time, Paul was working on various small scripting languages for his own IoT/home automation needs, and had never considered rewriting Python for use on smaller systems. Paul persuaded Damien to release the source code online (it is available on GitHub). Now he shares maintenance responsibilities for this ongoing project with Damien.
To learn more, have a look at this video showing MicroPython running on an embedded IoT-ready micro-controller board:
As a part of his work on MicroPython, Paul uses a DragonBoard 410c, which he tells us “sits firmly on my desk to perform various development and testing tasks.”
“I start by pulling the latest changes from GitHub, which is made easy by the DragonBoard's built-in Wi-Fi,” Paul said. “I then build the code using a fresh Linaro AArch64 toolchain as provided for the DragonBoard, to check any compile-time issues for 64-bit ARMv8 architecture. Then, I run an extensive MicroPython test suite, which runs various snippets of Python code using both ‘big Python’ and MicroPython, and checks that the results match.”
As an example, Paul recently tested to determine if MicroPython's physical memory access API plays well with the DragonBoard. He then made the outcome a set of examples for how to access GPIO on the DragonBoard.
“Hopefully, projects like ours show beginners that it can be easy to get started, and pave the way for them to learn more advanced features of the DragonBoard,” Paul said.
We recently caught up with Paul to get more insights about his work and his thoughts about open source development.
What is one thing that makes your company culture unique? Do you have any rituals?
We aren't the first project which brings Python, or a very high-level language to microcontrollers, so we try to learn from the prior [efforts] and strive to do better than any of them. As for rituals, we have the usual magic rituals of a professionally managed software project – daily code reviews, a code style and conventions to follow, unit tests to write — that sort of thing.
Share with us a fun fact about your company?
It's the usual open source fun fact — Damien and I have not yet met in person!
Where do you and Damien get inspiration for your work?
We get inspiration from our users and contributors. It's actually hard to maintain an active open source project in your own free time. You “forget” that you started to contribute to the project to get ahead of your own tasks, concentrate on the project instead, and the only way it works is that you're telling yourself: “Ok, I'll work on the project core, as I know a lot about it and I’m in the best position to do that. I just hope that other folks will use it to make something I wanted or find interesting/useful.” It's amazing when it works out that way!
Who is your technology hero?
Adam Dunkels. I consider him a father of IoT. He showed that one can still do one wonders with a little amount of code, even in the era of gigahertz CPUs and gigabytes of RAM, and these wonders can be useful in the modern world too. His ContikiOS was the first IoT OS (before the term “IoT” was established), and the uIP and lwIP TCP/IP stack which were developed for it are now leading embedded TCP/IP stacks in the industry.
What do you love about embedded and IoT development?
They say that many open source projects appear from scratching your own itch. And IoT is very engaging in that respect too — almost everyone could use a light which turns on when you are approaching, but only at certain hours; or say turning off that heater when you know it won't be used for the next several hours. Being able to resolve smaller chores to make life more comfortable, and resolve it in a way you like is what makes IoT so interesting and rewarding.
What do you like about the DragonBoard 410c?
I have a lot of development boards in a drawer of my desk, but the DragonBoard 410c sits firmly on my desk to perform various development and testing tasks. It packs a modern CPU and has Wi-Fi, Bluetooth 4.0, and GPS onboard. The Wi-Fi is very useful for daily work, and BT4.0 and GPS are there when needed for IoT projects. But impressive hardware capabilities is only part of the story.
The support I have found is even more important, and that includes software, documentation, and community support… The documentation is comprehensive and continues to improve over time. And there's a growing community at 96boards.org to discuss various matters and see the latest projects.
What advice would you give to other developers?
Please value open source development. It's like a road network — most of the time you can ride a road for free, but it's quite an effort to maintain it in good condition. Please contribute back to open source via patches and helping other users. If you make money out of it, please consider sponsoring or hiring people to work on it.