That style of programming leads to unreadable and unmaintainable code. The problem is that, in many cases, the programmer that required reams of documentation in order to write the code also requires that documentation in order to read it. The system-level become inappropriate to the evironment and language being used since the design was done "in your head" instead of "in the code.
IMHO, detailed specs should only be done when there can be a GAURANTEE that it won't change for at least 2 years. The is is the usually the case with specs produced by groups like W3C, IETF, or the OMG, and a lot of programmers think they should copy the activities of these beauricratic organizations in their own work, where requirements can be expected to change continuously. In this environment, maintaining a detailed specification that is separate from the code is far too impractical. It's better that programmers make the code and the focus of their attention and make sure their code *deserves* to be the focus of attention (i.e. it's well written, elegant, easy on the eyes and mind, fun to take walks on the beach with, etc...).
it wouldn't be so slim if they both arised from the same localized cause. its also relatively rare to get shot, but lots of gun shot victims end up with multiple bullets in them within a pretty short period of time....
Actually, you can do that. SWT (the widget toolkit) is implemented with JNI, so you can use as much of the underlying window-system's functionality as you want. On windows at least, you could probably wrap Vim with a COM object and embed it into the browser. I guess you could do the same thing with CORBA + GNOME on linux, but I'm not particularly familiar with those technologies.
Incidentally, if you do embed Vim into eclipse, I'd probably use it too.
Windowing-system specific features aren't Java -- they are implemented natively through a windowing abstraction called SWT (Standard Widget Toolkit) rather than using Sun's Swing toolkit. That's why the system looks different on different platforms, since the appearance of widgets is determined by the underlying GUI implementation.
Don't do this! Just write to the standard DTD and ignore everything else. Providing "optimized" content just makes the compatibility wars rage on, and if you optimize for IE, you're helping MS subvert the documented standards.
Would you mind posting the DTD for JavaScript?
Oops! I nearly forgot, scripting languages don't have DTDs!
And sure, some backwards people would prefer no scripts in their HTML, but the rest of us actually prefer the design flexibility... and it's just a fact of life that browsers have different, mutually incompatable bugs in their implementations, as well as "additional features."
As we all know, security by obscurity is no security at all.
I really don't see why that should be the case (in fact, it's obviously false), but, considering that the statement rhymes and uses alliteration nicely, I can see why someone might be convinced. Don't you hate it when you can't get stupid jingles like that out of your head? Especially that damned "Mmmm Bop" song...
AMD has been using Intel's fab for much of their production for the Athlons. So, if Intel is having a hard time producing even their own chips in volume, don't expect them to devote more resources to making more Athlons for AMD.
Hopefully, when Fab30 (AMD's Dresden plant) is "fully operational" (in the "Death Star" sense of the term), this kind of thing won't matter so much.
Who cares if 1.3MPixels already fills your screen completely? What if you want to crop a portion of the image and enlarge it? What about making posters or banners? If you try and enlarge a photo taken with a digital camera to poster size, it's going to look like crap.
The lack of resolution is also a problem for post processing -- applying 'filters' (the Gimp/Photoship kind, not the 55mm things) to the image degrades the quality of the image each time they are applied (it emphasizes aliasing in the im age).
By the way, you CAN print pictures made with a digital camera -- most photolabs will print it for you with a high-quality (iow, unaffordable) printer.
Considering the time span of the course, do you think it makes sense that all students (at least the on-campus ones) should already have a background in programming (not necessarily professionally, but they'd be able to write a reasonably complex program in some language)? It doesn't take very long to learn how to program, but it certainly does take a long time for someone to become fluent. It's the difference between being able to speak French by translating an English sentence you've already constructed, and eventually just forming the French sentence without even thinking in English first. That's the kind of apprehension you need to be a good programmer -- and it takes more than a few months to apprehend this.
It really surprises me that you'd think that an MIT/Stanford-style CS curriculum can be apprehended within just one year. I'm a senior CS student at CMU and while I don't doubt that all of the CS lectures I've had could fit into the schedule you specified, I don't imagine that a student would retain much of that knowledge.
You simply don't get a good knowledge of CS from just listening to a lecturer tell you about CS. You need to go off on your own and struggle with the problems. You need to spend days at a time banging your head against a wall until you can find and then prove your algorithms correct. And you need to do that over and over again, until, upon getting a new problem, you immediately say to yourself: "I can use such-and-such a theorem to reduce that problem to finding a true quantified boolean formula -- darn, that's P-SPACE complete!" (or "wow! I've proved that P=P-SPACE" if you're a supa-genius)
And what's more, this knowledge is cumulative. You simply WON'T get it in 3 months, or 4 months, or 2 years. You might be smart enough to recite every single proof you've ever encountered so far (perhaps you were an accomplished actor) but I seriously doubt that any of your students will magically transform themselves into creative computer science students within the period of just one year of listening to someone else talk about computer science or solve problems for them.
If you think it'd be fun, go ahead and teach whatever curriculum you'd like, but I have a feeling you'll lose your students after a month or two if you don't give them any time to let them struggle with difficulty. And heck, beyond just learning the formalism in CS, when are they even going to have time to hack on large projects? You don't learn software engineering by attending lecture. You learn it by building horribly unmaintanable programs (unintentionally, of course) and reflecting on that after the fact.
If this program will be valuable to anyone, it's probably for people who write about technology and want to get a sense of the depth of CS (beyond programming), but don't expect to become proficient in it.
UI guidelines and user studies are there so that controls are intuitive for a novice or a first time user of an application (without having to read a manual first). What does this have to do with configurable chrome? Once a user has mastered a program, or if they'd rather install something that looks better or is more suited to how they work, this gives them the choice of how to do so. If they find that the UI is to difficult to use, they can always go back to the default skin -- something that shouldn't be too difficult of they already figured out how to install skins in the first place.
However, programs like QuickTime 4.0 are a different matter entirely. The UI for QT4 is a disaster...
Psychiatrists are trained specifically to look out for signs of mental disturbances...
Psychiatrists also have an extremely skewed view of what constitutes a mental disturbance. Just look at how many kids are being prescribed Ritalin and or Prozac to make sure they stay in line.
If psychiatrists started examining more kids for mania and depression, combined with some "break through drug" by a big pharmacutical company, I'd bet that you'd start seeing millions of moody adolescents on antidepressives to keep them from shooting their classmates.
Typically, drugs are prescribed if someones mental state is abnormal or problematic; but who's to say what's abnormal, and what is really a problem? More than likely, it has to do with things like pissing off your parents or not doing well enough in school. Maybe the psychiatric community ought to fess up to their real purpose -- enforcing cultural ideals and regulating 'normality.'
Incidentally, at least one of the Columbine shooters was on an antidepressive drug (I forget which); another school-shooter (I forget where) was also on an antidepressant. If you were statistically minded, you might say that there is a significant correlation between these incidents and the use of these drugs. Of course, whose to no whether or not the people in question would have commited these incidents were they unmedicated, but it's certainly interesting to consider. (heck, if you already felt as if you were an outsider in society and then a psychiatrist comes along and deems you "clinically abnormal" by prescribing medication for your mental failings, how would you feel?)
Unless someone is clearly a danger to themselves or someone else, I see little value in prescribing these drugs for children (adults should be able to do as they please, of course).
That is, until we get into interpretive languages like perl, python, php, javascript, etc, in which the source isn't compiled but is the actual final executable.
I think the key word here is "interpret." Regardless of what's done with the source code, the programmer still expresses something in the source code; whether the source code can be interpretted directly by machine is a red herring. If the code is intended to be human readable, it can still be viewed as expressive in the legal sense. But then again, maybe I'm automatically ruling out write-only languages like perl...:)
I can't directly comment on Penrose's book, but humans certainly CAN'T always solve the halting problem. Most of the programs you are familiar with are 'intelligently' constructed where the programmer is implicitly using various halting-invariants to gaurantee that the program halts. But, I'll bet I can give you a randomly generated 8 state turing machine and you'll never guess whether or not it terminates. If you're curious, look around on the web for the best known 6 state Busy Beaver turing machine and see how long it takes for it to halt.
Incidentally, although the halting problem is certainly related to Goedel's Incompleteness Theorem, it's still not the same thing. I think Penrose was saying that, since humans are not confined to "thinking within a formal system" that were are capable of deciding the validity of assertions that a computer cannot. Again, I don't buy this assertion either, for similar reasons; in fact, I sometimes wonder if my Palm Pilot might be more intelligent than even Roger Penrose.:)
The work "cracker" is stupid anyway... They're all hackers, only some of them are criminals as well.
If the media wants to claim the word "hacker" to mean "computer criminal" (which they already have), that's perfectly fine with me. The ambiguity in different circles doesn't bother me at all.
The article doesn't specifically speak of tech workers -- it's "knowlege workers" their talkin' 'bout. In other words, programmers don't count. The people who DO count are tech help/support staff, the people you call when you need to get your HMO to cover a medical bill, your friendly (if sometimes automated) telephone operator, etc... Yes, this probably also counts people like consultants, but they are far out-numbered by the other kinds of knowledge workers I mentioned.
Most IT workers are better considered craftsmen, not knowledge workers.
You will find out that you can get a lot done in 37.5 hours, if that is all the time you have. In many ways this makes Europeans even more hardcore than Americans, since they produce similar levels of productivity, from fewer working hours.
Productivity is the amount of stuff produced per fixed time unit. If Europeans and Americans have the same productivity and the Americans are working far more hours, that means that the total output of American workers is far more than those of European workers. In otherwords, Europeans are relatively softcore compared to the slaves^H^H^H^H^H^Hworkers here in the good 'ol USofA.
Anyone remember how in the 80s when Japan was still on top of the world technologically, we used to find the Japanese work ethic excruciatingly demanding and hurtful to their culture (mixed in with some resentment of their success)? Well, look at us now! We probably have just as many strokes and heart attacks as they used to! And I'll bet our divorce rate is MUCH higher. So there, stop calling us "lazy Americans!"
Of course, Japan did suffer a nation-wide burnout earlier in this decade... maybe that says something about the "state of the bubble" over here...
I really don't see where Metcalfe has a point -- Torvalds never claimed to be a free software fanatic -- in the sense that all software should be free (as in GPL'd). Rather, he does support OSS, which is entirely pragmatic in approach. Some software is better developed in a cathedral, others in a bazaar. Unless Transmeta (and Torvalds by extension) want to deal with people exploiting portions of the Crusoe architecture that are subject to change, it's makes more sense for them to keep it private indefinitely. Otherwise, they'll have very difficult compatability problems to solve in the future. And besides, there's an aweful lot of intellectual property in that source code. That stuff costs a LOT of money, you know.
Anyhow, Torvalds is a much different sort of hacker than Stallman. Whereas Stallman considers hackers to be some sort of political animal devoted to making all information free, Torvalds just likes to solve difficult and interesting programs. If you're the sort of person who thinks is unethical to solve a problem and not tell everyone else how you solved it or give them an opportunity to solve it better, than so be it; whine all you want. Hell, everyone argues about privacy issues here -- what's the difference between keeping your source code private and keeping your other knowlege private? It's all the same to me...
Incidentally, free software is entirely different from "free speech." Free speech gives you the right to say what you want. Stallman's fanatic ideolgy would make it illegal to not say things you don't want to say. (and before someone brings up issues like publishing source code of crypto, this actually is the same thing as free speech -- but it has nothing to do with Stallman's conception of 'free software'). It's be like denying a person the 5th Amendment (for non-American's, the right to not say something that could incrimintate you) because "all of your knowledge should be public."
I'm with Torvalds on this one. GPL your code when it makes sense (like if you want to make a new operating system and you realize you can't do it all by yourself). If there are specific issues which would make it stupid to do so (like intellectual property), then withhold it. Don't let a bunch of commie-nerds tell you you're being unethical.
I was asking myself the same thing... Do I really want to run a binary distributed by the FBI? I'm not much of a conspiracy theorist, but it's still a little strange to consider the FBI a "trusted source."
That style of programming leads to unreadable and unmaintainable code. The problem is that, in many cases, the programmer that required reams of documentation in order to write the code also requires that documentation in order to read it. The system-level become inappropriate to the evironment and language being used since the design was done "in your head" instead of "in the code.
IMHO, detailed specs should only be done when there can be a GAURANTEE that it won't change for at least 2 years. The is is the usually the case with specs produced by groups like W3C, IETF, or the OMG, and a lot of programmers think they should copy the activities of these beauricratic organizations in their own work, where requirements can be expected to change continuously. In this environment, maintaining a detailed specification that is separate from the code is far too impractical. It's better that programmers make the code and the focus of their attention and make sure their code *deserves* to be the focus of attention (i.e. it's well written, elegant, easy on the eyes and mind, fun to take walks on the beach with, etc...).
-n00m
it wouldn't be so slim if they both arised from the same localized cause. its also relatively rare to get shot, but lots of gun shot victims end up with multiple bullets in them within a pretty short period of time....
Q: WTF?
A: That's not a compilation error, it's a stack trace from a run-time error.
And the problem is probably that you don't have the output from the RMI compiler in the classpath for either the rmi registry or the jvm.
Actually, you can do that. SWT (the widget toolkit) is implemented with JNI, so you can use as much of the underlying window-system's functionality as you want. On windows at least, you could probably wrap Vim with a COM object and embed it into the browser. I guess you could do the same thing with CORBA + GNOME on linux, but I'm not particularly familiar with those technologies.
Incidentally, if you do embed Vim into eclipse, I'd probably use it too.
The problem with emacs is that you have to extend it using LISP (elisp, sorry).
And that sucks.
With Java, at least, you get to take advantage of an active developer communitity and lots of compatable (and open-source) components available.
Windowing-system specific features aren't Java -- they are implemented natively through a windowing abstraction called SWT (Standard Widget Toolkit) rather than using Sun's Swing toolkit. That's why the system looks different on different platforms, since the appearance of widgets is determined by the underlying GUI implementation.
I'm thinking about it.
Ok, I'm scratching my head now, I'm still thinking.
Ok, something is starting to happen, I think I've got it.......!
DOH! Tell your mom not to use her teeth, dammit!!!! I can't stand it when she does that...
-n00m
Would you mind posting the DTD for JavaScript?
Oops! I nearly forgot, scripting languages don't have DTDs!
And sure, some backwards people would prefer no scripts in their HTML, but the rest of us actually prefer the design flexibility... and it's just a fact of life that browsers have different, mutually incompatable bugs in their implementations, as well as "additional features."
-n00m
I really don't see why that should be the case (in fact, it's obviously false), but, considering that the statement rhymes and uses alliteration nicely, I can see why someone might be convinced. Don't you hate it when you can't get stupid jingles like that out of your head? Especially that damned "Mmmm Bop" song...
-NooM
It states very clearly:
You may produce and distribute, in executable form only, programs which you created...
In other words, you are allowed to do that. It doesn't say you aren't allowed to do otherwise...
Sorry.
Noom
Yes. I am a moron, if that's what you were getting at.
after drolling over dozens of benchmark graphs?
AMD has been using Intel's fab for much of their production for the Athlons. So, if Intel is having a hard time producing even their own chips in volume, don't expect them to devote more resources to making more Athlons for AMD.
Hopefully, when Fab30 (AMD's Dresden plant) is "fully operational" (in the "Death Star" sense of the term), this kind of thing won't matter so much.
-NooM
Who cares if 1.3MPixels already fills your screen completely? What if you want to crop a portion of the image and enlarge it? What about making posters or banners? If you try and enlarge a photo taken with a digital camera to poster size, it's going to look like crap.
The lack of resolution is also a problem for post processing -- applying 'filters' (the Gimp/Photoship kind, not the 55mm things) to the image degrades the quality of the image each time they are applied (it emphasizes aliasing in the im age).
By the way, you CAN print pictures made with a digital camera -- most photolabs will print it for you with a high-quality (iow, unaffordable) printer.
Considering the time span of the course, do you think it makes sense that all students (at least the on-campus ones) should already have a background in programming (not necessarily professionally, but they'd be able to write a reasonably complex program in some language)? It doesn't take very long to learn how to program, but it certainly does take a long time for someone to become fluent. It's the difference between being able to speak French by translating an English sentence you've already constructed, and eventually just forming the French sentence without even thinking in English first. That's the kind of apprehension you need to be a good programmer -- and it takes more than a few months to apprehend this.
It really surprises me that you'd think that an MIT/Stanford-style CS curriculum can be apprehended within just one year. I'm a senior CS student at CMU and while I don't doubt that all of the CS lectures I've had could fit into the schedule you specified, I don't imagine that a student would retain much of that knowledge.
You simply don't get a good knowledge of CS from just listening to a lecturer tell you about CS. You need to go off on your own and struggle with the problems. You need to spend days at a time banging your head against a wall until you can find and then prove your algorithms correct. And you need to do that over and over again, until, upon getting a new problem, you immediately say to yourself: "I can use such-and-such a theorem to reduce that problem to finding a true quantified boolean formula -- darn, that's P-SPACE complete!" (or "wow! I've proved that P=P-SPACE" if you're a supa-genius)
And what's more, this knowledge is cumulative. You simply WON'T get it in 3 months, or 4 months, or 2 years. You might be smart enough to recite every single proof you've ever encountered so far (perhaps you were an accomplished actor) but I seriously doubt that any of your students will magically transform themselves into creative computer science students within the period of just one year of listening to someone else talk about computer science or solve problems for them.
If you think it'd be fun, go ahead and teach whatever curriculum you'd like, but I have a feeling you'll lose your students after a month or two if you don't give them any time to let them struggle with difficulty. And heck, beyond just learning the formalism in CS, when are they even going to have time to hack on large projects? You don't learn software engineering by attending lecture. You learn it by building horribly unmaintanable programs (unintentionally, of course) and reflecting on that after the fact.
If this program will be valuable to anyone, it's probably for people who write about technology and want to get a sense of the depth of CS (beyond programming), but don't expect to become proficient in it.
UI guidelines and user studies are there so that controls are intuitive for a novice or a first time user of an application (without having to read a manual first). What does this have to do with configurable chrome? Once a user has mastered a program, or if they'd rather install something that looks better or is more suited to how they work, this gives them the choice of how to do so. If they find that the UI is to difficult to use, they can always go back to the default skin -- something that shouldn't be too difficult of they already figured out how to install skins in the first place.
However, programs like QuickTime 4.0 are a different matter entirely. The UI for QT4 is a disaster...
If psychiatrists started examining more kids for mania and depression, combined with some "break through drug" by a big pharmacutical company, I'd bet that you'd start seeing millions of moody adolescents on antidepressives to keep them from shooting their classmates.
Typically, drugs are prescribed if someones mental state is abnormal or problematic; but who's to say what's abnormal, and what is really a problem? More than likely, it has to do with things like pissing off your parents or not doing well enough in school. Maybe the psychiatric community ought to fess up to their real purpose -- enforcing cultural ideals and regulating 'normality.'
Incidentally, at least one of the Columbine shooters was on an antidepressive drug (I forget which); another school-shooter (I forget where) was also on an antidepressant. If you were statistically minded, you might say that there is a significant correlation between these incidents and the use of these drugs. Of course, whose to no whether or not the people in question would have commited these incidents were they unmedicated, but it's certainly interesting to consider. (heck, if you already felt as if you were an outsider in society and then a psychiatrist comes along and deems you "clinically abnormal" by prescribing medication for your mental failings, how would you feel?)
Unless someone is clearly a danger to themselves or someone else, I see little value in prescribing these drugs for children (adults should be able to do as they please, of course).
I think the key word here is "interpret." Regardless of what's done with the source code, the programmer still expresses something in the source code; whether the source code can be interpretted directly by machine is a red herring. If the code is intended to be human readable, it can still be viewed as expressive in the legal sense. But then again, maybe I'm automatically ruling out write-only languages like perl...:)
-NooM
I can't directly comment on Penrose's book, but humans certainly CAN'T always solve the halting problem. Most of the programs you are familiar with are 'intelligently' constructed where the programmer is implicitly using various halting-invariants to gaurantee that the program halts. But, I'll bet I can give you a randomly generated 8 state turing machine and you'll never guess whether or not it terminates. If you're curious, look around on the web for the best known 6 state Busy Beaver turing machine and see how long it takes for it to halt.
Incidentally, although the halting problem is certainly related to Goedel's Incompleteness Theorem, it's still not the same thing. I think Penrose was saying that, since humans are not confined to "thinking within a formal system" that were are capable of deciding the validity of assertions that a computer cannot. Again, I don't buy this assertion either, for similar reasons; in fact, I sometimes wonder if my Palm Pilot might be more intelligent than even Roger Penrose.
Wow, that must have secured years of admiration from your friends. They probably think you're the shit.
The work "cracker" is stupid anyway... They're all hackers, only some of them are criminals as well.
If the media wants to claim the word "hacker" to mean "computer criminal" (which they already have), that's perfectly fine with me. The ambiguity in different circles doesn't bother me at all.
-NooM
The article doesn't specifically speak of tech workers -- it's "knowlege workers" their talkin' 'bout. In other words, programmers don't count. The people who DO count are tech help/support staff, the people you call when you need to get your HMO to cover a medical bill, your friendly (if sometimes automated) telephone operator, etc... Yes, this probably also counts people like consultants, but they are far out-numbered by the other kinds of knowledge workers I mentioned.
Most IT workers are better considered craftsmen, not knowledge workers.
-NooM
Anyone remember how in the 80s when Japan was still on top of the world technologically, we used to find the Japanese work ethic excruciatingly demanding and hurtful to their culture (mixed in with some resentment of their success)? Well, look at us now! We probably have just as many strokes and heart attacks as they used to! And I'll bet our divorce rate is MUCH higher. So there, stop calling us "lazy Americans!"
Of course, Japan did suffer a nation-wide burnout earlier in this decade... maybe that says something about the "state of the bubble" over here...
-NooM
I really don't see where Metcalfe has a point -- Torvalds never claimed to be a free software fanatic -- in the sense that all software should be free (as in GPL'd). Rather, he does support OSS, which is entirely pragmatic in approach. Some software is better developed in a cathedral, others in a bazaar. Unless Transmeta (and Torvalds by extension) want to deal with people exploiting portions of the Crusoe architecture that are subject to change, it's makes more sense for them to keep it private indefinitely. Otherwise, they'll have very difficult compatability problems to solve in the future. And besides, there's an aweful lot of intellectual property in that source code. That stuff costs a LOT of money, you know.
Anyhow, Torvalds is a much different sort of hacker than Stallman. Whereas Stallman considers hackers to be some sort of political animal devoted to making all information free, Torvalds just likes to solve difficult and interesting programs. If you're the sort of person who thinks is unethical to solve a problem and not tell everyone else how you solved it or give them an opportunity to solve it better, than so be it; whine all you want. Hell, everyone argues about privacy issues here -- what's the difference between keeping your source code private and keeping your other knowlege private? It's all the same to me...
Incidentally, free software is entirely different from "free speech." Free speech gives you the right to say what you want. Stallman's fanatic ideolgy would make it illegal to not say things you don't want to say. (and before someone brings up issues like publishing source code of crypto, this actually is the same thing as free speech -- but it has nothing to do with Stallman's conception of 'free software'). It's be like denying a person the 5th Amendment (for non-American's, the right to not say something that could incrimintate you) because "all of your knowledge should be public."
I'm with Torvalds on this one. GPL your code when it makes sense (like if you want to make a new operating system and you realize you can't do it all by yourself). If there are specific issues which would make it stupid to do so (like intellectual property), then withhold it. Don't let a bunch of commie-nerds tell you you're being unethical.
-NooM
I was asking myself the same thing... Do I really want to run a binary distributed by the FBI? I'm not much of a conspiracy theorist, but it's still a little strange to consider the FBI a "trusted source."