Actually, all of the file extensions people use are dumb. The file extension only really matters in any deep way to the user; the computer can determine trivially what's in it. The user never cares what container the file uses, and rarely cares what codec it uses. The user cares how the file behaves when played: Does it make noise? Does it look like anything? Does it have text? Does it change over time?
In order to be sensible,.png,.gif, and.jpg should be.img;.mng and some.mpg and.wmv should be.vid;.wav,.ogg, and.mp3 should be.aud; and most.mpg and.wmv and now some.ogg should be.av; given that the situation is already hopeless, it doesn't really matter that they're using.ogg for both.
If the people who chose file extensions ran a supermarket, it would sell "cardboard boxes", "jars", "cans", and "plastic bags".
Code that really needs performance is done in hardware these days. Writing your rendering engine in a serial programming language is 8 years out of date.
You can sell a copy of your contribution, if you want. Since you're the copyright holder on your work, you can do whatever you want with it, and they don't seem to be requiring copyright assignment. Sure, you can't sell a book with everybody else's contributions in it as well, but that doesn't affect your use of your own work, and it means that nobody but you can sell a book with your contribution in it, either; you get the whole commercial market for your section, should you want to try to make money on it.
I think that the thing that makes convergance possible when it actually happens will be fact that half of your devices "process digitial information and use a peripheral" and the other half "transfer digital information".
It won't be long before the only difference between an answering machine and a PVR is what the connectors are (optionally send recorded data, record data, replay data). It also won't be long before the connectors are the same, too (802.11 or ethernet, TCP/IP).
The products which succeed will probably be things that do one thing well and make that functionality available to other devices. I bet a programmable headset with 802.11 and ethernet that does VoIP and streaming audio would do well before long. The same chipset in some nice speakers would also do well.
I think there's still a reasonable upgrade rate in the desktop market; if nothing else, the corporate world will tend to buy new desktops when people are hired, and people get used to new computers at work and then want to get the speed increase at home. With PDAs, people will often want their PDA to continue to function exactly the same forever, if possible.
Many problems which are, in general, NP complete are solvable in polynomial time with some extra information (by definition, all of them are with some sort of information); given some of the helpful information, the problem can be interesting and reasonable.
For that matter, many classes of NP complete problems have good heuristics which will solve many of the cases (but not the cases built from other NP-complete problems). You can get a good rate of success on random or common problems with an algorithm which terminates in polynomial time, having found the correct solution 75% of the time and given up the other 25%, while never either running long or giving an incorrect answer.
Perhaps they should, though. I was a teaching assistant for a few terms, and found that by far the best use of the TA's time (as opposed to the lecture) was answering the class's questions. I'd show up with a lot of notes, and ask the class what wasn't making sense to them. Half of the time, the material I would end up covering wasn't something I would have thought to cover, and the class found it very helpful (at least based on attendance at later classes, which weren't required).
The teachers know the material, but only the students know what it is that the students don't know, so for a class which isn't presenting new material but rather making sure the students really know the material, it makes sense for the students to chose what will be discussed in class.
The current educational system suffers from a lack of good feedback from the students to the teachers on what the students know, so the teacher will often continue to talk when most of the class either already understands or is lost.
I think the real reason that the PDA market is collapsing is really that it has reached the point where everyone who has a use for one already has one that fits their needs perfectly. The only reasons to get a new PDA are that your old one died, you've got a completely new job, or there's a new gimmick you like.
The thing about the PDA market is that it was large, but didn't grow, and so it got saturated easily.
Don't forget that some of the optimizations that you learned for fast C are actually good for readability. Temp variables, for example, are a good way of making it clear that two expressions are really the same.
It's still a matter of writing optimized code; it's just that you now want to optimize for the next developer (either reading or changing the code), and the compiler optimizes for you.
I've had pretty good results for martial arts testing with just taking dark shots and lightening them in the gimp afterwards. Sure, they don't come out as well as ones with better illumination, but it's as good a shot as you're likely to get under the conditions. Don't know about flourescents in particular, though; this was under sodium lights, I think, although there weren't very many of them for the space.
Actually, I think the camera I use corrects the white-balance (it obviously knows that it is using the flash). White things come out white; the problem is that white things don't look that white in my actual house, because we use a lot of bounce lighting off colored surfaces.
Translation: "We were afraid it would be worse. Also, our plan to delay the case by making the claim wrong the first time worked perfectly. Plus, this gives us the chance to come up with some new outlandish idea. See you in 30 days, or however long we can stretch it out."
If, as is frequently argued, security must be designing into a system in order for it to be effective, it is not worthwhile to search for security holes in existing software and fix them, because that does not address the fundamental insecurity of the system. The only use for searching for security holes is therefore that it teaches you how to design future software to avoid the issues.
Of course, I doubt that you'd ever get a usable system if you threw it out and started over with a new design every time there was a security hole. Often a security hole comes from deviating from a secure design (in which case a redesign is silly), and sometimes the "redesign" is something like adding another validation pass to the testing process.
But the general point is good, that "we found one and fixed it" is not a significant improvement, because that doesn't deal with the bulk of the holes, which are probably there but not fixed. The chances that the flaw that you find will happen to be the same one that an attacker finds are slim. In addition to fixing the particular issue, you have to provide a good reason that it won't happen again, and that other parts of the code don't have a corresponding problem.
If a character's movement is more realistic than its appearence, your brain thinks it's seeing a representation rather than reality. If the character looks more realistic than its movement, then your brain doesn't make this assumption.
The point is that they've crossed from the area in which they're unrealistic to the area in which they are perfectly realistic for zombies or drugged or sick people. When your brain stops saying "cartoon", it next says "corpse", and there is a long range where it reads the situation as a film of a corpse malevolently manipulated by game designers.
There are a lot of tiny movements that are necessary to give a comforting appearence. The largest is probably breathing. If your model is walking around and talking, but never breathes, that's really weird. If you were talking with someone in real life, and they weren't breathing, you'd probably freak out, since the person looks undead. Another detail is that real people are held up by a large number of muscles in opposition, and are therefore never perfectly still. If you have enough detail that you should see this movement, but you don't, it looks like the person is mechanical. Then there are movements which indicate emotions and movements which indicate attention; without these, the character seems to be not paying attention or to have a human intelligence.
The problem is basically that they go from unrealistic humans to realistic horror movie enemies.
If the 95% of the population which uses IE were paying attention, they'd have ActiveX and Javascript turned off today, and be unable to access any of these sites.
There was a recent post to the kernel mailing list saying that there were performance problems in (ironically) the RCU code on systems with a lot of processors. In this case "a lot of processors" meant 512. A few weeks later, someone posted a fix. There was a recent significant change to the virtual memory system to make it suitable for systems with 32G of RAM; there's another for 32-bit processors with processes that use 4G of RAM. When you see things like "My test box has 48G, but we recommend 32G to have a wide safety margin", and "we only designed this for a few tens of CPUs; here's a suggestion for 512, though".
Solaris may still be ahead on the high end, but Linux is definitely catching up, with IBM and SGI, among others, working on it. Oracle seems to be betting on Linux passing Solaris soon. It may not be long before Sun has to give up on Solaris and embrace Linux in order to sell high-end systems. On the other hand, they don't list servers on their web page with more than 104 processors, so they might not have systems that still count as "high-end" before long.
I always try without the flash, because pictures with the flash never seem to look right. That may be because most of the places I've taken pictures has complicated lighting which affects the picture I want to get. The trick is to hold the camera against a solid surface like a door frame. Of course, being accustomed to holding the camera steady is great for cases where the flash doesn't work.
It gets substantially better when the system also messes with your memory layout. There's also a patch to randomize the locations where libraries and sections of the binary are loaded. If you don't know where the code is, and you don't know where the strings are, and you can't insert any code that will be executed, you have a very small chance of exploiting the program, and you only get one chance before the program crashes. And next time, the libraries will be loaded differently.
I can definitely see Java as a loss leader for selling hardware. Even if it doesn't only run on Solaris, one might assume that it runs best on Solaris, and that Solaris runs best on Sun hardware.
On the other hand, I'm not convinced by the commercial software offering. I wasn't actually aware that Sun had a production J2EE implementation. From their site, it certainly looks like their main J2EE "product" is the specification. I remember hearing they had a reference implementation (although I'm not seeing it now). When the company I was working for at the time was interested in switching away from WebLogic, I don't think we even realized the existence of a Sun offering. Possibly this is due to the extremely uninformative name (I notice that you mention Tomcat, JBoss, and WebSphere by name, but not "Sun Java Application Server Edition Platform System Noun Noun Noun 8". For that matter, that's still a bit of infrastructure.
Obviously, writing the Solaris installer in Java is a bit silly as a software offering (hey, you could run it on lots of different platforms).
Where I think they have fallen terribly behind on writing Java software is the "Sun Java Desktop", which is neither mostly by Sun nor mostly in Java. If they'd actually left most of the infrastructure development to others, they probably could have implemented a nice GUI in Java by now, specified GUI libraries fully and correctly, and produced an impressive desktop for whatever platform you happen to be running.
If management is smart enough to plan ahead at all, the marathon coding sessions will be rare and predictable. (Release on this date means that the week two weeks previous will be long hours, and the week before will be chaotic; but you know this two months in advance). If you don't know when your releases will be, management is clearly insane and likely to be ineffective.
As far as long hours, I'm firmly convinced that no good software design gets done while someone is at work. All of the major breakthroughs are made while you're asleep. The only reason to go to work is to type them in and tell people about them. Of course, you'll make some progress on things you're not working directly on, so a 90-hour week once in a while (generally at the last minute before the testing cycle) is good to clean out all the bright ideas you don't know you've had. But a 90-hour week severely cuts into the actually generation of insight, so it kills the next week or two of work (which may be okay, if your next week or two is mostly sitting around waiting for bug reports). If you're doing regular 90-hour weeks, you're working part time and have an extra fulltime job staring mindlessly at a computer.
When companies GPL software (and it's any good, and anybody cares about it), the company's expenses drop, because other people take care of a lot of the small stuff (of which Java has a year-long backlog). Software that's gratis is never a major revenue stream directly. Having software that's closed-source but gratis just means that nobody else contributes either money or effort to it.
If Sun GPLed Java (the VM, compiler, libraries, etc.), they could then move people to writing software in Java, and actually have Java products which they could sell for money, which would be a serious revenue stream, and should have been the plan from the start.
Ctrl-Alt-Fn switches you to virtual console n. Each text console and each GUI is on a virtual console, and the GUI is generally on the first console which doesn't have anything else (like a login prompt) on it. In fact, you can generally start up multiple, completely independant, GUIs by logging into one of the text console and typing "startx --:1", and it will be on the first console which is still unused (the one after your usual GUI, probably).
I'm not clear on where this is documented, but just trying other function keys with ctrl-alt should have worked. So the problem isn't actually the documentation, which was unnecessary, but that the nominally correct solution didn't work. I've found that you sometimes have to let go of ctrl and alt and press them again.
Actually, all of the file extensions people use are dumb. The file extension only really matters in any deep way to the user; the computer can determine trivially what's in it. The user never cares what container the file uses, and rarely cares what codec it uses. The user cares how the file behaves when played: Does it make noise? Does it look like anything? Does it have text? Does it change over time?
.png, .gif, and .jpg should be .img; .mng and some .mpg and .wmv should be .vid; .wav, .ogg, and .mp3 should be .aud; and most .mpg and .wmv and now some .ogg should be .av; given that the situation is already hopeless, it doesn't really matter that they're using .ogg for both.
In order to be sensible,
If the people who chose file extensions ran a supermarket, it would sell "cardboard boxes", "jars", "cans", and "plastic bags".
Code that really needs performance is done in hardware these days. Writing your rendering engine in a serial programming language is 8 years out of date.
You can sell a copy of your contribution, if you want. Since you're the copyright holder on your work, you can do whatever you want with it, and they don't seem to be requiring copyright assignment. Sure, you can't sell a book with everybody else's contributions in it as well, but that doesn't affect your use of your own work, and it means that nobody but you can sell a book with your contribution in it, either; you get the whole commercial market for your section, should you want to try to make money on it.
I think that the thing that makes convergance possible when it actually happens will be fact that half of your devices "process digitial information and use a peripheral" and the other half "transfer digital information".
It won't be long before the only difference between an answering machine and a PVR is what the connectors are (optionally send recorded data, record data, replay data). It also won't be long before the connectors are the same, too (802.11 or ethernet, TCP/IP).
The products which succeed will probably be things that do one thing well and make that functionality available to other devices. I bet a programmable headset with 802.11 and ethernet that does VoIP and streaming audio would do well before long. The same chipset in some nice speakers would also do well.
I think there's still a reasonable upgrade rate in the desktop market; if nothing else, the corporate world will tend to buy new desktops when people are hired, and people get used to new computers at work and then want to get the speed increase at home. With PDAs, people will often want their PDA to continue to function exactly the same forever, if possible.
Many problems which are, in general, NP complete are solvable in polynomial time with some extra information (by definition, all of them are with some sort of information); given some of the helpful information, the problem can be interesting and reasonable.
For that matter, many classes of NP complete problems have good heuristics which will solve many of the cases (but not the cases built from other NP-complete problems). You can get a good rate of success on random or common problems with an algorithm which terminates in polynomial time, having found the correct solution 75% of the time and given up the other 25%, while never either running long or giving an incorrect answer.
Perhaps they should, though. I was a teaching assistant for a few terms, and found that by far the best use of the TA's time (as opposed to the lecture) was answering the class's questions. I'd show up with a lot of notes, and ask the class what wasn't making sense to them. Half of the time, the material I would end up covering wasn't something I would have thought to cover, and the class found it very helpful (at least based on attendance at later classes, which weren't required).
The teachers know the material, but only the students know what it is that the students don't know, so for a class which isn't presenting new material but rather making sure the students really know the material, it makes sense for the students to chose what will be discussed in class.
The current educational system suffers from a lack of good feedback from the students to the teachers on what the students know, so the teacher will often continue to talk when most of the class either already understands or is lost.
I think the real reason that the PDA market is collapsing is really that it has reached the point where everyone who has a use for one already has one that fits their needs perfectly. The only reasons to get a new PDA are that your old one died, you've got a completely new job, or there's a new gimmick you like.
The thing about the PDA market is that it was large, but didn't grow, and so it got saturated easily.
Don't forget that some of the optimizations that you learned for fast C are actually good for readability. Temp variables, for example, are a good way of making it clear that two expressions are really the same.
It's still a matter of writing optimized code; it's just that you now want to optimize for the next developer (either reading or changing the code), and the compiler optimizes for you.
I've had pretty good results for martial arts testing with just taking dark shots and lightening them in the gimp afterwards. Sure, they don't come out as well as ones with better illumination, but it's as good a shot as you're likely to get under the conditions. Don't know about flourescents in particular, though; this was under sodium lights, I think, although there weren't very many of them for the space.
Actually, I think the camera I use corrects the white-balance (it obviously knows that it is using the flash). White things come out white; the problem is that white things don't look that white in my actual house, because we use a lot of bounce lighting off colored surfaces.
Translation: "We were afraid it would be worse. Also, our plan to delay the case by making the claim wrong the first time worked perfectly. Plus, this gives us the chance to come up with some new outlandish idea. See you in 30 days, or however long we can stretch it out."
If, as is frequently argued, security must be designing into a system in order for it to be effective, it is not worthwhile to search for security holes in existing software and fix them, because that does not address the fundamental insecurity of the system. The only use for searching for security holes is therefore that it teaches you how to design future software to avoid the issues.
Of course, I doubt that you'd ever get a usable system if you threw it out and started over with a new design every time there was a security hole. Often a security hole comes from deviating from a secure design (in which case a redesign is silly), and sometimes the "redesign" is something like adding another validation pass to the testing process.
But the general point is good, that "we found one and fixed it" is not a significant improvement, because that doesn't deal with the bulk of the holes, which are probably there but not fixed. The chances that the flaw that you find will happen to be the same one that an attacker finds are slim. In addition to fixing the particular issue, you have to provide a good reason that it won't happen again, and that other parts of the code don't have a corresponding problem.
If a character's movement is more realistic than its appearence, your brain thinks it's seeing a representation rather than reality. If the character looks more realistic than its movement, then your brain doesn't make this assumption.
The point is that they've crossed from the area in which they're unrealistic to the area in which they are perfectly realistic for zombies or drugged or sick people. When your brain stops saying "cartoon", it next says "corpse", and there is a long range where it reads the situation as a film of a corpse malevolently manipulated by game designers.
There are a lot of tiny movements that are necessary to give a comforting appearence. The largest is probably breathing. If your model is walking around and talking, but never breathes, that's really weird. If you were talking with someone in real life, and they weren't breathing, you'd probably freak out, since the person looks undead. Another detail is that real people are held up by a large number of muscles in opposition, and are therefore never perfectly still. If you have enough detail that you should see this movement, but you don't, it looks like the person is mechanical. Then there are movements which indicate emotions and movements which indicate attention; without these, the character seems to be not paying attention or to have a human intelligence.
The problem is basically that they go from unrealistic humans to realistic horror movie enemies.
If the 95% of the population which uses IE were paying attention, they'd have ActiveX and Javascript turned off today, and be unable to access any of these sites.
There was a recent post to the kernel mailing list saying that there were performance problems in (ironically) the RCU code on systems with a lot of processors. In this case "a lot of processors" meant 512. A few weeks later, someone posted a fix. There was a recent significant change to the virtual memory system to make it suitable for systems with 32G of RAM; there's another for 32-bit processors with processes that use 4G of RAM. When you see things like "My test box has 48G, but we recommend 32G to have a wide safety margin", and "we only designed this for a few tens of CPUs; here's a suggestion for 512, though".
Solaris may still be ahead on the high end, but Linux is definitely catching up, with IBM and SGI, among others, working on it. Oracle seems to be betting on Linux passing Solaris soon. It may not be long before Sun has to give up on Solaris and embrace Linux in order to sell high-end systems. On the other hand, they don't list servers on their web page with more than 104 processors, so they might not have systems that still count as "high-end" before long.
Warning: do not inhale memory card.
I always try without the flash, because pictures with the flash never seem to look right. That may be because most of the places I've taken pictures has complicated lighting which affects the picture I want to get. The trick is to hold the camera against a solid surface like a door frame. Of course, being accustomed to holding the camera steady is great for cases where the flash doesn't work.
It gets substantially better when the system also messes with your memory layout. There's also a patch to randomize the locations where libraries and sections of the binary are loaded. If you don't know where the code is, and you don't know where the strings are, and you can't insert any code that will be executed, you have a very small chance of exploiting the program, and you only get one chance before the program crashes. And next time, the libraries will be loaded differently.
And, in this case, he seems to be confused about which one contains E. coli...
I can definitely see Java as a loss leader for selling hardware. Even if it doesn't only run on Solaris, one might assume that it runs best on Solaris, and that Solaris runs best on Sun hardware.
On the other hand, I'm not convinced by the commercial software offering. I wasn't actually aware that Sun had a production J2EE implementation. From their site, it certainly looks like their main J2EE "product" is the specification. I remember hearing they had a reference implementation (although I'm not seeing it now). When the company I was working for at the time was interested in switching away from WebLogic, I don't think we even realized the existence of a Sun offering. Possibly this is due to the extremely uninformative name (I notice that you mention Tomcat, JBoss, and WebSphere by name, but not "Sun Java Application Server Edition Platform System Noun Noun Noun 8". For that matter, that's still a bit of infrastructure.
Obviously, writing the Solaris installer in Java is a bit silly as a software offering (hey, you could run it on lots of different platforms).
Where I think they have fallen terribly behind on writing Java software is the "Sun Java Desktop", which is neither mostly by Sun nor mostly in Java. If they'd actually left most of the infrastructure development to others, they probably could have implemented a nice GUI in Java by now, specified GUI libraries fully and correctly, and produced an impressive desktop for whatever platform you happen to be running.
If management is smart enough to plan ahead at all, the marathon coding sessions will be rare and predictable. (Release on this date means that the week two weeks previous will be long hours, and the week before will be chaotic; but you know this two months in advance). If you don't know when your releases will be, management is clearly insane and likely to be ineffective.
As far as long hours, I'm firmly convinced that no good software design gets done while someone is at work. All of the major breakthroughs are made while you're asleep. The only reason to go to work is to type them in and tell people about them. Of course, you'll make some progress on things you're not working directly on, so a 90-hour week once in a while (generally at the last minute before the testing cycle) is good to clean out all the bright ideas you don't know you've had. But a 90-hour week severely cuts into the actually generation of insight, so it kills the next week or two of work (which may be okay, if your next week or two is mostly sitting around waiting for bug reports). If you're doing regular 90-hour weeks, you're working part time and have an extra fulltime job staring mindlessly at a computer.
next to the stream
I thought you didn't keep your money in a bank...
When companies GPL software (and it's any good, and anybody cares about it), the company's expenses drop, because other people take care of a lot of the small stuff (of which Java has a year-long backlog). Software that's gratis is never a major revenue stream directly. Having software that's closed-source but gratis just means that nobody else contributes either money or effort to it.
If Sun GPLed Java (the VM, compiler, libraries, etc.), they could then move people to writing software in Java, and actually have Java products which they could sell for money, which would be a serious revenue stream, and should have been the plan from the start.
Ctrl-Alt-Fn switches you to virtual console n. Each text console and each GUI is on a virtual console, and the GUI is generally on the first console which doesn't have anything else (like a login prompt) on it. In fact, you can generally start up multiple, completely independant, GUIs by logging into one of the text console and typing "startx -- :1", and it will be on the first console which is still unused (the one after your usual GUI, probably).
I'm not clear on where this is documented, but just trying other function keys with ctrl-alt should have worked. So the problem isn't actually the documentation, which was unnecessary, but that the nominally correct solution didn't work. I've found that you sometimes have to let go of ctrl and alt and press them again.