PDF is a family of standards. There's a core specification and a set of extensions (including, somewhat confusingly, some that remove functionality). In particular, PDF/A removes some of the crazy things (embedded video, audio and JavaScript) and is intended for archiving. Adobe is the driving force behind the standard, and do add non-standard things to their tools (although via a well-defined extension interface), but they're very careful to differentiate PDF/A because a lot of their deep-pocketed customers care a lot about PDF/A as a long-term archive medium. The vested interests of various governments in PDF/A mean that Adobe will have a hard time pushing things through ISO that would be bad for the standard.
It differs a bit depending on what the graduate course is. I'm not entirely sure how this translates to the US system, but in the UK you basically have three or four categories (depending on how you count). Taught masters, which are basically an extra year of an undergraduate degree. These come in two flavours, the conventional and the 'conversion' variant, the latter being aimed at people who didn't do an undergraduate course in the same subject (e.g. people who did a degree in maths wanting to study physics). The former is generally a chance to specialise and so should involve a lot of choice. By the time the student arrives, they're expected to know what the field contains and have decided that a particular subfield is really interesting. The latter has largely the same goals as the undergraduate degree: to give a whirlwind tour of the subject to someone who is expected to have already learned how to teach themselves and allow them to pick up the bits that they might want to know later.
The other two categories are the doctorates and untaught masters. These have basically the same structure: you'll work on something original (and typically very specialised). The amount of originality and the scope of the project differs between the doctorate and the masters (often the masters is awarded to people who fail the PhD - if you get a few years in to a PhD you can apply to be assessed as an MPhil instead, so it's not completely wasted time). Here the supervisor is responsible for providing a bit of direction, but the project is largely driven by the student because, again, they're expected to already have a broad knowledge of the subject (but not necessarily of the specialised field).
NIC drivers interact directly with the network stack only via a set of well-defined interfaces (in FreeBSD at least), and writing the drivers is a one-shot operation because for new purchases they can demand FreeBSD drivers and support from their vendors (as Netflix, Verisign, and others do already). In the networking space, enough big companies are already demanding FreeBSD support for the high-end cards that the drivers are already likely to exist, so the missing ones are likely to be other things.
Your comparison doesn't make sense. Sure, a tank of petrol is denser than a battery, but a machine to turn the output of a solar cell into petrol isn't, and the machine to take that power and turn it back into something your house's electrical system can use (with little loss) is also big. Connecting your car's fuel tank up to both machines every time you park is not feasible. In contrast, connecting a power cable to your battery is pretty easy.
That's why they think Tesla is likely to be disruptive. Every electric car has a big electrical storage device attached. When your car is parked, you can use it to store excess electricity. If you're not going on a long trip the next day, you can use it to power your house overnight. If you are, then your neighbours probably aren't, so there's still spare storage capacity near you.
Snow is a very good insulator. You don't need to be leaking much heat to eventually heat up the thing underneath it to above freezing and then eventually melt the snow. Even a complete vacuum won't do it.
Out of interest, how many cores are you using? I've not used Solaris for... a long time, but their network stack was redesigned a little while ago to do each layer in a different thread with lockless ring buffers between them all. I'd imagine latency might suffer a bit, but throughput should be insane with enough hardware contexts. On something like the UltraSPARC Tx series, I'd expect it to outperform FreeBSD, but I've never seen numbers.
How much of Facebook's code is not platform-independent already? Most of their web infrastructure is PHP with a custom compiler. The compiler may need some tweaks, but the PHP code that it compiles should be completely independent. Drivers are a different issue, but if they're employing a load of kernel devs it's a lot easier to write a few missing drivers than make large and invasive changes to the network stack.
While this is technically true, we recently had a PhD student try this. First, the Linux version is only available as patches so it took him a while to find a version of Linux that they'd apply against. Once he'd done this, it turns out that the driver support is basically only there in Linux for Intel NICs, which are modified as part of the patch. In FreeBSD, because it's merged into trunk, most NIC drivers support it.
Oh, and Adrian isn't at Netflix anymore, but he's still working on networking stuff (now at one of the CDN companies, but I forget which one).
It's a common misconception that any code that you link with Linux has to be GPL'd. The GPL only requires that linked code has no restrictions not present in the GPL and that the combined work is covered by the GPL. Individual components can be in one of several more permissive licenses. The Linux kernel already contains fairly large amounts of BSDL and similar code.
The binary package manager is a pain in the ass in FreeBSD/quote.
Have you used FreeBSD since the package infrastructure was replaced? If so, we'd be interested in bug reports that are more detailed than 'it's a pain in the ass'.
It's not so much about learning things they don't want to learn as about learning things that they don't even know exists. When I arrived at university, I'd been programming for over 10 years and thought I knew most of the stuff I'd be expected to learn. I didn't even know graph theory or complexity theory existed and they've both been phenomenally useful since I graduated. There was a load of other stuff (logic programming and functional programming, for example) that I've used but didn't really know were subjects that I might want to study when I arrived.
A small proportion of stuff in my degree (mostly stuff in the first six months) was stuff I already knew when I arrived. Maybe 30-40% was stuff I knew I didn't know much about and wanted to learn. The rest was all stuff that I didn't even know that I didn't know. I probably could have taught myself most of it if I'd known that the subjects existed (I now do research involving compilers and computer architecture and had a single [very badly taught] compilers module as a student and a single architecture course that gave a very brief overview of the subject) but the value in the degree was showing me the things that I might want to teach myself.
The network stack is a complex bit of code that interacts in complex ways with the scheduler, the generic locking frameworks, the driver infrastructure, the bus and DMA, infrastructure and everything up to the system call layer. The device drivers are self-contained and (individually) small pieces of code. Which do you think is cheaper and easier to modify?
Actually, that's not always true. FreeBSD ships with netmap, which allows you to talk to the network hardware directly from userspace. A significant chunk of the DNS root zone is served by FreeBSD boxes using a completely custom TCP/IP stack on top of netmap. There's a paper at this year's SIGCOMM about building specialised network stacks in this infrastructure.
If you're talking about the FreeBSD TCP/IP stack, then libuinet allows running it entirely in userspace.
These might not be the ones that Facebook is interested in, but a significant amount of their workload could be sped up by using the work described in the SIGCOMM paper...
I'm pretty sure that Facebook buys enough hardware that they can afford to write drivers for anything they're missing and demand FreeBSD support from vendors for their next round of purchases. Netflix already does this (they won't buy any hardware that doesn't have vendor support for FreeBSD), as do a few other companies, and so a number of NIC vendors (particularly in the 10G/40G space) are now putting quite a bit of effort into their FreeBSD drivers.
How are Qt on Windows? On OS X, they look ugly and have loads of annoying trivial UI bugs (really simple things, like having the buttons the wrong way around in dialogs and having keyboard shortcuts in text fields do something different to every other text field in the system). On X11 systems I don't really expect any consistency, so they seem no more out of place than everything else (or, if you're using KDE, are the standard and so are at least self consistent). On Windows, do you get the same UI niggles, or does it integrate more cleanly?
That's not really true. People rarely make it to their viva (defence, for Americans watching) and then fail. Quite a leave earlier.
If you pass undergrad, you can get a PhD if you put in enough time and some effort
Our entry requirement for the PhD program is basically a First (4.0 GPA? Not sure exactly how it translates into American) at undergrad or some other significant contribution (e.g. papers published, significant real-world experience) subsequently. About 10-20% of people who pass an undergraduate degree qualify for entry into the PhD program. Except we don't actually enrol them into the PhD program, we enrol them into a one-year diploma course and, at the end of it, retroactively reclassify them as PhD students if they meet their requirements. No one drops out, but quite a few people leave with a certificate of postgraduate studies, never having been enrolled to do a PhD. At other institutions, it's common to award an MPhil to people who don't make the grade for a PhD. Again, they don't drop out, but they don't get a PhD either...
Your fellow students might (if you're at the kind of crappy institution where next Friday's test is the most important thing), but the faculty won't. They're looking for potential PhD students and summer interns to help out with research and you'll be on their list.
The entire point of a university degree is to give you a guided tour of your ignorance. It's not to teach you everything about the subject, it's to tell you everything that you may want to learn within a subject so that you can then pick the bits to study in more detail yourself. If you let students pick the modules that they want, then you may as well just say 'here's a library, go and learn some stuff' and you'll get more or less the same results.
Because guaranteed bandwidth is expensive. Let's say you have a 1GB/s pipe from an exchange. That exchange services 100 users. You can offer them each 10Mb/s connections that you can guarantee that they'll be able to saturate. Most of the users won't be using it all of the time though, so you could offer them 20Mb/s and still be pretty confident that they'd all be able to saturate it when they wanted to. Even at 50Mb/s you'd probably be able to, but now there's the potential for 20 of the 100 users to consume all of the bandwidth, so you're a bit closer to a sensible limit.
Now, the sensible thing to do would be advertise two speeds, the guaranteed speed and the maximum speed. Unfortunately, this is really easy to game. An ISP would say 'well, we have a 1GB/s link, so we'll guarantee 10Mb/s and set the maximum to 1GB/s'. Then, however, no one would ever see the maximum. ISPs used to advertise contention ratios on ADSL, but they stopped for this reason: your 1:50 contention ratio looks really bad next to your competitor's 1:10 contention ratio, but they don't advertise that the contended link for them is a tenth the speed of yours.
I'm glad my ISP doesn't do any of this shit and I can use my full capacity 24/7.
Unless you're paying an insane amount or have a very slow connection, the odds are that you can only do this because a lot of users near you don't. ISPs don't have the off-network capacity for everyone to saturate their connections all of the time and they provide a service that's a lot cheaper than a dedicated leased line on the assumption that most won't. This assumption is usually fine, because most of their customers don't come close to it. The 32TB/month that you'd consume if you saturated a 100Mb/s link all of the time is a couple of orders of magnitude more than most users will need, even if they're streaming a couple of hours of video each evening.
The problem is advertising it as unlimited. Most users would be fine with a few hundred GBs a month at full speed and then throttling. My ISP has bumped the speed of my connection twice since in the last few years so that now the throttled speed is about the same as the unthrottled speed used to be, so I can still watch 720p streams even if I am throttled (they've also bumped up the allowances, so I think I've only hit them once in the last year).
PDF is a family of standards. There's a core specification and a set of extensions (including, somewhat confusingly, some that remove functionality). In particular, PDF/A removes some of the crazy things (embedded video, audio and JavaScript) and is intended for archiving. Adobe is the driving force behind the standard, and do add non-standard things to their tools (although via a well-defined extension interface), but they're very careful to differentiate PDF/A because a lot of their deep-pocketed customers care a lot about PDF/A as a long-term archive medium. The vested interests of various governments in PDF/A mean that Adobe will have a hard time pushing things through ISO that would be bad for the standard.
The other two categories are the doctorates and untaught masters. These have basically the same structure: you'll work on something original (and typically very specialised). The amount of originality and the scope of the project differs between the doctorate and the masters (often the masters is awarded to people who fail the PhD - if you get a few years in to a PhD you can apply to be assessed as an MPhil instead, so it's not completely wasted time). Here the supervisor is responsible for providing a bit of direction, but the project is largely driven by the student because, again, they're expected to already have a broad knowledge of the subject (but not necessarily of the specialised field).
NIC drivers interact directly with the network stack only via a set of well-defined interfaces (in FreeBSD at least), and writing the drivers is a one-shot operation because for new purchases they can demand FreeBSD drivers and support from their vendors (as Netflix, Verisign, and others do already). In the networking space, enough big companies are already demanding FreeBSD support for the high-end cards that the drivers are already likely to exist, so the missing ones are likely to be other things.
Your comparison doesn't make sense. Sure, a tank of petrol is denser than a battery, but a machine to turn the output of a solar cell into petrol isn't, and the machine to take that power and turn it back into something your house's electrical system can use (with little loss) is also big. Connecting your car's fuel tank up to both machines every time you park is not feasible. In contrast, connecting a power cable to your battery is pretty easy.
Yeah, but we still have the battery problem
That's why they think Tesla is likely to be disruptive. Every electric car has a big electrical storage device attached. When your car is parked, you can use it to store excess electricity. If you're not going on a long trip the next day, you can use it to power your house overnight. If you are, then your neighbours probably aren't, so there's still spare storage capacity near you.
Snow is a very good insulator. You don't need to be leaking much heat to eventually heat up the thing underneath it to above freezing and then eventually melt the snow. Even a complete vacuum won't do it.
You say $10bn, the grandparent says $107.3bn. Either your talking about different things, or one of you has their numbers very wrong.
Out of interest, how many cores are you using? I've not used Solaris for... a long time, but their network stack was redesigned a little while ago to do each layer in a different thread with lockless ring buffers between them all. I'd imagine latency might suffer a bit, but throughput should be insane with enough hardware contexts. On something like the UltraSPARC Tx series, I'd expect it to outperform FreeBSD, but I've never seen numbers.
How much of Facebook's code is not platform-independent already? Most of their web infrastructure is PHP with a custom compiler. The compiler may need some tweaks, but the PHP code that it compiles should be completely independent. Drivers are a different issue, but if they're employing a load of kernel devs it's a lot easier to write a few missing drivers than make large and invasive changes to the network stack.
Netmap is also available on Linux
While this is technically true, we recently had a PhD student try this. First, the Linux version is only available as patches so it took him a while to find a version of Linux that they'd apply against. Once he'd done this, it turns out that the driver support is basically only there in Linux for Intel NICs, which are modified as part of the patch. In FreeBSD, because it's merged into trunk, most NIC drivers support it.
Oh, and Adrian isn't at Netflix anymore, but he's still working on networking stuff (now at one of the CDN companies, but I forget which one).
It's a common misconception that any code that you link with Linux has to be GPL'd. The GPL only requires that linked code has no restrictions not present in the GPL and that the combined work is covered by the GPL. Individual components can be in one of several more permissive licenses. The Linux kernel already contains fairly large amounts of BSDL and similar code.
The binary package manager is a pain in the ass in FreeBSD/quote. Have you used FreeBSD since the package infrastructure was replaced? If so, we'd be interested in bug reports that are more detailed than 'it's a pain in the ass'.
It's not so much about learning things they don't want to learn as about learning things that they don't even know exists. When I arrived at university, I'd been programming for over 10 years and thought I knew most of the stuff I'd be expected to learn. I didn't even know graph theory or complexity theory existed and they've both been phenomenally useful since I graduated. There was a load of other stuff (logic programming and functional programming, for example) that I've used but didn't really know were subjects that I might want to study when I arrived.
A small proportion of stuff in my degree (mostly stuff in the first six months) was stuff I already knew when I arrived. Maybe 30-40% was stuff I knew I didn't know much about and wanted to learn. The rest was all stuff that I didn't even know that I didn't know. I probably could have taught myself most of it if I'd known that the subjects existed (I now do research involving compilers and computer architecture and had a single [very badly taught] compilers module as a student and a single architecture course that gave a very brief overview of the subject) but the value in the degree was showing me the things that I might want to teach myself.
The network stack is a complex bit of code that interacts in complex ways with the scheduler, the generic locking frameworks, the driver infrastructure, the bus and DMA, infrastructure and everything up to the system call layer. The device drivers are self-contained and (individually) small pieces of code. Which do you think is cheaper and easier to modify?
Quite a few consumer router manufacturers actually ship Linux with the FreeBSD network stack grafted onto it. I don't know why.
Actually, that's not always true. FreeBSD ships with netmap, which allows you to talk to the network hardware directly from userspace. A significant chunk of the DNS root zone is served by FreeBSD boxes using a completely custom TCP/IP stack on top of netmap. There's a paper at this year's SIGCOMM about building specialised network stacks in this infrastructure.
If you're talking about the FreeBSD TCP/IP stack, then libuinet allows running it entirely in userspace.
These might not be the ones that Facebook is interested in, but a significant amount of their workload could be sped up by using the work described in the SIGCOMM paper...
I'm pretty sure that Facebook buys enough hardware that they can afford to write drivers for anything they're missing and demand FreeBSD support from vendors for their next round of purchases. Netflix already does this (they won't buy any hardware that doesn't have vendor support for FreeBSD), as do a few other companies, and so a number of NIC vendors (particularly in the 10G/40G space) are now putting quite a bit of effort into their FreeBSD drivers.
How are Qt on Windows? On OS X, they look ugly and have loads of annoying trivial UI bugs (really simple things, like having the buttons the wrong way around in dialogs and having keyboard shortcuts in text fields do something different to every other text field in the system). On X11 systems I don't really expect any consistency, so they seem no more out of place than everything else (or, if you're using KDE, are the standard and so are at least self consistent). On Windows, do you get the same UI niggles, or does it integrate more cleanly?
Here in Cambridge, we call that argumentum ad hominem and argumentum ab auctoritate. I don't know what they call it in the other Cambridge.
The reason is people rarely fail PhDs these days.
That's not really true. People rarely make it to their viva (defence, for Americans watching) and then fail. Quite a leave earlier.
If you pass undergrad, you can get a PhD if you put in enough time and some effort
Our entry requirement for the PhD program is basically a First (4.0 GPA? Not sure exactly how it translates into American) at undergrad or some other significant contribution (e.g. papers published, significant real-world experience) subsequently. About 10-20% of people who pass an undergraduate degree qualify for entry into the PhD program. Except we don't actually enrol them into the PhD program, we enrol them into a one-year diploma course and, at the end of it, retroactively reclassify them as PhD students if they meet their requirements. No one drops out, but quite a few people leave with a certificate of postgraduate studies, never having been enrolled to do a PhD. At other institutions, it's common to award an MPhil to people who don't make the grade for a PhD. Again, they don't drop out, but they don't get a PhD either...
Your fellow students might (if you're at the kind of crappy institution where next Friday's test is the most important thing), but the faculty won't. They're looking for potential PhD students and summer interns to help out with research and you'll be on their list.
The entire point of a university degree is to give you a guided tour of your ignorance. It's not to teach you everything about the subject, it's to tell you everything that you may want to learn within a subject so that you can then pick the bits to study in more detail yourself. If you let students pick the modules that they want, then you may as well just say 'here's a library, go and learn some stuff' and you'll get more or less the same results.
Since we're in bad analogies, how about buying a bus pass and then having to wait for the next bus because the first one is full.
Because guaranteed bandwidth is expensive. Let's say you have a 1GB/s pipe from an exchange. That exchange services 100 users. You can offer them each 10Mb/s connections that you can guarantee that they'll be able to saturate. Most of the users won't be using it all of the time though, so you could offer them 20Mb/s and still be pretty confident that they'd all be able to saturate it when they wanted to. Even at 50Mb/s you'd probably be able to, but now there's the potential for 20 of the 100 users to consume all of the bandwidth, so you're a bit closer to a sensible limit.
Now, the sensible thing to do would be advertise two speeds, the guaranteed speed and the maximum speed. Unfortunately, this is really easy to game. An ISP would say 'well, we have a 1GB/s link, so we'll guarantee 10Mb/s and set the maximum to 1GB/s'. Then, however, no one would ever see the maximum. ISPs used to advertise contention ratios on ADSL, but they stopped for this reason: your 1:50 contention ratio looks really bad next to your competitor's 1:10 contention ratio, but they don't advertise that the contended link for them is a tenth the speed of yours.
I'm glad my ISP doesn't do any of this shit and I can use my full capacity 24/7.
Unless you're paying an insane amount or have a very slow connection, the odds are that you can only do this because a lot of users near you don't. ISPs don't have the off-network capacity for everyone to saturate their connections all of the time and they provide a service that's a lot cheaper than a dedicated leased line on the assumption that most won't. This assumption is usually fine, because most of their customers don't come close to it. The 32TB/month that you'd consume if you saturated a 100Mb/s link all of the time is a couple of orders of magnitude more than most users will need, even if they're streaming a couple of hours of video each evening.
The problem is advertising it as unlimited. Most users would be fine with a few hundred GBs a month at full speed and then throttling. My ISP has bumped the speed of my connection twice since in the last few years so that now the throttled speed is about the same as the unthrottled speed used to be, so I can still watch 720p streams even if I am throttled (they've also bumped up the allowances, so I think I've only hit them once in the last year).