has any company ever publicised a SDK that has been so very private and restrictive?
Yes, it's quite common actually for various closed platforms. The most obvious are game consoles. Microsoft's XNA SDK has similar restrictions (when used for XBox 360 development). PS3 Linux locks out various features including access to the graphics card. I'm sure the official dev kits come with 10-mile-long EULAs; not to mention the iron-fisted control the manufacturers maintain over distribution.
For an even more direct analogy: I seem to recall, back when I was fiddling around with TI's handheld graphing calculators, that TI had a very similar situation on their hands. That is, they at first weren't going to allow native code development at all. Then after hobbyists broke in, ported GCC, and started development without TI's blessing, TI released a restricted SDK of their own and tried to lock out unauthorized apps.
You are misinformed. Apple *is* letting AT&T do it; iPhones are activated at the store like all other phones now. You are not required to use iTunes. However, the activation servers are broken today, so AT&T is giving people the *option* of buying one now and activating it at home, instead of not being able to buy one at all after waiting in line for hours.
Furthermore iTunes is also not required to get third party apps; you can download them directly from the App Store onto your iPhone over 3G, Edge, or WiFi. You also don't need iTunes to sync PIM data; you can get that over the air from Exchange or Mobile Me. iTunes is now only required if you want to back up your phone, load your personal MP3 collection, or update your firmware yourself.
They're not interested in enforcing this in general
Having laws which are only enforced at certain times or against certain people is folly. The authorities love it because it gives them leeway to enforce whatever rules they make up, under penalty of being convicted for a "crime" everybody commits. It's easy to see how this can lead to abuse; for example imagine a racist cop who pulls over only black people for speeding. Making the rules is the job of the legislature, not the police or the judicial branch. Laws must be defined precisely and enforced consistently. If there is a law that sometimes shouldn't be enforced, then it should be changed so as to explicitly exclude those times.
If you have total access to the computer, put a little dialog box at startup that says "Computer theft detected! This computer has been stolen. $1,000,000 reward for its safe return. To claim the reward, please send it UPS to..."
More's the pity. This attitude has been holding CS back for years...
Besides, is the overhead of using memory-safe languages smaller than the same done in hardware?
Yes. By a lot. But don't just take my word for it; there are published papers from the Singularity guys.
And what if something gets corrupted?
For all intents and purposes, the JVM and the CLR are perfect in their memory safety. (If you think otherwise, I'm sure you could get a lot of money for your remote code execution exploit against Silverlight or Java applets...) The only "corruption" likely to happen is hardware failure, which traditional OSes are also vulnerable to. One flipped bit in the wrong place can bring down any computer system.
It would be an interesting experiment to try flipping random bits in memory to see which OS is more resistant to such events on average, but I don't think you can a priori declare that e.g. Singularity would be worse than Windows or Linux. Furthermore, the occurrence of such events is so rare, and even when one does occur the likelihood that it actually hits a bit that is important is so small, that it is probably not even worth worrying about to any great extent.
TCP is an inherently greedy protocol. [...] he only way to truly control it is end to end QoS
True, TCP is greedy; however you are wrong about QoS. TCP is quite controllable. Your router has complete control over upstream *and* downstream TCP bandwidth. All it has to do is purposely delay or drop TCP packets and it can throttle TCP to any desired level, leaving as much room as necessary for VoIP, gaming, or other low-bandwidth latency-sensitive applications.
QoS via tagging packets is and has always been a stupid idea. There are so many reasons: the core backbone routers can't be bothered preferentially queueing packets based on QoS tags; you can't get everyone to agree to enforce the same set of priority classes; abuse is too easy by raising the priority of every packet; etc etc.
QoS can be much better enforced at the edges of the network, using TCP congestion control. TCP congestion control allows your router to control the bandwidth (upstream *and* downstream) used by all of your TCP connections. It's already universally implemented, it doesn't require any cooperation or management from ISPs, and it doesn't conflict with network neutrality at all.
QoS via marking packets is worthless for all the reasons you suggest and more. But there is a better way: QoS via TCP congestion control. A router can control the bandwidth used by TCP streams (upstream *and* downstream) by purposely dropping or delaying packets. A smart router can identify VoIP packets, and when they are detected, throttle all TCP connections enough to ensure sufficient leftover bandwidth for VoIP. It's a simple and automatic solution which doesn't require you to configure your BitTorrent software or your ISP's cooperation.
You can't modify the existing apps; there's no way to simply add voice to the Maps application (plus this would probably violate NAVTEQ/TeleAtlas's license to Google for the map data; dollars to doughnuts their contract has explicit language about a voice directions feature).
So if third parties want to make a voice navigator app, they will have to implement an entire navigation software suite themselves. The only people with licenses to the necessary data are existing GPS manufacturers. A port of the existing Garmin or TomTom software to the iPhone is not at all interesting to me. If Apple/Google did it, it would be free, totally integrated, have a great UI, and most of the processing and data storage would be done in the cloud. If Garmin or TomTom does it, it will be an expensive, separate, non-integrated application, with glacially slow ported UI, and all data stored on the device (in the style of their other products), which means crappy search, outdated and incomplete data, and upgrade fees.
I don't think it has voice directions, which would make it fairly useless as a car GPS. Google maps has never offered voice directions before, voice directions weren't mentioned in the keynote, and they're not mentioned on apple.com's new 3G iPhone info pages either.
The 2.5G iPhone wasn't loud enough to make voice directions useful anyway, but Steve did say this version has "improved audio", so maybe it's louder?
Believe it or not, in K&R C, argument and return value types did not have to be explicitly declared, and defaulted to int. The really interesting thing is that modern compilers still accept K&R C without warnings...
For what it's worth, Sprint does not enforce the 5GB limit. Verizon did for a while but they got fined for false advertising (Unlimited BroadbandAccess(tm) say the ads), so they stopped. It's asinine to have to agree to ridiculous TOS restrictions like that, but that's what you get with oligopolies.
I think my plan is simpler than that. There's no priority queue everyone has to go through; just a speed cap on the last-mile connection, like ISPs already have to implement different tiers of service. The only difference is that the speed cap is continuously variable.
Its hard for the average Joe to make a rational decision on what a GB is worth, and how much they'll need. That's exactly why the plan I proposed is good. You don't have to make that decision in advance. You don't buy GB up front. You pay for speed, which is easy to understand and quite visible. Instead of wondering how much a download will cost, you can try it and see what happens. You don't have to be extremely cautious because there's never an overage charge. The worst thing that can happen is your connection gets slow, and you can speed it back up at any time. Even if you decide you've spent too much, you still will never be cut off. You'll always be able to visit simple websites and get your email, since that hardly uses any bandwidth at all.
It definitely is important for Average Joe to come to *some* rudimentary understanding of what is using his bandwidth. Any ISP using this plan would need to provide a robust and user-friendly usage graph. It shouldn't be too hard to create one that breaks out usage by computer, application, and website. It's likely that for Average Joe two or three sites or applications would dominate the graph, making it easy for him to moderate his usage if necessary.
This is currently how the majority of the Australian ISP market operates Not really. Telstra has monthly fees, tiers, quotas, and overage charges ($150/GB, ouch!). They do have a system of reducing speed, but it happens instantly and drastically when you go over your quota. It's more like a cutoff.
Your connection should slow gradually as you use it, never abruptly. There should be no monthly fee (or at most a very small one, perhaps $10); you should be able to decide for yourself when you want to charge your account. There should be no tiers; you should decide yourself how much you want to spend to boost your speed. There should be no overage charges, just a continuing decrease in speed.
It doesn't have to be that way. We don't need tiers with caps and overage fees. Drop all that and charge based on connection speed instead. But tie it to bandwidth used like this: every byte you transfer lowers your max speed a tiny amount. When your connection gets too slow, you have a button which you can press at any time (not necessarily monthly) to raise the speed and charge your account.
There are no explicit tiers; you choose exactly how fast you want your connection to be. There is *never* an overage charge; instead your connection will just become slow. There's not even an automatic monthly fee; you choose when to press the button and get charged. The speed drop is a visible indication of how much bandwidth you're using, which takes the mystery out of it; this could be further improved by a gauge on your modem or in your computer's system tray. People wouldn't be reluctant to use their connections, because they would be in full control. They would never be charged unless they pressed the button themselves, and they would never be abruptly cut off from the Internet either.
The problem with most charge for usage schemes is that people might get stuck with huge overage fees and not understand why, because people have no idea how much bandwidth different things take. Or, your computer could get infected with a trojan and use terabytes of bandwidth to send spam and you'd get stuck with the bill.
However, charging for usage *is* a better solution, for many reasons. The most important is that it aligns the ISP's interests with those of its customers. Right now an ISP's best customer is one who doesn't use the product at all; heavy users are their least profitable customers. This is the root cause of all the problems people have with their ISPs (port blocking, BitTorrent blocking, not upgrading infrastructure, cooperating with RIAA subpoenas, terrible customer service, outspoken opposition to bandwidth-using services like online video); it all stems from the fact that ISPs have a huge incentive to *discourage* use of their product! Under a charge-for-usage scheme, that's all *reversed*. ISPs would make the most money from the heavy users, and so would encourage usage by eliminating all blocking and filtering, upgrading infrastructure, telling the RIAA to get lost, improving customer service, and encouraging bandwidth-using services like online video.
In addition to making ISPs the friends of their customers, charge-for-usage would also solve some of the Internet's big problems. Suddenly people with trojaned Windows zombie machines would be charged for all the crap they spew, giving them an incentive to secure their machines. P2P users, instead of being subsidized by the majority who use less bandwidth, would see the real costs of their traffic in their bill. If there's any truth to the "bandwidth crisis" the ISPs keep whining about, charging for usage would solve it.
So charging for usage is desirable, but how can we do it without huge overage fees? It's easy. Instead of paying for bits transferred directly, we should pay for the *speed* of transfer, almost like we do now, but with one addition: each bit transferred lowers your speed cap slightly. This cap is explicit with a big speed gauge and graphs showing your usage (it is important that this graph be very user friendly so people can figure out what is using their bandwidth). Here's the key: at any time (not necessarily monthly) you can press a "speed boost" button that charges your account and raises the cap, but it's not automatic. Under this scenario there are no explicit tiers and not even a fixed monthly payment. You pay exactly the amount you want, when you want, and get service commensurate with your payment; blazing fast or just enough for email, it's up to you. There are never overage fees; instead your service just becomes slow. If your computer gets trojaned your service will slow to a crawl, you'll look at your graph and see a giant spike of traffic from the computer in question, and you'll know to fix it *before* you press the "speed boost" button.
I hope someday ISPs and ISP customers alike will come around and see that some method of charging for usage is the only sensible way to do things. With this scheme we get all the advantages of charging for usage, but none of the drawbacks. No overage fees and no hard caps.
All ISPs should be forced to sell their connections based on target utilisations. [...] If you are below that then fine, if you go above it then you get hit with per/GB charges. Huge bandwidth overage fees for going over a cap are not the answer. But you are right that ISPs should be charging fees based on usage. The problem is not with TCP; the problem is with the ISP business model, which turns the customer into the ISP's natural enemy and vice versa. The ISP's best customer is one who doesn't use their connection at all. We can change that by moving to usage-based plans; then ISPs will encourage usage instead of throttling it. But we can avoid huge overage charges. Here is how it should work:
There is no monthly fee; you simply pay a small amount upfront to start service. Your service starts out at the maximum line speed achievable by your hardware. However, as you transfer data, the speed starts to decrease. The more you transfer, the slower it gets. The current speed of your connection (and a graph of usage broken out by application) is shown by an (optional) application which sits in your system tray, and also a display on your modem. At *any* time, you can press a button on the modem or in the software which instantly boosts the speed of your connection back up and charges you based on the amount of the boost. For convenience, you can set spending policies which keep your speed high with automatic charges, but with clearly-defined spending limits.
This scheme solves every problem we have with ISPs today. Under this scheme ISPs benefit from increased usage, so they would change their tune and encourage bandwidth-hogging applications like P2P and streaming video, upgrade their networks as fast as possible, support net neutrality, and guarantee anonymity. This scheme would also provide a gentle incentive to owners of trojaned zombie machines to fix them, but there's no possibility of getting hit with a ridiculous overage charge just because your Mom's computer was hijacked. Instead your connection would slow to a crawl, you would notice, fix the offending computer, and only be out a few bucks to bump the speed back up. People can decide exactly how much the Internet is worth to them and spend exactly that amount on Internet service. People who hardly use the Internet can pay pennies per month, while heavy users can get the highest speeds available, for a price.
Seems to me the biggest problem with the sparse voxel octree idea is moving objects and characters. Your mention of "refraction skeletons" interested me; it sounds like an idea I was thinking about but haven't seen implemented anywhere else (and you seem to have just coined the term "refraction skeletons" in this article; there are zero other results on Google). Could you elaborate on how refraction skeletons might work and why you think a doing hybrid renderer just for characters would be preferable despite the drawbacks?
This would make residential telecommunication and other infrastructures uneconomic
Right, which is why, as I mentioned, I wouldn't go that far. No political philosophy can be perfect, I guess...
Does this include "property" of the "intellectual" sort?
No, IMHO. I replied to your other comment here with my answer to that. I guess I could expand on it a little.
To a Libertarian, the most important thing is personal liberty; the freedom of everyone to do whatever they want, as long as they are not violating the right of other people to have the same freedom. Using force to coerce others is a violation of their right to freedom and the worst possible sin for a Libertarian. The government uses coercive force to implement its laws; the number of laws should be kept as small as possible to minimize coercive force.
Libertarians are strong believers in the power of markets to allocate scarce resources. The rules of private property ownership are restrictions on our freedom, but they are necessary because without *some* reasonably fair method of allocating scarce resources we would fight over them. Lots of coercive force would be used. Markets are the best way we've yet found to allocate scarce resources with the minimum possible amount of coercive force.
Intellectual property law also restricts individual liberty, but the justification used for physical property doesn't work for IP. IP does not need to be allocated because it is not scarce. In the absence of IP law, we would not fight over who gets to use the IP, because everyone can use it simultaneously; no coercive force would be used. Establishing a market in IP requires laws that the government must implement with its coercive force. The way to manage IP with the minimum possible amount of coercive force is therefore to not have IP laws at all; no market is necessary.
So, Libertarians support markets for physical property because free markets are the system which results in the least amount of coercive force being used to restrict people's freedom. That justification doesn't work for IP; the system with the least amount of coercive force is a system with no IP laws at all.
How did your comment get modded up to +5 when it is so obviously wrong? Microsoft's XNA SDK for XBox 360 is *just* as restrictive as the iPhone SDK, if not more so. Perhaps you are confused because XNA can be used for unrestricted development of Windows games. Well, Apple allows unrestricted development of Mac games too; the iPhone SDK has nothing to do with that. The only valid comparison is between XNA's XBox 360 development capability vs. the iPhone SDK.
iPhone: You can run native code. XBox: no native code; all code runs in the.NET Framework VM sandbox.
iPhone: $99 one-time fee. XBox: $99 yearly subscription + $50 yearly subscription for XBox Live Gold
iPhone: free version with emulator for testing. XBox: free version but no way to test for XBox compatibility.
iPhone: iTunes is the exclusive distribution channel for iPhone programs. XBox: XBox Live the is exclusive distribution channel for XBox games.
Since neither Apple or Microsoft can control what you do with the SDK on your own hardware, the following restrictions only apply to applications distributed through iTunes or XBox Live.
iPhone: programs of any type will be distributed. XBox: programs must be games for distribution on Live.
iPhone: distribution on iTunes store will be available to any developer. XBox: distribution on XBox Live restricted to a select few who win periodic voting contests.
iPhone: programs can use WiFi for any purpose; cellular network with restrictions. XBox: Network access only for XBox Live and local LAN multiplayer. Non-LAN play must enforce requirement of XBox Live Gold subscription.
iPhone: programs distributed through iTunes may not execute downloaded code or plugins. XBox: Microsoft would never approve a game for distribution on Live that executed downloaded code or could download plugins.
iPhone: Free programs distributed for free. XNA: not announced. Likely to limit or prohibit free games.
iPhone: Commercial distribution is 30% of gross revenue, no other fees. XNA: not announced. Likely to be higher than 30% based on rumors of XBLA royalty rates.
As you can see, XBox development is *just* as restricted as iPhone development; more so, in fact.
XNA is public. So is PS3 Linux. And XNA does offer a store; it was just announced.
Everyone agrees that the NDA is dumb; it's likely Apple will remove it soon; I'm not going to try to defend it.
Yes, it's quite common actually for various closed platforms. The most obvious are game consoles. Microsoft's XNA SDK has similar restrictions (when used for XBox 360 development). PS3 Linux locks out various features including access to the graphics card. I'm sure the official dev kits come with 10-mile-long EULAs; not to mention the iron-fisted control the manufacturers maintain over distribution.
For an even more direct analogy: I seem to recall, back when I was fiddling around with TI's handheld graphing calculators, that TI had a very similar situation on their hands. That is, they at first weren't going to allow native code development at all. Then after hobbyists broke in, ported GCC, and started development without TI's blessing, TI released a restricted SDK of their own and tried to lock out unauthorized apps.
You are misinformed. Apple *is* letting AT&T do it; iPhones are activated at the store like all other phones now. You are not required to use iTunes. However, the activation servers are broken today, so AT&T is giving people the *option* of buying one now and activating it at home, instead of not being able to buy one at all after waiting in line for hours.
Furthermore iTunes is also not required to get third party apps; you can download them directly from the App Store onto your iPhone over 3G, Edge, or WiFi. You also don't need iTunes to sync PIM data; you can get that over the air from Exchange or Mobile Me. iTunes is now only required if you want to back up your phone, load your personal MP3 collection, or update your firmware yourself.
I'm sorry, can you try making a coherent argument that isn't ad hominem? Thanks.
Having laws which are only enforced at certain times or against certain people is folly. The authorities love it because it gives them leeway to enforce whatever rules they make up, under penalty of being convicted for a "crime" everybody commits. It's easy to see how this can lead to abuse; for example imagine a racist cop who pulls over only black people for speeding. Making the rules is the job of the legislature, not the police or the judicial branch. Laws must be defined precisely and enforced consistently. If there is a law that sometimes shouldn't be enforced, then it should be changed so as to explicitly exclude those times.
If you have total access to the computer, put a little dialog box at startup that says "Computer theft detected! This computer has been stolen. $1,000,000 reward for its safe return. To claim the reward, please send it UPS to ..."
More's the pity. This attitude has been holding CS back for years...
Yes. By a lot. But don't just take my word for it; there are published papers from the Singularity guys.
For all intents and purposes, the JVM and the CLR are perfect in their memory safety. (If you think otherwise, I'm sure you could get a lot of money for your remote code execution exploit against Silverlight or Java applets...) The only "corruption" likely to happen is hardware failure, which traditional OSes are also vulnerable to. One flipped bit in the wrong place can bring down any computer system.
It would be an interesting experiment to try flipping random bits in memory to see which OS is more resistant to such events on average, but I don't think you can a priori declare that e.g. Singularity would be worse than Windows or Linux. Furthermore, the occurrence of such events is so rare, and even when one does occur the likelihood that it actually hits a bit that is important is so small, that it is probably not even worth worrying about to any great extent.
Or, if you use only memory-safe languages, you can eliminate the need for (and overhead of) hardware memory protection altogether...
TCP is an inherently greedy protocol. [...] he only way to truly control it is end to end QoS
True, TCP is greedy; however you are wrong about QoS. TCP is quite controllable. Your router has complete control over upstream *and* downstream TCP bandwidth. All it has to do is purposely delay or drop TCP packets and it can throttle TCP to any desired level, leaving as much room as necessary for VoIP, gaming, or other low-bandwidth latency-sensitive applications.
QoS via tagging packets is and has always been a stupid idea. There are so many reasons: the core backbone routers can't be bothered preferentially queueing packets based on QoS tags; you can't get everyone to agree to enforce the same set of priority classes; abuse is too easy by raising the priority of every packet; etc etc.
QoS can be much better enforced at the edges of the network, using TCP congestion control. TCP congestion control allows your router to control the bandwidth (upstream *and* downstream) used by all of your TCP connections. It's already universally implemented, it doesn't require any cooperation or management from ISPs, and it doesn't conflict with network neutrality at all.
QoS via marking packets is worthless for all the reasons you suggest and more. But there is a better way: QoS via TCP congestion control. A router can control the bandwidth used by TCP streams (upstream *and* downstream) by purposely dropping or delaying packets. A smart router can identify VoIP packets, and when they are detected, throttle all TCP connections enough to ensure sufficient leftover bandwidth for VoIP. It's a simple and automatic solution which doesn't require you to configure your BitTorrent software or your ISP's cooperation.
You can't modify the existing apps; there's no way to simply add voice to the Maps application (plus this would probably violate NAVTEQ/TeleAtlas's license to Google for the map data; dollars to doughnuts their contract has explicit language about a voice directions feature).
So if third parties want to make a voice navigator app, they will have to implement an entire navigation software suite themselves. The only people with licenses to the necessary data are existing GPS manufacturers. A port of the existing Garmin or TomTom software to the iPhone is not at all interesting to me. If Apple/Google did it, it would be free, totally integrated, have a great UI, and most of the processing and data storage would be done in the cloud. If Garmin or TomTom does it, it will be an expensive, separate, non-integrated application, with glacially slow ported UI, and all data stored on the device (in the style of their other products), which means crappy search, outdated and incomplete data, and upgrade fees.
I don't think it has voice directions, which would make it fairly useless as a car GPS. Google maps has never offered voice directions before, voice directions weren't mentioned in the keynote, and they're not mentioned on apple.com's new 3G iPhone info pages either.
The 2.5G iPhone wasn't loud enough to make voice directions useful anyway, but Steve did say this version has "improved audio", so maybe it's louder?
Believe it or not, in K&R C, argument and return value types did not have to be explicitly declared, and defaulted to int. The really interesting thing is that modern compilers still accept K&R C without warnings...
Yeah, it's still in the TOS, but it's not enforced. For now.
For what it's worth, Sprint does not enforce the 5GB limit. Verizon did for a while but they got fined for false advertising (Unlimited BroadbandAccess(tm) say the ads), so they stopped. It's asinine to have to agree to ridiculous TOS restrictions like that, but that's what you get with oligopolies.
I think my plan is simpler than that. There's no priority queue everyone has to go through; just a speed cap on the last-mile connection, like ISPs already have to implement different tiers of service. The only difference is that the speed cap is continuously variable.
It definitely is important for Average Joe to come to *some* rudimentary understanding of what is using his bandwidth. Any ISP using this plan would need to provide a robust and user-friendly usage graph. It shouldn't be too hard to create one that breaks out usage by computer, application, and website. It's likely that for Average Joe two or three sites or applications would dominate the graph, making it easy for him to moderate his usage if necessary.
Your connection should slow gradually as you use it, never abruptly. There should be no monthly fee (or at most a very small one, perhaps $10); you should be able to decide for yourself when you want to charge your account. There should be no tiers; you should decide yourself how much you want to spend to boost your speed. There should be no overage charges, just a continuing decrease in speed.
It doesn't have to be that way. We don't need tiers with caps and overage fees. Drop all that and charge based on connection speed instead. But tie it to bandwidth used like this: every byte you transfer lowers your max speed a tiny amount. When your connection gets too slow, you have a button which you can press at any time (not necessarily monthly) to raise the speed and charge your account.
There are no explicit tiers; you choose exactly how fast you want your connection to be. There is *never* an overage charge; instead your connection will just become slow. There's not even an automatic monthly fee; you choose when to press the button and get charged. The speed drop is a visible indication of how much bandwidth you're using, which takes the mystery out of it; this could be further improved by a gauge on your modem or in your computer's system tray. People wouldn't be reluctant to use their connections, because they would be in full control. They would never be charged unless they pressed the button themselves, and they would never be abruptly cut off from the Internet either.
The problem with most charge for usage schemes is that people might get stuck with huge overage fees and not understand why, because people have no idea how much bandwidth different things take. Or, your computer could get infected with a trojan and use terabytes of bandwidth to send spam and you'd get stuck with the bill.
However, charging for usage *is* a better solution, for many reasons. The most important is that it aligns the ISP's interests with those of its customers. Right now an ISP's best customer is one who doesn't use the product at all; heavy users are their least profitable customers. This is the root cause of all the problems people have with their ISPs (port blocking, BitTorrent blocking, not upgrading infrastructure, cooperating with RIAA subpoenas, terrible customer service, outspoken opposition to bandwidth-using services like online video); it all stems from the fact that ISPs have a huge incentive to *discourage* use of their product! Under a charge-for-usage scheme, that's all *reversed*. ISPs would make the most money from the heavy users, and so would encourage usage by eliminating all blocking and filtering, upgrading infrastructure, telling the RIAA to get lost, improving customer service, and encouraging bandwidth-using services like online video.
In addition to making ISPs the friends of their customers, charge-for-usage would also solve some of the Internet's big problems. Suddenly people with trojaned Windows zombie machines would be charged for all the crap they spew, giving them an incentive to secure their machines. P2P users, instead of being subsidized by the majority who use less bandwidth, would see the real costs of their traffic in their bill. If there's any truth to the "bandwidth crisis" the ISPs keep whining about, charging for usage would solve it.
So charging for usage is desirable, but how can we do it without huge overage fees? It's easy. Instead of paying for bits transferred directly, we should pay for the *speed* of transfer, almost like we do now, but with one addition: each bit transferred lowers your speed cap slightly. This cap is explicit with a big speed gauge and graphs showing your usage (it is important that this graph be very user friendly so people can figure out what is using their bandwidth). Here's the key: at any time (not necessarily monthly) you can press a "speed boost" button that charges your account and raises the cap, but it's not automatic. Under this scenario there are no explicit tiers and not even a fixed monthly payment. You pay exactly the amount you want, when you want, and get service commensurate with your payment; blazing fast or just enough for email, it's up to you. There are never overage fees; instead your service just becomes slow. If your computer gets trojaned your service will slow to a crawl, you'll look at your graph and see a giant spike of traffic from the computer in question, and you'll know to fix it *before* you press the "speed boost" button.
I hope someday ISPs and ISP customers alike will come around and see that some method of charging for usage is the only sensible way to do things. With this scheme we get all the advantages of charging for usage, but none of the drawbacks. No overage fees and no hard caps.
There is no monthly fee; you simply pay a small amount upfront to start service. Your service starts out at the maximum line speed achievable by your hardware. However, as you transfer data, the speed starts to decrease. The more you transfer, the slower it gets. The current speed of your connection (and a graph of usage broken out by application) is shown by an (optional) application which sits in your system tray, and also a display on your modem. At *any* time, you can press a button on the modem or in the software which instantly boosts the speed of your connection back up and charges you based on the amount of the boost. For convenience, you can set spending policies which keep your speed high with automatic charges, but with clearly-defined spending limits.
This scheme solves every problem we have with ISPs today. Under this scheme ISPs benefit from increased usage, so they would change their tune and encourage bandwidth-hogging applications like P2P and streaming video, upgrade their networks as fast as possible, support net neutrality, and guarantee anonymity. This scheme would also provide a gentle incentive to owners of trojaned zombie machines to fix them, but there's no possibility of getting hit with a ridiculous overage charge just because your Mom's computer was hijacked. Instead your connection would slow to a crawl, you would notice, fix the offending computer, and only be out a few bucks to bump the speed back up. People can decide exactly how much the Internet is worth to them and spend exactly that amount on Internet service. People who hardly use the Internet can pay pennies per month, while heavy users can get the highest speeds available, for a price.
Seems to me the biggest problem with the sparse voxel octree idea is moving objects and characters. Your mention of "refraction skeletons" interested me; it sounds like an idea I was thinking about but haven't seen implemented anywhere else (and you seem to have just coined the term "refraction skeletons" in this article; there are zero other results on Google). Could you elaborate on how refraction skeletons might work and why you think a doing hybrid renderer just for characters would be preferable despite the drawbacks?
To a Libertarian, the most important thing is personal liberty; the freedom of everyone to do whatever they want, as long as they are not violating the right of other people to have the same freedom. Using force to coerce others is a violation of their right to freedom and the worst possible sin for a Libertarian. The government uses coercive force to implement its laws; the number of laws should be kept as small as possible to minimize coercive force.
Libertarians are strong believers in the power of markets to allocate scarce resources. The rules of private property ownership are restrictions on our freedom, but they are necessary because without *some* reasonably fair method of allocating scarce resources we would fight over them. Lots of coercive force would be used. Markets are the best way we've yet found to allocate scarce resources with the minimum possible amount of coercive force.
Intellectual property law also restricts individual liberty, but the justification used for physical property doesn't work for IP. IP does not need to be allocated because it is not scarce. In the absence of IP law, we would not fight over who gets to use the IP, because everyone can use it simultaneously; no coercive force would be used. Establishing a market in IP requires laws that the government must implement with its coercive force. The way to manage IP with the minimum possible amount of coercive force is therefore to not have IP laws at all; no market is necessary.
So, Libertarians support markets for physical property because free markets are the system which results in the least amount of coercive force being used to restrict people's freedom. That justification doesn't work for IP; the system with the least amount of coercive force is a system with no IP laws at all.
- iPhone: You can run native code. XBox: no native code; all code runs in the
.NET Framework VM sandbox.
- iPhone: $99 one-time fee. XBox: $99 yearly subscription + $50 yearly subscription for XBox Live Gold
- iPhone: free version with emulator for testing. XBox: free version but no way to test for XBox compatibility.
- iPhone: iTunes is the exclusive distribution channel for iPhone programs. XBox: XBox Live the is exclusive distribution channel for XBox games.
Since neither Apple or Microsoft can control what you do with the SDK on your own hardware, the following restrictions only apply to applications distributed through iTunes or XBox Live.- iPhone: programs of any type will be distributed. XBox: programs must be games for distribution on Live.
- iPhone: distribution on iTunes store will be available to any developer. XBox: distribution on XBox Live restricted to a select few who win periodic voting contests.
- iPhone: programs can use WiFi for any purpose; cellular network with restrictions. XBox: Network access only for XBox Live and local LAN multiplayer. Non-LAN play must enforce requirement of XBox Live Gold subscription.
- iPhone: programs distributed through iTunes may not execute downloaded code or plugins. XBox: Microsoft would never approve a game for distribution on Live that executed downloaded code or could download plugins.
- iPhone: Free programs distributed for free. XNA: not announced. Likely to limit or prohibit free games.
- iPhone: Commercial distribution is 30% of gross revenue, no other fees. XNA: not announced. Likely to be higher than 30% based on rumors of XBLA royalty rates.
As you can see, XBox development is *just* as restricted as iPhone development; more so, in fact.