s/medicine/TV set/g -- and I still disagree with you, only to say that if you're right, I think this is bad in the medicine business, too. IMHO production (of ideas or goods) should be rewarded more than the childish "I thought of it first" thing.
1. it is my technical (as a paralegal) opinion that, if Linus don't change his mind, the kernel can NEVER be relicensed GPLv3. This is because I consider that the GPL restricts the distributions of derivative works under the terms of the GPL (as per section 0) or under more liberal terms (as per section 6) and the GPLv3, at least as currently drafted, is more restrictive than the GPLv2.
2. as a corollary -- and another justification -- to (1) above, it is my technical opinion that most (at least 80%, but probably more than 90%) of the "official Linus Penguin-pee blessed" kernel source lines are, as a matter of fact, a derivative work on the continuous works of Linus Torvalds, since 1991.
3. just as RMS, I think proprietary software is bad. I think proprietary software is bad because proprietary software -- especially the kind you normally buy in a box -- is basically a scam. What is the scam? When you buy some medicine, you are paying for (P) the cost of production [normally the dominant cost factor, but at least au pair with the other cfs] + (R) the cost of research + (F) the amortization of some future research + ($) some profit to pay for the invested money. In the case of proprietary software, we have P ~~ 0. MS invested ten million dollars on MSWord (insert some version number here) and was rewarded a billion dollars by it in less than (number less than ten) years because they use their "bait and switch" tactics, their "first use for free" tactics, their "hook the kids" tactics, and their "leverage any semi-monopoly we have" tactics. Tell me, what other business uses those exact four tactics? (just like some illicit business, their profit margin is incredible)
4. in this respect, I think Free Software (and copyleft licenses) is not only more fair, but more "right", too. When you have an itch, you pay a programmer to scratch it. No strings attached other than "others must play fair too". People that PRODUCE software continue being paid to produce software, ie, to churn out LOCs. But people that just exploit the general public by sitting on a product (yeah, a nice one by a number of accounts, and this "nice" I'm saying even applies -- or applied some day -- to Windows 95) that they have done once. Imagine a perfect world, where instead of lining up MS's stockholder pockets, all the profits of MS had being used to hire more programmers!! And send them to churn out more -- and better -- code!! Get it?
But I was just answering the (offtopic, I know) doubt about the moderation that the grandparent post expressed. But, as I am justifying myself to you, I "waste" my "+1" karma bonus a lot, because I don't post as AC -- ever -- and because of that I forget sometimes to check the other checkbox.
Properly "No Karma Bonused", yours friendly, massas..umbertos.
Someone decided that, as the Funny moderation does not award the poster karma points, when you have mod points and think a post is funny, you should mod as Insightful, that benefit the poster. So, doing it became fashinonable here on/.
People who do that and encounter me as a meta-mod stay a lot of time without mod points...:-)
Me, living in "o" down under (as opposed to "el" down under), can guarantee you that SPF30 being enough would be a blessing. My mom, who had a small skin cancer, can only go outside (everyday I mean) with SPF60... The stuff is so stingy that she mixes it with Nivea Cream just so she can endure passing it on her face.
The way of the mafia (that's the family the PP was referring to... but I really should assume you knew that) is to extort the guy out of his money and then whacking him.
But "annul any unworked patents after two years" == "no patents will ever be used". Because: Inventor "I" invents something, but does not have the $$$ to build the thing (I know I don't have the $$$ to build a cold fusion reactor, even if I had the knowledge to do it). The Corporate Cabal just sits down, refusing to help for two years and ta-da... the patent is annulled, now they will win the big $$$ without rewarding the inventor at all.
is easy to use with less memory leaks. How? It's enough to transform every "shareable" reference in a doubly-indirect reference (IOW always use references-to-references instead of references-to-stuff). The intermediate nodes get reference-counted, and they can even be destroyed when you destruct the leaves. It's a nice trick:
$a = { a => 1, b => 2 }; $b = { c => 3, d => 4 }; $c = { e => \$a, f => \$b }; $c{g} = \$c;
I will say (again) that I disagree with practically everything you wrote.
I'm sorry, but I just can't agree. It might appeal to a mathematician who wants to see everything use functional notation and hates every language except lisp, but to a non-abstract-elite-ivory-tower-mathematician this is absurd.
I am a non-abstract-elite-ivory-tower-mathematician. I am an application programmer. And I guarantee you that I rather encounter a
for(i = 0; i < components.count(); ++i) components[i].disable()
the first form permits, for instance, components to be a linked list or even a hash. The second is implementation-dependent and if you change the underlying data structure, you'll have extra work to refactor. And so on...
> Remember std::auto_ptr is your best friend Most of the time, no.
I disagree wholeheartedly. Anedoctal evidence (no evidence at all): In a 40000+ LOC GIS application I once worked, changing all instances of SomeObject* to auto_ptr<SomeObject> eliminated altogether 35 bugs we had lurking in the BTS for a long, long time, with less than one day of work (strange, delayed, errors were suddently transformed in EARLY null-pointer dereferences -- BAM! bug nailed, let's see the next one) My extensive (15years+) C++ experience (*) gave me the following feeling: pointers and arrays to be used only when strictly needed, auto_ptr and vector are the champions, boost::smart_pointers when auto_ptr does not apply.
> Question 2: How can I actually implement such a decoupling? > I would use a simple, socket-base, take-my-data, gimme-my-results scheme And thereby slowing your program to a crawl? There is a reason people use CORBA and the like: those frameworks optimize distributed object calls to avoid network hits, often being able to reduce the overhead to be equivalent to a virtual function call.
While I agree with the "corba can be more optimized by the vendor" part, I really don't see why a well-thought "let's see what I need processed, organize a queue, and let the queue have it's own thread" would slow things to a crawl... Maybe I have an more "hands-on, not a lot of third-part libraries" approach, so I'll rather give up on that point than debate it further. (ie, I'm conceding that maybe CORBA would be better)
(*) yes, I use C++ since Stroustrup first edition, when there were no templates, no multiple inheritance, etc.
Not really. In my post, I said IMHO every time I was stating an opinion rather than a fact (ie, twice) and IMH?O (once) when I thought my opinion about the beauty (and maintainability) of iterators can be construed as an expert opinion (programming in C++ since 1989...)
> Well if this is beautiful, then why is it that I have no idea what it is doing?
"Because you have no idea of what C++ is" would be my answer to that question. No offense meant, mind you, but IMO knowledge of C++ implies knowledge of the STL. Oh, I agree that your example is interesting (maybe
array1.splice(3, 12, array2.slice(11, 2))
would be better, but... there is no accout for taste, don't you think?
of the thread... I'm appalled. I'll answer to this, when I would really like to answer to the main post, to maximize chances of you reading me.
Question 1: what strategies should a developer take to insure that the resulting program is as crash-free as possible?
Answer:
a. Use OO techniques and maintain all objects in your system extremely simple; furthermore, maintain all methods in your system extremely short, well-contained, well-defined.
b. Don't use C++ arrays, ever. Especially not for strings. Use and abuse the STL.
copy( istream_iterator<int>( cin ), istream_iterator<int>(), back_inserter( v ) );
is just plain beautiful IMH?O.
c. Check extensively the behaviour of your constructors and destructors.
d. Make a object-lifecycle diagram of each class you program. In the diagram, relate it to the neighboring classes (parents, children, siblings, classes involved in design patterns with, classes aggregated, classes value-aggregated, classes where this is aggregated or value-aggregated)
e. Use, carefully, and always when possible, smart pointers. Remember std::auto_ptr is your best friend -- its limitations are a defining part of its strength. Remember boost::shared_ptr is also a good friend, but its cousin boost::intrusive_ptr is even more friendly -- but use one of those (and their other cousins scoped_{ptr,array}, shared_array, weak_ptr) only in the (rare) cases where auto_ptr does not apply.
f. As a corollary to (e) above, use boost. This is really an extension of (b), too.
Question 2: How can I actually implement such a decoupling?
Answer:
I would use a simple, socket-base, take-my-data, gimme-my-results scheme. It would be network-distributable, easy to detect if some service is or isn't alive via timeouts... If you want something more sofisticated/RMI-like, SOAP (with binary XML or compressed) may be an option. The simpler the better IMHO.
Question 3: are there any software _design patterns_ that specifically tackle the stability issue?
Answer:
All of them? IMHO, DPs can represent huge tool to increase the stability of a system. Take a look athere [WARNING: PDF] (and in the bibliography) for some ideas.
I know many of my posts were self-marketing lately, but if you need someone to work with you, I'll be happy to send you my resume... write me at hmassa (at) gmail.
You are wrong. DRM does not work. Ask PSP hackers (*)
Alice is the content creator. Bob is the content consumer. Eve is the eavesdropper. Alice sends the encrypted content to Bob. Bob has the key to decrypt the content, so he can see the plaintext. Eve cannot see the plaintext -- but wait, Eve is just another split personality of Bob. So, yes, Eve has the key and can see the plaintext.
(*) Not crackers -- PSP hackers want to install software they themselves developed onto hardware they bought with their own money: if people will take advantage of their hacks to play copied games, it's a collateral. I, myself, want to make linux work on my playstation portable -- that I purchased with MY money. I didn't sign any contracts or NDAs with Sony. I just went to the store and I have the right to install whatever software I want in the fscking thing. If -- and only if -- I install "irregular" software/contents in MY hardware is the concern of the mentioned software/contents creator.
I use QEMU everyday in my day job, so now I can boot my desktop in Linux... I use Delphi7 inside QEMU and it works flawlessly (not blazingly fast, but acceptable)
Yes, I have written letters. Yes, I have shouted really loud. But my most-successfull strategy was to climb on the top of a 12-store building and howl all night long. Go figure.
Nah... it's called "da markett"
on
ReactOS Code Audit
·
· Score: 2, Interesting
(I would know... I did this already)
When I worked with sales software (inventory, etc), we would occasionally decompile someone else's program to see if we could find grounds to sue, especially if the interface was very similar to our program. We catched one guy with a plagiarized copy of our program (down to programming errors) and we nailed him, driving him out of business. Actually, we didn't have to sue... we just threatened to press criminal charges and he yielded. He paid some $$$ to our firm, gave us his clients database (which we used to offer our support contract, at a discount) -- I think he lived on our backs for an year so IMHO he got off easily.
s/medicine/TV set/g -- and I still disagree with you, only to say that if you're right, I think this is bad in the medicine business, too. IMHO production (of ideas or goods) should be rewarded more than the childish "I thought of it first" thing.
1. it is my technical (as a paralegal) opinion that, if Linus don't change his mind, the kernel can NEVER be relicensed GPLv3. This is because I consider that the GPL restricts the distributions of derivative works under the terms of the GPL (as per section 0) or under more liberal terms (as per section 6) and the GPLv3, at least as currently drafted, is more restrictive than the GPLv2.
2. as a corollary -- and another justification -- to (1) above, it is my technical opinion that most (at least 80%, but probably more than 90%) of the "official Linus Penguin-pee blessed" kernel source lines are, as a matter of fact, a derivative work on the continuous works of Linus Torvalds, since 1991.
3. just as RMS, I think proprietary software is bad. I think proprietary software is bad because proprietary software -- especially the kind you normally buy in a box -- is basically a scam. What is the scam? When you buy some medicine, you are paying for (P) the cost of production [normally the dominant cost factor, but at least au pair with the other cfs] + (R) the cost of research + (F) the amortization of some future research + ($) some profit to pay for the invested money. In the case of proprietary software, we have P ~~ 0. MS invested ten million dollars on MSWord (insert some version number here) and was rewarded a billion dollars by it in less than (number less than ten) years because they use their "bait and switch" tactics, their "first use for free" tactics, their "hook the kids" tactics, and their "leverage any semi-monopoly we have" tactics. Tell me, what other business uses those exact four tactics? (just like some illicit business, their profit margin is incredible)
4. in this respect, I think Free Software (and copyleft licenses) is not only more fair, but more "right", too. When you have an itch, you pay a programmer to scratch it. No strings attached other than "others must play fair too". People that PRODUCE software continue being paid to produce software, ie, to churn out LOCs. But people that just exploit the general public by sitting on a product (yeah, a nice one by a number of accounts, and this "nice" I'm saying even applies -- or applied some day -- to Windows 95) that they have done once. Imagine a perfect world, where instead of lining up MS's stockholder pockets, all the profits of MS had being used to hire more programmers!! And send them to churn out more -- and better -- code!! Get it?
5. yes, I love numbered lists.
But I was just answering the (offtopic, I know) doubt about the moderation that the grandparent post expressed. But, as I am justifying myself to you, I "waste" my "+1" karma bonus a lot, because I don't post as AC -- ever -- and because of that I forget sometimes to check the other checkbox.
.umbertos.
Properly "No Karma Bonused",
yours friendly,
massas.
Someone decided that, as the Funny moderation does not award the poster karma points, when you have mod points and think a post is funny, you should mod as Insightful, that benefit the poster. So, doing it became fashinonable here on /.
:-)
People who do that and encounter me as a meta-mod stay a lot of time without mod points...
Me, living in "o" down under (as opposed to "el" down under), can guarantee you that SPF30 being enough would be a blessing. My mom, who had a small skin cancer, can only go outside (everyday I mean) with SPF60... The stuff is so stingy that she mixes it with Nivea Cream just so she can endure passing it on her face.
The way of the mafia (that's the family the PP was referring to... but I really should assume you knew that) is to extort the guy out of his money and then whacking him.
Actually, your IMs are only private if you are talking to yourself, which defeats any usefulness of IM altogether :-)
But "annul any unworked patents after two years" == "no patents will ever be used". Because: Inventor "I" invents something, but does not have the $$$ to build the thing (I know I don't have the $$$ to build a cold fusion reactor, even if I had the knowledge to do it). The Corporate Cabal just sits down, refusing to help for two years and ta-da... the patent is annulled, now they will win the big $$$ without rewarding the inventor at all.
I'm sorry, but I just can't agree. It might appeal to a mathematician who wants to see everything use functional notation and hates every language except lisp, but to a non-abstract-elite-ivory-tower-mathematician this is absurd.
I am a non-abstract-elite-ivory-tower-mathematician. I am an application programmer. And I guarantee you that I rather encounter a in some code I need to maintain then to encounter the first form permits, for instance, components to be a linked list or even a hash. The second is implementation-dependent and if you change the underlying data structure, you'll have extra work to refactor. And so on...
> Remember std::auto_ptr is your best friend
Most of the time, no.
I disagree wholeheartedly. Anedoctal evidence (no evidence at all): In a 40000+ LOC GIS application I once worked, changing all instances of SomeObject* to auto_ptr<SomeObject> eliminated altogether 35 bugs we had lurking in the BTS for a long, long time, with less than one day of work (strange, delayed, errors were suddently transformed in EARLY null-pointer dereferences -- BAM! bug nailed, let's see the next one) My extensive (15years+) C++ experience (*) gave me the following feeling: pointers and arrays to be used only when strictly needed, auto_ptr and vector are the champions, boost::smart_pointers when auto_ptr does not apply.
> Question 2: How can I actually implement such a decoupling?
> I would use a simple, socket-base, take-my-data, gimme-my-results scheme
And thereby slowing your program to a crawl? There is a reason people use CORBA and the like: those frameworks optimize distributed object calls to avoid network hits, often being able to reduce the overhead to be equivalent to a virtual function call.
While I agree with the "corba can be more optimized by the vendor" part, I really don't see why a well-thought "let's see what I need processed, organize a queue, and let the queue have it's own thread" would slow things to a crawl... Maybe I have an more "hands-on, not a lot of third-part libraries" approach, so I'll rather give up on that point than debate it further. (ie, I'm conceding that maybe CORBA would be better)
(*) yes, I use C++ since Stroustrup first edition, when there were no templates, no multiple inheritance, etc.
> You say "IMHO" too often.
Not really. In my post, I said IMHO every time I was stating an opinion rather than a fact (ie, twice) and IMH?O (once) when I thought my opinion about the beauty (and maintainability) of iterators can be construed as an expert opinion (programming in C++ since 1989...)
"Because you have no idea of what C++ is" would be my answer to that question. No offense meant, mind you, but IMO knowledge of C++ implies knowledge of the STL. Oh, I agree that your example is interesting (maybe would be better, but... there is no accout for taste, don't you think?
Question 1: what strategies should a developer take to insure that the resulting program is as crash-free as possible?
Answer:
a. Use OO techniques and maintain all objects in your system extremely simple; furthermore, maintain all methods in your system extremely short, well-contained, well-defined.
b. Don't use C++ arrays, ever. Especially not for strings. Use and abuse the STL. is just plain beautiful IMH?O.
c. Check extensively the behaviour of your constructors and destructors.
d. Make a object-lifecycle diagram of each class you program. In the diagram, relate it to the neighboring classes (parents, children, siblings, classes involved in design patterns with, classes aggregated, classes value-aggregated, classes where this is aggregated or value-aggregated)
e. Use, carefully, and always when possible, smart pointers. Remember std::auto_ptr is your best friend -- its limitations are a defining part of its strength. Remember boost::shared_ptr is also a good friend, but its cousin boost::intrusive_ptr is even more friendly -- but use one of those (and their other cousins scoped_{ptr,array}, shared_array, weak_ptr) only in the (rare) cases where auto_ptr does not apply.
f. As a corollary to (e) above, use boost. This is really an extension of (b), too.
Question 2: How can I actually implement such a decoupling?
Answer:
I would use a simple, socket-base, take-my-data, gimme-my-results scheme. It would be network-distributable, easy to detect if some service is or isn't alive via timeouts... If you want something more sofisticated/RMI-like, SOAP (with binary XML or compressed) may be an option. The simpler the better IMHO.
Question 3: are there any software _design patterns_ that specifically tackle the stability issue?
Answer:
All of them? IMHO, DPs can represent huge tool to increase the stability of a system. Take a look athere [WARNING: PDF] (and in the bibliography) for some ideas.
I know many of my posts were self-marketing lately, but if you need someone to work with you, I'll be happy to send you my resume... write me at hmassa (at) gmail.
(*) == I call BS.
Do you all really think putting a (possibly buggy [MS]) virtual machine in the game will make his app more stable? OMFG...
As other people told you, you can be /.ed with resumes by now, but... I'm available for that kind of job. If you're interested, hmassa (at) gmail.
but the Chuck Norris half of the hybrid killed the Vin Diesel half just by looking ugly towards it, and all we got was one more Chuck Norris clone.
You are wrong.
DRM does not work. Ask PSP hackers (*)
Alice is the content creator.
Bob is the content consumer.
Eve is the eavesdropper.
Alice sends the encrypted content to Bob.
Bob has the key to decrypt the content, so he can see the plaintext.
Eve cannot see the plaintext -- but wait, Eve is just another split personality of Bob. So, yes, Eve has the key and can see the plaintext.
(*) Not crackers -- PSP hackers want to install software they themselves developed onto hardware they bought with their own money: if people will take advantage of their hacks to play copied games, it's a collateral. I, myself, want to make linux work on my playstation portable -- that I purchased with MY money. I didn't sign any contracts or NDAs with Sony. I just went to the store and I have the right to install whatever software I want in the fscking thing. If -- and only if -- I install "irregular" software/contents in MY hardware is the concern of the mentioned software/contents creator.
Treacherous computing will not fly. Oh, they'll try, but it won't work.
is the other way around (windows inside linux -- and no, Wine is not always an option)
I use QEMU everyday in my day job, so now I can boot my desktop in Linux... I use Delphi7 inside QEMU and it works flawlessly (not blazingly fast, but acceptable)
Punitive Damages !!!!
Yes, I have written letters.
Yes, I have shouted really loud.
But my most-successfull strategy was to climb on the top of a 12-store building and howl all night long. Go figure.
(I would know... I did this already)
When I worked with sales software (inventory, etc), we would occasionally decompile someone else's program to see if we could find grounds to sue, especially if the interface was very similar to our program. We catched one guy with a plagiarized copy of our program (down to programming errors) and we nailed him, driving him out of business. Actually, we didn't have to sue... we just threatened to press criminal charges and he yielded. He paid some $$$ to our firm, gave us his clients database (which we used to offer our support contract, at a discount) -- I think he lived on our backs for an year so IMHO he got off easily.
How will he access the serial port under .hta?
If you want the power of RAD and the ease of C/C++ I'd suggest you...
You meant the ease of RAD and the power of C/C++, didn't you?