It’s time for a concrete todo list. I covered the general subject areas in my New Direction post but this list will put some flesh on the bones with some actual objectives. As per David Allen’s GTD (which is a great read) some of these things will go into an active project list and some will go into a someday/maybe list so I don’t spread myself too thinly.
- Learn the basics of GCC and Make. Just enough to build some basic projects, to know what more needs learning and to have a framework to hang future learning onto.
- Read the GNU Make Manual
- Complete the University of Reading Begin Robotics course.
- Write an ‘envirodump’ project to dump out platform and environment specific variables (e.g. size of built in types, include file search paths etc.) A useful tool to have in the toolbox.
- Write a unit test lib and a debug/logging lib. More useful tools.
- Learn the basics of valgrind and dbg
- MIT’s Circuits and Electronics 6.002x course
- UTAustin’s 6.02x Embedded Systems – Shape the World course
- UC Berkeley EE40LX Electronic Interfaces course
- Build a Raspberry Pi – XMBC media centre
- Build an Arduino based oscilloscope
- Read through K&R C 2nd ed. It’s been a while since I read this and it’s the perfect way to get refreshed. The style and content is a bit dated now but it’s short, to the point and packed with detail. The exercises make good katas (or koans or whatever else you want to call them) as well.
- Build a Lego robot platform. 2WD track driven chassis with room for motors, gearbox, battery pack, power conditioning module, processor, sensor interface breadboard and flexible sensor mounting points. Build motor driver, servo driver, HC-SR04 ultrasonic distance sensor and reflected IR sensor interfaces and supporting software on Arduino and then on Tiva Cortex M4 board. Add CC3100 WiFi board and write remote control app.
- Find some decent resources on concurrency
- Complete the Princeton Algorithms Part 1 course
- Set up a toolchain for TI’s Tiva TM4C123 dev board in Eclipse CDT on Linux
- Read Managing Projects with GNU Make http://www.oreilly.com/openbook/make3/book/
- Complete reading and projects in ‘Make: Electronics’ book
- Complete Arduino Bots and Gadgets book
- John Valvano’s Cortex M4 books
Well then. Ellen’s finished her GCSEs and is waiting for results to come through in a couple of days before jetting off to college: our home education journey is finally at an end. It’s been fun but I’m looking forward to a new direction after such a mammoth project. Looks like I’m not the only one ready for change as I’m now under orders to ‘get out from under my feet and find a proper job’. Given that it’s been getting on for ten years since I’ve done any serious software development I’m clearly going to have to do a little polishing and play a little catch up. Apparently valves are no longer à la mode in the difference engine world. Someone told me punched cards have been replaced as well but that was transparently a wind up. I mean… as if.
So it’s time for a plan. I’ve had a long time to consider what my next move was going to be and I’m pretty much coming back to my old stomping ground of embedded software. I want to shift emphasis a bit though, so I can get closer to the silicon. Quite a few of my spare time projects over the last few years have revolved round robotics and electronics so it seems like a good fit.
With that in mind here’s a rough outline of what I want to get done.
- C and C++ are obviously top of the list. I think it’s safe to say I could still make a living off Ada but my C and C++ is fresher and it’s a thoroughly respectable platform for embedded work.
- I’ve been living in Linux land for a few years now and it would make sense to leverage that experience into embedded Linux dev. There’s a whole world of devices out there taking this route.
- A refresher on some of the more CS type subjects wouldn’t hurt either. Could definitely do with some MT work, and a bit of practice on algorithms and data structures would be handy – I suspect the likes of Boost and huge swathes of the standard library aren’t going to be available if I end up on restricted resource platforms.
- I’m not too badly off tooling-wise. I’ve been using Emacs and Sublime Text and Git and the like quite a lot but it would be sensible to delve a bit more deeply into the likes of Eclipse and IAR and CCS. Need to dig a bit deeper into Make and GCC as well. And finally get an Eclipse Tiva toolchain up and running on Linux.
- I’ve been playing with Raspberry Pi and Arduino and a couple of TIs dev boards for MSP430G2 and CortexM4. Definitely going to spend more time with this. Probably hack some Lego Technic PF stuff and build a robot platform of some description to build some interesting projects.
- Longer term I want to do a few Electronics MOOCs, work through some books and projects and I definitely want to have another crack at the Signals and Systems MOOC from IIT Bombay – need an intro text first though I think.
Seems like quite a lot to do once it’s all written down like that…