I believe that MS VC++ 7.0 (or whatever it's marketed under now) and G++ are the most compliant of the bunch.
Nope, I believe EDG's kit (as used in Comeau compilers, for example) is currently the best on paper. It does support things like export, detailed template mechanics and so on.
Visual C++.Net 2003 (i.e., the second.Net version sometimes referred to as VC++ 7.1) is also pretty good, but does have acknowledged limitations.
g++ has a long way to go. It was never great, though when the 3.x series first arrived it was better than many. It's a relatively long way off the pace of the serious players now, though, both in standards compliance and in performance. I guess that's the price you pay for keeping the back-end code so widely portable.
One interesting place to look at compatibility is the Boost library [...] It's certainly not a definitive test of what is and is not standard, but it's a data point.
However, please note that Boost (or at least its test suite) is a data point the maintainers specifically ask you not to use as a gauge for things like standards compatibility. See various recent threads in comp.lang.c++.moderated or comp.std.c++ for details.
You're certainly correct in that C++ compilers and their STL libraries have come very far in the past couple of years. One of the worst (Microsoft) is now one of the best -- largely due to them hiring a project lead that's a STL advocate.
Play fair...:-)
Hiring two big names in the C++ world in recent months probably did a lot of good. However, the killer with Microsoft was that until last year, their most up-to-date compiler (VC++ 6) was around five years out of date, as was its standard library implementation. It's unsurprising that, in comparison, the standards compliance of other tools was better, given that VC++ 6 actually predates the standard. That said, they had a pretty good idea of what was going to be in it and did a fairly decent job, considering.
I've always wondered about how the physical organisation of a project would go using that idiom. Lakos recommends it, IIRC, but it struck me as dubious even back then, on the basis that it wasn't amenable to easy maintenance.
I understand your reasoning about LISP, but by your argument pretty much all major programming languages are based on LISP. I've heard the claim that all sufficiently complex programming languages contain as a subset a cut-down, poorly-implemented version of LISP, but only with any sincerity when spoken by somewhat overenthusiastic LISP advocates.
I think claiming that the concept of object-orientation is based on LISP because it has some traces of lambda calculus and a type system is taking things rather too far. ML or Haskell might be argued to be related to LISP on that basis, but OO has a whole world of models, type systems, programming tools and idioms of its own, and often OO languages don't provide strong support for fundamentals of lambda calculus based languages, such as closures, and functions as first order entities.
Your claim is a bit like saying that all sufficiently powerful languages are equivalent to BASIC because the Turing test says so: there's an element of truth to it, but that's about as close as it gets.
My understanding of it is that Lisp is neither strongly nor weakly typed, but rather dynamically typed: type is determined at runtime, rather than at compile time (compiling is possible, in most dialects, but optional in all).
The concepts of weak/strong typing and static/dynamic typing are orthogonal. To condense a whole book into one mostly accurate description, one relates to whether names/objects have a fixed type (static/dynamic) and the other relates to whether names/objects have a type at all, and whether you can break the type system (weak/strong). All four combinations are possible, and IIRC illustrative examples are readily found by Googling on "type system" if you're interested.
As a developer you want to have all helper functions for a data type at a single place.
Why? Adding all the supporting functions into the type itself just clutters the interface and makes it hard to find the "heart" of what the class does. As mentioned in the interview, it also removes much of the benefit of abstraction and encapsulation.
As the user of an IDE you want to see all available functions when you enter a variable with a given type.
That argument doesn't generalise, though. How do you find functions that work with two user-defined types? (Cue deep and meaningful discussion of double-dispatching implications.:-))
The correct answer to this problem is to put all your related types, supporting functions, enumerations, typedefs, templates and other gear into well-organised modules. C++ doesn't have a great module system, but it does provide namespaces, which could be used for this purpose if you chose to do so.
The fact that you want an IDE to give you a display of all the functions you might want is a sign of weakness in your IDE (for not taking full advantage of the abstraction mechanisms offered by the language), your documentation system (which should be what tells you which functions to use when) and, depending on what exactly you meant, possibly yourself (since you shouldn't be calling any function when you don't know what it does anyway).
Really, what is the problem people have with Hungarian, assuming it is used reasonably?
It depends what you consider "real" Hungarian used "reasonably".
The idea of annotating variables to show certain fundamental properties has merit. For example, using "m_" or something similar to distinguish member variables can be useful to avoid name-clashes or developers resorting to not-quite-pseudonyms. Using "n" as a prefix consistently to indicate that the variable is a count of something can be useful.
Notice, however, that neither of these is explicitly embedding type information in the variable name. Using "m_fValue" for a member value of type float is foolish, because if you ever change the value to be of type double, or LibraryExtendedPrecisionDouble, your name is now worse than useless, it's misleading. This is why MicrosoftHungarianNotation(TM) sucks.
The only exception to the latter that I make with any regularity is prefixing pointers with p+ (that's a regular expression:-)) to indicate the level of indirection can be useful. It's rare for that property of a variable to change, and saves looking up whether you defined something to be a pointer or a reference later. Of course, then you have to worry about how to represent iterators, smart pointers, names of arrays, etc.
The best one I ever saw was someone who insisted on prefixing all variables of reference types with "r", e.g., "rValue" instead of "value". That demonstrates a spectacular misunderstanding of both the value of warts and the implications of using a reference, all with one letter.:-)
A complete circular one of these, completley surrounding me, it'd be like another world.
The technology for "wraparound displays" has been in development for some time. I've certainly seen demonstration models (not personally, alas, but in print and on-line) for 40+" monitors that basically fit on a desk and wrapped around so a user positioned at the desk could look at all parts of the screen without distortion. I think it was in one of the megacorps' "office of the future" concept shows, though it wouldn't surprise me at all if companies like SGI could set such things up for you today if you asked.
The most evil thing that can happen in this world is that an oil company might get a good deal on oil supplies, and another company might get a good contract because they have ties to the President.
You miss the point. All of the companies who are benefitting to the tune of billions of dollars from the "rebuilding" effort are major Bush administration supporters. Every single one of them. Surely you can see that the decision to go to war may not have been made for entirely ethical reasons faced with that sort of information?
That's way, way more evil than a tyrannical dictator...
Saddam was hardly the only tyrannical dictator in the world, removing him was not the reason we went to war, and indeed going to war purely on that basis would be illegal under both UK and US law. Saying "We removed an evil man" is great spin, but does not justify the actions of the US and UK leaders this year.
...with a massive WMD program (read the report)...
OK, firstly, you need to go and read the report, or at least the executive summary. (I'm assuming you're referring to the preliminary findings published a few days ago by the post-war inspection team.) While reading, please note that no weapons of mass destruction have been found and no manufacturing facilities have been identified. They did find a small amount of material hidden in one scientist's home that might indicate a programme of research, though. Not exactly what I'd call a "massive WMD program". Stop buying the government hype and do some damned reading, would you please? Or perhaps we should give the inspectors another six months before holding our governments accountable for their actions? Or maybe until after the next election?
...who tried to assassinate a former U.S. president, thumbed his nose at the world community, and thought it was great fun to have prisoners eaten alive as punishment for criticizing him.
That's obviously better than a country that tries to assassinate the Iraqi President, thumbs their nose at the world community and thinks it's great fun to keep hundreds of prisoners under uncertain conditions, without any legal representation or due process, based on at best a dubious legal technicality, in the aftermath of waging a war that has destroyed the infrastructure of a whole country most of whose citizens had no say in its behaviour, with the loss of hundreds of lives among its own armed forces and at a cost of billions that could have been spent on improving desperately poor situations at home.
You're assuming that the party leaders remain as they are. The most likely way Blair won't make another term, IMHO, is that Gordon Brown will make a serious leadership challenge.
The next most likely option is that IDS will be replaced as Conservative leader in the near future, after a successor with a fighting chance of winning an election steps forward.
Never write off any electoral result in British politics as a done deal until the votes are counted. Labour just lost one of their safest seats to a Lib Dem, mostly (according to exit polls) because Tony Blair took us to war and enough people cared to vote against the party. Labour maintained a huge parliamentary advantage at the last general election because of the first past the post system, but that hid a massive drop in their majority in many "safe" seats; a similar drop next time would lose them many of those seats. So remember, boys and girls: do your homework, go out and vote.
If Bush had wanted to help his oil cronies, he could have just lifted the sanctions.
I don't think my tin foil hat is as loose as you think. Bremner, Bird and Fortune (three well-known political satirists in the UK) made two excellent programmes on the Iraq situation that, while entertaining and funny in a way, also did a thorough job of shattering the various illusions and excuses put up by the UK and US governments with that most primitive of weapons: facts. Several other investigate journalist types have apparently made similar reports in both countries, though I've not seen any others myself. At any rate, if you buy arguments like "Of course it wasn't for the money, it would have been way cheaper not to go to war" then you really need to look into apolitical sources and get some cold, hard facts.
In this particular case, BTW, it's the difference between US companies getting hold of Iraqi oil supplies at some helpful rate, and US companies all but running the Iraqi oil production business. Did I mention that the companies given contracts worth absurdly large sums of money to "rebuild" Iraq are pretty much entirely composed of those to whom the senior Bush administration officials have direct links? There is way, way more money in this than what they could have got out of lifting sanctions. <sarcasm> Of course, with the US in its current strong financial position and the aftermath of 911 settling down, no-one in the US government was worried about ways to boost the economy. </sarcasm>
I like your sig, BTW, but before "thinking" should come "getting facts to think about".
I think I will go and fill up my tank with gas...something I am sure won't ever put money in terrorists hands,
That depends on your perspective, of course. The oil industry in Iraq is now essentially controlled by US interests, appointed by a US administration with numerous ties to the oil industry. That's the same administration that just forcibly overthrew a foreign government in order to wrest control of those resources from it. (Oh, no, sorry, it was to prevent terrorist activity sheltered by a nation with WMDs that could be used in 45mins. Oh, no, wait, it was because the regime was evil and Iraq was better off without them. Oh, no, wait... When is it election year again?)
You gotta love the way the US (and UK) governments use "countering terrorism" as a blanket justification for committing acts that would certainly be interpreted as illegal and/or terrorist if committed against them. On the bright side, representative government may finally be about to re-assert itself after several years of losing out to greater financial interests in both countries: I'm not a betting man, but if I were, I'd wager a hell of a lot of money that neither Bush nor Blair will get another term in office.
Of course, I'm probably a terrorist for suggesting that we should (entirely legally and within the democratic framework of our countries) remove the incumbent leaders from power by <shock> voting against them because we don't agree with their actions. I'll send you a postcard from Gitmo.
In a good team, people should feel able to ask their colleagues for advice, and should be willing to offer it themselves. It doesn't matter if you spend significant amounts of time helping others, or vice versa: overall, your team will be more productive. You'll also have much better morale in the group, because nothing saps energy and enthusiasm like staring at the same problem for hours without really seeing how to proceed with it -- particularly if, when you finally give up and ask someone else, they suggest a working solution in about five seconds.:-)
As long as everyone has a little courtesy -- don't interrupt someone who's obviously concentrating hard on something, or disturb someone during their lunch break -- this works really well. I've seen it in several places, all with the same sort of approach, and I'd prefer it to mandated 100% pair programming any day of the week.
BTW, the "one writes the real code, one writes the tests" approach is interesting, but I suspect misguided if that's all they're doing. If your test code takes as long to write as your main code, you should probably investigate better ways to test your code. Writing test code is both a drain on resources and a potential source of errors, and as with any other coding, you should do enough to do the job, but no more. It's worse than regular coding though, because it tends to be really monotonous, and it's very tiring for someone to do it properly for extended periods. If you can automate testing, or part of it, then that's probably a better answer.
If you're going down that road, you might also consider having a designated tools developer. Nothing makes development more efficient and less tedious like a good tool. I recommend having someone whose whole purpose (at least for this week) is to be available to other developers to put together all those helpful little build scripts, code templates, test data generators and so on, and to maintain or update those you already have. For a smaller team, where this isn't a full-time job, it can be done by someone also writing the test code (which is often a tedious job, so this helps to provide more interest) or by any other main coder on the team in exchange for reduced commitments in that area. Any way you look at it, one of the team is getting to know how everyone's stuff fits together and how everyone else works, as well as improving overall productivity and raising team morale.
Learning to be a good coder does not happen by proximity and osmosis.
Perhaps not, but it does happen when you take someone with potential and a willingness to learn, and then apply proximity to skill and experience and let osmosis do its work.
Not every junior programmer wants to make that effort, but plenty do. A smart company will employ such people and train them properly: it's a much cheaper way of getting good results, it raises the standards across the industry by supporting the new starters who will be the senior programmers of tomorrow, and it gives both an incentive and a watch on the veterans to make sure they keep sharp. Basically, everybody wins.
Sure, if you hire monkeys this will never get them anywhere and will just be a drain on the senior guys. But that's true of any methodology you use. The moral of the story is to hire people with enthusiasm for their field and a desire to learn, and not the monkeys. If they cost a bit more, pay it; compared to the benefits to a development team, the modest rise in remuneration and occasional perks it will take to make your place stand out from the crowd are nothing.
(I should say here that I don't advocate "pure" pair programming. I do, however, believe in senior programmers being heavily involved in supporting the junior guys by various means, including variations on the pair programming theme.)
Most of the people with most certs [...] had gone the route of
1. Read cert prep book
2. Take 1 day seminar on cert
3. Take test
4. Pass test
If it takes a day to get a cert now then difference in standards between industry certifications and degrees is getting really obvious. I picked up seven degrees last week just by replying to my e-mails! Two of them were PhDs with gold certificates and it only cost me an extra three quid.:-)
(Seriously, I completely agree with everything you wrote. Anyone who can get a good degree and make an effort can readily adapt their skills to the standards required for most industry certifications. The converse does not hold: someone with a certificate may or may not know what they're doing, and a certificate in one field usually just demonstrates that they can tow the sponsoring organisation's party line, not that they have generally useful skills or that they know how to use the tools in question.)
True, but with java you can prevent those mail scripts from doing anything they shouldn't do [...]
Of course, you could also prevent them from doing that by not writing thousands of lines of code (in whatever language) to support damaging operations that no legitimate script would ever need to do in the first place.:-)
No, but you could easily write an e-mail client in Java that interpreted scripts in the body or header fields of an incoming mail by default, and allowed those scripts to do things they shouldn't. This is the single biggest problem with Outlook (Express) and the reason it's responsible for so many virus/spam problems. It has nothing to do with the language used to implement it, and everything to do with the flawed architectural and security policy decisions in its design.
Using a "more secure" language like Java does zip to address this sort of problem. As the post further up the thread said, the really useful concept in Java is the "sandbox" idea for code that's executing, not the minor improvements to the language itself.
And clients ALWAYS want more changes than you think. With an hourly rate, you can take them in your stride. With a fixed-price deal, you're shafted, no matter how careful you think you'll be when you write the spec.
Go for hourly. Also, try to get a single, authoritative point of contact to represent your client. You want someone who can make decisions for them, with whom you can communicate very regularly. Then they always know how you're doing it, you always know they're OK with it, and differing interpretations are spotted early.
The damage that is done when someone violates the GNU GPL is more than just money. It damages the system that IS OSS. If anyone can just violate the GPL without penalty, then the people who write OSS lose a significant reason for writing it: recognition.
Exactly. Hence it is not just about (financial) profit.
It's interesting that you mention the OSS "system" and one significant reason some people write OSS here, when elsewhere in this thread I'm debating whether copyright exists to confer any benefits at all on the author. My argument is that it should, in order to create a mutually agreeable balance between author and society. The counter-argument -- that it is entirely for society's benefit and the author's benefit is incidental -- comes from RMS. Ironic, considering that the effects of the GPL would be unenforceable without copyright...:-)
I'll say this up-front... While I respect Stallman for the strength of his beliefs, and his willingness to stand by his principles, I do not find his arguments exceptional, nor sometimes even logically sound. Having read the article you cited previously, as I recall it is a prime example. Sorry, but I don't accept things "just because", whether said by RMS or anyone else.
Now, my problem with the article in question is that while it contains many true statements, I do not accept its basic premise. I'll try to explain why below.
Firstly, Stallman appears to confuse benefits to society as a whole, such as a wider body of literature being available, with benefits to the individual consumer, such as being able to copy any material they like without paying for it. Copyright exists to support the former, not the latter. An individual member of society has no more right to benefit under changes to copyright law than the individual(s) who created the work. (In Stallman's defence, many other people make the same mistake in these arguments.)
Secondly, consider that by default, society has no inherent rights to any artistic creation. The artist is under no compulsion to share it with anyone, and is quite within his or her rights to keep the work entirely to him- or herself. If society is to benefit from this work, a mutually acceptable agreement must be made between the creator of the work and the government (acting as society's collective representative). Thus it is always a matter of balancing society's well-being with adequate compensation for the creator to share their work. To claim otherwise is simply ill-founded: it takes two sides to have an agreement, and without that agreement, nobody benefits here.
On these bases, I refute Stallman's claim that the "reader is entitled to primacy". The benefits are for society as a whole, not individuals, and even then, contrary to Stallman's argument, it is necessary to have a balance for anyone to benefit.
In conclusion, as you say, when we consider copyright, we should indeed place the needs of society at the front. But shortly behind them must comes the needs of those supplying society, for artistic material is a slave to supply and demand just as any other resource is. Without a balance between these needs, both sides suffer. And when we consider the needs of society, remember that that means the material being available for those who wish to have it, not that any given individual in society has a right to take it for their own benefit without compensating the artist fairly.
As a footnote, I'll observe that none of this negates RMS's later points. Eroding copyright for the benefit of big corporations rather than either society or artists is a bad thing. Absurdly long timespans are a bad thing. These do not support either society or the artists, and I agree entirely that recent laws have gone the wrong way. (As another aside, RMS, and many other Americans, might do better to stop trying to convince the rest of us about something by citing a Constitution we neither know nor care about as the Root Of All Good Things, too.)
The problem with your argument is that copyright exists precisely to give content creators a fair chance to benefit from their efforts.
Now, given that a music company would benefit financially from selling a CD, you can make a reasonable case that ripping that CD costs them money. (Yeah, yeah, I know it's not that simple.)
OTOH, given that Linux is free-as-in-beer-ly distributed and widely available, it's hard to argue that copying it and using it in breach of copyright is damaging someone's profit.
IOWs, your own argument works against you: if it's really all about profit, then ripping a music CD does far more damage than ripping Linux. I doubt that was what you wanted to claim, though...
There is indeed something screwy with the media industries and overcharging, but as I've observed here before, that's a problem with "complex monopoly" abuse, price-fixing and cartel-like behaviour. The use of copyright to empower this behaviour is incidental and symptomatic, but not the root cause, nor an appropriate target for the response.
In this particular case, I have no sympathy for Linksys. If you make a deal, you keep your side of the bargain; that's how the civilised world works. If they have used copyrighted material contrary to the terms offered by the copyright holder(s), which I assume are indicated by the GPL in this case, then that's their problem. My point was simply that the reason people like that think they can get away with it might well have something to do with the general lack of respect for copyright law today, and that is something our society has pretty much brought upon itself.
Nope, I believe EDG's kit (as used in Comeau compilers, for example) is currently the best on paper. It does support things like export, detailed template mechanics and so on.
Visual C++ .Net 2003 (i.e., the second .Net version sometimes referred to as VC++ 7.1) is also pretty good, but does have acknowledged limitations.
g++ has a long way to go. It was never great, though when the 3.x series first arrived it was better than many. It's a relatively long way off the pace of the serious players now, though, both in standards compliance and in performance. I guess that's the price you pay for keeping the back-end code so widely portable.
However, please note that Boost (or at least its test suite) is a data point the maintainers specifically ask you not to use as a gauge for things like standards compatibility. See various recent threads in comp.lang.c++.moderated or comp.std.c++ for details.
Play fair... :-)
Hiring two big names in the C++ world in recent months probably did a lot of good. However, the killer with Microsoft was that until last year, their most up-to-date compiler (VC++ 6) was around five years out of date, as was its standard library implementation. It's unsurprising that, in comparison, the standards compliance of other tools was better, given that VC++ 6 actually predates the standard. That said, they had a pretty good idea of what was going to be in it and did a fairly decent job, considering.
I've always wondered about how the physical organisation of a project would go using that idiom. Lakos recommends it, IIRC, but it struck me as dubious even back then, on the basis that it wasn't amenable to easy maintenance.
Sorry, couldn't resist. :-)
I understand your reasoning about LISP, but by your argument pretty much all major programming languages are based on LISP. I've heard the claim that all sufficiently complex programming languages contain as a subset a cut-down, poorly-implemented version of LISP, but only with any sincerity when spoken by somewhat overenthusiastic LISP advocates.
I think claiming that the concept of object-orientation is based on LISP because it has some traces of lambda calculus and a type system is taking things rather too far. ML or Haskell might be argued to be related to LISP on that basis, but OO has a whole world of models, type systems, programming tools and idioms of its own, and often OO languages don't provide strong support for fundamentals of lambda calculus based languages, such as closures, and functions as first order entities.
Your claim is a bit like saying that all sufficiently powerful languages are equivalent to BASIC because the Turing test says so: there's an element of truth to it, but that's about as close as it gets.
The concepts of weak/strong typing and static/dynamic typing are orthogonal. To condense a whole book into one mostly accurate description, one relates to whether names/objects have a fixed type (static/dynamic) and the other relates to whether names/objects have a type at all, and whether you can break the type system (weak/strong). All four combinations are possible, and IIRC illustrative examples are readily found by Googling on "type system" if you're interested.
Why? Adding all the supporting functions into the type itself just clutters the interface and makes it hard to find the "heart" of what the class does. As mentioned in the interview, it also removes much of the benefit of abstraction and encapsulation.
That argument doesn't generalise, though. How do you find functions that work with two user-defined types? (Cue deep and meaningful discussion of double-dispatching implications. :-))
The correct answer to this problem is to put all your related types, supporting functions, enumerations, typedefs, templates and other gear into well-organised modules. C++ doesn't have a great module system, but it does provide namespaces, which could be used for this purpose if you chose to do so.
The fact that you want an IDE to give you a display of all the functions you might want is a sign of weakness in your IDE (for not taking full advantage of the abstraction mechanisms offered by the language), your documentation system (which should be what tells you which functions to use when) and, depending on what exactly you meant, possibly yourself (since you shouldn't be calling any function when you don't know what it does anyway).
It depends what you consider "real" Hungarian used "reasonably".
The idea of annotating variables to show certain fundamental properties has merit. For example, using "m_" or something similar to distinguish member variables can be useful to avoid name-clashes or developers resorting to not-quite-pseudonyms. Using "n" as a prefix consistently to indicate that the variable is a count of something can be useful.
Notice, however, that neither of these is explicitly embedding type information in the variable name. Using "m_fValue" for a member value of type float is foolish, because if you ever change the value to be of type double, or LibraryExtendedPrecisionDouble, your name is now worse than useless, it's misleading. This is why MicrosoftHungarianNotation(TM) sucks.
The only exception to the latter that I make with any regularity is prefixing pointers with p+ (that's a regular expression :-)) to indicate the level of indirection can be useful. It's rare for that property of a variable to change, and saves looking up whether you defined something to be a pointer or a reference later. Of course, then you have to worry about how to represent iterators, smart pointers, names of arrays, etc.
The best one I ever saw was someone who insisted on prefixing all variables of reference types with "r", e.g., "rValue" instead of "value". That demonstrates a spectacular misunderstanding of both the value of warts and the implications of using a reference, all with one letter. :-)
This comment alone summarizes the posters[sic] knowledge of programming languages. :-)
The technology for "wraparound displays" has been in development for some time. I've certainly seen demonstration models (not personally, alas, but in print and on-line) for 40+" monitors that basically fit on a desk and wrapped around so a user positioned at the desk could look at all parts of the screen without distortion. I think it was in one of the megacorps' "office of the future" concept shows, though it wouldn't surprise me at all if companies like SGI could set such things up for you today if you asked.
Only your charts. This guy has a 4000000x3000000 desktop, and he can see it just fine, thanks. :o)
You miss the point. All of the companies who are benefitting to the tune of billions of dollars from the "rebuilding" effort are major Bush administration supporters. Every single one of them. Surely you can see that the decision to go to war may not have been made for entirely ethical reasons faced with that sort of information?
Saddam was hardly the only tyrannical dictator in the world, removing him was not the reason we went to war, and indeed going to war purely on that basis would be illegal under both UK and US law. Saying "We removed an evil man" is great spin, but does not justify the actions of the US and UK leaders this year.
OK, firstly, you need to go and read the report, or at least the executive summary. (I'm assuming you're referring to the preliminary findings published a few days ago by the post-war inspection team.) While reading, please note that no weapons of mass destruction have been found and no manufacturing facilities have been identified. They did find a small amount of material hidden in one scientist's home that might indicate a programme of research, though. Not exactly what I'd call a "massive WMD program". Stop buying the government hype and do some damned reading, would you please? Or perhaps we should give the inspectors another six months before holding our governments accountable for their actions? Or maybe until after the next election?
That's obviously better than a country that tries to assassinate the Iraqi President, thumbs their nose at the world community and thinks it's great fun to keep hundreds of prisoners under uncertain conditions, without any legal representation or due process, based on at best a dubious legal technicality, in the aftermath of waging a war that has destroyed the infrastructure of a whole country most of whose citizens had no say in its behaviour, with the loss of hundreds of lives among its own armed forces and at a cost of billions that could have been spent on improving desperately poor situations at home.
You're assuming that the party leaders remain as they are. The most likely way Blair won't make another term, IMHO, is that Gordon Brown will make a serious leadership challenge.
The next most likely option is that IDS will be replaced as Conservative leader in the near future, after a successor with a fighting chance of winning an election steps forward.
Never write off any electoral result in British politics as a done deal until the votes are counted. Labour just lost one of their safest seats to a Lib Dem, mostly (according to exit polls) because Tony Blair took us to war and enough people cared to vote against the party. Labour maintained a huge parliamentary advantage at the last general election because of the first past the post system, but that hid a massive drop in their majority in many "safe" seats; a similar drop next time would lose them many of those seats. So remember, boys and girls: do your homework, go out and vote.
I don't think my tin foil hat is as loose as you think. Bremner, Bird and Fortune (three well-known political satirists in the UK) made two excellent programmes on the Iraq situation that, while entertaining and funny in a way, also did a thorough job of shattering the various illusions and excuses put up by the UK and US governments with that most primitive of weapons: facts. Several other investigate journalist types have apparently made similar reports in both countries, though I've not seen any others myself. At any rate, if you buy arguments like "Of course it wasn't for the money, it would have been way cheaper not to go to war" then you really need to look into apolitical sources and get some cold, hard facts.
In this particular case, BTW, it's the difference between US companies getting hold of Iraqi oil supplies at some helpful rate, and US companies all but running the Iraqi oil production business. Did I mention that the companies given contracts worth absurdly large sums of money to "rebuild" Iraq are pretty much entirely composed of those to whom the senior Bush administration officials have direct links? There is way, way more money in this than what they could have got out of lifting sanctions. <sarcasm> Of course, with the US in its current strong financial position and the aftermath of 911 settling down, no-one in the US government was worried about ways to boost the economy. </sarcasm>
I like your sig, BTW, but before "thinking" should come "getting facts to think about".
That depends on your perspective, of course. The oil industry in Iraq is now essentially controlled by US interests, appointed by a US administration with numerous ties to the oil industry. That's the same administration that just forcibly overthrew a foreign government in order to wrest control of those resources from it. (Oh, no, sorry, it was to prevent terrorist activity sheltered by a nation with WMDs that could be used in 45mins. Oh, no, wait, it was because the regime was evil and Iraq was better off without them. Oh, no, wait... When is it election year again?)
You gotta love the way the US (and UK) governments use "countering terrorism" as a blanket justification for committing acts that would certainly be interpreted as illegal and/or terrorist if committed against them. On the bright side, representative government may finally be about to re-assert itself after several years of losing out to greater financial interests in both countries: I'm not a betting man, but if I were, I'd wager a hell of a lot of money that neither Bush nor Blair will get another term in office.
Of course, I'm probably a terrorist for suggesting that we should (entirely legally and within the democratic framework of our countries) remove the incumbent leaders from power by <shock> voting against them because we don't agree with their actions. I'll send you a postcard from Gitmo.
OK, I'll third this one. :-)
In a good team, people should feel able to ask their colleagues for advice, and should be willing to offer it themselves. It doesn't matter if you spend significant amounts of time helping others, or vice versa: overall, your team will be more productive. You'll also have much better morale in the group, because nothing saps energy and enthusiasm like staring at the same problem for hours without really seeing how to proceed with it -- particularly if, when you finally give up and ask someone else, they suggest a working solution in about five seconds. :-)
As long as everyone has a little courtesy -- don't interrupt someone who's obviously concentrating hard on something, or disturb someone during their lunch break -- this works really well. I've seen it in several places, all with the same sort of approach, and I'd prefer it to mandated 100% pair programming any day of the week.
BTW, the "one writes the real code, one writes the tests" approach is interesting, but I suspect misguided if that's all they're doing. If your test code takes as long to write as your main code, you should probably investigate better ways to test your code. Writing test code is both a drain on resources and a potential source of errors, and as with any other coding, you should do enough to do the job, but no more. It's worse than regular coding though, because it tends to be really monotonous, and it's very tiring for someone to do it properly for extended periods. If you can automate testing, or part of it, then that's probably a better answer.
If you're going down that road, you might also consider having a designated tools developer. Nothing makes development more efficient and less tedious like a good tool. I recommend having someone whose whole purpose (at least for this week) is to be available to other developers to put together all those helpful little build scripts, code templates, test data generators and so on, and to maintain or update those you already have. For a smaller team, where this isn't a full-time job, it can be done by someone also writing the test code (which is often a tedious job, so this helps to provide more interest) or by any other main coder on the team in exchange for reduced commitments in that area. Any way you look at it, one of the team is getting to know how everyone's stuff fits together and how everyone else works, as well as improving overall productivity and raising team morale.
Perhaps not, but it does happen when you take someone with potential and a willingness to learn, and then apply proximity to skill and experience and let osmosis do its work.
Not every junior programmer wants to make that effort, but plenty do. A smart company will employ such people and train them properly: it's a much cheaper way of getting good results, it raises the standards across the industry by supporting the new starters who will be the senior programmers of tomorrow, and it gives both an incentive and a watch on the veterans to make sure they keep sharp. Basically, everybody wins.
Sure, if you hire monkeys this will never get them anywhere and will just be a drain on the senior guys. But that's true of any methodology you use. The moral of the story is to hire people with enthusiasm for their field and a desire to learn, and not the monkeys. If they cost a bit more, pay it; compared to the benefits to a development team, the modest rise in remuneration and occasional perks it will take to make your place stand out from the crowd are nothing.
(I should say here that I don't advocate "pure" pair programming. I do, however, believe in senior programmers being heavily involved in supporting the junior guys by various means, including variations on the pair programming theme.)
If it takes a day to get a cert now then difference in standards between industry certifications and degrees is getting really obvious. I picked up seven degrees last week just by replying to my e-mails! Two of them were PhDs with gold certificates and it only cost me an extra three quid. :-)
(Seriously, I completely agree with everything you wrote. Anyone who can get a good degree and make an effort can readily adapt their skills to the standards required for most industry certifications. The converse does not hold: someone with a certificate may or may not know what they're doing, and a certificate in one field usually just demonstrates that they can tow the sponsoring organisation's party line, not that they have generally useful skills or that they know how to use the tools in question.)
Of course, you could also prevent them from doing that by not writing thousands of lines of code (in whatever language) to support damaging operations that no legitimate script would ever need to do in the first place. :-)
No, but you could easily write an e-mail client in Java that interpreted scripts in the body or header fields of an incoming mail by default, and allowed those scripts to do things they shouldn't. This is the single biggest problem with Outlook (Express) and the reason it's responsible for so many virus/spam problems. It has nothing to do with the language used to implement it, and everything to do with the flawed architectural and security policy decisions in its design.
Using a "more secure" language like Java does zip to address this sort of problem. As the post further up the thread said, the really useful concept in Java is the "sandbox" idea for code that's executing, not the minor improvements to the language itself.
And clients ALWAYS want more changes than you think. With an hourly rate, you can take them in your stride. With a fixed-price deal, you're shafted, no matter how careful you think you'll be when you write the spec.
Go for hourly. Also, try to get a single, authoritative point of contact to represent your client. You want someone who can make decisions for them, with whom you can communicate very regularly. Then they always know how you're doing it, you always know they're OK with it, and differing interpretations are spotted early.
Perhaps it was readable, and he understood what it meant immediately?
I assume from context that you're in the UK.
Is dismissing someone like that (with no notice) even legal here?
Exactly. Hence it is not just about (financial) profit.
It's interesting that you mention the OSS "system" and one significant reason some people write OSS here, when elsewhere in this thread I'm debating whether copyright exists to confer any benefits at all on the author. My argument is that it should, in order to create a mutually agreeable balance between author and society. The counter-argument -- that it is entirely for society's benefit and the author's benefit is incidental -- comes from RMS. Ironic, considering that the effects of the GPL would be unenforceable without copyright... :-)
I'll say this up-front... While I respect Stallman for the strength of his beliefs, and his willingness to stand by his principles, I do not find his arguments exceptional, nor sometimes even logically sound. Having read the article you cited previously, as I recall it is a prime example. Sorry, but I don't accept things "just because", whether said by RMS or anyone else.
Now, my problem with the article in question is that while it contains many true statements, I do not accept its basic premise. I'll try to explain why below.
Firstly, Stallman appears to confuse benefits to society as a whole, such as a wider body of literature being available, with benefits to the individual consumer, such as being able to copy any material they like without paying for it. Copyright exists to support the former, not the latter. An individual member of society has no more right to benefit under changes to copyright law than the individual(s) who created the work. (In Stallman's defence, many other people make the same mistake in these arguments.)
Secondly, consider that by default, society has no inherent rights to any artistic creation. The artist is under no compulsion to share it with anyone, and is quite within his or her rights to keep the work entirely to him- or herself. If society is to benefit from this work, a mutually acceptable agreement must be made between the creator of the work and the government (acting as society's collective representative). Thus it is always a matter of balancing society's well-being with adequate compensation for the creator to share their work. To claim otherwise is simply ill-founded: it takes two sides to have an agreement, and without that agreement, nobody benefits here.
On these bases, I refute Stallman's claim that the "reader is entitled to primacy". The benefits are for society as a whole, not individuals, and even then, contrary to Stallman's argument, it is necessary to have a balance for anyone to benefit.
In conclusion, as you say, when we consider copyright, we should indeed place the needs of society at the front. But shortly behind them must comes the needs of those supplying society, for artistic material is a slave to supply and demand just as any other resource is. Without a balance between these needs, both sides suffer. And when we consider the needs of society, remember that that means the material being available for those who wish to have it, not that any given individual in society has a right to take it for their own benefit without compensating the artist fairly.
As a footnote, I'll observe that none of this negates RMS's later points. Eroding copyright for the benefit of big corporations rather than either society or artists is a bad thing. Absurdly long timespans are a bad thing. These do not support either society or the artists, and I agree entirely that recent laws have gone the wrong way. (As another aside, RMS, and many other Americans, might do better to stop trying to convince the rest of us about something by citing a Constitution we neither know nor care about as the Root Of All Good Things, too.)
The problem with your argument is that copyright exists precisely to give content creators a fair chance to benefit from their efforts.
Now, given that a music company would benefit financially from selling a CD, you can make a reasonable case that ripping that CD costs them money. (Yeah, yeah, I know it's not that simple.)
OTOH, given that Linux is free-as-in-beer-ly distributed and widely available, it's hard to argue that copying it and using it in breach of copyright is damaging someone's profit.
IOWs, your own argument works against you: if it's really all about profit, then ripping a music CD does far more damage than ripping Linux. I doubt that was what you wanted to claim, though...
There is indeed something screwy with the media industries and overcharging, but as I've observed here before, that's a problem with "complex monopoly" abuse, price-fixing and cartel-like behaviour. The use of copyright to empower this behaviour is incidental and symptomatic, but not the root cause, nor an appropriate target for the response.
In this particular case, I have no sympathy for Linksys. If you make a deal, you keep your side of the bargain; that's how the civilised world works. If they have used copyrighted material contrary to the terms offered by the copyright holder(s), which I assume are indicated by the GPL in this case, then that's their problem. My point was simply that the reason people like that think they can get away with it might well have something to do with the general lack of respect for copyright law today, and that is something our society has pretty much brought upon itself.