ha ha ha - That's what I tell my boss too. No undo button? Yeah, mmmm, that's part of the system. Yeah, that's the ticket!
That's because an undo button is universally recognized as a useful thing.
But the things "missing" from Joel's forums are not universally recognized as good things to have. (Obviously, otherwise he wouldn't have thrown them out, Q.E.D.) Hell, they're not even universally recognized on slashdot as good things to have.
I would go look up the name of the logical fallacy you just committed, but I've decided not to.
Any admin will tell you that dumping a live filesystem (no matter what backup tool you're using) is a Bad Idea. The more active the filesystem, the higher the chances of something changing out from underneath the dumping program.
Every serious commercial Unix has filesystem snapshot for this reason. It creates new "cloned" devices entries for a particular fs, but the new device is read-only. If somebody then makes a change to the real filesystem (say, saving a file in an editor), the disk blocks are copied to a holding area before the change takes effect. The snapshot then accesses the copied blocks instead. (It's a COW algorithm, so if the live filesystem doesn't change much, very little needs to be copied aside.)
And, of course, the snapshot fs can be treated just like a regular one, but with no fear of any part of it changing midcourse. Perfect for dumping to tape. Or just mounting as a read-only filesystem; the "here's the way your files were at noon" in case you fuck up during the rest of the day approach.
How come the Outsiders didn't end up competing with Protectors, or do something on the scale of building a ringworld?
For a while I was reading the Man-Kzin Wars books, for which Mr. Niven is the series editor. Authors must be invited to write, IIRC. So anything from that series is, I believe, supposed to be taken as canonical.
One of the more interesting stories was expanded into a full-length novel concerning the Outsiders, published as A Darker Geometry. (Unfortunately, the short story ended right where it should have; the additional material in the book is pretty cliche IMHO. But I digress.)
This book does tell large parts of the story from the first-person viewpoint of a Pierson's Puppeteer, and we get some interesting "secrets" of both Outsiders and Puppeteers exposed. One of them is, if memory serves, a passing reference to "the large ring structure that the Outsiders were building."
No I'm not. What part of short-/immediate-term implies serious counseling and changing thinking patterns? Of course the long-term issues will take more time and more work.
What surprised me was that the short-term crisis could pass so quickly.
With computer crises, though, this usually takes 10 or 15 minutes. With potential suicides, calls usually lasted twice as long.
Only twice as long? For some reason I find that remarkable (obviously; I'm remarking on it). I would have thought that potential suicides would need much more help than that in the short-/immediate-term.
...like what KDE offers a user on their first login?
The main control is a slider bar, with "very little eye candy" on one end, and "way too much eye candy" on the other. The drop-down "advanced" controls allow individual checkboxes for particular candy features; the slider just turns them on and off in groups.
Actually, that's not far off what CVS does
on
Stop Breaking the Build
·
· Score: 3, Informative
run the code through a lameness filter before allowing the check-in
Okay, I agree with you that the/. editors were on crack when they made that call. But the idea of "filter before checkin" has been in CVS for a long, long time.
Basically, there's a file in CVSROOT that can call an arbitrary program. If that program succeeds, checkin proceeds. If it doesn't, it doesn't.:-)
I was very surprised to see this article treat such an idea as something new.
Many of the optimizations discussed in the article are being implemented in GCC. Actually, some (e.g., SSA) have been in a parallel development branch for quite a while now, where they can make major funky changes and not have to play by the "no breakage" rules that govern the release branches.
Just last week there was a discussion about OpenMP and how it might be implemented in GCC.
A huge optimization that the article mentioned in the intro (but didn't go into in depth, I think) is intraprocedural optimization. That can be hard in languages that don't compile the entire program at once; you really need help from the linker.
it can be built and run on some very unusual and dated pieces of hardware (although, from the recent release notes, it looks like some of the most obscure ones are slipping into oblivion.)
Absolutely. If nobody's using those platforms, and we want to make a change that might effect them in a negative way -- but we can't tell, because we don't have that machine available to test on -- we have two options: make the change and hope it doesn't break, or deliberately mark the platform as "no one cares, so neither do we".
...the way my cars usually go. They run and run and run, and eventually start falling apart so fast that I just check on them once every so often, and eventually crash them into something just to finish the damn thing off.
Many (if not all) of the authors are also on the ISO C++ committee. So when they observe that the C++98 language has a particular flaw, you can be sure that they're also finding ways to fix it in C++0x.
Even GCC falls short of 100% ANSI compliance. (Ever try to call the stream manipulator "fixed" in GCC 2.9x?
God bless slashdot. Anytime I need a good dose of revisionist history, I know where to look.
The library for 2.x (the part responsible for streams) predates the ANSI/ISO standard. It's full of "this is our best guess at what will eventually be voted on, based on the last meeting" code.
When the standard was finalized and published, the 2.x library was dropped, and a new one started from scratch. When GCC 2.x was shipped, its library was already known to be wrong, but stable and "mostly good enough". And the new one was already in the works.
For that matter, large chunks of the 2.x compiler itself had been abandoned for 2.x, knowing that it would be better to rewrite it for 3.x completely.
Boggles my mind why people expect a four-year old product to conform to a four-year old standard. (Hint: it takes a while after the standard is published to write the code.)
Dr. Stroustrup is the series editor for these books, and damn, they are good. A comment by Kickasso suggests the most excellent Accelerated C++, but it's not just for beginners. (Well, it's targeted for beginners, but it's also an excellent book for experts; it helps to simplify an otherwise complex environment. Kinda like studying Zen.)
Anyhow, that book is part of the In Depth series. They're easy to recognize: all red with yellow titles, and -- an important part -- all small. One of the series' rules is that the main body text must be no more than 300 pages. No more gigantic tomes of crap.
...would IMHO have made good presidents. If either Albright or Powell ran, I'd vote for her/him. I have far more respect for Powell than for any other current member of the administration, and it seems The Onion's horoscope agrees with me. (Is Dubya's sign Cancer, I take it?)
Anybody know what Albright has been doing since Clinton left? She kicked ass, I thought.
...right over here? Lemme look at the advisory numbers... yep. Yep, that's the one you mean.
Perhaps a little more research is in order before you post? Or are you in training for a job as/. editor? (*ba-dum-bum*) Sorry, couldn't resist.
Yes, I know it was posted under the "Developers" section. Here's a tip for everyone reading slashdot: the editors' skill in category choice is on par with their skill in journalism.
Just go into your preferences, turn on "collapse stories" (whatever the fuck that's supposed to actually mean), and you'll see all the articles, whether the editors think they're "important" or otherwise.
The "make bootstrap" step is intended only for a native compiler, really. For building a cross compiler, your host compiler is already GCC. Doing a multi-stage build is pointless.
A "normal" build like the one you describe doesn't even do the compile twice. Only step #1 is done. (That's not what we call a normal build, so that's why I didn't mention it.)
You call the triple-stage idea "actually paranoidly," but I assure you that it's still needed when the native compiler/library is buggy or in some ways lacking. Most Linux users and distros use an earlier version of GCC as the "native compiler" in step #1, which makes steps 2 and 3 (usually) unnecessary. Perhaps that's why you think 2 and 3 are paranoid, but it's good to remember that GCC's target platform is far wider than Linux.
The fact that a simple "make"/"make all" does not do the 3-stage build performed by "make bootstrap" is considered a bug by some of the maintainers. We're actually trying, in the medium- and long-term, to have more of the compiler built in the 3-stage fashion, not less.
Is it possible to build gcc with another compiler?
Holy screaming fuckmonkeys, Batman. You have no idea how much work we/they go through to ensure that GCC is buildable by anything even resembling a C compiler. (I say "we/they" because I generally don't have to worry about it in my little corner of the world.)
GCC was intended from its earliest days to replace whatever native (proprietary) compiler came with or was sold for your native (proprietary, evil, etc) Unix platform. When you build GCC, it actually is built three times:
Your Proprietary Evil Compiler[tm] builds Copy #1 of gcc. However, YPEC could have bugs, which would make gcc#1 buggy. So...
gcc#1 builds itself from scratch. Call this one gcc#2. In theory, gcc#2 can now be used. But just to be certain...
gcc#2 builds itself from scratch. This is gcc#3. And if all is well, gcc#2 == gcc#3. So at the end, all of the various.o files from #2 and #3 are compared, and if there's a mismatch, the build aborts.
Copy #3 is then used to build the rest of the compiler (other languages) and the runtime libraries. Copy #3 is what gets installed on your system.
Huge chunks of the GCC source are still maintained in K&R C for those platforms which don't have an ISO (ANSI) C compiler. Chunks of the standard C library have homegrown replacements inside GCC, for those platforms which aren't ANSI/POSIX.
Fortunately, the number of those systems has dwindled, but at one time they were the majority.
"First we compile the modified source with the normal C compiler to produce a bugged binary. We install this binary as the official C. We can now remove the bugs from the source of the compiler and the new binary will reinsert the bugs whenever it is compiled. Of course, the login command will remain bugged with no trace in source anywhere."
I became a GCC maintainer for precisely this reason.
And I'll just say to you, pclminion, that those JPGs in your home directory aren't as, ahem, secure as you'd like to think.
Indeed. Any "99 bottles" programming list complete enough to include the infamous sendmail version is more than enough. No contest need be held.
Besides, "99 bottles" is boring. Use the programmer's version:
99 little bugs in the code,
99 little bu-u-u-ugs,
fix a bug,
compile again,
100 little bugs in the code.
(Subsequent verses increase the number of bugs by powers of two, i.e., 99, 100, 102, 106, 114, 130, 162, 226, ...)
That's because an undo button is universally recognized as a useful thing.
But the things "missing" from Joel's forums are not universally recognized as good things to have. (Obviously, otherwise he wouldn't have thrown them out, Q.E.D.) Hell, they're not even universally recognized on slashdot as good things to have.
I would go look up the name of the logical fallacy you just committed, but I've decided not to.
...file system snapshots.
Any admin will tell you that dumping a live filesystem (no matter what backup tool you're using) is a Bad Idea. The more active the filesystem, the higher the chances of something changing out from underneath the dumping program.
Every serious commercial Unix has filesystem snapshot for this reason. It creates new "cloned" devices entries for a particular fs, but the new device is read-only. If somebody then makes a change to the real filesystem (say, saving a file in an editor), the disk blocks are copied to a holding area before the change takes effect. The snapshot then accesses the copied blocks instead. (It's a COW algorithm, so if the live filesystem doesn't change much, very little needs to be copied aside.)
And, of course, the snapshot fs can be treated just like a regular one, but with no fear of any part of it changing midcourse. Perfect for dumping to tape. Or just mounting as a read-only filesystem; the "here's the way your files were at noon" in case you fuck up during the rest of the day approach.
For a while I was reading the Man-Kzin Wars books, for which Mr. Niven is the series editor. Authors must be invited to write, IIRC. So anything from that series is, I believe, supposed to be taken as canonical.
One of the more interesting stories was expanded into a full-length novel concerning the Outsiders, published as A Darker Geometry. (Unfortunately, the short story ended right where it should have; the additional material in the book is pretty cliche IMHO. But I digress.)
This book does tell large parts of the story from the first-person viewpoint of a Pierson's Puppeteer, and we get some interesting "secrets" of both Outsiders and Puppeteers exposed. One of them is, if memory serves, a passing reference to "the large ring structure that the Outsiders were building."
No I'm not. What part of short-/immediate-term implies serious counseling and changing thinking patterns? Of course the long-term issues will take more time and more work.
What surprised me was that the short-term crisis could pass so quickly.
...if the 14th is named bilbo.root-servers.net, and is added specifically for the purpose of breaking the bad luck.
Sorry, heavy geek moment there.
From the article (which is pretty good, btw):
Only twice as long? For some reason I find that remarkable (obviously; I'm remarking on it). I would have thought that potential suicides would need much more help than that in the short-/immediate-term.
...like what KDE offers a user on their first login?
The main control is a slider bar, with "very little eye candy" on one end, and "way too much eye candy" on the other. The drop-down "advanced" controls allow individual checkboxes for particular candy features; the slider just turns them on and off in groups.
Okay, I agree with you that the /. editors were on crack when they made that call. But the idea of "filter before checkin" has been in CVS for a long, long time.
Basically, there's a file in CVSROOT that can call an arbitrary program. If that program succeeds, checkin proceeds. If it doesn't, it doesn't. :-)
I was very surprised to see this article treat such an idea as something new.
Many of the optimizations discussed in the article are being implemented in GCC. Actually, some (e.g., SSA) have been in a parallel development branch for quite a while now, where they can make major funky changes and not have to play by the "no breakage" rules that govern the release branches.
Just last week there was a discussion about OpenMP and how it might be implemented in GCC.
A huge optimization that the article mentioned in the intro (but didn't go into in depth, I think) is intraprocedural optimization. That can be hard in languages that don't compile the entire program at once; you really need help from the linker.
Absolutely. If nobody's using those platforms, and we want to make a change that might effect them in a negative way -- but we can't tell, because we don't have that machine available to test on -- we have two options: make the change and hope it doesn't break, or deliberately mark the platform as "no one cares, so neither do we".
...the way my cars usually go. They run and run and run, and eventually start falling apart so fast that I just check on them once every so often, and eventually crash them into something just to finish the damn thing off.
is called Faster, and it should be required reading for everybody on the planet.
Many (if not all) of the authors are also on the ISO C++ committee. So when they observe that the C++98 language has a particular flaw, you can be sure that they're also finding ways to fix it in C++0x.
God bless slashdot. Anytime I need a good dose of revisionist history, I know where to look.
The library for 2.x (the part responsible for streams) predates the ANSI/ISO standard. It's full of "this is our best guess at what will eventually be voted on, based on the last meeting" code.
When the standard was finalized and published, the 2.x library was dropped, and a new one started from scratch. When GCC 2.x was shipped, its library was already known to be wrong, but stable and "mostly good enough". And the new one was already in the works.
For that matter, large chunks of the 2.x compiler itself had been abandoned for 2.x, knowing that it would be better to rewrite it for 3.x completely.
Boggles my mind why people expect a four-year old product to conform to a four-year old standard. (Hint: it takes a while after the standard is published to write the code.)
Dr. Stroustrup is the series editor for these books, and damn, they are good. A comment by Kickasso suggests the most excellent Accelerated C++, but it's not just for beginners. (Well, it's targeted for beginners, but it's also an excellent book for experts; it helps to simplify an otherwise complex environment. Kinda like studying Zen.)
Anyhow, that book is part of the In Depth series. They're easy to recognize: all red with yellow titles, and -- an important part -- all small. One of the series' rules is that the main body text must be no more than 300 pages. No more gigantic tomes of crap.
Longtime readers of alt.religion.kibology recognize "brane" as "the way brain is spelled after your own brain fails you."
However, this is a slashdot editor we're talking about here, so you're probably right. :-)
Dave needs to run for President. That's what he should be.
OT: I once saw a bumper sticker that read, "when I grow up, I want to be me"
...like their coffee the way they like their humans: ground up and vacuum-sealed into a little brick-shaped bag.
...would IMHO have made good presidents. If either Albright or Powell ran, I'd vote for her/him. I have far more respect for Powell than for any other current member of the administration, and it seems The Onion's horoscope agrees with me. (Is Dubya's sign Cancer, I take it?)
Anybody know what Albright has been doing since Clinton left? She kicked ass, I thought.
...right over here? Lemme look at the advisory numbers... yep. Yep, that's the one you mean.
Perhaps a little more research is in order before you post? Or are you in training for a job as /. editor? (*ba-dum-bum*) Sorry, couldn't resist.
Yes, I know it was posted under the "Developers" section. Here's a tip for everyone reading slashdot: the editors' skill in category choice is on par with their skill in journalism. Just go into your preferences, turn on "collapse stories" (whatever the fuck that's supposed to actually mean), and you'll see all the articles, whether the editors think they're "important" or otherwise.
The "make bootstrap" step is intended only for a native compiler, really. For building a cross compiler, your host compiler is already GCC. Doing a multi-stage build is pointless.
A "normal" build like the one you describe doesn't even do the compile twice. Only step #1 is done. (That's not what we call a normal build, so that's why I didn't mention it.)
You call the triple-stage idea "actually paranoidly," but I assure you that it's still needed when the native compiler/library is buggy or in some ways lacking. Most Linux users and distros use an earlier version of GCC as the "native compiler" in step #1, which makes steps 2 and 3 (usually) unnecessary. Perhaps that's why you think 2 and 3 are paranoid, but it's good to remember that GCC's target platform is far wider than Linux.
The fact that a simple "make"/"make all" does not do the 3-stage build performed by "make bootstrap" is considered a bug by some of the maintainers. We're actually trying, in the medium- and long-term, to have more of the compiler built in the 3-stage fashion, not less.
Holy screaming fuckmonkeys, Batman. You have no idea how much work we/they go through to ensure that GCC is buildable by anything even resembling a C compiler. (I say "we/they" because I generally don't have to worry about it in my little corner of the world.)
GCC was intended from its earliest days to replace whatever native (proprietary) compiler came with or was sold for your native (proprietary, evil, etc) Unix platform. When you build GCC, it actually is built three times:
Copy #3 is then used to build the rest of the compiler (other languages) and the runtime libraries. Copy #3 is what gets installed on your system.
Huge chunks of the GCC source are still maintained in K&R C for those platforms which don't have an ISO (ANSI) C compiler. Chunks of the standard C library have homegrown replacements inside GCC, for those platforms which aren't ANSI/POSIX.
Fortunately, the number of those systems has dwindled, but at one time they were the majority.
I became a GCC maintainer for precisely this reason.
And I'll just say to you, pclminion, that those JPGs in your home directory aren't as, ahem, secure as you'd like to think.
Dude, the guy's been in jail. Of COURSE the first thing he did was to browse some pr0n.
Now, the second thing he did with access to the net... that'd be an interesting question.