Oh, I don't like everything about the U.S., but if push came to shove and I could choose freely, I know how I'd chose to live....
...and my choices are very close to the typical American lifestyle.
What irks me is that of all those who criticize the U.S. and the "atrocities" it comits, should look in their own back yard.
Americans, at least their government, have the guts to act when alternatives clearly lead nowhere.
Now, to be fair, they will face the world's scorn for their blunders, but also reap the bounty of their successes. Other nations do nothing by comparison, and become envious of American progress.
They may come off as a crude bunch, by the standards of many, but those standards of "higher moral ground" are based on a notion of a facade of civilization whose veneer is thin, indeed. As is clear, I prefer an honest brute to a silver-tongued liar.
The interesting thing, is that as vile and disgusting as I find Canadian life, so too do some Americans look north and see "the promised land". Why we can't just trade places, (assuming economic productivity equity), I dunno.
As for Canada's inaction in the current situation, we, as with the majority of the world, stated that we would wait until all other courses of action had failed before rushing into war.
Yes, typical, hiding beind the skirt of inaction.
Funny how when an individual goes around killing people, we hold him accountable, but when the leader of a nation does it, we let it pass, and hope things improve.
The proof is in the pudding and if Saddam had so many weapons of mass destruction.......wouldn't he be using them on the invaders of his country right now? Looks like he doesn't have anything and "y'all" were wrong eh?
Irrelevent whether he does or doesn't. He signed his death warrant the second he acted with force against his neighbours. Payback may have been a bit late (and the U.S. abandonment of Iraqi rebels at the end of the Gulf war, leaving them to be slaughtered by the regime was reprehensable) but it is certainly deserved.
What, you think you can use innocent people has hostages against retaliation? Putting up with that has seen some 2,000,000 of them killed by their leadership. Iraqis have died and would continue to die with or without this war. Perhaps less will die in the period after the war is over. Yeah, life's a bitch.
As far as standard of living:
"Canada ranks sixth in the world in standard of living (measured according to gross domestic product per capita), behind only the U.S., Switzerland, Luxembourg, Germany and Japan." [itercanada.com]
That's pretty good thinking that we accomplish it without violence.
Without violence my ass. We steal money from our own people presumably to provide social services to them, and then let them die when our medical technology is too expensive or too inferior to world class to save their lives. To take so much as a penny from someone without their concent on the ruse that it is for their on care, and then to not return at least what was taken when such care is desperately needed, is murder. Yes, I have personal experience with family members being literally taxed to death. Socialists play God in this way, chosing who lives or dies, and while agnostic, if there is indeed a God, surely there must be a Hell for such deity-usurpers that makes Dante's ninth level a pleasant summer breeze by comparison.
Americans may let their people die for lack of the means to provide for their own medical care (actually they don't -- essential care is free to anyone), but they don't actively kill them by stealing from them the means to care for themselves.
Canadians do, and are "proud" of their health-care system, definately third-world when compared to that available (yes, for a price) in the U.S. Any elected politician who supports socialized medicine is a murderer and anyone who supports such a politician or the notion is, in my mind an accessory to murder. Only my respect for law stays my hand and retrains me from killing most Canadians I see spouting off their "kinder and gentler" communist bullshit (that, and the fact that I could not kill as many as I'd like) -- tit for tat, as it were. Make no mistake, when "Canadian" means "socialist", I hate it with all my fibre. And no, I have not renewed my health care status, and continue to purchase health care and insurance myself -- I will not bloody my hands with monies stolen from people who might well die because of it, even as such funds are also stolen from me -- I spit on, and reject with utter contempt, the entire system.
I like the fact that we maintain only a minimal amount of armed forces, not wasting billions of dollars on squabbles that will end up meaningless.
Nice living in the shadow of the powerful U.S., isn't it?
A warning: Americans are generous, but they tire quickly of freeloaders.
How do you define "many" - you and a couple of friends?
Lesse, more than a handful (more than 50,000 Candians emigrate to the U.S. each year, which is one reason why the Green Card lottery is closed to them), but clearly less than a voting majority of the population.
Tell me, mister troll, if life in Canada is so terrible, why do you continue to live there? Why not emigrate to some country that is more attuned to your (ahem) philosophy?
Believe me, I've tried! I arrived in the U.S. on a NAFTA TN1 visa in 1997, renewed it for 98, and obtained H1B sponsorship in 99, with an approved LC (supposedly "proving" that no American had my skills). that year. All I needed was the Green Card. By 2000, we had an American-born son.
Unfortunately, I had to change jobs in 2001, losing all ground gained for the Green Card, and had to start over. Well, with 09/11/2001, INS processing slowed to a crawl. That and the economy going into the shitter meant that I had to leave and go back to Canada, when I lost my job due to the telecom bust. Unlike some unscrupulous employers who give the H1 visa a bad rap, my employer(s) always abided by the rules, giving preference to American citizens -- you don't just arrive somewhere and claim all the infrustructure -- you gotta pay some "dues". So, you can't blame me for not trying to leave.
As for my philosophy, you'd not be surprised that I found Texas quite to my liking, with all the guns 'n all. Heinlein was right: an armed society is a polite society.
Are you so hooked on the beer and hockey that you are willing to put up with abject poverty, socialist slimeballs and commie ideas?
Ohh, now who's the troll?
I'm not crazy about hockey (or cold weather for that matter), and (see above) certainly tried to leave. As for the beer, contrary to popular (Canadian) belief, the U.S. has some fine microbrews. As much as there are also things I don't like about the U.S. (corporatism being one), if I could exchange Canadian for American citizenship, I'd do so in a heartbeat.
Canadian citizenship is such a stigma that many Americans travelling abroad claim to be Canadian rather than identify themselves as Americans...
Yes, wishy-washy takes no stand and offends no one. Americans act, for better or worse. While their foriegn policy may be poor, at least they try to have one that has an effect on their domestic situation. Give em a hundred years or so, and they'll learn some finesse. But I guarantee they won't become atrophied to the point where they try to pass of inaction as finesse.
What's going on in Iraq is certainly a dirty business, and nothing for the U.S. to be proud of, but it is a business that will likely improve the survival odds of the average Iraqi when it is over (Ole Saddam Hussein murdered millions of his own citizens in the "peace time" since the Gulf War). While not so naive as to think that is the U.S.'s intent, I do believe that it will likely be a pleasant outcome: they have not repeated their mistakes of instituting puppet regimes in Afghanistan, and I doubt they'd do that in Iraq, having been burned badly by that approach.
Someone has to clean up the world's shit, and it's damn shame that most of us are happy to sit on the sidelines and jeer while at the same time being quite happy that the shit gets cleaned up (and perhaps a bit smug that we "got" the 'mericans to do it, some might say goaded).
Canada however has 90% of its population on the border, and control over U.S. nukes, and those crazy bastards would use them in an instant!
Control over U.S. nukes? I kinda doubt it.
Crazy bastards? Perhaps, but Canadians are so worried about offending outsiders that they're frozen in inactivity when it comes to cleaning up the world's garbage. It offends me (as someone unfortunate enough to be born in Canada instead of the U.S.A., and carrying the stigma of wishy-washy Canadian citizenship) to no end that our government condems the U.S. while happily enjoying the fact that they benefit when the U.S. goes and does the dirty work that needs doing.
You got the 90% living by the U.S. border right, though. Plow on in, and round'm up. An attack from the rear, er, north, and a defensive position on your own soil might do it.
Lemme know. I'll be the first to turn on this communist hell of a government and it's supporters when the U.S. invades.
Like many Canadians, I spent quite a few years legally working in the U.S., under NAFTA, and liked it there: an American middle class life is pure luxery to a Canadian middle class life which is abject poverty by comparison. Many of us detest the way things are done here, and with a little nudge, might be able to get rid of the socialist slimeballs before their commie ideas infect the U.S. any more than they have.
That's a whitespace encoding of css-descramble.c source within an otherwise ordinary text-file that just happens to describe the encoding format (hence, the somewhat oxymoronic, or, as I prefer to view it, ironic, "self-documenting staganography" moniker given to the "hidden" css-descramble.c file).
I did that quite some time ago as a fun hack.
"Ohh, oooohhhh, Mr. Kotter, Mr. Kotter! Ooooh, prior art. Prior Art!...," "Shut up Horshack: we don't do patents around here."
Long ago, in a DMCA-free country, one Rob Malda conceived of a "News for Nerds, Stuff that Matters" (well, according to him, I suppose) web-based news site.
True to geekiness, and abhoring waste and reduncancy (but, not, as it appears, typos, spelling errors, or duplicated headlines), the Nerdy One noted that the HTTP transport protocol in a URL implied a web server, rendering the "www" domain prefix redundant.
And so was conceived slashdot.org. Amen (or, Groan!, as the case may be).
The redundancy exists, in most cases, because of the need to name the machines that provide a particular service, and the fact that this may be one of many machines under a common administrative domain. WHY DNS does not provide arbitrary service mapping, like it does for mail exchangers is, of course, a matter of hysterical (as opposed to historical) record.
On practical problem I can see is the size of such a life boat and getting it "up there". Another problem involves the fuel cost of transfer orbits if it isn't in the same orbital plane as the shuttle. (Though, I'd think that if it were "high enough", in theory at least, you might be able to use the gravitational potential to drive the orbital plane change, but I know of no practical way of doing this.)
Kudos for the out of the box thinking, even if it still appears to have some serious problems. That's how all solutions start out.
So honestly... who has undergone the same process?
<raise hand>Me, me, meeee, <strain to raise hand higher>ME!</strain></raise>
I think anyone with a curiousity about how the world works has, at an early age, pondered the notion of neet things. Perpetual motion machines rank up there.
I see where you are coming from, but there is art as you appear to define it, in code: the elegant and logical structuring of code often adds nothing to its functionality, and whether it adds to maintainability is, well, in the eye of the maintainer.
This often requires effort on the part of the programmer, already constrained by program requirements, and can very much be a labour of love.
Designing software is an art. Programming is not an art, it is a craft.
Oh, I take exception with this!
You can't program anything of significance if you can't design, and you can't design if you don't understand how the design is to be programmed. Put more bluntly: pseudo code ain't gonna compile.
Now, it is fair that some of us spend the bulk of our time designing sytems, and others implementing them, stressing the creative or crafty aspects of our skills. But woe unto the programmer who is not aware of the intended (i.e. designed) interaction of components: such a person debug, can't (oops, forgot the </yoda>).
I've been coding for over 20 years. Under my belt I have significant design contributions to:
1. Dataradio synchronous full duplex repeaters and mobile radio modems (mid 80's Z80 code);
2. Nortel's ADAS+ employing speech recognition in the telephone network for directory assistance (T1 A/B bit signalling and parallelization of Viterbi decoding over multiple TMS320 DSPs under pSOS, with a smattering of assembler, and clever allocation of data to memory with various access latencies as appropriate);
3. Teradyne's RMU75x telco loop diagnostic units (TCP/IP and steams-like protocol stacks under MQS on TMS320C30.
4. Chiaro's Optical Router project (automated, distributed test tools, with C++ on FreeBSD, and custom marshelling schemes; as well as porting Gigabit Ethernet device Drivers (C on FreeBSD).
While hapily mentoring less-skilled developers (I actually like the title "Software Engineer" since it reflects the combination of creative design, tempered with proved implementation methods) and even distributing development work, I refuse to ever accept promotion into a primarily management, or even "design" role: creative design often needs to leverage advanced programming techniques -- ever notice how the complex parts of programming languages, like templates, overloading, partial template specialization, and template template parameters, to use C++ as an example language are there to support design patterns and principles?). I have been, and always will be, a programmer: even when designing Emacs is my canvas, and I expect C-x C-c to be engraved on my tombstone.
Those who see programming as only an entry-level path to eventual design and perhaps management roles are taking an extremely narrow view. Career progression should more closely follow at of carpenter: apprentice, journyman, master. A master carpenter remains a carpenter, nevertheless. Even if he takes on architectural roles, they will be enhanced by his knowlege of the craft of carpentry.
Your confusing the judge/jury being reasonable, as in determining "beyond a reasonable doubt", and determining if the accused was reasoning.
The accused should be judged based on her actions, not on her reasoning.
In the case of aiding copyright infringement by leaving a computer system wide open, "I didn't know" should be sufficient defense unless evidence is presented that you acted as if you did, i.e. lock down some parts of the system, but not all, with deliberate, and thoughful actions (as opposed to blindly clicking on an install script). The counter "Well, you should have. A reasonable person would" doesn't wash with me.
Now, "not knowing" might result in a court finding you incompetent (as in "I didn't know guns are dangerous and need to be locked away") but should not result in you being found criminally guilty. And yes, this touches on the whole "ignorance is no excuse" issue.
Andy Hunt: But for me personally, almost every time I've taken that extra care to make a system flexible, it has saved me.
There's an effect that I've named (what else) "Hollan's Law": The liklihood of something changing is directly proportional to the intensity of the argument that it never will.
Thus, when we see something in code that looks like it might need to be maliable, it probably will be.
Looks like these guys have noticed the same thing.
Ultimately, good programming is about finding the clearest way to express how to do something. It is not much of a stretch to imagine that often this how will take the form of "Imagine a machine that works this way to interpret data... then it is programmed thus... and this 'program' [metadata] makes such a machine do what we want."
Parental Warning! This compact disk contains measures to deter illegal copying which may render it unplayable in some players. Defeating these measures to render it playable may leave you liable to lose all your assets, treble damages, and incarcertation as a domestic terrorist. Not suitable for clever or curious children.
Again, who determines if an individual had "reason to believe" anything? The court obviously. But, how can it?
How can the court know what a person thinks, or reasons? The court can certainly know what someone (presuming sound mind) knows by evidence of their acts: if evidences place me in location A at time B, then surely I knew this when I was at location A, and can't refute that I was there at time B, without contradictory evidence ("the witness' watch was wrong").
But, I know of no way to look inside someone's thoughts to determine what they reason.
In fact, this has been used sucessfully in defending against "hate crime" accusations. You know, the kind of crime where the punishment for (say) theft is much worse because the thief was white and the victim black and therefore the thief "hated" the victim by virtue of her race -- how does the prosecution "prove" hatred, or any emotion without confession?
Similarly, how does the court find how someone reasons if they do not confess their understanding of how they come to a conclusion?
And don't get me started on what constitutes "reasonable" in different parts of the world.
Yes, the circuit is obvious, but I suspect that the use to detect attempted overclocking of a microprocessor is narrow enough in scope, and novel enough in application to let the patent stand for that purpose.
Whether it should, of course, is another issue, but I don't see this as a slam-dunk "what were they smoking to cause them to patent THAT" issue.
This is nothing more than a frequency comparison circuit, similar to ones I've seen years ago. Someone must have prior art on this.
Of course, applying such a circuit to foil attempts at overclocking a microprocessor may be sufficiently narrow in scope and novel in idea that the patent might stand. Sucks to be AMD, I guess (even though I like their CPUs).
...are the bane of law everywhere, for they are the grease that makes the slope slippery.
...or had reason to believe...
WHO had reason to believe? You? The "Man"? The police? The Judge? I ask again, "Who?".
Generally, the courts (yeah, yeah, IANALBIPOOSD (... but I play one on Slashdot)), interpret this as "what a resonable person would believe", but still, this leaves the uncertainty of what the courts consider "reasonable".
For example, I would think it reasonable that, if I left my computer wide open, for read access, and had interesting stuff on it, eventually someone would find it, and point others to the digital bounty. At best, this would be "copyright negligence" on my part. Though, I still think the courts might be more lenient if I were "Jane housewife using her new PC" instead of "Joe hacker, professional coder, with a data networking and security background."
Still, even leaving it to the courts, relying on an interpretation of "reason to believe" does not give me a warm feeling inside. I'd prefer the burden to proof that I knew of likely third party infringement, or my own carelessness to fall on the prosecution, not that I should think like some arbitrarily "reasonable" person.
After all, in a different context, "reasonable" Americans support the current war, if they know what's good for them. To speak out against it would, of course be "unreasonable". Regardless of one's position in this matter, protection for such "unreasonable" political opposition is paramount in a free society. Similary, protection for "unreasonable" thoughts should also exist, lest "reasonable" become a synonym for "politically acceptable".
1. Package managers. Yes, package managers are supposed to help deal with these kinds of issues. So, why not start with the.configure; make; make install description and then go on to discuss the various efforts to simplify this, letting the user know, at least a bit, of what goes on under the hood, when dealing with source packages.
2. BSD ports. Oh yes, great idea. Trouble is, that it is developer-centric: the front end is "make": which not only builds and installs the package, it goes and gets it to, boldly networking where no build script has networked before. Again, this is developer-centric.
3. Binary vs. source packaging. Yes, binary packages are convenient. But you know, it might just be easier to.configure and compile for your platform, letting the build process figure out where things are, and designing binaries to do this at installation or run time. Also open source should, to some degree, be about encouraging source distribution. Pre-build binaries have their place, but really should be considered trusted (signed?) caches of what your build process does.
George Sr. had a chance to rid the world of this mad man 12 years ago. He even called on the Iraqis to stand up and fight for themselves, and than abandoned them.
... and the premise is that the sins of the father should reflect on the son? Sorry, I don't buy that.
US/UN sanctions calling for the ouster of the head of state of a country are distastful and uncalled for. It could have been enough simply for sanctions for disarmament, but no, the US wanted Saddam out.
On the contrary. Sanctions for the ouster of a proven and demonstrated war monger are called for. We jail people for simply making serious threats that they are capable of carrying out (i.e. are not idle). By extention, a history of having carried out threats previously, and continued present threats should be sufficient to justify removal, even if the capability appears to be lacking at present.
Thirdly no one, not one person can "guarantee" your safety.
No, which is why you must take that responsibility on yourself. The U.S. is doing just that. How you take that responsibility on can, however, be influenced by what others do to address your concerns.
Question: What's wrong with continual "inspections" with the threat of force? Eventually Saddam will die or his own people will revolt.
...or he will succeed in another "surprise". The past may be forgiven, but only after sufficient time has past and pennance paid, for earlier transgressions, the interval depending on the severity of the transgression. Hussein's previous actions give him one heck of a "rap sheet".
Note that you asked for ideas to "guarantee" your safety and not necessarily to "free" the Iraqis, which obviously this would have no affect on.
Guarantee may be too strong a word, but ultimately I need to be satisfied about my safety, so, perhaps not. Freeing the Iraqi people, however, without overwhelming support, would be exactly the kind of "interference" that you should object.
It's far too late to argue if this should or shouldn't happen. The next question is, will the US f*(k things up again once they've deposed the current government? Japan seems to be the only country the US has successfully "democratised" in the last 60 years.
Of course, they will fuck it up. They always do. But, that does not detract from the immediate concern: one does not show mercy to the serial murderer just because one has a bad track record of looking after the innocent dependents of those criminals one has eliminated.
[ Reply to This | Parent ]
We have had to dumb down our documentation considerably (to the point where we have multiple pages to describe in excruciating detail the usual 'configure; make; make install' step). Has anyone else had experience in how to deal with a user community who doesn't understand the 'normal' practices for open source projects?"
WHOA!
Users and 'configure; make; make install' do not go together. Unless, of course, by "user", you mean a developer foriegn to open source conventions. This would most likely include non-Unix developers.
While it is appropriate for users to compile and install their own open source software, like the parent points out, this should happen automagically for them: insert CDROM, click "OK", watch it compile and install (or not and offer to email the build log to the development team).
If your audience are developers not familliar with open source conventions (and, by extention important licenses like the GPL), then, yes, technical things like "here's the standard way to build" a package should not faze them (unless, perhaps their microSofties that have never seen the outside of Developer Studio.
So, you have just slowed your sort template by an order of magnitude, since you use a function pointer to compare elements, something that would be probably inlined by the original template
Yes, but I was addressing the use of templates to hide downcasting and still use common backend implementations, increasing type-safety. I briefly hinted that this does not add anything over the classic generic C solution. Obviously templates can help us do better than this, a lot better, for the reason you note.
In practice, we'd probably specialize Sort() for the types of interest:
In fact, using type traits (see Alexandrescu's "Modern C++ Design"), we could have Sort use a SortImplementationTrait<T> class template and automatically generate an inline comparison or external comparison function version, based on the SortImplementatioTrait of the type being sorted (vis. SortImplementationTrait<T>>::Inline). That's probably what you were thinking of. If you want, I could flesh out the design for you (hint: Partial template specialization on the type trait makes it easier.)
But, that gets us far from the aspect of the original concern that I chose to address: encapsulation of downcasting within templates to enhance overall typesafety of code.
except that this is really the WWE equivalent of The Rock beating on a retarded 11 year old kid.
... with guns, and bombs, and nasty chem-UH-kals.
While we might prefer to put such a dangerous child in a place where he can do us no harm, taking pity on his inability to understand why he is a danger, our first resposnibility is to protect ourselves.
One sure fire way to do this is, yes, blow the fuck out of the threat before he can hurt us. There is no denying that this will protect us from the immediate and future related threat. Of course, there may be other repurcussions: some people might not like our use of such heavy handedness.
Fair enough.
Let them that criticize offer more humane solutions that guarantee our safety. And, let us listen when their ideas do, in fact, provide our safety in a more humane manner. But, that has not happened here: more scurrying about and talk and "inspections" might create busy-work for one Hans Blix, but it does squat for U.S. interests. The UN has failed to avert this war due to, mostly, its own inane bureaucracy that has usurped the original purpose of that organization with the need to perpetuate that same bureaucracy.
Having failed to remove the real threat that the Iraqi leadership represents to the U.S., on the basis of unarguable prior words and deeds, in a less violent manner, on a timely schedule, the UN opens the door for, and legitimizes, all out American destruction of that same regime, complete with collateral damage.
One can therefore only hope that the war will be swift, and the same American military technological power that insipres convidence in victory will also lead to a minimization of unsavoury collateral damage (which is really the thing that makes war so reprehensable in the first place).
The analogy with the retarded child isn't even a good one: Saddam Hussain, while a masochist and suicidal, does not strike me as retarded. So, tone down the pity and compassion waves, please.
This is one Canadian that, while finding U.S. action somewhat of a distasteful business, notes that it is UN, and not American, incompetence that has led to this last refuge.
Templates can certainly lead to code bloat: you're telling the compiler how to generate classes (and, by extention, member and non-member functions) that are parametrized by type.
So, instead of void Sort(int array[], size_t count) {... } to sort an array of ints, you have template <typename T> Sort(T array[], size_t count) {... } and the means to define a function that can sort an array of anything, with complete type-safety. Naturally, this generates a Sort function for each kind of array of things you need to sort... hmmm, there's room for improvement, no?
If you don't get the "there's room for improvement" part, and use templates to get nice type-specific varients of common functions, you will get code bloat, and that is one of the things that give templated-code a bad reputation. But, we're Slashdotters, we're smarter than that.
Recalling our C days, we immediately code void Sort(void *array, size_t count, int (*compare)(void *, void *)){... } where we pass a generic array pointer, and an additional pointer to a function that knows how to compare generic elements -- the specific call will then be something like: Sort((void *)pFoo, count, (int (*)(void *, void *))FooCompare). Gee, where did all our typesafety go? [Java programmers who are otherwise typesafety puristis grind their teeth at this point].
If you can imagine a generic implementation, you can combine the best of both approaches: hiding the type downcasting inside the generic templated definition:
and for every array of type T you need to sort, define a int SortCompare<T>(T *arg1, T *arg2). (You could, alternately still pass that function to the generic sort routine, if you had different comparison functions for the same types of data (say, case-sensitive and case-insensitive sorting, or lexicographic vs. ASCII text sorting, etc.).)
Note the inline declaration. This lets a smart compiler code the call to the generic function inline, avoiding a double function call. In practice, if the only thing you are doing is some type casting, no additional code is generated.
So, you still have the potentially dangerous downcasting, but you've encapsulated it inside a template definition, relieving the application programmer to have to worry about it. Does all this mean extra work? It sure looks that you have to come up with a generic implementation and then make a nice and pretty templated type-safe wrapper around it.
This is true, and well worth the effort for code that has to be robust and easy to use, particularly by others. Library writers know this rule all too well.
Of course, in a pinch, or when a generic implementation is not obvious, or known to be non-existent, or when a particulary implementation exists for some types of objects, you can punt and let the compiler generate multiple instances of type-safe code, without a generic back-end implementation, accepting the code bloat that results.
In the end, it becomes a matter of compromise and wise design decisions. Unfortunately, with choice, comes the effort to chose, and to chose wisely. It is the unwise use of templates that leads to their sometimes ill-deserved "code bloat" reputation. One of the differences between the skilled and less-skilled programmer is the ability to make these choices correctly and quickly, leveraging the language features that let the corresponding design decisions be put into practice.
Other related C++ topics would include the notions that "multiple inheritence leads to slow code," "exception handling and run-time type information have high overhead". Again, one has to weigh the advantages offered by these techinques against the skill needed to use them wisely, and the performance penalty paid. I'll let someone else chime in now.
What irks me is that of all those who criticize the U.S. and the "atrocities" it comits, should look in their own back yard.
Americans, at least their government, have the guts to act when alternatives clearly lead nowhere.
Now, to be fair, they will face the world's scorn for their blunders, but also reap the bounty of their successes. Other nations do nothing by comparison, and become envious of American progress.
They may come off as a crude bunch, by the standards of many, but those standards of "higher moral ground" are based on a notion of a facade of civilization whose veneer is thin, indeed. As is clear, I prefer an honest brute to a silver-tongued liar.
The interesting thing, is that as vile and disgusting as I find Canadian life, so too do some Americans look north and see "the promised land". Why we can't just trade places, (assuming economic productivity equity), I dunno.
Yes, typical, hiding beind the skirt of inaction.
Funny how when an individual goes around killing people, we hold him accountable, but when the leader of a nation does it, we let it pass, and hope things improve.
The proof is in the pudding and if Saddam had so many weapons of mass destruction.......wouldn't he be using them on the invaders of his country right now? Looks like he doesn't have anything and "y'all" were wrong eh?
Irrelevent whether he does or doesn't. He signed his death warrant the second he acted with force against his neighbours. Payback may have been a bit late (and the U.S. abandonment of Iraqi rebels at the end of the Gulf war, leaving them to be slaughtered by the regime was reprehensable) but it is certainly deserved.
What, you think you can use innocent people has hostages against retaliation? Putting up with that has seen some 2,000,000 of them killed by their leadership. Iraqis have died and would continue to die with or without this war. Perhaps less will die in the period after the war is over. Yeah, life's a bitch.
As far as standard of living:
"Canada ranks sixth in the world in standard of living (measured according to gross domestic product per capita), behind only the U.S., Switzerland, Luxembourg, Germany and Japan." [itercanada.com]
That's pretty good thinking that we accomplish it without violence.
Without violence my ass. We steal money from our own people presumably to provide social services to them, and then let them die when our medical technology is too expensive or too inferior to world class to save their lives. To take so much as a penny from someone without their concent on the ruse that it is for their on care, and then to not return at least what was taken when such care is desperately needed, is murder. Yes, I have personal experience with family members being literally taxed to death. Socialists play God in this way, chosing who lives or dies, and while agnostic, if there is indeed a God, surely there must be a Hell for such deity-usurpers that makes Dante's ninth level a pleasant summer breeze by comparison.
Americans may let their people die for lack of the means to provide for their own medical care (actually they don't -- essential care is free to anyone), but they don't actively kill them by stealing from them the means to care for themselves.
Canadians do, and are "proud" of their health-care system, definately third-world when compared to that available (yes, for a price) in the U.S. Any elected politician who supports socialized medicine is a murderer and anyone who supports such a politician or the notion is, in my mind an accessory to murder. Only my respect for law stays my hand and retrains me from killing most Canadians I see spouting off their "kinder and gentler" communist bullshit (that, and the fact that I could not kill as many as I'd like) -- tit for tat, as it were. Make no mistake, when "Canadian" means "socialist", I hate it with all my fibre. And no, I have not renewed my health care status, and continue to purchase health care and insurance myself -- I will not bloody my hands with monies stolen from people who might well die because of it, even as such funds are also stolen from me -- I spit on, and reject with utter contempt, the entire system.
I like the fact that we maintain only a minimal amount of armed forces, not wasting billions of dollars on squabbles that will end up meaningless.
Nice living in the shadow of the powerful U.S., isn't it?
A warning: Americans are generous, but they tire quickly of freeloaders.
Lesse, more than a handful (more than 50,000 Candians emigrate to the U.S. each year, which is one reason why the Green Card lottery is closed to them), but clearly less than a voting majority of the population.
Tell me, mister troll, if life in Canada is so terrible, why do you continue to live there? Why not emigrate to some country that is more attuned to your (ahem) philosophy?
Believe me, I've tried! I arrived in the U.S. on a NAFTA TN1 visa in 1997, renewed it for 98, and obtained H1B sponsorship in 99, with an approved LC (supposedly "proving" that no American had my skills). that year. All I needed was the Green Card. By 2000, we had an American-born son.
Unfortunately, I had to change jobs in 2001, losing all ground gained for the Green Card, and had to start over. Well, with 09/11/2001, INS processing slowed to a crawl. That and the economy going into the shitter meant that I had to leave and go back to Canada, when I lost my job due to the telecom bust. Unlike some unscrupulous employers who give the H1 visa a bad rap, my employer(s) always abided by the rules, giving preference to American citizens -- you don't just arrive somewhere and claim all the infrustructure -- you gotta pay some "dues". So, you can't blame me for not trying to leave.
As for my philosophy, you'd not be surprised that I found Texas quite to my liking, with all the guns 'n all. Heinlein was right: an armed society is a polite society.
Are you so hooked on the beer and hockey that you are willing to put up with abject poverty, socialist slimeballs and commie ideas?
Ohh, now who's the troll?
I'm not crazy about hockey (or cold weather for that matter), and (see above) certainly tried to leave. As for the beer, contrary to popular (Canadian) belief, the U.S. has some fine microbrews. As much as there are also things I don't like about the U.S. (corporatism being one), if I could exchange Canadian for American citizenship, I'd do so in a heartbeat.
Canadian citizenship is such a stigma that many Americans travelling abroad claim to be Canadian rather than identify themselves as Americans...
Yes, wishy-washy takes no stand and offends no one. Americans act, for better or worse. While their foriegn policy may be poor, at least they try to have one that has an effect on their domestic situation. Give em a hundred years or so, and they'll learn some finesse. But I guarantee they won't become atrophied to the point where they try to pass of inaction as finesse.
What's going on in Iraq is certainly a dirty business, and nothing for the U.S. to be proud of, but it is a business that will likely improve the survival odds of the average Iraqi when it is over (Ole Saddam Hussein murdered millions of his own citizens in the "peace time" since the Gulf War). While not so naive as to think that is the U.S.'s intent, I do believe that it will likely be a pleasant outcome: they have not repeated their mistakes of instituting puppet regimes in Afghanistan, and I doubt they'd do that in Iraq, having been burned badly by that approach.
Someone has to clean up the world's shit, and it's damn shame that most of us are happy to sit on the sidelines and jeer while at the same time being quite happy that the shit gets cleaned up (and perhaps a bit smug that we "got" the 'mericans to do it, some might say goaded).
Control over U.S. nukes? I kinda doubt it.
Crazy bastards? Perhaps, but Canadians are so worried about offending outsiders that they're frozen in inactivity when it comes to cleaning up the world's garbage. It offends me (as someone unfortunate enough to be born in Canada instead of the U.S.A., and carrying the stigma of wishy-washy Canadian citizenship) to no end that our government condems the U.S. while happily enjoying the fact that they benefit when the U.S. goes and does the dirty work that needs doing.
You got the 90% living by the U.S. border right, though. Plow on in, and round'm up. An attack from the rear, er, north, and a defensive position on your own soil might do it.
Lemme know. I'll be the first to turn on this communist hell of a government and it's supporters when the U.S. invades.
Like many Canadians, I spent quite a few years legally working in the U.S., under NAFTA, and liked it there: an American middle class life is pure luxery to a Canadian middle class life which is abject poverty by comparison. Many of us detest the way things are done here, and with a little nudge, might be able to get rid of the socialist slimeballs before their commie ideas infect the U.S. any more than they have.
No, I'm not talking about some fool rolling over on his infant child in his sleep, I'm talking about deadly attacks against another adult.
Take a look at this.
That's a whitespace encoding of css-descramble.c source within an otherwise ordinary text-file that just happens to describe the encoding format (hence, the somewhat oxymoronic, or, as I prefer to view it, ironic, "self-documenting staganography" moniker given to the "hidden" css-descramble.c file).
I did that quite some time ago as a fun hack.
"Ohh, oooohhhh, Mr. Kotter, Mr. Kotter! Ooooh, prior art. Prior Art!...," "Shut up Horshack: we don't do patents around here."
True to geekiness, and abhoring waste and reduncancy (but, not, as it appears, typos, spelling errors, or duplicated headlines), the Nerdy One noted that the HTTP transport protocol in a URL implied a web server, rendering the "www" domain prefix redundant.
And so was conceived slashdot.org. Amen (or, Groan!, as the case may be).
The redundancy exists, in most cases, because of the need to name the machines that provide a particular service, and the fact that this may be one of many machines under a common administrative domain. WHY DNS does not provide arbitrary service mapping, like it does for mail exchangers is, of course, a matter of hysterical (as opposed to historical) record.
On practical problem I can see is the size of such a life boat and getting it "up there". Another problem involves the fuel cost of transfer orbits if it isn't in the same orbital plane as the shuttle. (Though, I'd think that if it were "high enough", in theory at least, you might be able to use the gravitational potential to drive the orbital plane change, but I know of no practical way of doing this.)
Kudos for the out of the box thinking, even if it still appears to have some serious problems. That's how all solutions start out.
<raise hand>Me, me, meeee, <strain to raise hand higher>ME!</strain></raise>
I think anyone with a curiousity about how the world works has, at an early age, pondered the notion of neet things. Perpetual motion machines rank up there.
And thus begins the process of understanding.
This often requires effort on the part of the programmer, already constrained by program requirements, and can very much be a labour of love.
Oh, I take exception with this!
You can't program anything of significance if you can't design, and you can't design if you don't understand how the design is to be programmed. Put more bluntly: pseudo code ain't gonna compile.
Now, it is fair that some of us spend the bulk of our time designing sytems, and others implementing them, stressing the creative or crafty aspects of our skills. But woe unto the programmer who is not aware of the intended (i.e. designed) interaction of components: such a person debug, can't (oops, forgot the </yoda>).
I've been coding for over 20 years. Under my belt I have significant design contributions to:
1. Dataradio synchronous full duplex repeaters and mobile radio modems (mid 80's Z80 code);
2. Nortel's ADAS+ employing speech recognition in the telephone network for directory assistance (T1 A/B bit signalling and parallelization of Viterbi decoding over multiple TMS320 DSPs under pSOS, with a smattering of assembler, and clever allocation of data to memory with various access latencies as appropriate);
3. Teradyne's RMU75x telco loop diagnostic units (TCP/IP and steams-like protocol stacks under MQS on TMS320C30.
4. Chiaro's Optical Router project (automated, distributed test tools, with C++ on FreeBSD, and custom marshelling schemes; as well as porting Gigabit Ethernet device Drivers (C on FreeBSD).
While hapily mentoring less-skilled developers (I actually like the title "Software Engineer" since it reflects the combination of creative design, tempered with proved implementation methods) and even distributing development work, I refuse to ever accept promotion into a primarily management, or even "design" role: creative design often needs to leverage advanced programming techniques -- ever notice how the complex parts of programming languages, like templates, overloading, partial template specialization, and template template parameters, to use C++ as an example language are there to support design patterns and principles?). I have been, and always will be, a programmer: even when designing Emacs is my canvas, and I expect C-x C-c to be engraved on my tombstone.
Those who see programming as only an entry-level path to eventual design and perhaps management roles are taking an extremely narrow view. Career progression should more closely follow at of carpenter: apprentice, journyman, master. A master carpenter remains a carpenter, nevertheless. Even if he takes on architectural roles, they will be enhanced by his knowlege of the craft of carpentry.
The accused should be judged based on her actions, not on her reasoning.
In the case of aiding copyright infringement by leaving a computer system wide open, "I didn't know" should be sufficient defense unless evidence is presented that you acted as if you did, i.e. lock down some parts of the system, but not all, with deliberate, and thoughful actions (as opposed to blindly clicking on an install script). The counter "Well, you should have. A reasonable person would" doesn't wash with me.
Now, "not knowing" might result in a court finding you incompetent (as in "I didn't know guns are dangerous and need to be locked away") but should not result in you being found criminally guilty. And yes, this touches on the whole "ignorance is no excuse" issue.
There's an effect that I've named (what else) "Hollan's Law": The liklihood of something changing is directly proportional to the intensity of the argument that it never will.
Thus, when we see something in code that looks like it might need to be maliable, it probably will be.
Looks like these guys have noticed the same thing.
Ultimately, good programming is about finding the clearest way to express how to do something. It is not much of a stretch to imagine that often this how will take the form of "Imagine a machine that works this way to interpret data... then it is programmed thus... and this 'program' [metadata] makes such a machine do what we want."
Parental Warning! This compact disk contains measures to deter illegal copying which may render it unplayable in some players. Defeating these measures to render it playable may leave you liable to lose all your assets, treble damages, and incarcertation as a domestic terrorist. Not suitable for clever or curious children.
How can the court know what a person thinks, or reasons? The court can certainly know what someone (presuming sound mind) knows by evidence of their acts: if evidences place me in location A at time B, then surely I knew this when I was at location A, and can't refute that I was there at time B, without contradictory evidence ("the witness' watch was wrong").
But, I know of no way to look inside someone's thoughts to determine what they reason.
In fact, this has been used sucessfully in defending against "hate crime" accusations. You know, the kind of crime where the punishment for (say) theft is much worse because the thief was white and the victim black and therefore the thief "hated" the victim by virtue of her race -- how does the prosecution "prove" hatred, or any emotion without confession?
Similarly, how does the court find how someone reasons if they do not confess their understanding of how they come to a conclusion?
And don't get me started on what constitutes "reasonable" in different parts of the world.
Whether it should, of course, is another issue, but I don't see this as a slam-dunk "what were they smoking to cause them to patent THAT" issue.
Of course, applying such a circuit to foil attempts at overclocking a microprocessor may be sufficiently narrow in scope and novel in idea that the patent might stand. Sucks to be AMD, I guess (even though I like their CPUs).
WHO had reason to believe? You? The "Man"? The police? The Judge? I ask again, "Who?".
Generally, the courts (yeah, yeah, IANALBIPOOSD (... but I play one on Slashdot)), interpret this as "what a resonable person would believe", but still, this leaves the uncertainty of what the courts consider "reasonable".
For example, I would think it reasonable that, if I left my computer wide open, for read access, and had interesting stuff on it, eventually someone would find it, and point others to the digital bounty. At best, this would be "copyright negligence" on my part. Though, I still think the courts might be more lenient if I were "Jane housewife using her new PC" instead of "Joe hacker, professional coder, with a data networking and security background."
Still, even leaving it to the courts, relying on an interpretation of "reason to believe" does not give me a warm feeling inside. I'd prefer the burden to proof that I knew of likely third party infringement, or my own carelessness to fall on the prosecution, not that I should think like some arbitrarily "reasonable" person.
After all, in a different context, "reasonable" Americans support the current war, if they know what's good for them. To speak out against it would, of course be "unreasonable". Regardless of one's position in this matter, protection for such "unreasonable" political opposition is paramount in a free society. Similary, protection for "unreasonable" thoughts should also exist, lest "reasonable" become a synonym for "politically acceptable".
1. Package managers. Yes, package managers are supposed to help deal with these kinds of issues. So, why not start with the .configure; make; make install description and then go on to discuss the various efforts to simplify this, letting the user know, at least a bit, of what goes on under the hood, when dealing with source packages.
2. BSD ports. Oh yes, great idea. Trouble is, that it is developer-centric: the front end is "make": which not only builds and installs the package, it goes and gets it to, boldly networking where no build script has networked before. Again, this is developer-centric.
3. Binary vs. source packaging. Yes, binary packages are convenient. But you know, it might just be easier to .configure and compile for your platform, letting the build process figure out where things are, and designing binaries to do this at installation or run time. Also open source should, to some degree, be about encouraging source distribution. Pre-build binaries have their place, but really should be considered trusted (signed?) caches of what your build process does.
Thanks. :)
George Sr. had a chance to rid the world of this mad man 12 years ago. He even called on the Iraqis to stand up and fight for themselves, and than abandoned them.
US/UN sanctions calling for the ouster of the head of state of a country are distastful and uncalled for. It could have been enough simply for sanctions for disarmament, but no, the US wanted Saddam out.
On the contrary. Sanctions for the ouster of a proven and demonstrated war monger are called for. We jail people for simply making serious threats that they are capable of carrying out (i.e. are not idle). By extention, a history of having carried out threats previously, and continued present threats should be sufficient to justify removal, even if the capability appears to be lacking at present.
Thirdly no one, not one person can "guarantee" your safety.
No, which is why you must take that responsibility on yourself. The U.S. is doing just that. How you take that responsibility on can, however, be influenced by what others do to address your concerns.
Question: What's wrong with continual "inspections" with the threat of force? Eventually Saddam will die or his own people will revolt.
Note that you asked for ideas to "guarantee" your safety and not necessarily to "free" the Iraqis, which obviously this would have no affect on.
Guarantee may be too strong a word, but ultimately I need to be satisfied about my safety, so, perhaps not. Freeing the Iraqi people, however, without overwhelming support, would be exactly the kind of "interference" that you should object.
It's far too late to argue if this should or shouldn't happen. The next question is, will the US f*(k things up again once they've deposed the current government? Japan seems to be the only country the US has successfully "democratised" in the last 60 years.
Of course, they will fuck it up. They always do. But, that does not detract from the immediate concern: one does not show mercy to the serial murderer just because one has a bad track record of looking after the innocent dependents of those criminals one has eliminated. [ Reply to This | Parent ]
WHOA!
Users and 'configure; make; make install' do not go together. Unless, of course, by "user", you mean a developer foriegn to open source conventions. This would most likely include non-Unix developers.
While it is appropriate for users to compile and install their own open source software, like the parent points out, this should happen automagically for them: insert CDROM, click "OK", watch it compile and install (or not and offer to email the build log to the development team).
If your audience are developers not familliar with open source conventions (and, by extention important licenses like the GPL), then, yes, technical things like "here's the standard way to build" a package should not faze them (unless, perhaps their microSofties that have never seen the outside of Developer Studio.
Yes, but I was addressing the use of templates to hide downcasting and still use common backend implementations, increasing type-safety. I briefly hinted that this does not add anything over the classic generic C solution. Obviously templates can help us do better than this, a lot better, for the reason you note.
In practice, we'd probably specialize Sort() for the types of interest:
void Sort(int array[], size_t count)<int>
{
InlineCompareSort<int>(array, count);
}
In fact, using type traits (see Alexandrescu's "Modern C++ Design"), we could have Sort use a SortImplementationTrait<T> class template and automatically generate an inline comparison or external comparison function version, based on the SortImplementatioTrait of the type being sorted (vis. SortImplementationTrait<T>>::Inline). That's probably what you were thinking of. If you want, I could flesh out the design for you (hint: Partial template specialization on the type trait makes it easier.)
But, that gets us far from the aspect of the original concern that I chose to address: encapsulation of downcasting within templates to enhance overall typesafety of code.
While we might prefer to put such a dangerous child in a place where he can do us no harm, taking pity on his inability to understand why he is a danger, our first resposnibility is to protect ourselves.
One sure fire way to do this is, yes, blow the fuck out of the threat before he can hurt us. There is no denying that this will protect us from the immediate and future related threat. Of course, there may be other repurcussions: some people might not like our use of such heavy handedness.
Fair enough.
Let them that criticize offer more humane solutions that guarantee our safety. And, let us listen when their ideas do, in fact, provide our safety in a more humane manner. But, that has not happened here: more scurrying about and talk and "inspections" might create busy-work for one Hans Blix, but it does squat for U.S. interests. The UN has failed to avert this war due to, mostly, its own inane bureaucracy that has usurped the original purpose of that organization with the need to perpetuate that same bureaucracy.
Having failed to remove the real threat that the Iraqi leadership represents to the U.S., on the basis of unarguable prior words and deeds, in a less violent manner, on a timely schedule, the UN opens the door for, and legitimizes, all out American destruction of that same regime, complete with collateral damage.
One can therefore only hope that the war will be swift, and the same American military technological power that insipres convidence in victory will also lead to a minimization of unsavoury collateral damage (which is really the thing that makes war so reprehensable in the first place).
The analogy with the retarded child isn't even a good one: Saddam Hussain, while a masochist and suicidal, does not strike me as retarded. So, tone down the pity and compassion waves, please.
This is one Canadian that, while finding U.S. action somewhat of a distasteful business, notes that it is UN, and not American, incompetence that has led to this last refuge.
So, instead of void Sort(int array[], size_t count) { ... } to sort an array of ints, you have template <typename T> Sort(T array[], size_t count) { ... } and the means to define a function that can sort an array of anything, with complete type-safety. Naturally, this generates a Sort function for each kind of array of things you need to sort... hmmm, there's room for improvement, no?
If you don't get the "there's room for improvement" part, and use templates to get nice type-specific varients of common functions, you will get code bloat, and that is one of the things that give templated-code a bad reputation. But, we're Slashdotters, we're smarter than that.
Recalling our C days, we immediately code void Sort(void *array, size_t count, int (*compare)(void *, void *)){ ... } where we pass a generic array pointer, and an additional pointer to a function that knows how to compare generic elements -- the specific call will then be something like: Sort((void *)pFoo, count, (int (*)(void *, void *))FooCompare). Gee, where did all our typesafety go? [Java programmers who are otherwise typesafety puristis grind their teeth at this point].
If you can imagine a generic implementation, you can combine the best of both approaches: hiding the type downcasting inside the generic templated definition:
inline void template <typename T> Sort(T array[], size_t count)
{
genericSort((void *)array, count, (int (*)(void *, void *)SortCompare<T>);
}
and for every array of type T you need to sort, define a int SortCompare<T>(T *arg1, T *arg2). (You could, alternately still pass that function to the generic sort routine, if you had different comparison functions for the same types of data (say, case-sensitive and case-insensitive sorting, or lexicographic vs. ASCII text sorting, etc.).)
Note the inline declaration. This lets a smart compiler code the call to the generic function inline, avoiding a double function call. In practice, if the only thing you are doing is some type casting, no additional code is generated.
So, you still have the potentially dangerous downcasting, but you've encapsulated it inside a template definition, relieving the application programmer to have to worry about it. Does all this mean extra work? It sure looks that you have to come up with a generic implementation and then make a nice and pretty templated type-safe wrapper around it.
This is true, and well worth the effort for code that has to be robust and easy to use, particularly by others. Library writers know this rule all too well.
Of course, in a pinch, or when a generic implementation is not obvious, or known to be non-existent, or when a particulary implementation exists for some types of objects, you can punt and let the compiler generate multiple instances of type-safe code, without a generic back-end implementation, accepting the code bloat that results.
In the end, it becomes a matter of compromise and wise design decisions. Unfortunately, with choice, comes the effort to chose, and to chose wisely. It is the unwise use of templates that leads to their sometimes ill-deserved "code bloat" reputation. One of the differences between the skilled and less-skilled programmer is the ability to make these choices correctly and quickly, leveraging the language features that let the corresponding design decisions be put into practice.
Other related C++ topics would include the notions that "multiple inheritence leads to slow code," "exception handling and run-time type information have high overhead". Again, one has to weigh the advantages offered by these techinques against the skill needed to use them wisely, and the performance penalty paid. I'll let someone else chime in now.