Posted by Elecia White.
On episode 93 of the Embedded.fm show, we were joined by Joel Sherrill, the lead on the Real Time Executive Multiprocessor System (RTEMS) project.
RTEMS is a real-time operating system. To be more specific, it is a POSIX-compliant single process, multi-threaded operating system. On the show, we discussed choosing an RTOS for embedded systems, making sure to touch on determinism and latency. We also talked about the less common features such as symmetric multiprocessing and mutexes with inherited priorities.
This is not some small RTOS that only one person (or one computer science curriculum) has used: RTEMS started development in the late 1980s, to be used by the Army for missile control. It has come a long way since then. It is certified for use in space by the European Space Agency. It has been ported to a huge number of platforms, including Raspberry Pi and Atmel AVRs. Oh, and, RTEMS is also free and open source. (FREE! And you get the source code! Do you know how much RTOSs usually cost!?! FREE! Yay!)
I think it is cool but I’m not sure I could work on it.
Oh, not because I tend to program bare metal or with a tiny RTOS: even though RTEMS itself is bigger than my usual embedded software, anything that can contort to fit on an AVR is fine by me.
The problem occurred to me as Joel told a story of getting a Mars Curiosity mug handed to him during a conference. It was during a talk so he didn't find out until later that the mug was a thank you because part of Curiosity runs RTEMS.
It would be so awesome to write software that went to space, that went to another planet! Except Joel only finds out when someone tells him, for example, by handing him a thank you mug.
I crave the applications. I need to know what my code did after it left my repository.
This will not come as a shock to anyone who has heard me spout off my verbal resume: DNA scanners, educational children’s toys, race cars and airplanes, gunshot location systems, operating room and intensive care unit (ICU) gear. I’ve gotten to work on some neat things. I am extremely fortunate that embedded systems and signal processing are cross-industry needs.
Realistically, not all of them are quite as thrilling as they sound. My interaction with race cars and airplanes was working on an inertial measurement unit (IMU). I still find inertial sensors fascinating but one way to glaze the eyes of a too-chatty airplane row-mate is to describe what an IMU is. I understand not all engineering activities can sound fun, even when they actually are.
Nonetheless, I am generally in it for the applications. I like to talk about what I do, it reinvigorates me when I get frustrated. The last time I spoke at an undergraduate computer science symposium, the name of my talk was “Applications Matter!”
My closing statement was:
At some point, you will hate your job. People will disappoint you, the technology will bore you and the thought of going to work on Monday will not be a happy one. That is why they pay you: to do something you wouldn't otherwise do. You can make it a little easier on yourself if you choose applications that excite you, that matter to you. Make sure the story you tell yourself isn't only about money and technology. There is goodness to be had, whether it is making information easier to find, or reducing people’s stress through games and music, or building supercomputers that further our scientific knowledge.
Many of my best application stories come from ShotSpotter (“I work on a gunshot location system” was a great introduction; it produced the happy opposite of the inertial measurement unit eye-glaze). The only reason I know about the pregnant lady who survived a gunshot wound or the hostage situation that resolved without injuries is because our customers told us. (Our phenomenal customer support person asked but, still, the folks who paid the bills told us the stories.)
Going beyond the financial rewards of a job, the satisfaction of solving difficult problems, and the pride of a job well-done, there is still another piece: the knowledge that the work produced something good for someone else. Last week on Embedded.fm, we spoke with James Laen Neal of OSHPark (makers of small run boards). Laen said he chose the vibrant purple PCB color so he could see the board in other people’s projects. While not quite the satisfaction of “I made that”, I understand his motivation. It would be good to know that he had a hand in helping that project become a reality.
With software that anyone can download and use, like RTEMS and other FOSS projects, it makes it tough to know who is using it and for what applications. I wonder if Audacity knew how much I relied on their tools when I was looking at gunshot audio files. I remember a coworker sending a brownie basket to an open source compiler support team for telling us how to fix our issues (instead of signing up for costly support). But I don’t think I’ve ever thanked Cygwin, GCC, Python, or any of the tools I use regularly. They are such big projects, I’m not sure who I would thank. However, I couldn’t create the things I do without them. Given my temperament and need to see my software doing things, I often fail to appreciate the effort that goes into making the tools and foundation software. It is critical, forming the shoulder of giants upon which I stand.
RTEMS might be one of those tools you are using. Whether you are making spacecraft, medical devices, or just hobby projects, remember that people like Joel often only hears these stories at conferences or in passing. If you are using it, well, maybe say hello and thanks.
For myself, the next time I feel a little guilty that I don’t contribute to some open source project or feel a bit selfish that I work for money instead of (only) passion, I think I’ll assuage the feeling by looking at what FOSS tools I have open, finding the lead on the project, and sending them a thank you. Even if it isn't a brownie basket, I suspect a simple “I used your software to get things done, thank you!” message will help them, maybe by make their Mondays a little easier.
If you are in college and want to get involved, RTEMS is a mentor for both Google Summer of Code and ESA Summer of Code.
Brownie photo by jeffreyw [CC BY 2.0 (http://creativecommons.org/licenses/by/2.0)], via Wikimedia Commons
Top Comments