The comp.lang.c++.moderated newsgroup ran a series of problems from the moderately thoughtful to the downright fugly, entitled "Guru of the Week" and contributed to by the best of the online C++ community. About 50 of the GotW article were then pulled into a book and published.
For C++ in general, get everything (right now, about 8 books) from the new "C++ In-Depth" series. Stroustrup is the series editor; Essential is one of the titles. The idea behind the series is to get away from the massive 1200-page MFC tomes meant solely to generate revenue for the publisher; all books in the In-Depth series must be less than 300 pages long (main body). Short, clear, and to the point.
P.S. By the way, my Ph.D. background is electromagnetics and I had an office inside a Faraday cage at a former employer.
Good, then you can settle an argument some of my friends are having.:-)
They're both engineers; one electrical, one mechanical. The dispute is about a scene in the X-Men movie, where a bunch of people are inside the Statue of Liberty. One of the heros is about to magically create a thunderstorm or some such, and Bad Guy says, "oh, real brilliant, summon up a boatload of lightning while you're standing inside a GIANT COPPER STATUE," and so the hero changes his/her mind, does nothing, and they all get tied up (or whatever).
One engineer says that this is moronic, and that standing inside a GIANT COPPER STATUE would in fact be the safest place from which to call down a lightning bolt, because you're inside a Faraday cage.
The other engineer says this is purest bullshit. Hilarity ensues.
(As a computer scientist lacking the ability to summon lightning storms, I fall into the "could not give a flying fat rat's ass" camp, but that's never helped settle a dispute.)
Well, flowerpot, now I'm wondering whether arch uses the ftp programs, or just the ftp protocol. That is, do you need an ftp client or server installed for arch to work? From what I've seen it wouldn't be too hard to do the protocol yourself.
I guess I'm wondering why arch uses FTP as its network protocol. The FAQ says that it should be workable behind firewalls since the data is all transferred in passive mode, but this still seems like a huge step backwards.
So, what am I missing? I only got to read a little bit of the site before it got DDOS'd by slashdot.
I work for the DoD (Department of Defense) and recently attended a Web Content Vulnerability seminar at the NSA's Cryptologic school, and one of the points they stressed was how open-source information can often yield more useful intelligence than classified information. [...] In the Bazaar, as I read it, alot of open source information is being shared.
Well, yes, but I think any presentation from the NSA will get these terms mixed up, due to no fault of their own.
The term "open source" has a technical meaning in the intelligence community; it refers to publicly accessible intelligence sources such as newspapers.
By default, an NSA person would hear their own definition, not the programming community's definition. Related, but not the same thing.
...or "beanstalks" as the insiders like to call them, read the scifi/humor novel Rainbow Mars by Niven. It features beanstalks in many places, including what happens when one pulls loose from Brazil.
The real nifty applications will come when this neuronal interfacing technology will be used to bypass deficient nerve links (spine damage) or to supplement/replace deficient muscle (muscular dystrophy and a ton of other debilitating illnesses).
And then Stephen Hawking will really be able to get some work done, instead of having to use the crappy computer interface he's currently restricted to.
I find that Java simply outshines C++ because it doesn't leave me dealing with low level stuff, like pointers.
Then perhaps you should learn how to use C++.
Not to flame you -- I'm usually the first person to use the right-tools-right-job argument -- but one of
the best books to teach C++ doesn't even mention pointers or builtin arrays until chapter 10. They teach C++, not C features that happen to show up in C++.
After having used C++ quite heavily for a decade, even I found parts of this book refreshing. I highly recommend it, both to beginning programmers, and crusty veterans like us.
The obvious correct solution is to modularize the kernel into subsections with clearly defined areas of responsibility, with a "mini-Linus" (who Linus trusts) granted control over each module.
But we have to also obtain or evolve the techniques neccessary to make a clone one-eighth Linus' size!
(Sorry, sorry, I'm just trying to see how quickly I can burn up 50 karma.:-) I agree with your analysis, by the way. It's very well put.)
Also read Feynman's account
on
Apollo 1
·
· Score: 2
The book What Do You Care What Other People Think? (at least I think that's the title) has an autobiographical account of Richard Feynman's experiences on the investigative team of the Challenger disaster. (This would be the guy who dipped pieces of O-ring plastic into his glass of ice water at a news conference to demonstrate the problem.)
Well, the kicker with Type I diabetes is that it's genetically inherited; my sibling(s) run the same crap-shoot that I do. So while the chances of rejection are less, the chances of diabetes are just as good (my supposition only). I guess one could use stem cells from the non-diabetic parent as the closest possible match, but that's only 50% to start with.
I always wondered why I wasn't diabetic until the age of 11 or so... "what was my pancreas/doing/ that first decade" is a question I've always wanted to ask my doctor but could never remember. I guess you answered it. Thanks!
If every adult human being has these stem cells, then there is the possibility for a person to grow cells (or organs or such) from their very own cells, with their very own DNA.
While this would be an amazing breakthrough, the donation problem would still exist. See, as a diabetic (Type I), growing a replacement pancreas from my own DNA won't help me. The replacement would be just as broken and useless as the one currently propping up my liver (or holding it down, I'm terrible at anatomy). The only thing I get out of this research is plenty of free pancreas-shaped paperweights. ("What a lovely doorstop!" "Thanks, grew it myself.")
I would need one of the super stem cells from somebody with a working pancreas in order to grow a working one of my own. Presumably this wouldn't suffer from the usual tissue rejection problems of transplants.
I'm wondering why both VM's can't be included in a distro and allowing the end user to select the one he/she wishes to compile into the kernel? Are the two implementations THAT mutually exclusive?
It's not so much "mutually exclusive," it's more like "they both rewrite the same chunks of code." Maybe I'm splitting hairs there. AFAICT, the amount of common code between the two isn't enough to make this worth it.
The result is that the kernel hackers aren't concerned about, say, code size, as much as they're worried about readability and maintainability. The number of #ifdef's scattered throughout the VM code would be incredible, the resulting total code would look like Your Favorite Form of Pasta[tm], and fixing bugs would be difficult.
There are other ways to do it besides #ifdef, of course, but they all detract from maintainability. And it all becomes vastly difficult to scale as soon as a third VM implementation comes along...
...a truly excellent hard-SF book, in which a gamma-ray burster plays a major role. The math gets deep at times; just keep slogging through it and your mind will be expanded. (Possibly painfully.)
You can name executable files whatever you want. (although you may fuck up your terminal when you try to read it using "more". Been there, done that.)
Destroying a terminal window in this fashion is, I believe, a rite of passage for beginners. But these days...
% less/bin/ls
"/bin/ls" may be a binary file. See it anyway?
...our utilities protect the young'uns from themselves.:-)
(Unix hackers from the Old School can still read the characters even after the font has been forcibly changed to Wongafuzhian, just because we've done this so often...)
There are flag bits called "attributes" that can be placed on ext2 files; see lsattr(1) and chattr(1). The one you want is either 'a' or 'i', I think, or some combination thereof.
We're using Doxygen to generate HTML and man pages (!) for
libstdc++-v3, the standard C++ library that comes with g++ 3.x. Doxygen can also generate LaTeX, RTF/Word, and some other formats which I don't remember. If you have some additional nifty utilities installed, and tell Doxygen where they are, then Doxygen can automatically use them. Take a look at the inheritence and collaboration graphs on the pages I linked to: normally they're much plainer, and not color-coded. But I had dot(1) installed, which can generate pretty graphs.
Incidentally, LaTeX is much better than TeX when doing letters. There's a set of macros specifically for writing letters, and I use them all the time for, say, business letters.
.
I'm told that it's not that hard to write a module for Doxygen to teach it how to create a new output format, if the half-dozen it knows about don't fit your needs.
The xwrits tool occasionally pops up reminders to stop typing and do your writs exercises. And if you ignore it, it makes rude gestures at you. Debian users can just apt-get the xwrits package, and there's source and RPMs and stuff on the project page.
It definitely helped me. My wrists rarely hurt anymore (but I should keep doing the exercises anyway).
So they've gathered a lot of requirements and done a lot design, but, as the lady says, "Where's the beef?" Why do all this work to replace open source tools that already exist? Why not take those tools and contribute back to them, or if the project owners don't like the contributions, take the things they like and build from there?
The original Software Carpentry site had an excellent page explaining the reason for the whole project, but I can't find it. So I'll summarize and paraphrase from memory:
Because the original tools suck ass, that's why.
There was a great quote on the SC page, something to the effect that "when experienced *nix developers say that tools are easy to use, they really just mean that they've grown enough scar tissue that using those tools is no longer painful." I'm a long-time Old School *nix user, and I agree. Try teaching these "easy to use" tools to beginners and watch their faces contort.
Take make for example: we start with a syntax that seems custom-designed to fuck with the mind (so, rules have to be indented by one tab (why? don't ask why, they just have to be; probably because parsing was too slow back then without a leading marker character), so if you use eight spaces instead you'll get some useless error message, even though there's nothing visually apparently wrong.
Each command gets executed in a separate shell. That's always fun for beginners, and trips up experts too, until you build up enough scar tissue that ending all the commands with ";\" seems perfectly natural.
The POSIX specification for make requirements are unfortunately too weak to accomplish anything. An implementation of make must have some extensions in order to be useful. So we have a way to include other makefiles, but it's spelled differently for different versions. GNU make has some funky builtin pattern expanders, BSD make has some funky looping constructs -- and neither camp is willing to merge.
The SC project was going to replace all that crap with a tool of equal power that actually makes sense to a beginner, rather than looking like the dog's breakfast of features that make currently is.
(I, too, long for Subversions and the other Tigris projects to come to fruition.)
Essential C++ by Herb Sutter.
The comp.lang.c++.moderated newsgroup ran a series of problems from the moderately thoughtful to the downright fugly, entitled "Guru of the Week" and contributed to by the best of the online C++ community. About 50 of the GotW article were then pulled into a book and published.
For C++ in general, get everything (right now, about 8 books) from the new "C++ In-Depth" series. Stroustrup is the series editor; Essential is one of the titles. The idea behind the series is to get away from the massive 1200-page MFC tomes meant solely to generate revenue for the publisher; all books in the In-Depth series must be less than 300 pages long (main body). Short, clear, and to the point.
Good, then you can settle an argument some of my friends are having. :-)
They're both engineers; one electrical, one mechanical. The dispute is about a scene in the X-Men movie, where a bunch of people are inside the Statue of Liberty. One of the heros is about to magically create a thunderstorm or some such, and Bad Guy says, "oh, real brilliant, summon up a boatload of lightning while you're standing inside a GIANT COPPER STATUE," and so the hero changes his/her mind, does nothing, and they all get tied up (or whatever).
One engineer says that this is moronic, and that standing inside a GIANT COPPER STATUE would in fact be the safest place from which to call down a lightning bolt, because you're inside a Faraday cage.
The other engineer says this is purest bullshit. Hilarity ensues.
(As a computer scientist lacking the ability to summon lightning storms, I fall into the "could not give a flying fat rat's ass" camp, but that's never helped settle a dispute.)
Well, flowerpot, now I'm wondering whether arch uses the ftp programs, or just the ftp protocol. That is, do you need an ftp client or server installed for arch to work? From what I've seen it wouldn't be too hard to do the protocol yourself.
I still can't get to the site, so oh well.
I guess I'm wondering why arch uses FTP as its network protocol. The FAQ says that it should be workable behind firewalls since the data is all transferred in passive mode, but this still seems like a huge step backwards.
So, what am I missing? I only got to read a little bit of the site before it got DDOS'd by slashdot.
Well, yes, but I think any presentation from the NSA will get these terms mixed up, due to no fault of their own.
From http://www.opensource.org/advocacy/faq.html:
By default, an NSA person would hear their own definition, not the programming community's definition. Related, but not the same thing....or "beanstalks" as the insiders like to call them, read the scifi/humor novel Rainbow Mars by Niven. It features beanstalks in many places, including what happens when one pulls loose from Brazil.
And then Stephen Hawking will really be able to get some work done, instead of having to use the crappy computer interface he's currently restricted to.
Then perhaps you should learn how to use C++.
Not to flame you -- I'm usually the first person to use the right-tools-right-job argument -- but one of the best books to teach C++ doesn't even mention pointers or builtin arrays until chapter 10. They teach C++, not C features that happen to show up in C++.
After having used C++ quite heavily for a decade, even I found parts of this book refreshing. I highly recommend it, both to beginning programmers, and crusty veterans like us.
...the fact that /. jumps on any nifty-sounding press release and presents it as science doesn't help.
We need a new category, "Unconfirmed Rumors," for these sorts of news reports.
But we have to also obtain or evolve the techniques neccessary to make a clone one-eighth Linus' size!
(Sorry, sorry, I'm just trying to see how quickly I can burn up 50 karma. :-) I agree with your analysis, by the way. It's very well put.)
The book What Do You Care What Other People Think? (at least I think that's the title) has an autobiographical account of Richard Feynman's experiences on the investigative team of the Challenger disaster. (This would be the guy who dipped pieces of O-ring plastic into his glass of ice water at a news conference to demonstrate the problem.)
I highly recommend reading it.
Well, the kicker with Type I diabetes is that it's genetically inherited; my sibling(s) run the same crap-shoot that I do. So while the chances of rejection are less, the chances of diabetes are just as good (my supposition only). I guess one could use stem cells from the non-diabetic parent as the closest possible match, but that's only 50% to start with.
I always wondered why I wasn't diabetic until the age of 11 or so... "what was my pancreas /doing/ that first decade" is a question I've always wanted to ask my doctor but could never remember. I guess you answered it. Thanks!
While this would be an amazing breakthrough, the donation problem would still exist. See, as a diabetic (Type I), growing a replacement pancreas from my own DNA won't help me. The replacement would be just as broken and useless as the one currently propping up my liver (or holding it down, I'm terrible at anatomy). The only thing I get out of this research is plenty of free pancreas-shaped paperweights. ("What a lovely doorstop!" "Thanks, grew it myself.")
I would need one of the super stem cells from somebody with a working pancreas in order to grow a working one of my own. Presumably this wouldn't suffer from the usual tissue rejection problems of transplants.
...that Ukraine is not an American colony, subject to our laws until they decide to declare independance.
Still, I agree with the point that you make.
It's not so much "mutually exclusive," it's more like "they both rewrite the same chunks of code." Maybe I'm splitting hairs there. AFAICT, the amount of common code between the two isn't enough to make this worth it.
The result is that the kernel hackers aren't concerned about, say, code size, as much as they're worried about readability and maintainability. The number of #ifdef's scattered throughout the VM code would be incredible, the resulting total code would look like Your Favorite Form of Pasta[tm], and fixing bugs would be difficult.
There are other ways to do it besides #ifdef, of course, but they all detract from maintainability. And it all becomes vastly difficult to scale as soon as a third VM implementation comes along...
...a truly excellent hard-SF book, in which a gamma-ray burster plays a major role. The math gets deep at times; just keep slogging through it and your mind will be expanded. (Possibly painfully.)
Destroying a terminal window in this fashion is, I believe, a rite of passage for beginners. But these days...
(Unix hackers from the Old School can still read the characters even after the font has been forcibly changed to Wongafuzhian, just because we've done this so often...)
...that the monitor, keyboard, mouse, etc, are meant to be reused from your old 486.
There are flag bits called "attributes" that can be placed on ext2 files; see lsattr(1) and chattr(1). The one you want is either 'a' or 'i', I think, or some combination thereof.
We're using Doxygen to generate HTML and man pages (!) for libstdc++-v3, the standard C++ library that comes with g++ 3.x. Doxygen can also generate LaTeX, RTF/Word, and some other formats which I don't remember. If you have some additional nifty utilities installed, and tell Doxygen where they are, then Doxygen can automatically use them. Take a look at the inheritence and collaboration graphs on the pages I linked to: normally they're much plainer, and not color-coded. But I had dot(1) installed, which can generate pretty graphs.
Incidentally, LaTeX is much better than TeX when doing letters. There's a set of macros specifically for writing letters, and I use them all the time for, say, business letters.
.I'm told that it's not that hard to write a module for Doxygen to teach it how to create a new output format, if the half-dozen it knows about don't fit your needs.
(Yes, there's an intentional typo in the name.)
The xwrits tool occasionally pops up reminders to stop typing and do your writs exercises. And if you ignore it, it makes rude gestures at you. Debian users can just apt-get the xwrits package, and there's source and RPMs and stuff on the project page.
It definitely helped me. My wrists rarely hurt anymore (but I should keep doing the exercises anyway).
*click*
"This is NOT "Warcraft In Space"!"
*click*
"It's much more sophisticated!"
*click*
"I KNOW it's not in 3-D!"
You owe me a new keyboard. This one just got coffee spewed all over it. :-)
Last week I turned ten thousand days old. I feel ancient.
The original Software Carpentry site had an excellent page explaining the reason for the whole project, but I can't find it. So I'll summarize and paraphrase from memory:
Because the original tools suck ass, that's why.
There was a great quote on the SC page, something to the effect that "when experienced *nix developers say that tools are easy to use, they really just mean that they've grown enough scar tissue that using those tools is no longer painful." I'm a long-time Old School *nix user, and I agree. Try teaching these "easy to use" tools to beginners and watch their faces contort.
Take make for example: we start with a syntax that seems custom-designed to fuck with the mind (so, rules have to be indented by one tab (why? don't ask why, they just have to be; probably because parsing was too slow back then without a leading marker character), so if you use eight spaces instead you'll get some useless error message, even though there's nothing visually apparently wrong.
Each command gets executed in a separate shell. That's always fun for beginners, and trips up experts too, until you build up enough scar tissue that ending all the commands with ";\" seems perfectly natural.
The POSIX specification for make requirements are unfortunately too weak to accomplish anything. An implementation of make must have some extensions in order to be useful. So we have a way to include other makefiles, but it's spelled differently for different versions. GNU make has some funky builtin pattern expanders, BSD make has some funky looping constructs -- and neither camp is willing to merge.
The SC project was going to replace all that crap with a tool of equal power that actually makes sense to a beginner, rather than looking like the dog's breakfast of features that make currently is.
(I, too, long for Subversions and the other Tigris projects to come to fruition.)