Over the years I have tended to specialize in a particularly focused areas of development. Until recently, this has primarily been in locking and scheduling, particularly with respect to multiprocessing and real-time. Since I have joined Intel and been working on the Yocto Project, I have had to branch out quite a bit.
From the Linux kernel side, I've updated serial drivers, forayed into accelerometers and industrial I/O, debugged x86 early boot errors in the VM, contributed to the start of an upstream modular Linux kernel configuration system, mapped out minimal configurations and tooling for whittling things down, as well as keeping an eye on some of what I used to contribute to and fixing bugs as they arise.
Outside of the Linux kernel, I've worked to enable EFI support of some new platforms, re-factored facets of image building and early boot, performed a similar minimal configuration exploration for user-space, fleshed out support for image generation using the ext file-systems, and generally made a nuisance of myself to those who actually know what they're doing.
While I miss the ability to truly focus on a particular problem and dig deep into brain-bending execution graphs involving multiple threads, atomic variables, and memory barriers, I also appreciate the value of an increased awareness of how all these pieces fit together to form a greater whole. I'll continue to try and squirrel away some time to work on things I'm most passionate about, but overall, I believe this time spent on the Yocto Project has made me a better developer.