ok, bear with me, because i really don't feel like spending a ton of time reading what other people have had to say on this subject and digging up references. i hope this post is not something that deeply embarrasses me in the future. if it is, oh well! that's what blogs are for!
so when i initially applied to grad school, i thought i was going to do theory. after all, i was already at a company building stuff, what was the point of leaving, getting paid a lot less, and building stuff with fewer
tools and fewer machines? people in industry i talked to seemed to concur. then i actually applied, and during the process realized that a candidate who hasn't done any real math in 4 years perhaps wasn't all that appealing as a theory student. but that's ok, cause i met the theory students, and though they're very nice and smart i'm pretty sure that's not who i am.
so anyway i'm here, and i'm trying to understand what it means to do research in systems. it's this weird combination of showing some novel properties, building a big system, making something run on it, and measuring the crap out of it. i don't think it makes any sense whatsoever from an industry perspective, because you have to do something new in systems and prove it (not just make code work) and it doesn't make sense from a mathy perspective because even if you came up with and proved some amazingly cool networking algorithm you actually have to build it and slap a measurement on it or no one will believe you.
i've been doing a lot of background reading on platforms lately. The paper I linked to before references Marc Andreessen's
blog post on platforms, which is quite interesting. I think it's fairly clear that things are moving in the direction of what he deems the "level 3 platforms", or these big containers where developers can upload code, pay per cpu cycle/gb of storage/mbps of bandwidth and not have to worry about administering their own servers. i think it's very cool and democratic and will bring about lots of neat things on the internet.
of course, what becomes very tricky here is trust. first of all, who in their right mind would run one of these containers running all this crazy uploaded code? the code writers could wreak havoc, so first off you want controls in place to protect the container from them, but these controls probably limit what the code writers can actually do (and might make them code to
weird made up standards). second, you need to have some sort of isolation between the programs running around in there so that they don't completely annihilate each other, but this is hard too and might require a lot of overhead.
one thing people don't think about enough (i think) is, well, when there are orders of magnitude more applications out there (which there will be, because it's easier to write one now), how do users discern between them? how do they know which ones they can
trust? which ones are going to steal their cookie, or monitor their web usage, or spam all their friends? and given that all these apps are going to be running in one big container, they could presumably share stuff more easily (this
can happen even with level 1 platforms, with level 3 you can do even more) so how do you control what gets shared and what doesn't? like on facebook, maybe i'm ok letting an app see where i live or where all my friends live and mapping that on my profile, but i don't want it to send out invites to all my friends. right now there's no way to even set that! so i only install certain apps that i think are ok, but sometimes i might get burned and end up emailing half my address book telling everyone they've been turned into a vampire.
anyway, i think this is interesting, and i think it's worth working on. but i don't know if it's useful to work on it in a research environment, because i feel like we might get stuck having to be
too secure, and whatever we build isn't going to be anywhere close to what eventually gets done. i guess if we're lucky, the ideas from it will trickle into industry and some company will build something resembling it. then sometimes i think this
has to be done in a research environment (or at least open source) cause this needs to span companies. either way, it's interesting, i like thinking about it, and i'm happy i have something to work on in my first week :)
unfortunately there's a massive amount of work to do and my new roommates also have a tivo, so i have to try very hard to keep from falling back into
my tv addicted ways.