So you're developing on, say, XP, and deploying directly to the production server without ANY staging environment?
Yep.
Seriously?
Yep.
You just cross your fingers and hope everything works right?
Nope. We've never had crossplatform code suddenly become not-crossplatform. Not once. Ever. Once a new module is vetted as working on each of the platforms it's ever going to run on, it just keeps running. Why shouldn't it?
That's not to say we don't ever accidentally push buggy code into production (although I'd like to think we're pretty good at not doing that), but those bugs are of the logic variety where we've made general mistakes that would affect the code no matter where it was running.
If that's the case, you really must not be working on any high-availability systems.
My boss seems to think so, and so far we've not proved him wrong.:-)
Furthermore, your HTML comment was a little inane. HTML is not a programming language. It's not even, generally, procedural markup. It's descriptive markup. In other words: HTML has far more in common with a data format than a programming language.
Analogy, meet encoderer. encoderer, Analogy. There! Now you're acquainted!
A tech video of how to make it and showing it in use goes pretty far amongst the geekerati here at/.
Speak for yourself. OK, this guy made a floppy cannon. If you are even 10% geek, you should be able to recreate it from looking at a picture of the thing ("Oh! Nice idea! hack hack hack"). Then he went on to demonstrate practical applications of the device, or at least as practical as a freakin' floppy cannon can possible get. Were you hoping for a library robot or something?
I thought it was funny. The fact that he welded this up in the first place gives him full geek cred points. Going above and beyond to actually make something funny and with relatively high production values - better than I (or you, admit it) could pull off - was just icing on the cake.
This is of course fairly idiotic, since it's going to break a lot of existing code without any good reason.
Since pretty much every piece of PHP I've ever seen has something like include('localstuff.php'); at the top, just define your own get_magic_quotes_gpc_wtf_bbq function there, and preferably make it log the filename and line number of each page that calls it so you can delete all of that junk.
Isn't it about as basic as it gets that code (outside of Java) should be developed on the same platform that it will ultimately be deployed upon?
That's a pretty bad practice, actually. At work, we develop Python apps that will run on Windows and Unix. Each developer's machine is a little (or a lot) different from the others. Some of the programs will run on Python 2.3 on FreeBSD, and others will be deployed on Python 2.5 on Windows XP. And yet, everything works on all of those machines. Know why? Because we know that each line of code will be deployed in several dissimilar places. Therefore, we take steps to make sure the differences are handled by abstraction libraries (either built-in ones or locally written stuff), or at the very least encapsulated in tiny blocks at the top of each module ("if os.name == 'posix'...").
This stuff takes very little extra work. I mean, 99.9% of code is going to be inherently cross-platform anyway, until you start dealing with file paths and stuff like that. The payoff is that your code actually will be portable, and that has advantages too numerous to go into.
A final thought: isn't it about as basic as it gets that HTML should be developed on the same platform that it will ultimately be deployed upon? If you disagree with that statement for HTML, then you should disagree concerning programming in general for the same reasons.
Let me know if you find an IDE that can handle Intellisense in Ruby and actually make me more productive.
If Emacs's Ruby mode is anything like it's Python mode, then: Emacs.
1. Open a new file,/tmp/foo.py 2. Type import time 3. Type print ti then alt-/ to complete it to print time. OK, that's a weak example of symbol completion, but it'll serve for now.
4. Type a period to make that print time., then hit meta-tab. That brings up a list of completions of all the attributes of the time module. Type g and meta-tab again to complete it to time.gmtime.
5. Hit control-c control-f to get the "Describe symbol" prompt, which will default to whatever's under the cursor - time.gmtime in this case - and hit enter. Now you're reading the documentation for that function.
At some point, hit control-c control-c to run your program inside an embedded Python session. If it throws an error, hit control-x ` to go to the line in your program where the error occured.
OK, the keybindings probably aren't what you're used to (although they can be easily changed). Other than that, it supports every other feature you described.
Emacs isn't for everyone, but you owe it to yourself to at least try it.
So does this mean that if you are using magic quotes and you upgrade to PHP6, suddenly you will become vulnerable to SQL injection attack?
Of course not! Since no one has been stupid enough to directly insert submitted strings into SQL before sending it to the server for at least 5 years now, this won't affect any modern code in the slightest.
It's legal to say "I hate Muslims because Muslim extremists ran planes into the World Trade centre on September 11th, 2001" because it's verifiable fact. It's not legal to say "I hate Jews because The Jews caused 9/11...And World War II." because neither of those facts can be proven to be true.
Conspiracy theorists believe that the US bombed the Trade Center. So, would a jury of those nutters convict someone speaking out against Muslims for doing the same because they were "factually incorrect"? Remember, very few things on a global scale are objectively "true", and using that as a standard by which to judge the legality of someone's speech is... problematic.
Anyway, the Nazis in the history books aren't active members of society, currently being hated. There's no damage to be done and no one to defend.
What about today's neo-Nazis? They even have religious backing in form of the Christian Identity church (I think I have that name right and I'm too lazy to Google it). Some of them haven't committed any crimes, or at least, real crimes and not violation of some unconstitutional hate crime ordinances. Is it OK to speak against them, to make fun of them, and make them the target of hatred and ridicule?
As a practical matter, yes it does. To date the conviction rate for the so called 'human rights tribunal is 100%.
I'm afraid you might be right there. And even if the courtroom acquits, public opinion can be a career-ender. I think he's doing the best thing here by taking the fight to them instead of sitting back and letting it happen to him.
You know, what gets me about this is that some groups deserve to be hated. What about Robert Mugabe or Kim Jong-Il? I have no problem whatsoever with exposing them to ridicule or hatred because, well, they've brought it on themselves. Even the "protected classes" from the story have members that have it coming to them, such as people whose sexual orientation is toward children or animals, or maybe the Kansas school board who wanted to teach creationism in science class because of their beliefs.
You can't be free unless you're able to hate someone and convince other people to do the same. It's not pleasant and usually not good, but it's still a necessary evil.
So it was hate speech? Slashdot has decided. Thanks for telling me what to think!
No, but the subject is facing a tribunal for hate speech. That doesn't mean he's guilty.
But even if he was, so what? Short of inciting violence, why shouldn't he be able to say that he hates orange people or that Pastafarians are evil? Good for Steyn for taking this and running with it. Who wants to live in a world where you're not allowed to explain why you dislike someone?
We're still using CVS here (much to my annoyance) but are planning to switch to something new soon.
I hadn't realized that so many people were using DCVS before this article, so I'm also going to start investigating. We may or may not switch, but now we'll at least know about the alternatives.
Having said that, is your office culture wrapped around CVS? If so, SVN is a pretty natural upgrade path. Everything works pretty much the same way, except with "svn" instead of "cvs", and you can ease into the new-to-CVS-user features once everyone is comfortable with it.
I think the parent is referring to the problem that when you merge, "svn blame" reports the merge itself as the origin of the changed lines rather than where they came from originally.
I'll be darned. I just verified that with our setup at work and can confirm that, at least for us.
I still say that the ability to make cheap branches is a feature.:)
So, the oceans are about 250 times more massive than the atmosphere. It also takes about 4 times as much energy to raise a mass of liquid water by one degree as the same mass of air. Ergo, it takes about 1,000 times as much heat to raise the Earth's water temperature as its air. This is neglecting that the heat of fusion of water is about 80 times that of its specific heat, so the polar ice caps can absorb vast amounts of energy and skew the equation even more in favor of the water.
A thousand times. Three orders of magnitude. And again, you wouldn't have to use the extra energy for air condition, so the water cooling numbers are better still.
Do you really need citations for elementary and high school level science experiments?
Oh, you should have just said so! When you get to college, they'll teach you about advanced concepts like "specific heat" which explain why it takes a hell of a lot more heat to raise water the same number of degrees as air.
Hang in there and study hard, kid. One day you'll understand why things obvious to high school students aren't obvious at all to more educated folk.
Well, water is a far better thermal conductor than air. Without any evidence to the contrary, my first guess would be (due to being educated in physics and chemistry) that the ocean would shed heat better than the atmosphere.
Again, do you have any citations that would explain why the unintuitive opposite would be true? I'm not claiming that you guys are wrong, but I'd need to read about it before accepting your statements as fact.
The build manager can't merge the changes without those changes taking on his identity, that is, all identifying information about the originator of the changes is lost.
Since I'm sure you're not talking about what svn blame gives you, what do you mean exactly?
That is, it's not recommended to build one branch and merge changes from the trunk into it as you're incrementally changing things on that branch, noooo.
Umm, says who? Thanks exactly what we do. We have/trunk and/branches/devel. When one of us gets a particularly stable version of/branches/devel ready, we merge it to/trunk.
You have to keep polluting the repository with needless hair by making new branches every week, and sometimes, multiple ones per day.
Have to? No way. But since branches are basically free, why would you want to avoid them?
We use them for experimental "what-if" branches, like "I wonder what would happen if I ported our application from MySQL to SQLite". You copy "/branches/devel" to "/branches/sqlite" and hack away. If it works, merge your changes back to devel. If it bombs, just delete the branch./P
Horse puckey. By that logic, my kitchen windows are open because you can see through them. And yet, they ain't.
Oh, obviously!
Things like that are why I will never (voluntarily) be a mainframe programmer.
Yep.
Seriously?Yep.
You just cross your fingers and hope everything works right?Nope. We've never had crossplatform code suddenly become not-crossplatform. Not once. Ever. Once a new module is vetted as working on each of the platforms it's ever going to run on, it just keeps running. Why shouldn't it?
That's not to say we don't ever accidentally push buggy code into production (although I'd like to think we're pretty good at not doing that), but those bugs are of the logic variety where we've made general mistakes that would affect the code no matter where it was running.
If that's the case, you really must not be working on any high-availability systems.My boss seems to think so, and so far we've not proved him wrong. :-)
Furthermore, your HTML comment was a little inane. HTML is not a programming language. It's not even, generally, procedural markup. It's descriptive markup. In other words: HTML has far more in common with a data format than a programming language.Analogy, meet encoderer. encoderer, Analogy. There! Now you're acquainted!
Welcome back. Semester's over?
Speak for yourself. OK, this guy made a floppy cannon. If you are even 10% geek, you should be able to recreate it from looking at a picture of the thing ("Oh! Nice idea! hack hack hack"). Then he went on to demonstrate practical applications of the device, or at least as practical as a freakin' floppy cannon can possible get. Were you hoping for a library robot or something?
I thought it was funny. The fact that he welded this up in the first place gives him full geek cred points. Going above and beyond to actually make something funny and with relatively high production values - better than I (or you, admit it) could pull off - was just icing on the cake.
Good job, Bob.
Since pretty much every piece of PHP I've ever seen has something like include('localstuff.php'); at the top, just define your own get_magic_quotes_gpc_wtf_bbq function there, and preferably make it log the filename and line number of each page that calls it so you can delete all of that junk.
That's a pretty bad practice, actually. At work, we develop Python apps that will run on Windows and Unix. Each developer's machine is a little (or a lot) different from the others. Some of the programs will run on Python 2.3 on FreeBSD, and others will be deployed on Python 2.5 on Windows XP. And yet, everything works on all of those machines. Know why? Because we know that each line of code will be deployed in several dissimilar places. Therefore, we take steps to make sure the differences are handled by abstraction libraries (either built-in ones or locally written stuff), or at the very least encapsulated in tiny blocks at the top of each module ("if os.name == 'posix' ...").
This stuff takes very little extra work. I mean, 99.9% of code is going to be inherently cross-platform anyway, until you start dealing with file paths and stuff like that. The payoff is that your code actually will be portable, and that has advantages too numerous to go into.
A final thought: isn't it about as basic as it gets that HTML should be developed on the same platform that it will ultimately be deployed upon? If you disagree with that statement for HTML, then you should disagree concerning programming in general for the same reasons.
If Emacs's Ruby mode is anything like it's Python mode, then: Emacs.
1. Open a new file, /tmp/foo.py
2. Type import time
3. Type print ti then alt-/ to complete it to print time. OK, that's a weak example of symbol completion, but it'll serve for now.
4. Type a period to make that print time., then hit meta-tab. That brings up a list of completions of all the attributes of the time module. Type g and meta-tab again to complete it to time.gmtime.
5. Hit control-c control-f to get the "Describe symbol" prompt, which will default to whatever's under the cursor - time.gmtime in this case - and hit enter. Now you're reading the documentation for that function.
At some point, hit control-c control-c to run your program inside an embedded Python session. If it throws an error, hit control-x ` to go to the line in your program where the error occured.
OK, the keybindings probably aren't what you're used to (although they can be easily changed). Other than that, it supports every other feature you described.
Emacs isn't for everyone, but you owe it to yourself to at least try it.
Of course not! Since no one has been stupid enough to directly insert submitted strings into SQL before sending it to the server for at least 5 years now, this won't affect any modern code in the slightest.
Conspiracy theorists believe that the US bombed the Trade Center. So, would a jury of those nutters convict someone speaking out against Muslims for doing the same because they were "factually incorrect"? Remember, very few things on a global scale are objectively "true", and using that as a standard by which to judge the legality of someone's speech is... problematic.
What about today's neo-Nazis? They even have religious backing in form of the Christian Identity church (I think I have that name right and I'm too lazy to Google it). Some of them haven't committed any crimes, or at least, real crimes and not violation of some unconstitutional hate crime ordinances. Is it OK to speak against them, to make fun of them, and make them the target of hatred and ridicule?
So does North Korea, but that doesn't mean I can't condemn them.
Yes, but at least that's a restriction you voluntarily placed upon yourself.
If it's limited, then it's not free speech. What part of that is so hard for fascists to understand?
I'm afraid you might be right there. And even if the courtroom acquits, public opinion can be a career-ender. I think he's doing the best thing here by taking the fight to them instead of sitting back and letting it happen to him.
You know, what gets me about this is that some groups deserve to be hated. What about Robert Mugabe or Kim Jong-Il? I have no problem whatsoever with exposing them to ridicule or hatred because, well, they've brought it on themselves. Even the "protected classes" from the story have members that have it coming to them, such as people whose sexual orientation is toward children or animals, or maybe the Kansas school board who wanted to teach creationism in science class because of their beliefs.
You can't be free unless you're able to hate someone and convince other people to do the same. It's not pleasant and usually not good, but it's still a necessary evil.
No, but the subject is facing a tribunal for hate speech. That doesn't mean he's guilty.
But even if he was, so what? Short of inciting violence, why shouldn't he be able to say that he hates orange people or that Pastafarians are evil? Good for Steyn for taking this and running with it. Who wants to live in a world where you're not allowed to explain why you dislike someone?
I hadn't realized that so many people were using DCVS before this article, so I'm also going to start investigating. We may or may not switch, but now we'll at least know about the alternatives.
Having said that, is your office culture wrapped around CVS? If so, SVN is a pretty natural upgrade path. Everything works pretty much the same way, except with "svn" instead of "cvs", and you can ease into the new-to-CVS-user features once everyone is comfortable with it.
I am suing you on behalf of the Writers Guild.
I used it to play games in 1998. 2004? Big deal. I've got cheese older than that.
I'll be darned. I just verified that with our setup at work and can confirm that, at least for us.
I still say that the ability to make cheap branches is a feature. :)
Your experiments are dumb and irrelevant. Here are some non-hypothetical numbers:
Mass of the atmosphere: 5.15*10^18kg
Mass of the oceans: 1.4*10^21kg
So, the oceans are about 250 times more massive than the atmosphere. It also takes about 4 times as much energy to raise a mass of liquid water by one degree as the same mass of air. Ergo, it takes about 1,000 times as much heat to raise the Earth's water temperature as its air. This is neglecting that the heat of fusion of water is about 80 times that of its specific heat, so the polar ice caps can absorb vast amounts of energy and skew the equation even more in favor of the water.
A thousand times. Three orders of magnitude. And again, you wouldn't have to use the extra energy for air condition, so the water cooling numbers are better still.
Kindergarten indeed.
Oh, you should have just said so! When you get to college, they'll teach you about advanced concepts like "specific heat" which explain why it takes a hell of a lot more heat to raise water the same number of degrees as air.
Hang in there and study hard, kid. One day you'll understand why things obvious to high school students aren't obvious at all to more educated folk.
Well, water is a far better thermal conductor than air. Without any evidence to the contrary, my first guess would be (due to being educated in physics and chemistry) that the ocean would shed heat better than the atmosphere.
Again, do you have any citations that would explain why the unintuitive opposite would be true? I'm not claiming that you guys are wrong, but I'd need to read about it before accepting your statements as fact.
Citations for the idea that the ocean holds heat while the air radiates it harmlessly?
Since I'm sure you're not talking about what svn blame gives you, what do you mean exactly?
That is, it's not recommended to build one branch and merge changes from the trunk into it as you're incrementally changing things on that branch, noooo.Umm, says who? Thanks exactly what we do. We have /trunk and /branches/devel. When one of us gets a particularly stable version of /branches/devel ready, we merge it to /trunk.
You have to keep polluting the repository with needless hair by making new branches every week, and sometimes, multiple ones per day.Have to? No way. But since branches are basically free, why would you want to avoid them?
We use them for experimental "what-if" branches, like "I wonder what would happen if I ported our application from MySQL to SQLite". You copy "/branches/devel" to "/branches/sqlite" and hack away. If it works, merge your changes back to devel. If it bombs, just delete the branch./P