538 karma · joined March 21, 2008
Remote: Yes (available for remote work only)
Willing to relocate: No
Technologies: ARM Cortex-M, Agile, Bootloaders, C, C++, Device Drivers, Embedded Systems, FreeRTOS, GNU/Linux, Microcontrollers, Microsoft Windows, Python, QEMU, Tech Writing, Test Automation, Testing
Résumé/CV: https://thepottshouse.org/paul/portfolio/Complete_Resume.htm...
Email: paul@thepottshouse.org
I am seeking fully remote work in low-level embedded or related software development, ideally working with a team in Central, Mountain or Pacific time zones. I would prefer to be a full-time direct hire, but will also consider hourly contract work full-time or part-time.
I have decades of professional experience designing, implementing, testing, debugging, documenting, and maintaining software projects in a variety of languages, on a variety of platforms. Since 2000, I have specialized in embedded development. I also have experience writing documentation and training materials, leading small teams and projects, and mentoring junior engineers.
Anyway, my enormous efforts and long hours got me a "meets expectations" review. The company imploded just after I completed that first year, and so my equity was worth nothing. Good times!
Remote: Yes (available for remote work only)
Willing to relocate: No
Technologies: ARM Cortex-M, Agile, Bootloaders, C, C++, Device Drivers, Embedded Systems, FreeRTOS, GNU/Linux, Microcontrollers, Microsoft Windows, Python, QEMU, Tech Writing, Test Automation, Testing
Résumé/CV: https://thepottshouse.org/paul/portfolio/Complete_Resume.htm...
Email: paul@thepottshouse.org
I am seeking fully remote work in low-level embedded or related software development, ideally working with a team in Mountain or Pacific time zones. I would prefer to be a full-time direct hire, but will also consider hourly contract work.
I have over 30 years of professional experience designing, implementing, testing, debugging, documenting, and maintaining software projects in a variety of languages, on a variety of platforms. I have developed software for platforms ranging from the Apple Macintosh, to Microsoft Windows, to Linux, to the Apple Newton, to embedded devices. Since 2000, I have specialized in embedded development. I also have experience writing documentation and training materials, leading small teams and projects, and mentoring junior engineers.
- writing non-fiction and fiction - making original music and podcasts - developing educational hardware/software projects - developing my own programming languages - continuing to refine and catalog our large home library - gardening and transitioning towards growing more of our own food.
I'd spend much more time involved with my kids since my wife and I already homeschool, but I can't put very much time into it now.
- Older versions of iTunes had a great "home sharing" function that allowed sharing the library with devices running iTunes on the LAN. I used this very extensively. iTunes running on my 2008 Mac Pro still runs the server, and there is kinda-sorta client functionality in Apple Music, a bit hidden, but it is not reliable (constantly disconnects mid-song). Also, there was never an iOS client which would stream from this server. There were some half-baked attempts at open-source apps that would do it, but Apple broke them by encrypting the streaming across my own LAN.
- iTunes stored podcast and audiobook files in a simple and transparent way. Now podcasts (accessed using the separate Apple Podcasts app) are stored buried in Library subdirectories with long gibberish filenames. Although they're really just MP3 files with extra tags, it's now very difficult to just grab an episode by filename and save it elsewhere or forward it to a friend.
- iTunes had best-in-class tag editing. Apple Music's tag editing is buggy.
- Don't get me started on the "iTunes Match" debacle. https://www.macrumors.com/2021/08/05/itunes-match-users-repo...
Jobs had a vision of the Mac as a media hub for managing your collection and I liked that vision. Apple even (eventually) removed DRM from iTunes downloads. Forcing me into DRM and subscription services? No thanks. What I've done instead is, gradually, buy many dozens of used CDs and rip them, to replace any lossy iTunes files I purchased years ago. My entire library is now CD + ALAC (lossless) + purchased FLAC files that some vendors offer (and which were never supported on iTunes or Apple Music, but play flawlessly from the Synology). I use rsync to sync my iTunes library to my Synology NAS, and use Synology's free iOS apps to stream the whole library on our iOS devices, or on laptops and desktops, just use the web player. It works great and I can stream to stereo receivers without any difficulty as well using an AudioEngine B-Fi. No streaming services, no monthly bills.
https://www.theverge.com/2023/7/19/23800006/intel-nuc-comput...
These were the perfect sweet spot for me between abusing low-end laptops and shelling out real money. My kids put them together with me and it was a nice learning experience for them, too.
I was hoping I'd be able to upgrade/replace these piecemeal as needed. I guess I'll have to look into other replacements for when these give out.
I see "This context sets the stage for the introduction of the Akai S2000, which we can discuss in the next section, "Development and Release." Would you like me to continue with this section?"
Then, later, "For the next section, "Impact and Influence," we can explore how the Akai S2000 influenced music production and discuss notable artists or albums that used the Akai S2000. Would you like me to proceed with this?"
At least the sources cited seem to actually exist...
Actually I do mind - I'd like to see C with some additional control structures. I wrote a bit about this in a blog post a few years ago: https://thepottshouse.org/paul/the_books_that_wrote_me_blog/...
Also, I feel like many developers never learned do/while and continue, or the variations that are possible in a for loop other than just incrementing and testing a single variable, and their code can often be simplified using these things while removing goto.
It doesn't seem like it is at all idiomatic in C++ so I'd be curious to see what you're doing. As another poster mentioned it would certainly interact poorly with RAII, but not all code needs or uses RAII in all functions.
My stepfather hated the fact that whenever I was working on it, he couldn't get clear radio reception for his classical music listening.
For a while I was working for a self-driving car startup; I had an equity arrangement that, if everything went _just right_, would supposedly be worth about 700K after 4 years of employment. I knew this was a long shot, but I was working hard for that, harder than I might have otherwise been willing to work. What actually happened is I hit the one year mark, 1/4 vested, and shortly after that the company shut down, so that extra work and stress only ultimately harm, not help me, although I did learn a bit, though not as much as I was hoping to.
So, a windfall of enough money to pay off my mortgage or significantly improve my positioning for retirement. $700K had my attention. I know that's just a theoretical number and I'd have to sell the equity and take various hits on that, but I could fantasize about retiring early, shifting to part-time, etc.
A smaller amount like $100K would allow me to make a huge payment on our house, which would drastically reduce the interest I have to pay over the life of the loan, so that also could be life-changing, but not as dramatically.
$50K would bring back most of what I blew from savings after having to cash out the last 401K. I think $75K would about make up for everything I lost because of that last job loss.
$10K would probably immediately go into projects, like repairing bathroom ceiling, replacing a dishwasher, getting some more shelving, a couple more desks for my kids, upgrading some ancient laptops, etc. Or, we might be able to repair a car that's been sitting around for months waiting on money to repair it. Not really life-changing but life-improving.
$600 is about week's food expenses for our family of nine and I wouldn't say no to that - it would allow me to increase our savings a little bit.
$100 is pizza and wings for the family.
I quickly discovered that I was really ill-prepared in math. I took geometry and Algebra 1 and 2 in high school, with some pretty awful teachers. My school didn't offer AP classes. I had taken about everything my high school had to offer including chemistry and physics, but I failed the math placement exam and was in classes with 17-year-olds who had 3 semesters of AP calculus or IB classes. So, I had to take remedial algebra and an elementary functions class before I got to Calculus 111. That class was heavily oriented towards math majors (prove everything). Some of my fellow CS students realized this and started taking math requirements over the summer at other schools that taught them a little easier. A CS major would have required more calculus, discrete math, abstract algebra, linear algebra and probably some other classes that I have forgotten; it was basically a math major + programming.
So, I had to make a shift - I decided to major in English (my other love) and take a Computer Science minor. I took every programming class my schedule allowed (operating systems, assembly language, 2 semesters of Pascal+data structures, a programming languages class, an algorithms class, audited a computer architecture class) and taught myself C and Macintosh GUI programming on the side, and started developing HyperCard XMDs and XFCNs and working on instructional multimedia for faculty. I've worked as a software developer/engineer more or less since graduation in 1989 with a B.A. degree, doing all kinds of programming, including >20 years spent specializing in embedded and DSP programming (yes, of course I use math constantly, mostly algebra, but some calculus concepts such as PID and digital filters, a practical rather than whiteboard approach), but with an English degree, just teaching myself as much as I could on the side, and I never went back to school.
So, I kind of love Computer Science, I definitely love programming, I definitely love math despite still being relatively bad at it, but I really don't like academia.
Some of them had huge weaknesses evident from the start - for example CVS had little support for maintaining directory structures. The upside of CVS is that when things got screwed up, which they did often, I could go in and fix up the hidden files, since they were more or less human-readable.
Git seems to have the edge because it is reliable - I've never seen it crash - and because it can do just about anything I've ever wanted to diagram out. It's also very good about being able to roll back mistakes.
My beef with Git is the user interface. It's often still very hard to figure out exactly which command I need and the structure of commands, and their options, are often very non-orthogonal. Using checkout to branch is pretty much the simplest example I can think of. The fact that so many git commands have output that tells you what to do to fix the inevitable problem you're going to run into next is kind of a tell that the functionality is badly structured into commands. I have two "front ends" to Git - TortoiseGit if I'm on Windows, and Stack Overflow if I'm not.
If you've never heard of Voodoo, it was a commercial product for Mac and worked really well, with its concept of "orthogonal version management." I think this concept is still interesting: https://link.springer.com/chapter/10.1007/3-540-60578-9_4 It also had a feature I miss frequently, which is meaningful support for non-text files. Back when I was doing Mac programming I used this a lot.
The other one that I think has things worth studying is darcs. The Haskell source is quite amazing, although it has not really become popular in part because, at least when I last tested it, it was pretty slow. http://darcs.net/
I think Git's ties to GitHub are problematic. I know it's not required to use it with GitHub, there's the GitLab alternative, but it's the infrastructure that's been presented to me at my last few gigs. It has a lot of nice features but it encourages so much ceremony about the most minimal code change that it adds a lot of friction and it's easy to mistake activity for progress.