I am an embedded C++ software engineer living in Santa Cruz. I'm working on boot firmware at Rivos, and I've worked at Google as an SRE (which was almost, but not entirely, unlike embedded software); at Apple on thermal management firmware; and at Qualcomm writing wireless communication software in mobile phones.
Working as an embedded software engineer, and then as a site reliability engineer, gives me a unique perspective: the very big (Google's global production network) and the very little (billions of devices using Qualcomm Snapdragon chips shipped worldwide). My aspiration is to join these worlds: apply SRE practices to embedded Internet-connected Devices.
I felt compelled to respond, in blog format, to an article in The Wall Street Journal discussing whether programming is a trade and whether it can be taught in more ways that in a four-year college.
When my wife migrated her blog to Wordpress, I invoked the power of Apache's mod_rewrite to redirect all traffic following old links to the new location.
I showed up at a Boulder Linux User's Group meeting and discovered that there was no speaker, so I gave a lightning talk on my project at the time, UART as an interprocessor communication mechanism on smartphones and other devices.
Because I'm married to a librarian, I'm compelled to try to organize our books using labels printed on the spine. I found the best way to do this was to write a PostScript document to get the formatting just right. Read more about my Fun with PostScript.
In June 2010, I spoke at the Boulder Linux User's Group about GPS, titled How to get lost while knowing where you are.
I spend much of my day working on other people's code. People who have uncivilized ideas about how to indent their code. Read more about the secrets of tabs in vim.
Last week, I was debugging some code and came across a troubling situation: A variable that I set in one function was suddenly and quickly being mutilated before I managed to read it in another function. After hours at the debugger, I discovered the culprit was struct packing.
Not long ago Visual Studio reported memory leaks in my code that weren't really leaks; the memory in question just hadn't been freed yet. Read more: Spurious memory leak messages in Visual Studio.
e-mail: ted.logan@gmail.com
Copyright 2006-2025 Ted Logan / ted.logan@gmail.com