User:Mchua/Braindumps/Learning plan
What do I need to learn in order to become a good generalist OLPC hacker? (More importantly; what do I need to make to learn what I need in order to become a good generalist OLPC hacker?) Note that this would by no means make me an expert on anything, but should give me at least a decent idea of what people are talking about. Also note that although this is a "6 month plan," it would take far more than 6-months of full time work/study to get through it all, so it's really several years of hobby-hacking time given my current non-hacking OLPC grassroots volunteer workload and the impending need to acquire some means of purchasing food.
THIS IS A DRAFT. I don't know what I'm talking about; it shows. Comments are extremely welcome. Feedback even more so. Constructive criticism most of all.
Device driver
- Write a device driver. (What for?)
- This will be... painful.
Linux
- Grok it better. (Yeah, this is vague.)
- A mildly ambitious plan might be to contribute to a kernel patch, but this is by no means the only way of going about it. And honestly, this would probably take me way more than 6 months. My knowledge of kernals and OS design is nil, and my C horribly rusty.
- Start with a re-tour through K&R to un-rustificate my C.
X / Display
- I don't even know where I'd start with learning about this - I don't know what has to be done.
Packaging
- Learn how to make a package - probably a Fedora one.
- Trying to package Sugar (as Jani did with the Ubuntu package) might be a good and useful, if somewhat challenging, start.
Applications
- I interpret this to mean Activities.
- Write (another) one (that's actually useful, not a silly game where a bird poops on cars.) Use Pygame for sanity.
- Implement mesh networking on it...
- ...and then make another one in pyGTK, and add meshing.
- This would probably take 6 months on its own, if not more.
GTK
- Get to this through building a pyGTK activity; see above. Then decide where to go.
Mesh
- I get the feeling that this would involve going back through Analog and Digital Communications 101 before anything made sense.
- Look at this more and find a better place to start.
Power management and charging
- Don't know where to start. Should look into this more. What does OHM do? What does it need?
- One project I should do, though, is "build a charger."
QA
- I would probably start out by getting a team of volunteers to work with me on exploratory testing for the current software - exploratory testing is what I spent most of my TOPP internship doing.
- It's fantastic for getting good bugs out of the woodwork in software that had to be released yesterday (and is rapidly changing tomorrow).
- ...without crushing the souls of your testers. (Really. I hated testing until Tim Coulter taught me this method.)
- I'd seek constant guidance and feedback from the Much More Experienced Testers in the exploratory testing communities that I've started to get to know.
- While doing this I'd look for ways to learn about other aspects of QA; there are many. And then flesh out this plan-segment more.
- On a fun mechanical-engineering foray, I still remember a few things about testing mechanical and material properties of products from matsci lab.
- Most of them involve breaking stuff.
- Slowly and scientifically, so it's not as fun as it might sound, although impact testing is plenty awesome.
- I've done this twice before as matsci projects; once on bicycle frames, once on a CD drive.
Performance analysis
- Still unclear on what this means or what's needed.
Community tools
- Make a useful webapp.
- Like the actual Bounties for Awesome site or something like it.