I don't think your metadata comment is true in the case of RAID-1. Mirrored RAID shouldn't need much of anything for metadata. I've only ever used both cheap RAID cards and motherboard RAID, doing a standard mirrored RAID-1. I've had multiple drive failures, and I've never had a RAID where I couldn't unplug one of the drives from the array and just use it independently of RAID without any issues. Its pretty easy to test, but I know I've taken drives out of a mirrored array and used it as an individual drive without problems.
According to NASA, it has been on a 24 month orbiter maintenance/upgrade since 2003, and should be ready to fly sometime later this year. Here's the link to the info on NASA's page: Space Shuttle Endeavour.
More importantly, they are afraid the market will be flooded with so many crap games that people will stop buying games all together because they can't get the signal through the noise. This is what happened with the Atari 2600. Its not that hard to do a game as an indie developer for consoles. It just takes more than what most people are willing to put in. If you can code up a decent game, with the hardware abstracted reasonably well, you are most of the way there. Pitch it to a publisher, it isn't that difficult to get a development kit, and if you coded it right, it shouldn't be too difficult to port. There's a reason those hurdles are in place though. People often forgot the flood of complete crap that killed the Atari 2600, and they give up on getting their title published before even trying.
Having been moved by jobs on 3 different occasions, every time across the country, there are a couple things that I have learned. First, it will cost more than $5k to move, if you include a car. Every time I've moved it has ended up costing me between $6k-$8k. Second, I won't take reimbursement anymore. I take money up front, and never reimbursement. The problem with reimbursement is that you will have a lot of expenses that need to be paid up front. Its quite annoying to have to front that money yourself. In addition, there are always little expenses here and there that you didn't think of that aren't covered. I can guarantee it. This varies from finding out that certain moving expenses aren't being covered, some security deposit doesn't count, to things like you need extra trashcans because you now have extra rooms in the house. It has been difficult at times to negotiate, but I highly recommend just getting the moving expenses paid out as a bonus up front before you move.
Actually, you'd be rather surprised. My wife did a report in college on the whole garbage/waste disposal system, and as far as city workers go, garbage men are among the highest paid of the non-skilled workers, mainly because so few people are willing to do the work.
Python may have a lot of tools, but you will have to modify them all to work with the game console, which is quite a bit of work. You also state that its easier to write code for than C++, and you're right, but I still don't think its easy enough for a non-programmer to pick up.
What has served me well in my career is rather than coming up with tools that I think would be useful, its better to ask the end-user, the artists and game designers, what their ideal tool would be. If they say "something like Python", then great, go ahead and put in a Python interpreter into your game, but I can almost guarantee that they won't tell you they want something like Python. Just because it's easy to us programmers, doesn't mean it will be for anyone else. I find that the best tool is one that I design after asking them "If you could have anything you wanted to help you do game AI, what would it be?".
Re:Python is nice but consider LUA for game script
on
Game Scripting With Python
·
· Score: 4, Interesting
Having worked on game consoles for years, and having worked on several games using both Python and LUA, I strongly disagree with your statement. I find both languages terrible for console development.
Although Lua didn't use much memory, I found it allocated and freed lots of memory. Lots and lots of it. This had the nasty side effect of fragmenting memory to all hell. This can be fixed by giving it its own stack, but its still an issue, especially if the LUA calls out to something that needs to allocate memory. It can get very nasty, very quickly. In addition, I found the language syntax to be fairly poor, I mean it was designed with configuration files in mind, and so it works great for configuration files, but it syntactically didn't fit with most of the AI we wanted to do. We just ended up calling C most of the time anyhow. On top of that, the use of LUA meant we didn't have a decent debugger (if any), which meant tracking down crashes and bugs was an adventure in tedium, using lots of printfs.
Python was a language better suited to Game AI, but once again, memory fragmentation was a big big issue. In addition, it was fairly slow and tended to access lots of memory, which killed the cache on most of the consoles nicely.
Overall, with all the performance considerations aside, I found the choice of Python and LUA to be poor mainly because they didn't solve the problem that they meant to address. One of the big things that everyone wants is non-programmers being able to edit game behavior. Both Python and LUA may seem easy to those of us who code, but it is incredibly difficult for most game designers, as most of them can not code at all. Generally, in the course of development, there isn't time or motivation for people to learn how to do many new things, and so the programmers end up doing most of the scripting. Once the programmers are doing the scripting anyhow, you may as well do it in C or C++, as you'll have better development tools. The other big argument I hear is that you can update AI in realtime, which sounds great, but in practice, is much more difficult to do than it sounds. If you are going to add scripting for this feature, then make sure if you can't implement the feature, then remove the scripting. You'll save yourself a ton of trouble. Anyhow, I'm sure lots of people will post examples of projects that succesfully used these scripting languages, and I'm sure there are some, but it certainly hasn't for any of the console based projects I've worked. Which isn't to say there aren't scripting style solutions that do work, I've seen them work and am a big proponent of them, but I haven't seen any that worked with a general-purpose scripting language. Remember, there is a price to be paid for it being general purpose, and if you have a specific purpose in mind, that price can be very high.
I worked on that in 1993-1994. It was actually kind of funny, to put that in at the time, we couldn't get a hold of David Crane's source code to the original Pitfall (mind you, this was at Activision too, so I was a bit surprised by that). We had a tester use a VCR to tape himself playing through all 255 levels of the original Pitfall so that we could reproduce the levels. It was an incredible amount of work....
The syntax for commenting things in the Doxygen style is a little weird, but once you're used to it, its great. I find it much easier to keep my comments up to date than my external documentation, so this way I can do both. In addition, I'm a consultant, which means I often have to look at massive amounts of code written by other people, most of which is uncommented. I find that running any code I have through Doxygen before anything else gives me a nice, clear, high level view of how the code is structured.
"Now, please tell me what your solution is and how you would catch terrorists. Also, please name any innocent people wrongly imprisoned for terrorist acts."
I would love to name some innocent people wrongly imprisoned, but since that list of people who have been arrested is *SECRET*, and since they haven't had a trial, its impossible to know who the people are, much less which ones are innocent.
I write video games for a living. You know how much piracy has affected me? Not at all. That's right, not one bit. I'm not arguing that what these guys didn't do was illegal, or shouldn't be punished, but I definitely don't think jail time fits the crime, nor are they going to come out as better people. Most of the people pirating all this software tend to be fairly young, and I would say its safe to say, they probably don't understand the consequences of what they are doing. I would say a more fitting punishment, one that might actually help, would be to put them to work at the video game companies they stole from as part of their punishment. Make them test a game, for free, for a period of 2 years or so. If they fail to honor the conditions of their "community service", then put them in jail. But I would guess that having the guys who pirate this software have to work on a game is much more effective than having bubba butt-rape them. In addition, it would provide a benefit to those of us who they "stole" from.
You're wrong. Normally, it uses a 1 layer of a dual layer disc. The same layer is printed onto both layers, which means if the disc gets scratched, chances are, it can still read your data. That means that the least amount of space you have available is 4.7 gigs. If you want to pay extra manufacturing costs, then you can have your game be double layer, at which point you get the full 9 gigs. Gamecube discs are 1.7 gigs, are you maybe confusing the two?
DirectX does take care of a lot of the issues, but not all of them. You still run into lots of things like different video cards perform at different levels, and may or may not support different features. You either end up supporting the lowest common denominator on hardware, cutting out a huge part of your low-end market supporting only high-end machines, or having to make multiple versions of all the art to be able to support a wide range of machines. Some features can be emulated in software, others can't. What this means is that I have a standardized interface for all video cards that support feature X for example, but not all video cards support feature X, so I still have to write specific code. This is a great improvement over the DOS days, where you had to write specific code for EACH card that supports or does not support feature X, but doesn't remove the work completely. This is true for graphics as well as audio, and then you have to test all these different combinations.
I used to buy something like 3 or 4 CDs a week, back in hayday of Napster, mainly because I was exposed to new artists I hadn't heard before at 0 cost, after which I would buy other CDs of them. After Napster was shutdown, that dropped to about 2 CDs a month, at the most. Once the RIAA started suing individuals, I decided I was not going to buy any CDs any more, and have bought 1 CD direct from the artist in the last 2 years. I have spent WAY more than that on games. I buy more games than I do CDs, just volume wise, not even counting the price differential. Most of my friends also don't buy much as far as CDs are concerned, albeit for most of them its not on principle.
You can turn off RTTI and you don't have to use virtual functions, in which case, the C++ on the GBA is fast enough. I have programmed the GBA, and in C++, and it wasn't a problem.
The article was saying that the boom mike error was only on the first video release of a Princess Bride, which came out at some point in the 1980's. It has not been in any subsequent versions.
The ESRB is like the movie ratings board. Movie ratings are not law, they are voluntarily enforced by theatres. ESRB ratings are not law, they are voluntarily enforced by video game sellers. It worked without being law for movies, and I think it can work without being a law for games.
Those are excellent books. In addition, I would recommend almost anything else that Tom DeMarco has written, they all tend to be fairly good. I recently picked up another book that I can heartily recommend for geek managers. Its an IEEE book called It Sounded Good When We Started by Dwayne Phillips and Roy O'Brien. Has a lot of useful information for new project managers, especially those who come from the technical side of things.
By saying dead-flat frequency response, it means that the IPod is able to play all the audible frequencies at the same volume. Take for example, your typical after-market car stereo. It will tend to have way too much bass, which makes the music sound muddy. And that means it does not have a flat frequency response. With a flat frequency response, if you want it to sound bass heavy, you can adjust the EQ (i.e. turn up the bass), and make it sound that way. On something bass heavy, you have to turn it down just to make it sound normal. That's why it is desired, it means you can accurately play back the audio that was recorded.
I'm a professional console programmer, and I call bullshit on your statement. Programming multi-processor systems is not only hard, but doesn't always work particularly for games. Most of my rendering is dependent on, for example, the physics system. The physics system is dependent on my AI system. In my AI system, although it seems like I might be able to parallelize it easily because you have a bunch of different characters, its not, because the characters all interact with each other. I can't run the physics and collisions and until I've run the AI, and all the physics objects also interact with each other, once again breaking parallelization. The rendering can be started once I'm done with AI and physics while I start on the next frame, but that is assuming that I have enough RAM to run both at once, something that's unlikely given the cost of RAM. So being able to run things in parallel isn't really that useful most of the time, as anybody who has worked on the PS2 can tell you.
This actually started earlier though. Chris Lamprecht was not convicted of hacking, he was convicted of theft. His crime was not specifically related to hacking, yet he was known as a hacker, therefore he was banned from the internet.
You mean this section (h)? (h) Except, as provided in subparagraph (i), an employee in the computer software field who is paid on an hourly basis shall be exempt, if all of the following apply:
This says it only applies if they are paid on an hourly basis, which EA employees are not. They are paid on salary. Therefore they are exempt.
Ahh, it took me a while to find the part that puts computer programmers as an exception. At first, I thought it was the $44.63 an hour that was the exception, but there is a seperate clause that programmers fall under. Here's the passage: "(3) Professional Exemption. A person employed in a professional capacity means any employee who meets all of the following requirements:
(a) Who is licensed or certified by the State of California and is primarily engaged in the practice of one of the following recognized professions: law, medicine, dentistry, optometry, architecture, engineering, teaching, or accounting; or
(b) Who is primarily engaged in an occupation commonly recognized as a learned or artistic profession. For the purposes of this subsection, "learned or artistic profession" means an employee who is primarily engaged in the performance of:
(i) Work requiring knowledge of an advanced type in a field or science or learning customarily acquired by a prolonged course of specialized intellectual instruction and study, as distinguished from a general academic education and from an apprenticeship, and from training in the performance of routine mental, manual, or physical processes, or work that is an essential part of or necessarily incident to any of the above work; or
(ii) Work that is original and creative in character in a recognized field of artistic endeavor (as opposed to work which can be produced by a person endowed with general manual or intellectual ability and training), and the result of which depends primarily on the invention, imagination, or talent of the employee or work that is an essential part of or necessarily incident to any of the above work; and
(iii) Whose work is predominantly intellectual and varied in character (as opposed to routine mental, manual, mechanical, or physical work) and is of such character that the output produced or the result accomplished cannot be standardized in relation to a given period of time."
Now under the section marked (3), what first threw me was that it says they have to meet ALL the requirements, but then, under section (a), the last word in there is "or", and programmers qualify under section (b). That's where the exception occurs. So by legal standards, programmers are exempt. The only case where you would qualify for overtime is if you are paid by the hour and not salaried AND you make less than $44.63 an hour.
I disagree. I am a contractor with a C-Corp, and it saves me quite a bit of money, and protects me liability wise, as long as I keep up the corporate veil (not mixing personal and corporate expenses). Both a C-Corp and an S-Corp offer limited liability, in exactly the same way as an LLC. Each of them has different requirements. An S-Corp and an LLC are quite similar, and I believe on both of them, you only pay taxes once per year. With a C-Corp, you have to pay taxes quarterly.
I don't think your metadata comment is true in the case of RAID-1. Mirrored RAID shouldn't need much of anything for metadata. I've only ever used both cheap RAID cards and motherboard RAID, doing a standard mirrored RAID-1. I've had multiple drive failures, and I've never had a RAID where I couldn't unplug one of the drives from the array and just use it independently of RAID without any issues. Its pretty easy to test, but I know I've taken drives out of a mirrored array and used it as an individual drive without problems.
According to NASA, it has been on a 24 month orbiter maintenance/upgrade since 2003, and should be ready to fly sometime later this year. Here's the link to the info on NASA's page: Space Shuttle Endeavour.
More importantly, they are afraid the market will be flooded with so many crap games that people will stop buying games all together because they can't get the signal through the noise. This is what happened with the Atari 2600. Its not that hard to do a game as an indie developer for consoles. It just takes more than what most people are willing to put in. If you can code up a decent game, with the hardware abstracted reasonably well, you are most of the way there. Pitch it to a publisher, it isn't that difficult to get a development kit, and if you coded it right, it shouldn't be too difficult to port. There's a reason those hurdles are in place though. People often forgot the flood of complete crap that killed the Atari 2600, and they give up on getting their title published before even trying.
Having been moved by jobs on 3 different occasions, every time across the country, there are a couple things that I have learned. First, it will cost more than $5k to move, if you include a car. Every time I've moved it has ended up costing me between $6k-$8k. Second, I won't take reimbursement anymore. I take money up front, and never reimbursement. The problem with reimbursement is that you will have a lot of expenses that need to be paid up front. Its quite annoying to have to front that money yourself. In addition, there are always little expenses here and there that you didn't think of that aren't covered. I can guarantee it. This varies from finding out that certain moving expenses aren't being covered, some security deposit doesn't count, to things like you need extra trashcans because you now have extra rooms in the house. It has been difficult at times to negotiate, but I highly recommend just getting the moving expenses paid out as a bonus up front before you move.
Actually, you'd be rather surprised. My wife did a report in college on the whole garbage/waste disposal system, and as far as city workers go, garbage men are among the highest paid of the non-skilled workers, mainly because so few people are willing to do the work.
Python may have a lot of tools, but you will have to modify them all to work with the game console, which is quite a bit of work. You also state that its easier to write code for than C++, and you're right, but I still don't think its easy enough for a non-programmer to pick up.
What has served me well in my career is rather than coming up with tools that I think would be useful, its better to ask the end-user, the artists and game designers, what their ideal tool would be. If they say "something like Python", then great, go ahead and put in a Python interpreter into your game, but I can almost guarantee that they won't tell you they want something like Python. Just because it's easy to us programmers, doesn't mean it will be for anyone else. I find that the best tool is one that I design after asking them "If you could have anything you wanted to help you do game AI, what would it be?".
Having worked on game consoles for years, and having worked on several games using both Python and LUA, I strongly disagree with your statement. I find both languages terrible for console development.
Although Lua didn't use much memory, I found it allocated and freed lots of memory. Lots and lots of it. This had the nasty side effect of fragmenting memory to all hell. This can be fixed by giving it its own stack, but its still an issue, especially if the LUA calls out to something that needs to allocate memory. It can get very nasty, very quickly. In addition, I found the language syntax to be fairly poor, I mean it was designed with configuration files in mind, and so it works great for configuration files, but it syntactically didn't fit with most of the AI we wanted to do. We just ended up calling C most of the time anyhow. On top of that, the use of LUA meant we didn't have a decent debugger (if any), which meant tracking down crashes and bugs was an adventure in tedium, using lots of printfs.
Python was a language better suited to Game AI, but once again, memory fragmentation was a big big issue. In addition, it was fairly slow and tended to access lots of memory, which killed the cache on most of the consoles nicely.
Overall, with all the performance considerations aside, I found the choice of Python and LUA to be poor mainly because they didn't solve the problem that they meant to address. One of the big things that everyone wants is non-programmers being able to edit game behavior. Both Python and LUA may seem easy to those of us who code, but it is incredibly difficult for most game designers, as most of them can not code at all. Generally, in the course of development, there isn't time or motivation for people to learn how to do many new things, and so the programmers end up doing most of the scripting. Once the programmers are doing the scripting anyhow, you may as well do it in C or C++, as you'll have better development tools. The other big argument I hear is that you can update AI in realtime, which sounds great, but in practice, is much more difficult to do than it sounds. If you are going to add scripting for this feature, then make sure if you can't implement the feature, then remove the scripting. You'll save yourself a ton of trouble. Anyhow, I'm sure lots of people will post examples of projects that succesfully used these scripting languages, and I'm sure there are some, but it certainly hasn't for any of the console based projects I've worked. Which isn't to say there aren't scripting style solutions that do work, I've seen them work and am a big proponent of them, but I haven't seen any that worked with a general-purpose scripting language. Remember, there is a price to be paid for it being general purpose, and if you have a specific purpose in mind, that price can be very high.
I worked on that in 1993-1994. It was actually kind of funny, to put that in at the time, we couldn't get a hold of David Crane's source code to the original Pitfall (mind you, this was at Activision too, so I was a bit surprised by that). We had a tester use a VCR to tape himself playing through all 255 levels of the original Pitfall so that we could reproduce the levels. It was an incredible amount of work....
The XBox Live Silver setup, which is basically the same as the current XBox live is free.
The syntax for commenting things in the Doxygen style is a little weird, but once you're used to it, its great. I find it much easier to keep my comments up to date than my external documentation, so this way I can do both. In addition, I'm a consultant, which means I often have to look at massive amounts of code written by other people, most of which is uncommented. I find that running any code I have through Doxygen before anything else gives me a nice, clear, high level view of how the code is structured.
"Now, please tell me what your solution is and how you would catch terrorists. Also, please name any innocent people wrongly imprisoned for terrorist acts."
I would love to name some innocent people wrongly imprisoned, but since that list of people who have been arrested is *SECRET*, and since they haven't had a trial, its impossible to know who the people are, much less which ones are innocent.
I write video games for a living. You know how much piracy has affected me? Not at all. That's right, not one bit. I'm not arguing that what these guys didn't do was illegal, or shouldn't be punished, but I definitely don't think jail time fits the crime, nor are they going to come out as better people. Most of the people pirating all this software tend to be fairly young, and I would say its safe to say, they probably don't understand the consequences of what they are doing. I would say a more fitting punishment, one that might actually help, would be to put them to work at the video game companies they stole from as part of their punishment. Make them test a game, for free, for a period of 2 years or so. If they fail to honor the conditions of their "community service", then put them in jail. But I would guess that having the guys who pirate this software have to work on a game is much more effective than having bubba butt-rape them. In addition, it would provide a benefit to those of us who they "stole" from.
You're wrong. Normally, it uses a 1 layer of a dual layer disc. The same layer is printed onto both layers, which means if the disc gets scratched, chances are, it can still read your data. That means that the least amount of space you have available is 4.7 gigs. If you want to pay extra manufacturing costs, then you can have your game be double layer, at which point you get the full 9 gigs. Gamecube discs are 1.7 gigs, are you maybe confusing the two?
DirectX does take care of a lot of the issues, but not all of them. You still run into lots of things like different video cards perform at different levels, and may or may not support different features. You either end up supporting the lowest common denominator on hardware, cutting out a huge part of your low-end market supporting only high-end machines, or having to make multiple versions of all the art to be able to support a wide range of machines. Some features can be emulated in software, others can't. What this means is that I have a standardized interface for all video cards that support feature X for example, but not all video cards support feature X, so I still have to write specific code. This is a great improvement over the DOS days, where you had to write specific code for EACH card that supports or does not support feature X, but doesn't remove the work completely. This is true for graphics as well as audio, and then you have to test all these different combinations.
I used to buy something like 3 or 4 CDs a week, back in hayday of Napster, mainly because I was exposed to new artists I hadn't heard before at 0 cost, after which I would buy other CDs of them. After Napster was shutdown, that dropped to about 2 CDs a month, at the most. Once the RIAA started suing individuals, I decided I was not going to buy any CDs any more, and have bought 1 CD direct from the artist in the last 2 years. I have spent WAY more than that on games. I buy more games than I do CDs, just volume wise, not even counting the price differential. Most of my friends also don't buy much as far as CDs are concerned, albeit for most of them its not on principle.
You can turn off RTTI and you don't have to use virtual functions, in which case, the C++ on the GBA is fast enough. I have programmed the GBA, and in C++, and it wasn't a problem.
The article was saying that the boom mike error was only on the first video release of a Princess Bride, which came out at some point in the 1980's. It has not been in any subsequent versions.
The ESRB is like the movie ratings board. Movie ratings are not law, they are voluntarily enforced by theatres. ESRB ratings are not law, they are voluntarily enforced by video game sellers. It worked without being law for movies, and I think it can work without being a law for games.
Those are excellent books. In addition, I would recommend almost anything else that Tom DeMarco has written, they all tend to be fairly good. I recently picked up another book that I can heartily recommend for geek managers. Its an IEEE book called It Sounded Good When We Started by Dwayne Phillips and Roy O'Brien. Has a lot of useful information for new project managers, especially those who come from the technical side of things.
By saying dead-flat frequency response, it means that the IPod is able to play all the audible frequencies at the same volume. Take for example, your typical after-market car stereo. It will tend to have way too much bass, which makes the music sound muddy. And that means it does not have a flat frequency response. With a flat frequency response, if you want it to sound bass heavy, you can adjust the EQ (i.e. turn up the bass), and make it sound that way. On something bass heavy, you have to turn it down just to make it sound normal. That's why it is desired, it means you can accurately play back the audio that was recorded.
I'm a professional console programmer, and I call bullshit on your statement. Programming multi-processor systems is not only hard, but doesn't always work particularly for games. Most of my rendering is dependent on, for example, the physics system. The physics system is dependent on my AI system. In my AI system, although it seems like I might be able to parallelize it easily because you have a bunch of different characters, its not, because the characters all interact with each other. I can't run the physics and collisions and until I've run the AI, and all the physics objects also interact with each other, once again breaking parallelization. The rendering can be started once I'm done with AI and physics while I start on the next frame, but that is assuming that I have enough RAM to run both at once, something that's unlikely given the cost of RAM. So being able to run things in parallel isn't really that useful most of the time, as anybody who has worked on the PS2 can tell you.
This actually started earlier though. Chris Lamprecht was not convicted of hacking, he was convicted of theft. His crime was not specifically related to hacking, yet he was known as a hacker, therefore he was banned from the internet.
You mean this section (h)?
(h) Except, as provided in subparagraph (i), an employee in the computer software field who is paid on an hourly basis shall be exempt, if all of the following apply:
This says it only applies if they are paid on an hourly basis, which EA employees are not. They are paid on salary. Therefore they are exempt.
Ahh, it took me a while to find the part that puts computer programmers as an exception. At first, I thought it was the $44.63 an hour that was the exception, but there is a seperate clause that programmers fall under. Here's the passage:
"(3) Professional Exemption. A person employed in a professional capacity means any employee who meets all of the following requirements:
(a) Who is licensed or certified by the State of California and is primarily engaged in the practice of one of the following recognized professions: law, medicine, dentistry, optometry, architecture, engineering, teaching, or accounting; or
(b) Who is primarily engaged in an occupation commonly recognized as a learned or artistic profession. For the purposes of this subsection, "learned or artistic profession" means an employee who is primarily engaged in the performance of:
(i) Work requiring knowledge of an advanced type in a field or science or learning customarily acquired by a prolonged course of specialized intellectual instruction and study, as distinguished from a general academic education and from an apprenticeship, and from training in the performance of routine mental, manual, or physical processes, or work that is an essential part of or necessarily incident to any of the above work; or
(ii) Work that is original and creative in character in a recognized field of artistic endeavor (as opposed to work which can be produced by a person endowed with general manual or intellectual ability and training), and the result of which depends primarily on the invention, imagination, or talent of the employee or work that is an essential part of or necessarily incident to any of the above work; and
(iii) Whose work is predominantly intellectual and varied in character (as opposed to routine mental, manual, mechanical, or physical work) and is of such character that the output produced or the result accomplished cannot be standardized in relation to a given period of time."
Now under the section marked (3), what first threw me was that it says they have to meet ALL the requirements, but then, under section (a), the last word in there is "or", and programmers qualify under section (b). That's where the exception occurs. So by legal standards, programmers are exempt. The only case where you would qualify for overtime is if you are paid by the hour and not salaried AND you make less than $44.63 an hour.
I disagree. I am a contractor with a C-Corp, and it saves me quite a bit of money, and protects me liability wise, as long as I keep up the corporate veil (not mixing personal and corporate expenses). Both a C-Corp and an S-Corp offer limited liability, in exactly the same way as an LLC. Each of them has different requirements. An S-Corp and an LLC are quite similar, and I believe on both of them, you only pay taxes once per year. With a C-Corp, you have to pay taxes quarterly.