I'd agree with you that Apple is perhaps on dubious legal ground.
Another point I'd like to bring up is what Cisco was asking for. They weren't saying, pay us X dollars to buy the trademark. What they were saying was, "To use the trademark, you'll need to make your product compatible with ours. And we're going to keep calling ours the iPhone".
So, um, yeah, no. Compromising the design and functionality for a name? Vendor lockin for a name? Not so much. Besides, people would have to have a way of distinguishing between the Apple iPhone and the Cisco iPhone, because one will be awesome, and the other will suck.
So, they may end up just calling it the Apple Phone, instead of the Apple iPhone, but I think they're trying to see if they can get the courts to side with them that the voip phone and cell phone markets are different enough.
I would also like to second the praise and blame towards QuakeC.
I think the original Quake was the most modded game ever. I personally made three mods for it, which was 3 more than I made for anything else. Part of that was the absolute ease with which you could create mods. All of the dev tools came with the source code. QuakeC is a toy language, designed only for Quake. That is the strength and weakness.
Need an easy way to do transformations, dot products and cross products? Want to do collision checking and physics? QuakeC is it.
String processing? Arrays? Basically, any data structure other than a single struct and linked lists? Sorry.
While some of your complaints are valid, like there not being easy-to-find hooks in the UI that are used by Microsoft products, others are specious. Specifically, complaining about the grid controls in MFC not being as good as the ones in, say, FoxPro.
FoxPro was initially developed in a cross-platform manner, by a different company. Also, the team inside Microsoft that eventually took it over was separate from the MFC team. There's really no reason why you should expect that all of their custom controls should be made available as part of a library. It's not like they wrote to some hidden high-quality grid control in the MFC that wasn't exposed to non-Microsoft developers - they just built a better grid control using the same interface that was exposed to everyone, the same way you'd have to if you wanted the same functionality. I've seen some code for the grid control of another MS product, and it is pretty much straight to Win32 drawing calls, event handling, etc. It looked like it was very painful to get right.
Of course, I'm personally of the opinion that MFC is total crap, but then again I've been spoiled by well-designed libraries like Qt.
So, I know some guys that use fingerprint based authentication for a variety of people.
One of the big problems faced is that there are some professions where fingerprints are routinely removed, simply in the course of work. The one that comes to mind is bricklayers, but I imagine that many manual labor jobs would result in often having removed/damaged fingerprints.
I'd say that's a corner case. Most of the time, you want to be able to undo operations, so you're not scared to use your computer. I say this with some confidence, as I've seen utilities that do destroy information on a HD, but I have never seen anyone use them. You could continue to provide such functionality as a utility.
The other argument I have against that idea is that if you look at the goal behind it, it can get a little silly. Basically, you are trying to make sure that what you have done on a computer can't be recovered. But just rewriting with 0's won't do it. You need to at least rewrite a few times, with true random bits. But really, the only way to make 100% sure that the data is gone is to slag the hard drive. I suppose you could have a raid of small drives (a couple MB a piece, maybe?), and when you delete a file, it would pop out the 'used' drives for slagging.
Anyhow, somewhere in there, it wildly surpasses the needs of the common computer user, which was what the discussion was about.
Something that I learned in my UI design class was that when designing interfaces - the less risk there is associated with each action, the faster the UI will be to use.
So, exactly like you said, there's less risk in turning the key to your car if there's no chance that sometimes it will mean your car disappears. If there was that chance, you'd have to train yourself to check and doublecheck the state of your car before turning the key. This would slow you down quite a bit, and would be bad UI.
Instead of just deleting the car, the car's UI could confirm with you (similar to popping up a dialog) when it seemed like you were doing something that you might not want to. Or it could keep you from doing it altogether, although that would mean less capability.
However, a better solution is to make everything undoable, quickly and easily. In the case of deleting files, if you delete files, they are deleted. If you save over a file, the previous contents is gone. But if you want to bring them back, make it easy and always possible. For much of computing history, that wasn't really feasible, due to performance and storage constraints, so they opted for confirmation dialogs. But those technical limitations are much closer to being removed now, at least for simple interactions by untrained users. For those playing at home, see Apple's Time Machine. For more complex interactions, pushing the limits of the machines further, I imagine you'll still rely on better-trained users.
Hardware has always suffered from a chicken/egg problem. You need interest in the hardware to generate interest in developing software, but you need available software for the hardware to do something.
Quoted for agreement. If I could get my hands on an OLPC, I would be writing software for it. Here's hoping that some make it into the north american market, even if at $200 or whatever. I imagine after they hit, it won't take long for a ton of software to be out there.
Also, to the grandparent poster, see the earlier post about opera running on an OLPC.
Perhaps this is answered in a different post somewhere..
As far as I know, all the text of wikipedia is available under some free documentation license. If wikipedia were to start offering advertising or something, what would stop people from simply forking it? Make a site which aims for the current set of ideals, with the current body of documentation?
It's kind of funny, Nintendo got lots of coverage when they renamed the Revolution to the Wii. Many saw it as a stupid/silly decision. But in the end, it seems to have worked out.
Sony seems to be getting similar press for stupid/silly decisions, but uh.. they don't seem to be working out. I do agree that the hardware is impressive, and the ability to run linux is great. Hopefully they won't kill it by too many boneheaded PR/Marketing/Business decisions.
- Time. I've done it both ways, and the dishwasher wins. I don't pre-rinse though, I just scrape. It doesn't make much sense for pots, etc. But for a lot of plates, cups, and silverware, it makes a noticeable difference.
- Sterilization. With the heat that dishwashers can get, it sterilizes the stuff in it. It's nice for baby bottles, etc.
- Magic. It's a nice delusion to have a black box that dirty stuff goes into and clean stuff comes out of. Whether that's actually true is a little bit of a mystery.
C wasn't designed as a language to teach you how to program. It was designed as a language to write systems software in. It is still perhaps the best language to write systems software in. However, it compares unfavorably to languages that were designed specifically to teach people how to program.
Now, if the class is mostly projects writing realtime apps/OSs on embedded platforms, go for it, C is the right tool for the job. But he was talking about highschool.
BTW, I spend most of every day writing C++ code. It's a good choice, because the app is CPU bound. But Python or Ruby are much better learning languages. Eventually, you want to talk about pointers and program counters and machine language, what's actually going on under the hood. But first let them figure out how to get a computer to do what they want.
While we're on the subject, is there a brace style that is most standard in the industry?
First, C is a horrible language to learn on. Try something like Python or Ruby. There's a book out there that teaches Python where every project is some type of game.
That's a good one. There's also the free online textbook, How to Think Like a Computer Scientist. Haven't tried that one, but it's free.
Also, you asked about brace style. Yes, there is One True Brace Style. Unfortunately, no one can be told what The One True Brace style is. You have to see it for yourself.
On a similar note, I'm surprised you didn't ask whether to use vi/emacs. Or maybe whether to teach on linux or windows.
Personally, I think most of the slimy stuff is due to business decisions. I know a lot of people that work there, and they are generally hard working, intelligent people that sincerely want to impact people's lives for the better, and see Microsoft's large market share as a way to actually make a difference. If the devs were in charge, or if they had scrupulous and competent businessmen, it would be a much different company. The fish rots from the head.
The recent change in leadership is promising, but I'm definitely in the "wait and see" camp. You know, the "buy a mac while I wait and see" camp. Hey, Disney is turning around. It could happen.
So, a couple of other people have already recommended virgin mobile. I used them as my first cellphone provider, and they worked great for me.
Just wanted to relate a little story about dealing with their customer service. I set it up with my debit card to automatically withdraw, and near the end of one semester, I lost the phone. I ended up getting a monthly plan with another carrier, as it turned out to be cheaper. However, things were busy, and I didn't have the phone handy, so I never got around to looking up their customer service number and actually canceling the service.
Then I forgot about it. I think it went for 7 or 8 months before I noticed that I was still getting charged. So, I called up virgin and canceled. They asked why, told them that I lost the phone, and got another provider, because their plan was too expensive for how much I used the phone. No hard feelings, no awkward moments. Instead, the guy looked at the last time I made a call, and refunded all the money that had been automatically deducted since my last call.
Needless to say, I was totally floored. This is the best customer service I've ever had from a cellphone company. Which I guess is another way of saying "I'm glad these guys weren't trying to screw me out of every possible penny, too."
If they had a competitively priced monthly plan, I'd be with them. The only other downside besides price is that I got the feeling that I somehow wasn't really cool enough to be using the service. It was really spunky. I'm not..:)
IIRC, those laws were often used against gangsters. They couldn't prove racketeering or extortion, as people were unwilling to testify. But they could prove untaxed income, and gave them exceedingly harsh sentences.
So comparing the two companies is slightly irrelevant. Comparing MS's apples to Google's apples, Google wins, no questions asked. Comparing MS's oranges to Google's oranges... well, Google doesn't have much for oranges.
So, what you're saying is that it depends how much people prefer either apples or oranges? Google is great at what it does, Microsoft is great at what it does, and what will determine success is which model is more popular going forward.
I'd also like to point out that Google does offer AJAX libraries, and supports open-source development tools.
The security of any system... Is solely dependent on the one at the keyboard and unfortunately all too often that person is an idiot.
Well, I think that's a bit of an over simplification. Sure, the end-user can screw things up - there's nothing you can really do to keep people from screwing up their own machines, if that's what they're into. However, the system design can push things one way other the other. For example, you can make the stack non-executable, getting rid of most buffer over-runs. You can run at a lower security level, requiring user interaction to get elevated privileges. You can default to a browser that runs at an ultra-low security level and reports phishing websites.
Alternatively, you can use a global, shared memory space, omit access controls, and maybe put a big red button on the desktop that will delete all files, and join a botnet. Then for fun, make it so the button can be activated remotely. As a corollary, you could include advanced safety measures, but require recompiling the kernel and hex-editing the resulting binary.
Given the same users, the system with the better design will generally be safer. Although, granted, Bonzi Buddy or Weatherbug could be designed for any OS.
Besides saying 'me too', I'd also like to point out that you can't play iTunes-purchased songs on OS/2, MSDOS, or beOS.
However, as mentioned, you can't buy them on those OSes in the first place. So, just burn CDs on the same OS you bought the songs on, rip them to MP3, quit complaining.
I like how the article goes straight from talking about how Microsoft totally screwed all it's PlaysForSure partners to talking about how it's partnering with Open Source companies. Who will probably get screwed at some point down the line.
I saw a sig once to the effect that the average slashdot poster is an idiot, and 50% are below average. Certainly a troubling thought, if we're supposed to be an intelligent community, or something. But I think that the truth is that idiots are louder, and poorly conceived and ill-balanced arguments are easier to yell. You may have also noticed this in, say, politics. I imagine most people may have preferences, but a disproportionate percentage of the overly zealous are the ones that garner the most attention.
My guess is that the load time will decrease for consoles. It seems that the bottleneck there is IO - takes a certain amount of time to load large files from the disk. This would result in smaller disk sizes. Then the programs will be run to produce images at the desired resolution on the CPU. So, there is a possibility that if the shader programs are complex enough, it'll take longer, but as IO lags behind CPU speeds, my guess is that it will still be faster to produce most textures procedurally, or via some mix of procedural and data driven.
Right around the time that Vista was first announced, Microsoft was in the midst of a big push to move to subscription-based software. This makes a lot of sense to them - they get to keep making more money on existing products. This may or may not be a good thing for their clients. Specifically, if Microsoft puts out a lot of releases, then rather than paying for each one, they only have to pay a yearly maintainence fee.
So, the problem is that people signed up for the yearly fee, because they reasoned that they'd get Vista out of it for much less money than if they had to buy copies. Three years later, I think they're a little pissed that they're still paying yearly for software that they originally bought flat out.
On the bright side, a subscription model may mean higher-quality software from Microsoft, as they can release when it's ready, rather than when it's expedient for business goals. This is one of the reasons cited when people say that open source produces higher-quality code. On the other hand, code that makes programmers happy doesn't necessarily make customers happy, so it's a little bit up in the air. But I think that's the biggest issue.
I'd agree with you that Apple is perhaps on dubious legal ground.
Another point I'd like to bring up is what Cisco was asking for. They weren't saying, pay us X dollars to buy the trademark. What they were saying was, "To use the trademark, you'll need to make your product compatible with ours. And we're going to keep calling ours the iPhone".
So, um, yeah, no. Compromising the design and functionality for a name? Vendor lockin for a name? Not so much. Besides, people would have to have a way of distinguishing between the Apple iPhone and the Cisco iPhone, because one will be awesome, and the other will suck.
So, they may end up just calling it the Apple Phone, instead of the Apple iPhone, but I think they're trying to see if they can get the courts to side with them that the voip phone and cell phone markets are different enough.
I would also like to second the praise and blame towards QuakeC.
I think the original Quake was the most modded game ever. I personally made three mods for it, which was 3 more than I made for anything else. Part of that was the absolute ease with which you could create mods. All of the dev tools came with the source code. QuakeC is a toy language, designed only for Quake. That is the strength and weakness.
Need an easy way to do transformations, dot products and cross products? Want to do collision checking and physics? QuakeC is it.
String processing? Arrays? Basically, any data structure other than a single struct and linked lists? Sorry.
Sony's PR lately has been the worst PR I've ever seen.
Although some might say that's because I haven't been watching Sony's PR long enough.
While some of your complaints are valid, like there not being easy-to-find hooks in the UI that are used by Microsoft products, others are specious. Specifically, complaining about the grid controls in MFC not being as good as the ones in, say, FoxPro.
FoxPro was initially developed in a cross-platform manner, by a different company. Also, the team inside Microsoft that eventually took it over was separate from the MFC team. There's really no reason why you should expect that all of their custom controls should be made available as part of a library. It's not like they wrote to some hidden high-quality grid control in the MFC that wasn't exposed to non-Microsoft developers - they just built a better grid control using the same interface that was exposed to everyone, the same way you'd have to if you wanted the same functionality. I've seen some code for the grid control of another MS product, and it is pretty much straight to Win32 drawing calls, event handling, etc. It looked like it was very painful to get right.
Of course, I'm personally of the opinion that MFC is total crap, but then again I've been spoiled by well-designed libraries like Qt.
So, I know some guys that use fingerprint based authentication for a variety of people.
One of the big problems faced is that there are some professions where fingerprints are routinely removed, simply in the course of work. The one that comes to mind is bricklayers, but I imagine that many manual labor jobs would result in often having removed/damaged fingerprints.
I'd say that's a corner case. Most of the time, you want to be able to undo operations, so you're not scared to use your computer. I say this with some confidence, as I've seen utilities that do destroy information on a HD, but I have never seen anyone use them. You could continue to provide such functionality as a utility.
The other argument I have against that idea is that if you look at the goal behind it, it can get a little silly. Basically, you are trying to make sure that what you have done on a computer can't be recovered. But just rewriting with 0's won't do it. You need to at least rewrite a few times, with true random bits. But really, the only way to make 100% sure that the data is gone is to slag the hard drive. I suppose you could have a raid of small drives (a couple MB a piece, maybe?), and when you delete a file, it would pop out the 'used' drives for slagging.
Anyhow, somewhere in there, it wildly surpasses the needs of the common computer user, which was what the discussion was about.
Something that I learned in my UI design class was that when designing interfaces - the less risk there is associated with each action, the faster the UI will be to use.
So, exactly like you said, there's less risk in turning the key to your car if there's no chance that sometimes it will mean your car disappears. If there was that chance, you'd have to train yourself to check and doublecheck the state of your car before turning the key. This would slow you down quite a bit, and would be bad UI.
Instead of just deleting the car, the car's UI could confirm with you (similar to popping up a dialog) when it seemed like you were doing something that you might not want to. Or it could keep you from doing it altogether, although that would mean less capability.
However, a better solution is to make everything undoable, quickly and easily. In the case of deleting files, if you delete files, they are deleted. If you save over a file, the previous contents is gone. But if you want to bring them back, make it easy and always possible. For much of computing history, that wasn't really feasible, due to performance and storage constraints, so they opted for confirmation dialogs. But those technical limitations are much closer to being removed now, at least for simple interactions by untrained users. For those playing at home, see Apple's Time Machine. For more complex interactions, pushing the limits of the machines further, I imagine you'll still rely on better-trained users.
Quoted for agreement. If I could get my hands on an OLPC, I would be writing software for it. Here's hoping that some make it into the north american market, even if at $200 or whatever. I imagine after they hit, it won't take long for a ton of software to be out there.
Also, to the grandparent poster, see the earlier post about opera running on an OLPC.
Perhaps this is answered in a different post somewhere..
As far as I know, all the text of wikipedia is available under some free documentation license. If wikipedia were to start offering advertising or something, what would stop people from simply forking it? Make a site which aims for the current set of ideals, with the current body of documentation?
It's kind of funny, Nintendo got lots of coverage when they renamed the Revolution to the Wii. Many saw it as a stupid/silly decision. But in the end, it seems to have worked out.
Sony seems to be getting similar press for stupid/silly decisions, but uh.. they don't seem to be working out. I do agree that the hardware is impressive, and the ability to run linux is great. Hopefully they won't kill it by too many boneheaded PR/Marketing/Business decisions.
A couple of things..
- Time. I've done it both ways, and the dishwasher wins. I don't pre-rinse though, I just scrape. It doesn't make much sense for pots, etc. But for a lot of plates, cups, and silverware, it makes a noticeable difference.
- Sterilization. With the heat that dishwashers can get, it sterilizes the stuff in it. It's nice for baby bottles, etc.
- Magic. It's a nice delusion to have a black box that dirty stuff goes into and clean stuff comes out of. Whether that's actually true is a little bit of a mystery.
C wasn't designed as a language to teach you how to program. It was designed as a language to write systems software in. It is still perhaps the best language to write systems software in. However, it compares unfavorably to languages that were designed specifically to teach people how to program.
Now, if the class is mostly projects writing realtime apps/OSs on embedded platforms, go for it, C is the right tool for the job. But he was talking about highschool.
BTW, I spend most of every day writing C++ code. It's a good choice, because the app is CPU bound. But Python or Ruby are much better learning languages. Eventually, you want to talk about pointers and program counters and machine language, what's actually going on under the hood. But first let them figure out how to get a computer to do what they want.
First, C is a horrible language to learn on. Try something like Python or Ruby. There's a book out there that teaches Python where every project is some type of game. That's a good one. There's also the free online textbook, How to Think Like a Computer Scientist. Haven't tried that one, but it's free.
Also, you asked about brace style. Yes, there is One True Brace Style . Unfortunately, no one can be told what The One True Brace style is. You have to see it for yourself.
On a similar note, I'm surprised you didn't ask whether to use vi/emacs. Or maybe whether to teach on linux or windows.
Another useful wikipedia article is Criticism of Microsoft.
Personally, I think most of the slimy stuff is due to business decisions. I know a lot of people that work there, and they are generally hard working, intelligent people that sincerely want to impact people's lives for the better, and see Microsoft's large market share as a way to actually make a difference. If the devs were in charge, or if they had scrupulous and competent businessmen, it would be a much different company. The fish rots from the head.
The recent change in leadership is promising, but I'm definitely in the "wait and see" camp. You know, the "buy a mac while I wait and see" camp. Hey, Disney is turning around. It could happen.
I think it means something along the lines of "We'll be doing faster rendering. Also, the way other people have done it sucks."
I imagine you've seen the official list of compatible players for iTunes on OSX
So, a couple of other people have already recommended virgin mobile. I used them as my first cellphone provider, and they worked great for me.
:)
Just wanted to relate a little story about dealing with their customer service. I set it up with my debit card to automatically withdraw, and near the end of one semester, I lost the phone. I ended up getting a monthly plan with another carrier, as it turned out to be cheaper. However, things were busy, and I didn't have the phone handy, so I never got around to looking up their customer service number and actually canceling the service.
Then I forgot about it. I think it went for 7 or 8 months before I noticed that I was still getting charged. So, I called up virgin and canceled. They asked why, told them that I lost the phone, and got another provider, because their plan was too expensive for how much I used the phone. No hard feelings, no awkward moments. Instead, the guy looked at the last time I made a call, and refunded all the money that had been automatically deducted since my last call.
Needless to say, I was totally floored. This is the best customer service I've ever had from a cellphone company. Which I guess is another way of saying "I'm glad these guys weren't trying to screw me out of every possible penny, too."
If they had a competitively priced monthly plan, I'd be with them. The only other downside besides price is that I got the feeling that I somehow wasn't really cool enough to be using the service. It was really spunky. I'm not..
IIRC, those laws were often used against gangsters. They couldn't prove racketeering or extortion, as people were unwilling to testify. But they could prove untaxed income, and gave them exceedingly harsh sentences.
So comparing the two companies is slightly irrelevant. Comparing MS's apples to Google's apples, Google wins, no questions asked. Comparing MS's oranges to Google's oranges... well, Google doesn't have much for oranges.
So, what you're saying is that it depends how much people prefer either apples or oranges? Google is great at what it does, Microsoft is great at what it does, and what will determine success is which model is more popular going forward.
I'd also like to point out that Google does offer AJAX libraries, and supports open-source development tools.
The security of any system ... Is solely dependent on the one at the keyboard and unfortunately all too often that person is an idiot.
Well, I think that's a bit of an over simplification. Sure, the end-user can screw things up - there's nothing you can really do to keep people from screwing up their own machines, if that's what they're into. However, the system design can push things one way other the other. For example, you can make the stack non-executable, getting rid of most buffer over-runs. You can run at a lower security level, requiring user interaction to get elevated privileges. You can default to a browser that runs at an ultra-low security level and reports phishing websites.
Alternatively, you can use a global, shared memory space, omit access controls, and maybe put a big red button on the desktop that will delete all files, and join a botnet. Then for fun, make it so the button can be activated remotely. As a corollary, you could include advanced safety measures, but require recompiling the kernel and hex-editing the resulting binary.
Given the same users, the system with the better design will generally be safer. Although, granted, Bonzi Buddy or Weatherbug could be designed for any OS.
Besides saying 'me too', I'd also like to point out that you can't play iTunes-purchased songs on OS/2, MSDOS, or beOS.
However, as mentioned, you can't buy them on those OSes in the first place. So, just burn CDs on the same OS you bought the songs on, rip them to MP3, quit complaining.
I like how the article goes straight from talking about how Microsoft totally screwed all it's PlaysForSure partners to talking about how it's partnering with Open Source companies. Who will probably get screwed at some point down the line.
Yeah, I think that once again, penny-arcade says it best.
I saw a sig once to the effect that the average slashdot poster is an idiot, and 50% are below average. Certainly a troubling thought, if we're supposed to be an intelligent community, or something. But I think that the truth is that idiots are louder, and poorly conceived and ill-balanced arguments are easier to yell. You may have also noticed this in, say, politics. I imagine most people may have preferences, but a disproportionate percentage of the overly zealous are the ones that garner the most attention.
My guess is that the load time will decrease for consoles. It seems that the bottleneck there is IO - takes a certain amount of time to load large files from the disk. This would result in smaller disk sizes. Then the programs will be run to produce images at the desired resolution on the CPU. So, there is a possibility that if the shader programs are complex enough, it'll take longer, but as IO lags behind CPU speeds, my guess is that it will still be faster to produce most textures procedurally, or via some mix of procedural and data driven.
Right around the time that Vista was first announced, Microsoft was in the midst of a big push to move to subscription-based software. This makes a lot of sense to them - they get to keep making more money on existing products. This may or may not be a good thing for their clients. Specifically, if Microsoft puts out a lot of releases, then rather than paying for each one, they only have to pay a yearly maintainence fee.
So, the problem is that people signed up for the yearly fee, because they reasoned that they'd get Vista out of it for much less money than if they had to buy copies. Three years later, I think they're a little pissed that they're still paying yearly for software that they originally bought flat out.
On the bright side, a subscription model may mean higher-quality software from Microsoft, as they can release when it's ready, rather than when it's expedient for business goals. This is one of the reasons cited when people say that open source produces higher-quality code. On the other hand, code that makes programmers happy doesn't necessarily make customers happy, so it's a little bit up in the air. But I think that's the biggest issue.