(no subject)

"Do you want to restore from saved draft?" "Uh... I wonder how long ago that was. What did I say?"


I guess I didn't get very far last time. Hi internet.

for the most part I don't feel compelled to make posts unless I'm depressed about something, which I haven't been in a while. life has been pretty stable; the biggest problem recently has been motivation to actually work on my research and decide on some direction to push for that will produce publishable results, so I guess in some sense I am back to write about my troubles again, but mostly I wanna share a small story.

my recent experience collaborating with some folks from Columbia, which resulted in an SOSP publication*, was a cool adventure, but also cemented my cynicism about how far out of the way of actual intellectual innovation you have to go to obtain results that will impress reviewers in the systems community. so much as I like my research project, I don't have any idea where I'll try to publish next, and I'm afraid of committing to any one particular direction (e.g. looking at device drivers, or SMP, or education) because it feels like each one is risking being a big waste of time. recently I think I've been getting over it, shutting out my advisor's [distorted] voice in my head that says everything I do needs to be towards getting another SOSP or OSDI paper (after it occurred to me that Jiri, who just graduated, never had a top conference publication himself until this very same one I was on, in his last year), and just plugging away at code to make various immediate improvements. it feels good for the default activity during the working day to be "hacking" rather than the old "worrying".

* (check it out, I have an erdös number now! when I told my dad, who's a neurologist and whose number is probably large and due to incidental collaboration with statisticians, to brag about it, I asked what his number was, he said "5; I'm on your birth certificate.")

over the summer (during which I was at Mozilla again), at one point I was visiting Facebook to play magic with zizzy and some of his friends. meeting one of them, I shared with him what my research was about, and was surprised how impressed by it he was - he pretty much bubbled with enthusiasm, saying how cool he thought it was that I was trying to tackle an "impossible" problem, trying to find tricks and concessions and so on to make it possible but still useful. it was a moment of perspective, a small culture shock (in the academia vs industry sense), and it lent some encouragement that even if I despair about what it takes to publish somewhere I'm still working on something cool and fun and... fulfilling. I hope I can keep that feeling from fading.

a long way while learning

the last two weeks have been a real trip through hellfire for my feelings of fulfillment as a grad student. I'm hoping today marks the end of it.

two mondays ago I finally figured out a crisis i've been feeling about my lesser personal project, the static analysis tool (pdf). up until now-ish, all the actual programming I've done for research has been on this, trying to take it beyond dinky-class-project scope by giving it inference and constraint-solving, but "mysteriously" whenever I sat down to work on it I'd feel this terror of actually spending time and energy figuring out the problems that I just, well, hated having to deal with. finally I realised this means I wasn't enjoying it anymore, and should stop working on it, and figure out a small workshop to polish up what I had and submit to for a sense of closure. the instant I ran this idea by my advisor he seemed perfectly happy with it as long as I was gonna try to publish it someday (which made me feel pretty foolish for not reading the signs months earlier, and saving a ton of stress).

the next crisis came in the form of garth suggesting I collaborate with this professor from columbia's research group on an effort they were making for an SOSP submission (whose deadline is in five weeks). coming right of the tails of my above realisation, my initial reaction was "hell no, I'm not spending another minute giving my hands to someone else to do grunt-work evaluation-research; I need to spend quality time with my greater research project, the one that actually inspires me right to the core." but after talking to a bunch of people, I convinced myself to sign on, so I could get experience (a) doing a concerted group effort towards a many-author top conference submission, (b) doing evaluation-research, which i'm still pretty scared of, (c) collaborating and using research tools other than my own toy one. I think a little bit of reality distortion field on garth's part may have been involved too.

so jiri estimated that, to do enough to warrant coauthor credit, I'd have to work basically half-time (with my two classes my only other obligations) until the deadline, which is, well, pretty scary. already I've been falling behind on the project email threads because everyone else is more familiar with the codebases, more experienced as researchers, and working on it fulltime instead of halftime (quartertime, really, so far). (there was already an intimidating moment where jiri offered, "you could implement this cool feature" -- "oh, I wanna do that" -- "but it'll require familiarity with my codebase, and you gotta get it done well before given the deadline so we can use it for benchmarks, and I'm sure I can do it working fulltime" -- "oh... you'd better do it then... I'll find something else ...".) so given the speed they're already moving at I'm scared I won't be able to find a task I can meaningfully claim as my own before someone else decides to do it. so, woo.

the final blow came today, when this educational workshop sent me a week-late rejection for the paper that de0u and I coauthored about putting 15-410 and my research together. an astute follower will note that this is my 3rd paper rejection this year (the rust pldi submission also didn't make it) -- which hurts far worse than this rejection in particular; I mean, in the last week of lateness I thought of a zillion reasons I might reject this paper myself; no, the part that hurts is how the dice have fallen the wrong way for me every single time so far. but surprisingly, the reviews mostly seemed to be "too narrow scope; this is the wrong venue for you, dood", and i just couldn't bring myself to be angry at the reviewers because the infuriating thing is they're all right; it's just that publishing means you have to run the evaluate-write-polish-submit gauntlet arbitrarily many times before you finally get validated. (although, I'm really not in love with my one reviewer who had precisely only this to say: "This is a good paper. However, the scope is narrow and limited to OS concepts and testing." yes thank you for the compliment I thought the paper was good too.) anyway after moping a bit I sent it on to garth and dave, who both suggested we keep our heads up and target SIGCSE (the big boys' and girls' education conference), whose deadline is in december and whose page limit is even shorter.

the upshot of all this is I have three more conference deadlines on the near-to-far horizons, and (heh) certainly enough work to sate the black friday gods for another season. funnily enough, despite all the "this sucks; I'm quitting and going to industry where I can hack, have fun, and ship my stuff" gut reactions, my stance on being here is getting a tiny bit more resilient; I do feel like I'm settling into my job a little more comfortably.

but geez sometimes it leaves me with far too many thoughts bouncing around my head at 2am friday nights.


I think I missed my traditional semester-retrospect post last season, and I notice I've been on a record-breaking streak of "not making livejournal posts" (it's been almost 2 months; I think the last record is about one month). I guess it's time to break out the old keyboard again.

My shpiel this semester has been "first-year ph.d. student, second-year graduate student, sixth-year CMU student". I've been saying it over and over to different people, because it earns impressed and/or knowing nods, but I'm also kind of scared of it.

This semester I:
  • took 15-887 - planning, execution, and learning, a star (required) course. It was mostly unremarkable; the grading was very lenient, and the final was 24-hour-take-home but a lot less intense than the type systems final last year. Our course project, though, I thought was pretty cool -- carlo pointed out that, since programming languages students have a reputation of doing "your field is just a sub-field of our field; we will use our tools to solve your problems" as projects in courses they don't care about, we should reverse that and show how AI planning tools can be used to verify program execution. We fell over on the launchpad trying to encode and run functional programs, but imperative concurrent programs proved feasible (which was what I cared about, anyway). We encoded synchronisation algorithms (such as dekker's and bakery-ticket-taking), and proved whether or not they enforced mutual exclusion and/or bounded waiting. our writeup is here if this interests you.
  • taught 98-172 - great practical ideas for computer scientists, a student-taught course (founded by adam blank) for teaching freshmen the sorts of stuff that SCS's intro curriculum glazes over and assumes you will pick up along the way - unix commands, shell scripting, version control, and debugging. there were about 60 people in this course, so there was pressure about making a good impact on a bunch of people, but it's also a low-key class (it's 3 units, and we tried to keep the work easy and make support always available, because we'd rather have students learn less than drop out), so it was very easy to earn the students' approval and admiration. Overall it was a lot of fun, easily the most fulfilling thing I did all semester, and also a lot of work. Most of the course came out of a can, thanks to adam's work last year, but I revamped a bunch of the debugging curriculum (given that it's my specialty). The most exciting part of this was a lecture I designed and gave (you can see the slides here) -- I wanted the students to think about debugging like a "toolbox" of skills / abstract approaches which they can resort to, instead of feeling like they have to flounder around in the dark looking for a solution. I had a lot of fun and am really relieved that I don't have to do it again (c.c).
  • dabbled about in research - for the most part I just "Communicated" about my existing work (instead of making any real progress), which meant going to two research group retreats and talking to industry people (one 30 min talk, several poster presentations), which quickly started to feel pretty stale. the one notable thing I did was work on a paper with the Rust team, about a particular analysis called borrow-checking, which enables safe creation of C-like pointers with the "&" operator that are statically guaranteed to never point to invalid/freed memory. We submitted it to PLDI and will know in february whether it gets in (at which point I might talk about it in more detail).
Work/research this year has been a lot less engaging than last year, often to the point that I've been scared (of... wasting time?) of sitting down to work on my research projects. Last year, when there was a year-long timeline and a hard deadline in sight the whole time, I was full of drive and energy. Last year I took giant steps and left vast swaths of unexplored area / loose threads in my wake; as a ph.d. student I feel like I have to be more deliberate, thorough, and get... well... baby-sized solid results instead of big handwavy ones. Call me impatient, but I'm enjoying it a lot less.

I read a greg egan story that stuck with me a lot -- it's a space travel setting where people travel by serialising their mental state as an exabyte of data and shipping it at lightspeed to other planets, and it's told on a scale of thousands of years, because that's how long communication takes. Since reading it I've been entertaining the idea that research advancements follow the same patterns: I might have a handful of "ideas" (on the scale of publications), but to tell the story of cs systems research as a field, the "ideas" are stuff like "the internet", "smartphones", "energy-aware computing" (each step of which is made of a zillion tiny publications). Whenever I have an advisor meeting, garth always talks to me in the big scale, and I can't simultaneously think about the little details of my ongoing work, so I always talk back to him in the big scale, and it makes motivating myself to get actual stuff done very challenging.


In case you didn't already see greg's or alan's writeup, here i am to report on our success solving the Königs-Pittsburgh Bridge Problem last saturday.

The idea is that while the original problem is not solvable, pittsburgh's variant is, and it turns out to be a 35-mile hike. The rules are that you must cross every bridge with at least one endpoint in the city limits and you may not, of course, repeat bridges. Since the 31st street bridge currently has an enormous chunk missing for construction, there are 18 bridges, and the hike even complets on the same landmass that it starts on.

Intrepid topologists gregh1983, alanv, and I completed the hike, starting around 0530 and ending around 2200. (Several other topologists joined late or left early - owen and cbuckey met us in the strip and left at point state park; keith started with us and left after the 10th street bridge, and dan started with us and invested heroic effort to get as far as hazelwood before needing to part ways.)

Click above for route; cut below for photos.

compared to mine, Alan's photos documented the hike itself better; he made sure to take a shot of us on each of the 18 bridges (plus I especially like this one of me modeling my smithfield street bridge shirt in front of same).

Collapse )


one of the nicest things about being back in pittsburgh is how much my house is starting to feel like home. despite 5 years (going on 6) of living in pittsburgh, this is the first year i've not had to move residences when summer came around. i thought that just meant i didn't have to deal with moving all my stuff and settling in again, but i'm realising it also means my relationship with the house is deepening a lot. it's no longer just some place i sleep and have meals in; it's part of me (and i am part of it).

a bunch of new feelings come along with this. when i cook, the kitchen feels like an extension of me -- a stark contrast to living in oakwood apartments this summer, where putting any sort of meal together was a struggle, and the knives were really good at smashing garlic, even with the sharp end.

and whenever i take care of the house (could be cleaning, could be hanging up on the fridge a bird calendar that audubon society randomly sent me in the mail, just because it seems like a nice thing to have around), there's an extra layer of rewarding-feeling for having made the house a nicer place to live. it seems i'm starting to think of home improvement as an enjoyable project, which maybe means i'm an adult?

oddly, the sense is actually "making the house a nicer place to live for someone", rather than "...for myself" (which it seems like it 'should' be). i apparently haven't got the confidence yet to automatically complete the thought that way -- but hey, it's a huge start.

here is some year-old eye-candy of my front yard, because i am excited about fall starting again:


lots of words about rust

I finally finished my research blog post series about Rust. Half of the content is introducing Rust's syntax and language features and the awesome things you can do with it; half of it is a debrief of what I contributed with my two projects. Some pictures, and lots and lots of code snippets.

Give it a look if you like systems programming, functional programming, parallel programming...

Post 0: index + conclusion
Post 1: intro to syntax and the memory/concurrency model
Post 2: linked task failure (my first project)
Post 3: typesafe shared state (and a bit about the region system)
Post 4: typesafe shared mutable state (my second project)

There ended up being a lot more to say than originally planned - post 4 ended up having to be separate from post 3, and then I decided I'd written so much that I needed some structural text, so threw together post 0 as well.

flow, brilliance, and chilly evening air

at once i am amazed that it's only been a little more than 2 weeks that i've been back in pittsburgh, and also am amazed that it takes so long to get through the ton of chores that appeared to keep my life running.

it really seems like i've been back for longer; spending late evenings in oakwood's hot tub and running down the stevens creek trail feel like a month or two away by now. and yet it was only today that i first rode my bike again between home and campus (i had to take it to iron city to get new brake pads and to pick up my helmet from david), and my bedroom is still only half-organised (and there's an old twin bed in pieces in the front room that still needs to go on craigslist, unless anyone here wants it free), and i haven't done an ounce of research yet (i can pass off just talking and writing about it for only so long), etc etc.


there's a new set of first-years; they are bright-eyed and attractive, and i duly went to a bunch of the social events to get to know them some. it's amazing how the two-week immigration course has given us all a sense of community ("well, of course we're friends and we should hang out with each other!") and casual friendship right off the bat. i mean, maybe this sounds obvious, but i found it striking when i actually kept my eyes peeled to watch the structure of the thing.

i keep fighting this tension when getting to know people; i seem to be terrible at converting "we casually know each other" into proper friendship. sometimes i get impatient and refuse to invest any effort into actively building something strong (which incidentally really hurts my ability to think about dating prospects; fruuuuustrating), and childishly deny to myself any value in meeting new people (i already have friends, why do i need more?).

(the "so, how's the advisor search going?" conversation is the most scripted and predictable small-talk ever. i feel like all it accomplishes is wasting time, not building friendship.)

and then (amusingly) occasionally i overcompensate and get too far into a "you must schmooze with everybody until you are best pals" mindset. the other day i had to talk myself down out of a panic by saying "look, you idiot, nobody ever defined 'success' as 'having made the most friends during IC'; stop thinking of your peers as inanimate 'friendship tokens' and just... talk to them! like normal human beings! relax!"


in pittsburgh i have this tendency of struggling to feel on top of my life, to feel not-like-a-prisoner (of old stale feelings and thought patterns...), but it is maybe coming together. often i see myself as a responsible adult, and it is a new joy.

on a monthly sort of scale, life is pretty worry-free, and my mind is clear and i am as wholesomely happy as i have ever been.

did you know that trader joe's proclaims, in their refrigerated herbs section, that their basil is kept at room temperature by their tomatoes?