The 787 has more legroom than any other plane I've flown in and this is aimed as a 787 competitor. Note that it depends a lot on the airline though - they get a lot of say in the exact layout of seats, so you'll see different amounts of legroom for different carriers and the same aircraft.
Hopefully the A350 can make up for the anemic A380 sales
The A380 is really huge. A lot of the long-haul flights that I've been on in the last couple of years haven't been full, even when they're the one flight of the day between two points and are on a plane with half of the capacity of the A380. It's a very economical plane to fly if you can fill it up, but if it's likely to be under half full then it's very expensive. The big-planes, infrequently model doesn't really work with the hub-and-spokes model popular in the USA, because it either needs more coordination with short-haul spoke routes, or layovers (and the cost of near-airport hotels means that these can often make it cheaper to book a different airline's flight).
I flew on the 787 (LHR - IAH, both directions) for the first time this year and it was such a massive improvement over earlier models that I actually enjoyed flying for the first time in ages. Even in the cheap seats, there was lots of legroom, lots of overhead space (so you didn't feel cramped), the air pressure stayed good for the entire flight, the seats reclined comfortably without invading someone else's space. I managed to get more uninterrupted work done on the outbound flight than any other time over the surrounding few months. I'm really looking forward to airlines using similar craft on all long-haul routes.
One really good developer can, by code review, good design, and mentorship, dramatically improve the productivity of half a dozen middle-of-the-pack developers. To the point where it's actually worth a company's while to hire them. So you're arguing against the availability of jobs for you, not for it.
Sure, but it only matters when the ones in the USA are competing in a global market. How many of those other industries are contributing a lot to the US GDP from exports? Put the ones that are on the list of things to care about.
The premise of this fairy tale is that great programmers have a quality unrelated to training
Not at all. He's saying that training doesn't create great programmers if they don't already have some innate ability. You need the mixture of ability and opportunity. Now that more and more of the world is growing up with computers, a lot more of the people with the ability are going to develop it. Graham wants those people to be in the USA.
Luckily for my country, most of people can be swayed by money. Big salary, and low taxes and houses with a big yard as still affordable for a professional.
How about some other things that are harder for people who consider moving to the USA:
Car culture: Few places where you can live without needing to spend a lot of time commuting and long trips just to go shopping. If your time is valuable, then moving to such a place seems like a step back in terms of quality of life. If you're getting a house with a big yard, that puts you in the suburbs, where pretty much anything is 15+ minutes each way in the car.
Healthcare: You might get good heath insurance at your job, but does it cover your partner if they move with you? Will it cover your children?
Crime rates: San Francisco and New York don't look that safe compared to much of Europe...
High cost of living generally: that big salary is nice while you're there, but how much of it can you put into savings?
There are lots of reasons not to want to move to the USA.
Labour costs are largely irrelevant to someone like Graham. He wants startups to increase in value quickly so that he can sell his stake and make a large profit. That means getting the best talent, even if you have to pay them more. Doubling salary costs doesn't matter much when you're looking at a 10-100 times return on investment for a successful startup.
there's a heavy emphasis on languages that do garbage collection (Objective C counts as one of these; in theory you can turn it off - but not really
Huh? Objective-C doesn't have garbage collection. Apple tried to add it some years ago, but it was a disaster and they deprecated it (and never supported it on iOS). Objective-C has a number of design patterns that rely on deterministic deallocation, so is a really poor fit for garbage collection.
It does (optionally, although you'd be an idiot to turn it off) have automatic reference counting, but you still need to think about ownership and explicit cycle breaking.
HP was famous for having parallel tracks for management and engineering talent. Promotion didn't mean moving to management, that was a separate skill set and managers would often be paid less than the people that they were managing. ARM does something similar now - the position of ARM Fellow is the engineering track equivalent of VP on the management track (most of their managers are also technically competent, but not as hands-on as the engineers). It's a good way of avoiding the Peter Principle: don't make people do a different job to be promoted.
CEOs maybe (and, actually, you do import a lot of those). Doctors and lawyers are a bad example, because they both provide local services. Software is a massive export market for the USA. You need a number of doctors and lawyers proportional to your population. For any industry that is primarily export focussed, you want to have a big chunk of the top talent or you'll find it hard to compete internationally.
Add to that, the cost of living means that you absolutely have to work when you're there. How long does it take to save up enough that you don't have to work for the next 6-12 months if you can't find a job that you really want?
When I was freelancing, I worked with people plus or minus 9 time zones from me. I found it very productive for a lot of things when our work days barely overlapped: I'd work and send them things that they'd then work on for a day when they woke up and then get back to me. Some things require realtime interaction, but for a lot of other things it's far more productive to have an asynchronous workflow.
If you want to find the 20 of the best programmers in India, then you'll probably find it much easier if you have an office in India and are willing to hire locally than if you expect people to locate to the USA. In most parts of India, earning 75% of a Silicon Valley salary will let you live very comfortably and put a lot into savings (there are now some places where the cost of living is comparable, but not many). Moving to the USA and earning the full salary will be a lot of hassle, involve leaving your family, and end up with a lower standard of living. If you're really in the top 1% of talent, then why would you make this choice when there are other companies that will pay you to stay?
If you really want to attract the top talent from the whole world, then you need to make the incentives better, not just lower the barriers. Some are there already. For example, Silicon Valley is by far the easiest place to get VC funding. It's also now in the self-sustaining cycle where people move there because of the job opportunities, which means that there's a lot of available talent, which means that it's a good place for a startup if you want to be able to easily hire competent people.
Not ones with VC backing, which are the kind that Graham will be talking to. They're often constrained by how much the founders are able to delegate, but money is not normally an issue for the first few years. It's only once the VCs start expecting you to have a self-sustaining business model that it becomes tight. For a lot of startups, if the goal is to sell out to Google, Facebook, Microsoft, or whoever, then money is never a constraint: VCs will keep pumping the company until they can sell it for 10-100 times their investment to someone with even deeper pockets.
That needs a big 'citation needed' next to it, but:
and has already seen a working plant, which is why he is investing on a technology that is going to displace oil and outright kill renewables.
You don't understand risk analysis. He's investing a very small proportion of his wealth in something that may have massive returns. The probability of said returns may be small, but that doesn't make it a bad investment if the potential payoffs are huge, as long as you can afford to take the loss if it doesn't pan out. Most people with his money will invest a few millions in a few fringe ideas, because it only takes one to pay off to more than make up for your investment. The majority of his portfolio will be in relatively safe investments with a close-to-guaranteed return, a bit will be in risky venture.
You missed decay, which is the most common form of nuclear reaction on Earth. Proton capture can technically be thought of as fusion (fusing a hydrogen nucleus with something heavier), but it generally isn't referred to as such. Neutron capture is not fusion and a lot of LENR reactions are neutron capture.
Insertion sort is terrible for the use cases the grandparent described. For one thing, it requires allocating a new data structure for storing the data (an immediate disqualification for a lot of embedded tasks). Second, it has much worse cache interaction because it requires searching the second array. Assuming that your target is an array, then it also requires a bit memcpy for each insert, which means that it likely requires a similar number of memory operations to the bubblesort, but with more temporaries. You can do a bubblesort in-place, with good cache locality, and only a handful of registers (insert base, top, current, and two for holding the current elements). If your CPU has 8 GPRs then the space requirements of a bubblesort are effectively zero - no memory required.
That's only if you don't have the requirement to sort in place. Bubblesort is also a good way of getting students to start thinking in terms of induction. Each step in the bubblesort leaves the array more sorted than it was before.
Insertion sort is one of these good-on-paper algorithms. It's very fast if insertion is cheap. But insertion relies copying unless your data structure is a linked list. If it's an array (worse, a contiguous on-disk store) then that copying can be very expensive. If it is a linked list, then you're going to have very expensive search (sure, you may still be O(log(n)), but that constant multiple is going to be hurt by the fact that you're hammering your cache and killing your branch predictor).
Teaching algorithms separately from data structures is one of the biggest flaws in modern computer science education. It's impossible to reason sensibly about one without the other.
Bubblesort has two advantages. The first is that, because it's only swapping adjacent elements, it has very good locality of reference (which means better cache usage, but can also mean more amenable to fine-grained locking). The second is that it performs well on almost-sorted data (that O(n^2) is the worst case - it's closer to O(n) if your inputs are mostly sorted). These two mean that there are situations where bubblesort can be useful, though they're quite rare.
What is that measuring? The fact that it doesn't say means that it's meaningless, but it looks like they're comparing number of ships, so a coastal patrol boat counts the same as an aircraft carrier...
And what was the destructive capacity of the Navy in 2006 compared to August 1945? Hell, one Ohio class submarine has more destructive capacity than the entire Navy from 1945
A statistic that floated around earlier in the year when Argentina was grumbling about the Falklands again: one of the battleships that the British were sending to the area could fire, in one minute, more munitions than were fired in the entire 1982 conflict. I'd imagine that the differences between 1945 and now are even more pronounced.
One constant trend has been that soldiers are less expendable. In the first world war, sending men to walk slowly towards machine guns and throw a grenade if they survived to get close enough was their patriotic duty. By Vietnam, having large numbers of soldiers come back in body bags was politically unacceptable.
In the 1940s, Japan was flying aircraft loaded with bombs into American warships. A few years later, people realised that you could design aircraft for this purpose and make them a lot lighter and able to accelerate more if you removed the human pilot. They called them anti-ship missiles.
The fighter screen that fleets needed to protect themselves from aircraft in the '40s is now replaced by anti-aircraft and interceptor missiles (and dumb projectiles). In the next generation of ships a lot of this will be replaced by lasers, which reduces some of the resupply need (you can't run out of laser ammunition on a nuclear carrier unless your ship is so badly damaged that it's not a good idea to be anywhere near it).
Gradually, a lot of the roles for aircraft are being replaced by drones, which means that you need smaller carriers. They don't need to house as many pilots, they don't need as many support staff.
Another part of this trend is to replace reusable vehicles with single-use munitions. Fighters are more expensive than missiles, so you spend a lot on maintaining them. Drones are a lot cheaper, so you can afford to fly them for a couple of missions and then scrap them (explosively, near someone you don't like).
Comparing numbers, as the grandparent did, is completely meaningless. You may as well compare the size of the air force to the number of soldiers Napoleon had.
There are basically only three decoders that cover most of the market: Microsoft's DirectShow filter, libavcodec / libavformat, and QuickTime. Hardware decode doesn't help much, because you still have the same software path as everyone else doing the de-encapsulation and file parsing, which is where the exploitable bugs often show up. If you have vulnerabilities in each of these then it's not generally hard to hide them all in the same file, as the codecs aim to be resilient to corrupted data so will usually just drop a frame or two for the exploits aimed at the other implementations.
Oh, and libavcodec / libavformat are used in Android (and in a lot of iOS apps, as AVFoundation doesn't always expose useful APIs), as well as in desktop browsers, so they're a pretty good target to aim for.
How does that prevent Facebook from building a profile of you? The only way to avoid that is block all Facebook like buttons, never visit the Facebook site, and make sure that your account has no friends.
People who think a fake name on Facebook protects them from any of the privacy invasion really haven't been paying attention to the last decade of data mining. The reason Facebook no longer cares if you register with a fake name is that they've been able, with very high accuracy, to get your real name and address without your providing it for a few years.
The 787 has more legroom than any other plane I've flown in and this is aimed as a 787 competitor. Note that it depends a lot on the airline though - they get a lot of say in the exact layout of seats, so you'll see different amounts of legroom for different carriers and the same aircraft.
Hopefully the A350 can make up for the anemic A380 sales
The A380 is really huge. A lot of the long-haul flights that I've been on in the last couple of years haven't been full, even when they're the one flight of the day between two points and are on a plane with half of the capacity of the A380. It's a very economical plane to fly if you can fill it up, but if it's likely to be under half full then it's very expensive. The big-planes, infrequently model doesn't really work with the hub-and-spokes model popular in the USA, because it either needs more coordination with short-haul spoke routes, or layovers (and the cost of near-airport hotels means that these can often make it cheaper to book a different airline's flight).
I flew on the 787 (LHR - IAH, both directions) for the first time this year and it was such a massive improvement over earlier models that I actually enjoyed flying for the first time in ages. Even in the cheap seats, there was lots of legroom, lots of overhead space (so you didn't feel cramped), the air pressure stayed good for the entire flight, the seats reclined comfortably without invading someone else's space. I managed to get more uninterrupted work done on the outbound flight than any other time over the surrounding few months. I'm really looking forward to airlines using similar craft on all long-haul routes.
One really good developer can, by code review, good design, and mentorship, dramatically improve the productivity of half a dozen middle-of-the-pack developers. To the point where it's actually worth a company's while to hire them. So you're arguing against the availability of jobs for you, not for it.
Sure, but it only matters when the ones in the USA are competing in a global market. How many of those other industries are contributing a lot to the US GDP from exports? Put the ones that are on the list of things to care about.
The premise of this fairy tale is that great programmers have a quality unrelated to training
Not at all. He's saying that training doesn't create great programmers if they don't already have some innate ability. You need the mixture of ability and opportunity. Now that more and more of the world is growing up with computers, a lot more of the people with the ability are going to develop it. Graham wants those people to be in the USA.
Luckily for my country, most of people can be swayed by money. Big salary, and low taxes and houses with a big yard as still affordable for a professional.
How about some other things that are harder for people who consider moving to the USA:
There are lots of reasons not to want to move to the USA.
Labour costs are largely irrelevant to someone like Graham. He wants startups to increase in value quickly so that he can sell his stake and make a large profit. That means getting the best talent, even if you have to pay them more. Doubling salary costs doesn't matter much when you're looking at a 10-100 times return on investment for a successful startup.
there's a heavy emphasis on languages that do garbage collection (Objective C counts as one of these; in theory you can turn it off - but not really
Huh? Objective-C doesn't have garbage collection. Apple tried to add it some years ago, but it was a disaster and they deprecated it (and never supported it on iOS). Objective-C has a number of design patterns that rely on deterministic deallocation, so is a really poor fit for garbage collection.
It does (optionally, although you'd be an idiot to turn it off) have automatic reference counting, but you still need to think about ownership and explicit cycle breaking.
HP was famous for having parallel tracks for management and engineering talent. Promotion didn't mean moving to management, that was a separate skill set and managers would often be paid less than the people that they were managing. ARM does something similar now - the position of ARM Fellow is the engineering track equivalent of VP on the management track (most of their managers are also technically competent, but not as hands-on as the engineers). It's a good way of avoiding the Peter Principle: don't make people do a different job to be promoted.
CEOs maybe (and, actually, you do import a lot of those). Doctors and lawyers are a bad example, because they both provide local services. Software is a massive export market for the USA. You need a number of doctors and lawyers proportional to your population. For any industry that is primarily export focussed, you want to have a big chunk of the top talent or you'll find it hard to compete internationally.
Add to that, the cost of living means that you absolutely have to work when you're there. How long does it take to save up enough that you don't have to work for the next 6-12 months if you can't find a job that you really want?
When I was freelancing, I worked with people plus or minus 9 time zones from me. I found it very productive for a lot of things when our work days barely overlapped: I'd work and send them things that they'd then work on for a day when they woke up and then get back to me. Some things require realtime interaction, but for a lot of other things it's far more productive to have an asynchronous workflow.
If you want to find the 20 of the best programmers in India, then you'll probably find it much easier if you have an office in India and are willing to hire locally than if you expect people to locate to the USA. In most parts of India, earning 75% of a Silicon Valley salary will let you live very comfortably and put a lot into savings (there are now some places where the cost of living is comparable, but not many). Moving to the USA and earning the full salary will be a lot of hassle, involve leaving your family, and end up with a lower standard of living. If you're really in the top 1% of talent, then why would you make this choice when there are other companies that will pay you to stay?
If you really want to attract the top talent from the whole world, then you need to make the incentives better, not just lower the barriers. Some are there already. For example, Silicon Valley is by far the easiest place to get VC funding. It's also now in the self-sustaining cycle where people move there because of the job opportunities, which means that there's a lot of available talent, which means that it's a good place for a startup if you want to be able to easily hire competent people.
Bullshit. Startups are constrained by MONEY.
Not ones with VC backing, which are the kind that Graham will be talking to. They're often constrained by how much the founders are able to delegate, but money is not normally an issue for the first few years. It's only once the VCs start expecting you to have a self-sustaining business model that it becomes tight. For a lot of startups, if the goal is to sell out to Google, Facebook, Microsoft, or whoever, then money is never a constraint: VCs will keep pumping the company until they can sell it for 10-100 times their investment to someone with even deeper pockets.
Bill Gates is far more intelligent than you,
That needs a big 'citation needed' next to it, but:
and has already seen a working plant, which is why he is investing on a technology that is going to displace oil and outright kill renewables.
You don't understand risk analysis. He's investing a very small proportion of his wealth in something that may have massive returns. The probability of said returns may be small, but that doesn't make it a bad investment if the potential payoffs are huge, as long as you can afford to take the loss if it doesn't pan out. Most people with his money will invest a few millions in a few fringe ideas, because it only takes one to pay off to more than make up for your investment. The majority of his portfolio will be in relatively safe investments with a close-to-guaranteed return, a bit will be in risky venture.
You missed decay, which is the most common form of nuclear reaction on Earth. Proton capture can technically be thought of as fusion (fusing a hydrogen nucleus with something heavier), but it generally isn't referred to as such. Neutron capture is not fusion and a lot of LENR reactions are neutron capture.
Insertion sort is terrible for the use cases the grandparent described. For one thing, it requires allocating a new data structure for storing the data (an immediate disqualification for a lot of embedded tasks). Second, it has much worse cache interaction because it requires searching the second array. Assuming that your target is an array, then it also requires a bit memcpy for each insert, which means that it likely requires a similar number of memory operations to the bubblesort, but with more temporaries. You can do a bubblesort in-place, with good cache locality, and only a handful of registers (insert base, top, current, and two for holding the current elements). If your CPU has 8 GPRs then the space requirements of a bubblesort are effectively zero - no memory required.
That's only if you don't have the requirement to sort in place. Bubblesort is also a good way of getting students to start thinking in terms of induction. Each step in the bubblesort leaves the array more sorted than it was before.
Teaching algorithms separately from data structures is one of the biggest flaws in modern computer science education. It's impossible to reason sensibly about one without the other.
Bubblesort has two advantages. The first is that, because it's only swapping adjacent elements, it has very good locality of reference (which means better cache usage, but can also mean more amenable to fine-grained locking). The second is that it performs well on almost-sorted data (that O(n^2) is the worst case - it's closer to O(n) if your inputs are mostly sorted). These two mean that there are situations where bubblesort can be useful, though they're quite rare.
What is that measuring? The fact that it doesn't say means that it's meaningless, but it looks like they're comparing number of ships, so a coastal patrol boat counts the same as an aircraft carrier...
And what was the destructive capacity of the Navy in 2006 compared to August 1945? Hell, one Ohio class submarine has more destructive capacity than the entire Navy from 1945
A statistic that floated around earlier in the year when Argentina was grumbling about the Falklands again: one of the battleships that the British were sending to the area could fire, in one minute, more munitions than were fired in the entire 1982 conflict. I'd imagine that the differences between 1945 and now are even more pronounced.
One constant trend has been that soldiers are less expendable. In the first world war, sending men to walk slowly towards machine guns and throw a grenade if they survived to get close enough was their patriotic duty. By Vietnam, having large numbers of soldiers come back in body bags was politically unacceptable.
In the 1940s, Japan was flying aircraft loaded with bombs into American warships. A few years later, people realised that you could design aircraft for this purpose and make them a lot lighter and able to accelerate more if you removed the human pilot. They called them anti-ship missiles.
The fighter screen that fleets needed to protect themselves from aircraft in the '40s is now replaced by anti-aircraft and interceptor missiles (and dumb projectiles). In the next generation of ships a lot of this will be replaced by lasers, which reduces some of the resupply need (you can't run out of laser ammunition on a nuclear carrier unless your ship is so badly damaged that it's not a good idea to be anywhere near it).
Gradually, a lot of the roles for aircraft are being replaced by drones, which means that you need smaller carriers. They don't need to house as many pilots, they don't need as many support staff.
Another part of this trend is to replace reusable vehicles with single-use munitions. Fighters are more expensive than missiles, so you spend a lot on maintaining them. Drones are a lot cheaper, so you can afford to fly them for a couple of missions and then scrap them (explosively, near someone you don't like).
Comparing numbers, as the grandparent did, is completely meaningless. You may as well compare the size of the air force to the number of soldiers Napoleon had.
Oh, and libavcodec / libavformat are used in Android (and in a lot of iOS apps, as AVFoundation doesn't always expose useful APIs), as well as in desktop browsers, so they're a pretty good target to aim for.
How does that prevent Facebook from building a profile of you? The only way to avoid that is block all Facebook like buttons, never visit the Facebook site, and make sure that your account has no friends.
People who think a fake name on Facebook protects them from any of the privacy invasion really haven't been paying attention to the last decade of data mining. The reason Facebook no longer cares if you register with a fake name is that they've been able, with very high accuracy, to get your real name and address without your providing it for a few years.