How does...one reach this level of understanding in systems programming? My coursework in this area was very general at best. Are there any courses out there that focus on this theory-meets-real-world level that you folks would recommend? Would prefer one in Linux, but I'm not that picky.
Or does one just happen into these jobs as an apprentice and spend years learning on the job?
I used to work with wireless driver guys. Some of them had no degrees (including one who worked at Lucent on Apple's Airport). Just started out doing small stuff and worked their way up. Others had EE backgrounds. One of the things about wireless is that the salient concepts are more EE than CS, even if you're on the software side. A specialized EE course on wireless communications will teach you a lot of the underlying concepts you need to understand.
In the specific case of 802.11 (different from 'Wi-Fi' which is a marketing term from the Wi-Fi consortium), you'll also need to be familiar with the IEEE 802.11 specifications. You can do this by putting aside a block of time to read parts of the actual specs [1], supplemented by the O'Reilly 802.11 books by Matthew Gast [2] which I found to be really helpful during my time working with various 802.11 modules.
Adrian could speak for himself but my guess is from what he has written in the past that he got his start by being mentored by one of the FreeBSD developers. FreeBSD is big on assigning mentors to those interested in developing for it. So if you have an interest in getting all up in the underwear of an Unix OS you might consider developing for FreeBSD. I'm sure they would love be to have another developer join their ranks!
As most other things it comes to passion. If you literally write C in your dreams and spend every waking hour hacking OS kernels you'll get to be very good.
By doing it. If you look at enough code, ask specific questions on IRC or mailing lists, and follow through on the references, you'll eventually learn.
> If I chose, say, the Intel 11ac parts then I'd have to implement a lot more of the fiddly stuff to get good behaviour
Okay, I'll have to wait another year to get 11ac on my laptop :) It's not, like, super critical to me, 11a is enough for most daily tasks and for e.g. system upgrades I just connect to Ethernet (BTW it's super easy to set up seamless handover between Wi-Fi and Ethernet on FreeBSD, using link aggregation)
[+] [-] rufugee|9 years ago|reply
Or does one just happen into these jobs as an apprentice and spend years learning on the job?
[+] [-] rayiner|9 years ago|reply
[+] [-] sohkamyung|9 years ago|reply
In the specific case of 802.11 (different from 'Wi-Fi' which is a marketing term from the Wi-Fi consortium), you'll also need to be familiar with the IEEE 802.11 specifications. You can do this by putting aside a block of time to read parts of the actual specs [1], supplemented by the O'Reilly 802.11 books by Matthew Gast [2] which I found to be really helpful during my time working with various 802.11 modules.
[1] [ http://standards.ieee.org/about/get/802/802.11.html ]
[2] [ http://www.oreilly.com/pub/au/692 ]
[+] [-] X86BSD|9 years ago|reply
[+] [-] erikarn|9 years ago|reply
TL;DR is - I learnt on the job and as a hobby, and I came to it having some idea of kernels and networking already.
[+] [-] gonzo|9 years ago|reply
Long ago, Adrian got taken under the wing of a well-know FreeBSD developer.
[+] [-] mee_too|9 years ago|reply
As most other things it comes to passion. If you literally write C in your dreams and spend every waking hour hacking OS kernels you'll get to be very good.
[+] [-] nunez|9 years ago|reply
do it enough times, and you too will write blog posts like these.
[+] [-] andreiw|9 years ago|reply
[+] [-] ori_b|9 years ago|reply
[+] [-] sydney6|9 years ago|reply
[+] [-] floatboth|9 years ago|reply
Okay, I'll have to wait another year to get 11ac on my laptop :) It's not, like, super critical to me, 11a is enough for most daily tasks and for e.g. system upgrades I just connect to Ethernet (BTW it's super easy to set up seamless handover between Wi-Fi and Ethernet on FreeBSD, using link aggregation)
Nice work, Adrian!
[+] [-] atemerev|9 years ago|reply
[+] [-] ori_b|9 years ago|reply
[+] [-] dingdingdang|9 years ago|reply
[+] [-] gigatexal|9 years ago|reply