We’ve come to the end of my round of the Outreach Program for Women, which sponsored my work with the MirageOS folks this summer. I was fortunate to be able to mark the occasion by joining my mentors and an awful lot of badass Xen hackers at the Xen Project Developers Summit earlier this week, where I waved my extremely conspicuous American accent around in everyone’s face and saw some awesome presentations on Xen internals and research. (Xen on ARM is relatively performant! It’s hard to run 10,000 host VMs! The HaLVM has already implemented a whole bunch of stuff I was thinking about doing!)
I tried to have a short summary of my work ready for this conference. I generally told people something like “I did a bunch of testing on the Mirage network stack,” which while true, is not the most self-aggrandizing way to sum up what I’ve been up to this summer. “I leveraged existing solutions to provide a systematic process for randomized exploration of the potentially underspecified parser inputs,” I could’ve said (which wouldn’t have gotten me very far at this conference, but would fit in great at some others I’ve been to). Or maybe something like “I found a bunch of bugs in variable-length option parsing code with fuzz testing,” which is extremely accurate but also makes people’s eyes glaze over about halfway through.
Of course, you can just check my permanent record. That record does elide this blog, however, which is not an insignificant product of work:
lines words chars filename ========================== 123 1687 11495 2014-05-22-throwing-some-fuzzy-dice.markdown 173 1645 10629 2014-06-03-the-minnesota-goodbye.markdown 170 1780 11596 2014-07-07-parsers-optional.markdown 242 2304 14927 2014-07-08-how-to-set-the-evil-bit.markdown 246 2456 16751 2014-07-25-doing-nothing-in-mirage.markdown 60 1502 9731 2014-08-08-attack-surface-area.markdown 23 748 4781 2014-08-13-my-content-is-mine.markdown 111 1348 8956 2014-08-17-i-am-unikernel.markdown 1148 13470 88866 total
I wrote a lot more English words about generating random input, classifying responses, sourcediving, and bugfixing than I wrote lines of Python or OCaml.
- Throwing Some Fuzzy Dice - what fuzzing is, why to do it, building a repeating DHCP client, fuzzing HTTP
- The Minnesota Goodbye - finding a TCP state machine bug, submitting a fix
- Parsers Optional - an quick explanation of TCP options
- How to Set the Evil Bit - generating, understanding, and using a TCP options-parsing bug to crash Mirage unikernels; an explanation of the underlying bounds checking problem that makes this bug potentially lead to data leakage
- Doing Nothing in Mirage - a side note on configuring Mirage unikernels and the pleasure of looking at trees
- Why I Unikernel, Part 1 - some thoughts on why I <3 this project
- Why I Unikernel, Part 2 - some more thoughts on why everyone else should too
- I Am Unikernel (And So Can You) - mining some earlier posts from Hacker School on how to get started running Mirage unikernels in EC2.
Okay, What Now?
Well, I didn’t really make anything cool and new. I want to do that. I want to be able to make VPN tunnels from a unikernel running on an embedded ARM machine to a unikernel running somewhere in the public cloud and shove all of my traffic over them. I want to make a webapp that serves you the worst possible next Tetris piece given a certain game state. I want to replace my Linux Git backup host with a unikernel that squirrels everything away into an Irmin store. I want to figure out a patch for the bug @frioux reported earlier this week, at the very least!
In short, OPW round 8 is over, but I’m not done playing here yet.
Looks Like Fun; Can I Try?
OPW Round 9 has an application deadline of October 22, so there’s still loads of time to get in on that. For excellent advice on applying to and participating in OPW, check out Lita Cho’s excellent roundup, and if you still want more, there are a whole pile of excellent blogs aggregated at the Women in Free Software Planeteria. Many other interns are also posting retrospectives this week, so it’s an excellent time to go learn from other people’s mistakes.
In that spirit, here are some mistakes I made:
- not bothering my mentors enough
- not contacting the other OPW intern on my project
- not asking enough questions on the mailing list and IRC
- choosing a project that required a lot of domain knowledge that I already had, so I wasn’t forced to learn so much as if I’d chosen something else
- beginning to address some ongoing mental health issues at the end of the round; I likely would’ve found many things to be easier had I done so earlier
A short note: someone very bravely began a conversation about mental health in the Hacker School community earlier this year. This conversation led me to two blog posts that have been extremely helpful, and perhaps you will find them to be helpful too: