The path to learning is not always straight. Unlike those who prefer video tutorials or learning through trial and error, I learn through reading or classroom instruction. Sometimes, though, I can get distracted by the way the material is presented.
On episode 158: Programming Is Too Difficult For Humans, we spoke with Fabien Chouteau about the Make With Ada competition. Before scheduling him as a guest, I knew very little about Ada. I hadn't learned it in college and I've never seen it in industry. I had no idea anyone was targeting it for embedded systems (let alone that it has been designed for embedded!).
Before recording, I try to learn enough about guests and their subjects to figure out some good questions. This was clearly a time when Wikipedia was not enough to get me to the point of sounding somewhat knowledgeable. I asked around for an Ada book but couldn't find one that wasn't expensive. I should have looked more at the contest’s Getting Started page but instead ended up at the list of tutorials at the Ada Information Clearinghouse. Of those, the one that caught my eye was titled Ada and SPARK on ARM Cortex-M from Inspirel.
Ada aside, this is a fascinating introduction to embedded systems. It dealt with many of the issues that are here in the Embedded Wednesdays and Embedded Systems Engineering 101 series: delays, random numbers, state machines, digital inputs and outs, etc. The Inspirel document presented memory maps and link files. It covered multiple different boards, comparing and contrasting processors and manufacturers.
I admit I picked up a bit of Ada but I kept getting lost in their pedagogy. Presenting a way to get started in embedded software is hard. Trust me, I know this. Hence, my interest seeing how to they talk about relatively complicated link files without saying “oh, no, never look there” and how the author let the GPIO interface get just a little messy before introducing the concept of a hardware abstraction layer. Sometimes the reader has to struggle a little bit before they are ready for what you need to tell them. I was pleased at how they presented state machines with the normal switch statement/flowchart monstrosity before showing how state tables work (oh good! I was worried that I was the only one encouraging that).
I know that my co-contributors on this blog think about how to present things. But I also know that while they have a loose direction with their blogs, they don't have it entirely planned out. This is where they are trying out and refining their material. I am so pleased with how it is going: the writing continues to get better (yay for practice and editing). At the same time, a subject I care about gets more perspectives and more audience.
I've been slacking on my Taking Apart Toys posts. Oh, I have excellent excuses but I know that is what they are. I have more ideas and about where to go (analog signals and oscilloscopes are next!) but I don’t have the necessary motivation right now given other work and life distractions. Work has been busy and the podcast gets higher priority when time is short. Also, it is summer and I live at the beach, so, you know, it isn't all work’s fault. I blame the otters.
Anyway, for the Ada podcast, I really intended to spend more time learning Ada (and SPARK) but got distracted by someone doing a good job of teaching. I don't know why you are here. Some of you are experts in the field already; I can only imagine you are here to find other ways to explain complicated ideas and watch our performance as we muddle through. I hope you are enjoying the presentation of ideas as well as the material.