User:Mchua/Braindumps/Learning plan

From OLPC
< User:Mchua‎ | Braindumps
Revision as of 08:53, 24 April 2008 by Mchua (talk | contribs) (New page: 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 hacke...)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

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.