``Go back a few years and you'll find that "top-posting" was (and is) used to describe someone who, in a newsgroup post, puts his or her own answer above the quote it responds to, making the discussion hard to follow by the quotes in one single post.''
It also goes together with actually _not_ indicating what part of the quoted message parts of the reply refer to, and quoting the whole message (and earlier ones in the thread for bonus points), even the parts that aren't relevant, even if _nothing_ in the current message actually is a reply to anything in the quoted part.
Now excuse me while i run to the bathroom. Top-posting makes me sick!
``The blocking that they seem to be advocating that others use is pretty standard "HTTP_USER_AGENT" querying using a PHP script, so it's not like it would be hard to get around. (Incidentally, I've always felt that the USER_AGENT header was something of a bad idea; maybe it's time to kill it, or at least disable replying to it by default?)''
Ok, first of all, I feel compelled to point out that USER_AGENT is not something that the site queries for and that the browser then replies to. It's something that the browser sends along with the request, in the User-Agent header.
With that out of the way, we can get on to my actual question, which is why you think the User-Agent is a bad idea. Could you elaborate?
``Then there is the configuration and maintenance cost.''
Now, this is spot on. Whatever you pay for the copy of Windows that comes with your computer is chump change. MS Office is pretty expensive, but still, the real cost is in maintenance.
And that's where a good Linux distro really shines. The maintenance is hardly any work.
``There is definitely a valid point to be made about the circumstances surrounding "Free Windows." For me, though, Office is a better example. Consider the facts: Office is pretty much never part of an OEM pre-load unless you pay for it.''
Good point.
``Yet the fact that so many people "require" you to use Office makes me think they assume it is free, which can only mean that everyone pirates it.''
No, actually. As far as I can see, the requirement to use Office comes from the corporate world. There, your employer pays for it (and probably gets a large discount). Also, you get to learn Office in school (of various levels), where the same thing applies.
``For example, I was interviewing for jobs once and submitted my resume as a PDF generated with OO. They kicked it back and said they needed it in Word format so they could index it properly. I know OO saves in Word format, but I don't trust it for someone as important as a resume. Without a test machine with Office, it is hard to know what formatting/conversion defects might appear that would make me look like a dufus to the prospective employer.''
If they ask me to send my resume in Word format, I just tell them that isn't possible (which is almost true; it's some Lisp code which generates Latex, which generates a bunch of output formats...Word not among them).
As for formatting, I've worked with a few places recently, and often the reason they want your resume in Word is that they can edit it, which usually means converting it to some bland and ugly default format. Even if they don't do that, there's no guarantee your Word document will display there as it does on your system: different versions of Word are known to render things differently, and I've even seen that happen using identical versions (from the same disk image), probably influenced by user settings.
``But the fact that we, as a society, have convinced ourselves that we HAVE to use Office and make our own policies enforcing it's use... well, it drives me nuts! It is such a cliche by now, but still so valid- most people don't use 10% of the features in Word or Excel.''
And that's just the beginning. Beyond that, people use the wrong tool for the job (Word as a "view everywhere" format, Excel for databases,...), or features are broken (MS Word's automagic numbering, for example), and more.
``"Having some windows change their colors so they appear to be active when they aren't is bad.... Putting destructive actions next to commonly used, non-destructive ones is bad."
I disagree with both of these statements.
I don't mind if a window changes color because something happened, like a file download or login or disconnect.''
Ah, yeah, that's not what I meant, though. What I meant is that there are two colors that Windows used for window decorations, one used for the active window, and one for all other windows. Except for a few Microsoft apps which were always colored like active windows, even when they weren't active.
``As far as button placement, unless you have palsy, I don't think most people would agree with you.''
Admittedly, I'm no good with the mouse. But then, I know many people are worse with it. But that doesn't matter. What matters is that putting destructive actions next to commonly used non-destructive ones invites accidents, whereas not putting them right next to one another doesn't invite same accidents. The latter is the better choice.
``Truly destructive actions are in general protected by confirmation dialogs. Even things like closing a browser window will bring up a close tabs dialog. Almost everything is recoverable in some manner.''
Yes, but notice the "almost". Also, the fact that you can recover from an accident doesn't mean it wouldn't be better to make the accident less likely to occur in the first place.
``I don't believe in the one true user interface.''
I don't either. That's why I like *nix: it gives you a lot of flexibility in that area (and other areas, too).
Yeah, forgot to mention. All the software we use is the latest and greatest from Microsoft.
``Its one of the best IDEs on the market.''
I'm not contesting that. I'm just saying that all the issues it has disqualify it from being excellent. Uninformative and/or wrong error messages, a debugger that can't show me how the program got to a certain state, that isn't excellence. This is basic functionality that is essential to development. An excellent IDE would get that right.
What if people become Really Savvy (TM) and realize that the only way to be future proof is to not depend on a single entity. At a minimum, that means freely available specifications. Better would be open source implementations. I don't think Microsoft will provide either one to a degree that matters; more likely, real world software will be tied to Microsoft's proprietary implementation and its extensions.
The good news is that we don't need Silverlight. We already have open specifications and open source implementations. We _could_ use those, instead of jumping on the next proprietary technology that comes along. The bad news is that people are likely to largely choose Silverlight, anyway.
``I would like to point out what makes good 'usability' comes down to personal preference and what you're used to.''
I disagree. I think whether you feel comfortable with a system is largely due to preference and experience, but that's not the same as usability. There are things that are just objectively right or wrong. Making it visually apparent which window is currently active is good. Having some windows change their colors so they appear to be active when they aren't is bad. Putting descriptive labels on buttons is good. Putting destructive actions next to commonly used, non-destructive ones is bad. Informative error messages are good, "Object does not support property or method" (without specifying which object and property) is not. And on and on. I'm collecting issues for an upcoming essay.
Re:How cross-platform are we talking here?
on
Cross-Platform Microsoft
·
· Score: 2, Interesting
``Business applications are kind of strange beasts in the software world because of the long usage life they're expected to see. That's one of the reasons companies often want some big name company behind a product because they're afraid somewhere down the road the company might fold and they'd be left without support for a vital application.''
Considering that, it's strange that people keep going with Microsoft, which isn't exactly folding, but has been known to pull the rug from under people's feet once in a while. New OS releases that come with new and incompatible driver models. New Office releases that save in new file formats that can't be read by older software. Visual Basic 6 will no longer be supported. Oh, and they gave you free, automatic upgrade to Internet Explorer 7. Right, that means Internet Explorer 6 won't work anymore, and neither will software that requires it. Oh, your app doesn't work in Vista? Well, guess you'll have to update it. And on and on.
Microsoft isn't actually all that terrible when it comes to backward compatibility, but they don't exactly provide a stable platform, either. You know there's something wrong when people complain about Vista being released too _soon_ after XP.
``extending its excellent development ecosystem cross-platorm.''
Excellent development ecosystem? Don't make me laugh. I've been hearing about the asserted superiority of Microsoft's development tools and the wonderful enterprise features of their products for years, and always thought to myself "well, probably." However, I recently started working in a Microsoft shop and I can tell you first hand that the Microsoft "development ecosystem" is not excellent. It's not terrible, but it's not great, either. Certainly not worlds better than some already available environments (cross-platform or otherwise).
Without going into specifics, I can say that I spend more time struggling with Visual Studio than doing anything else. Most of the features I want are actually there, but it's not always obvious where to find them or how to use them. Some features are missing, or are nominally there, but fail to work in the situations where I need them. Then there is a load of baggage that just gets in the way. Erorr messages that it gives me are almost always uninformative, wrong, or both (my favorite so far is "'1' is null or not an object"). At first, I thought it was just me being inexperienced, but even colleagues with years of experience run into these same issues. And it's not like I'm very demanding; usually, I'm just trying to find out what the value of something is or how the program got to a certain point.
And that's just Visual Studio. We use a number of other Microsoft products in our workflow, and there are issues with most of them. For the most part, these are usability issues. They don't actually prevent you from getting work done, but they do slow you down. Stability issues come a distant second. One issue that hasn't affected me but is affecting the company as a whole is that a lot of time goes into making sure things work with the current _and_ previous versions of Microsoft products. Sometimes, this is as simple as just not using some new feature, but sometimes it takes up a lot of time.
Note that I have purposefully highlighted the bad parts and omitted the good ones. My point is not to give an objective impression of the Microsoft platform for development purposes, but to show that it falls short of excellence. I would never choose it myself, but I wouldn't say it's actually bad. Just not excellent.
``This is not good. What happens when people know that other people can listen to their conversations is that they watch what they say, which makes democracy (if that is your thing) loose its value. Democracy can only exist as long as there is free speech.''
Interestingly, Alexis de Tocqueville used a similar argument to claim that democracy makes people _less_ free than autoritarian government. The reasoning was (in a nut shell) that, in a totalitarian state, you are free to think whatever you want, so long as you act within the rules (or aren't found out). Democracy, on the other hand, affects what you _think_. At the time, I found the argument intriguing because it was so far out, but there is some truth to it. Perhaps democracy doesn't, by itself, tell you what you think...but since what you think is so important to those in power, it is almost imperative for them to seek ways to influence your thoughts. Some people seem to have become very successful at that...
And Lisp took a number of features from FORTRAN, albeit usually in a somewhat modified form. In fact, these features were often included in Lisp _because_ FORTRAN had them, an early instance of Embrace and Extend.
``If a hard drive crashes, all of the work done on that laptop is lost.''
Sounds to me like you could gain a lot from setting up a version control system. Run it on a machine other than the one on which primary development takes place, and have your consultants check in their changes. This will not only give you backups, but also a host of features (such as the ability to go back in time or make diffs between versions of files) that, in my experience, are very valuable. Needless to say, it also makes cooperating on projects a lot easier, should you ever want to do so.
As a version control system, I would recommend Subversion. I haven't tried all of them, but it seems to me that Subversion is the only one that is (1) stable (2) widely supported by software (3) scalable from small and simple to large and complex projects (4) cross-platform and (5) open. It's not perfect, and it might seem harder to adopt than some proprietary solution that is pushed by the vendor of some software you already use, or it might seem primitive compared to some more advanced version control systems, but the properties I mentioned are my best stab at finding something future-proof. Do you know what the software landscape will look like in 5 years? Will you want to migrate code out of some abandoned experimental or proprietary system? My answer is "no" to both, and I think Subversion is the safest bet.
``I'm going to disagree here, as this relies on two conditions being met''
I will address them in the opposite order you gave them.
``secondly, that any non-DRM version would be more acceptable than a DRM version to some consumers (e.g. a supplier could decide to make a DRM version higher quality than they would a non-DRM version, so some consumers would prefer the DRM version in that case).''
In that case, it's the supplier deciding to give you crappier quality, not the DRM giving you better quality. The DRM still harms consumers, it's just that they get to choose between two evils.
``- firstly, that the prduct would be available to consumers in some form if DRM wasn't available,''...so that you can choose between DRM and nothing, where DRM is assumed to be your preferred choice. Again, that doesn't negate the fact that DRM harms consumers; they're just given a choice between evil and nothing.
I see your points, I just don't think they argue against mine. DRM harms consumers, e.g. by prohibiting them from exercising their fair use rights, by opening their systems to exploits, or by denying them access to features they paid for. That's also the only thing DRM does...specifically, it does _not_ stop pirates from making bootleg copies of the material.
This also means that there is a third choice: instead of choosing between DRM and crappy quality (or no product at all), you can choose to obtain a pirated copy. Interestingly, DRM actually makes this third option more attractive. For one thing, with the DRM removed, you get full control and full quality. No worries about losing access to your product when the vendor pulls th plug. Finally, thanks to the DMCA and EUCD, DRM is a mine field where even _playing_ a movie that you paid for can technically be a crime. I'm in the crazy situation where it's illegal for me to play certain DVDs that I bought (on *nix), but it's legal for me to download the same movies from $pirate_network and watch them. Note that, in the former case, I'm a customer, and DRM harms me. In the latter case, I'm not a customer, and I get everything for free. Tell me again how DRM is a Good Thing?
While I appreciate your attempt to correct your parent's somewhat narrow view of programming (as you correctly point out, not all systems are equally powerful), I feel compelled to point out some flaws in your argument.
Your argumentation suggests that a type-safe language will necessarily lead to more cpu-intensive code. This is simply not the case. For the most part, type-safety can be enforced at compile time. The result is a program that is type-safe by construction, without requiring any run-time checks.
There is one case that deserves particular attention: array access. Theoretically, it is possible to construct a static type checker that will refuse to accept array accesses that it cannot prove are within bounds, and yet accept enough of them to make the language usable. However, this is difficult, so many languages take a more pragmatic approach. Lone array accesses incur a run-time check, but common patterns of accessing arrays (such as iterating over every element of the array) are implemented in the language in ways that are both safe and efficient.
Now, to give all this more substance, I will point interested readers to the OCaml programming language. OCaml is just one language that is type-safe, yet has an implementation that generates efficient code. A well written OCaml program should be on par with a well written C program in terms of speed and memory usage. At the same time, OCaml provides many conveniences to the programmer that C doesn't. Polymorphism, namespaces, pattern matching, an object system, the list goes on. Also, it plays well with existing systems. Interfaces to the standard Unix system calls are provided, and the compiler can generate stand-alone executables (i.e. no need to install a runtime on target systems).
``Go back a few years and you'll find that "top-posting" was (and is) used to describe someone who, in a newsgroup post, puts his or her own answer above the quote it responds to, making the discussion hard to follow by the quotes in one single post.''
It also goes together with actually _not_ indicating what part of the quoted message parts of the reply refer to, and quoting the whole message (and earlier ones in the thread for bonus points), even the parts that aren't relevant, even if _nothing_ in the current message actually is a reply to anything in the quoted part.
Now excuse me while i run to the bathroom. Top-posting makes me sick!
``or perhaps even a "schuinestreeppunt"?''
Exists, but is actually tweakers.net.
And, IMO, nowhere near as good as Slashdot.
``- Esa no es una luna, es una estación espacial!''
Hmm, I didn't know that one.
PS. I just want you all to know how great it feels being back on a proper *nix.
``What reason could anyone possibly want to use WLID for when OpenID already exists?''
WLID is backed by a large and well-known organization that most people already trust.
OpenID is unknown and unloved.
``Supported Operating Systems: Linux; Windows Vista; Windows XP''
A Microsoft spokesperson was quoted as saying:
Linux has always been our ally.
We have always been at war with the Mac.
``Supported Operating Systems: Linux; Windows Vista; Windows XP'' ...and that's it. No BSD, no OS X, ...
They still don't Get It.
``Does this mean if I steal my neighbours car he's guilty of theft, because he made it available?''
No. Theft and copyright infringement are very different things.
``The blocking that they seem to be advocating that others use is pretty standard "HTTP_USER_AGENT" querying using a PHP script, so it's not like it would be hard to get around. (Incidentally, I've always felt that the USER_AGENT header was something of a bad idea; maybe it's time to kill it, or at least disable replying to it by default?)''
Ok, first of all, I feel compelled to point out that USER_AGENT is not something that the site queries for and that the browser then replies to. It's something that the browser sends along with the request, in the User-Agent header.
With that out of the way, we can get on to my actual question, which is why you think the User-Agent is a bad idea. Could you elaborate?
``Then there is the configuration and maintenance cost.''
Now, this is spot on. Whatever you pay for the copy of Windows that comes with your computer is chump change. MS Office is pretty expensive, but still, the real cost is in maintenance.
And that's where a good Linux distro really shines. The maintenance is hardly any work.
``There is definitely a valid point to be made about the circumstances surrounding "Free Windows." For me, though, Office is a better example. Consider the facts: Office is pretty much never part of an OEM pre-load unless you pay for it.''
...), or features are broken (MS Word's automagic numbering, for example), and more.
Good point.
``Yet the fact that so many people "require" you to use Office makes me think they assume it is free, which can only mean that everyone pirates it.''
No, actually. As far as I can see, the requirement to use Office comes from the corporate world. There, your employer pays for it (and probably gets a large discount). Also, you get to learn Office in school (of various levels), where the same thing applies.
``For example, I was interviewing for jobs once and submitted my resume as a PDF generated with OO. They kicked it back and said they needed it in Word format so they could index it properly. I know OO saves in Word format, but I don't trust it for someone as important as a resume. Without a test machine with Office, it is hard to know what formatting/conversion defects might appear that would make me look like a dufus to the prospective employer.''
If they ask me to send my resume in Word format, I just tell them that isn't possible (which is almost true; it's some Lisp code which generates Latex, which generates a bunch of output formats...Word not among them).
As for formatting, I've worked with a few places recently, and often the reason they want your resume in Word is that they can edit it, which usually means converting it to some bland and ugly default format. Even if they don't do that, there's no guarantee your Word document will display there as it does on your system: different versions of Word are known to render things differently, and I've even seen that happen using identical versions (from the same disk image), probably influenced by user settings.
``But the fact that we, as a society, have convinced ourselves that we HAVE to use Office and make our own policies enforcing it's use... well, it drives me nuts! It is such a cliche by now, but still so valid- most people don't use 10% of the features in Word or Excel.''
And that's just the beginning. Beyond that, people use the wrong tool for the job (Word as a "view everywhere" format, Excel for databases,
``require that I always run outdated software simply to keep a stable configuration''
That's what Debian stable is for. Keeps your configuration stable, while still giving you security updates. And all the greatness of Debian.
``"Having some windows change their colors so they appear to be active when they aren't is bad. ... Putting destructive actions next to commonly used, non-destructive ones is bad."
I disagree with both of these statements.
I don't mind if a window changes color because something happened, like a file download or login or disconnect.''
Ah, yeah, that's not what I meant, though. What I meant is that there are two colors that Windows used for window decorations, one used for the active window, and one for all other windows. Except for a few Microsoft apps which were always colored like active windows, even when they weren't active.
``As far as button placement, unless you have palsy, I don't think most people would agree with you.''
Admittedly, I'm no good with the mouse. But then, I know many people are worse with it. But that doesn't matter. What matters is that putting destructive actions next to commonly used non-destructive ones invites accidents, whereas not putting them right next to one another doesn't invite same accidents. The latter is the better choice.
``Truly destructive actions are in general protected by confirmation dialogs. Even things like closing a browser window will bring up a close tabs dialog. Almost everything is recoverable in some manner.''
Yes, but notice the "almost". Also, the fact that you can recover from an accident doesn't mean it wouldn't be better to make the accident less likely to occur in the first place.
``I don't believe in the one true user interface.''
I don't either. That's why I like *nix: it gives you a lot of flexibility in that area (and other areas, too).
``Do you even use vs.net?''
Yeah, forgot to mention. All the software we use is the latest and greatest from Microsoft.
``Its one of the best IDEs on the market.''
I'm not contesting that. I'm just saying that all the issues it has disqualify it from being excellent. Uninformative and/or wrong error messages, a debugger that can't show me how the program got to a certain state, that isn't excellence. This is basic functionality that is essential to development. An excellent IDE would get that right.
What if people become Really Savvy (TM) and realize that the only way to be future proof is to not depend on a single entity. At a minimum, that means freely available specifications. Better would be open source implementations. I don't think Microsoft will provide either one to a degree that matters; more likely, real world software will be tied to Microsoft's proprietary implementation and its extensions.
The good news is that we don't need Silverlight. We already have open specifications and open source implementations. We _could_ use those, instead of jumping on the next proprietary technology that comes along. The bad news is that people are likely to largely choose Silverlight, anyway.
``I would like to point out what makes good 'usability' comes down to personal preference and what you're used to.''
I disagree. I think whether you feel comfortable with a system is largely due to preference and experience, but that's not the same as usability. There are things that are just objectively right or wrong. Making it visually apparent which window is currently active is good. Having some windows change their colors so they appear to be active when they aren't is bad. Putting descriptive labels on buttons is good. Putting destructive actions next to commonly used, non-destructive ones is bad. Informative error messages are good, "Object does not support property or method" (without specifying which object and property) is not. And on and on. I'm collecting issues for an upcoming essay.
``Business applications are kind of strange beasts in the software world because of the long usage life they're expected to see. That's one of the reasons companies often want some big name company behind a product because they're afraid somewhere down the road the company might fold and they'd be left without support for a vital application.''
Considering that, it's strange that people keep going with Microsoft, which isn't exactly folding, but has been known to pull the rug from under people's feet once in a while. New OS releases that come with new and incompatible driver models. New Office releases that save in new file formats that can't be read by older software. Visual Basic 6 will no longer be supported. Oh, and they gave you free, automatic upgrade to Internet Explorer 7. Right, that means Internet Explorer 6 won't work anymore, and neither will software that requires it. Oh, your app doesn't work in Vista? Well, guess you'll have to update it. And on and on.
Microsoft isn't actually all that terrible when it comes to backward compatibility, but they don't exactly provide a stable platform, either. You know there's something wrong when people complain about Vista being released too _soon_ after XP.
``extending its excellent development ecosystem cross-platorm.''
Excellent development ecosystem? Don't make me laugh. I've been hearing about the asserted superiority of Microsoft's development tools and the wonderful enterprise features of their products for years, and always thought to myself "well, probably." However, I recently started working in a Microsoft shop and I can tell you first hand that the Microsoft "development ecosystem" is not excellent. It's not terrible, but it's not great, either. Certainly not worlds better than some already available environments (cross-platform or otherwise).
Without going into specifics, I can say that I spend more time struggling with Visual Studio than doing anything else. Most of the features I want are actually there, but it's not always obvious where to find them or how to use them. Some features are missing, or are nominally there, but fail to work in the situations where I need them. Then there is a load of baggage that just gets in the way. Erorr messages that it gives me are almost always uninformative, wrong, or both (my favorite so far is "'1' is null or not an object"). At first, I thought it was just me being inexperienced, but even colleagues with years of experience run into these same issues. And it's not like I'm very demanding; usually, I'm just trying to find out what the value of something is or how the program got to a certain point.
And that's just Visual Studio. We use a number of other Microsoft products in our workflow, and there are issues with most of them. For the most part, these are usability issues. They don't actually prevent you from getting work done, but they do slow you down. Stability issues come a distant second. One issue that hasn't affected me but is affecting the company as a whole is that a lot of time goes into making sure things work with the current _and_ previous versions of Microsoft products. Sometimes, this is as simple as just not using some new feature, but sometimes it takes up a lot of time.
Note that I have purposefully highlighted the bad parts and omitted the good ones. My point is not to give an objective impression of the Microsoft platform for development purposes, but to show that it falls short of excellence. I would never choose it myself, but I wouldn't say it's actually bad. Just not excellent.
``Pity it doesn't work under Skype''
Meh. Skype: proprietary, secret protocol. Not a good idea.
It does use encryption though, IIRC.
``If a known member of al-Qaeda makes a call into the united states, there isn't time to ask a judge to approve a wiretap.''
IIRC, there is no such need currently; they can start tapping and ask for permission later (within a bounded timeframe).
``This is not good. What happens when people know that other people can listen to their conversations is that they watch what they say, which makes democracy (if that is your thing) loose its value. Democracy can only exist as long as there is free speech.''
Interestingly, Alexis de Tocqueville used a similar argument to claim that democracy makes people _less_ free than autoritarian government. The reasoning was (in a nut shell) that, in a totalitarian state, you are free to think whatever you want, so long as you act within the rules (or aren't found out). Democracy, on the other hand, affects what you _think_. At the time, I found the argument intriguing because it was so far out, but there is some truth to it. Perhaps democracy doesn't, by itself, tell you what you think...but since what you think is so important to those in power, it is almost imperative for them to seek ways to influence your thoughts. Some people seem to have become very successful at that...
Well, shell has infix math: expr 12 / 3 + 4
And Lisp took a number of features from FORTRAN, albeit usually in a somewhat modified form. In fact, these features were often included in Lisp _because_ FORTRAN had them, an early instance of Embrace and Extend.
``If a hard drive crashes, all of the work done on that laptop is lost.''
Sounds to me like you could gain a lot from setting up a version control system. Run it on a machine other than the one on which primary development takes place, and have your consultants check in their changes. This will not only give you backups, but also a host of features (such as the ability to go back in time or make diffs between versions of files) that, in my experience, are very valuable. Needless to say, it also makes cooperating on projects a lot easier, should you ever want to do so.
As a version control system, I would recommend Subversion. I haven't tried all of them, but it seems to me that Subversion is the only one that is (1) stable (2) widely supported by software (3) scalable from small and simple to large and complex projects (4) cross-platform and (5) open. It's not perfect, and it might seem harder to adopt than some proprietary solution that is pushed by the vendor of some software you already use, or it might seem primitive compared to some more advanced version control systems, but the properties I mentioned are my best stab at finding something future-proof. Do you know what the software landscape will look like in 5 years? Will you want to migrate code out of some abandoned experimental or proprietary system? My answer is "no" to both, and I think Subversion is the safest bet.
``I'm going to disagree here, as this relies on two conditions being met''
...so that you can choose between DRM and nothing, where DRM is assumed to be your preferred choice. Again, that doesn't negate the fact that DRM harms consumers; they're just given a choice between evil and nothing.
I will address them in the opposite order you gave them.
``secondly, that any non-DRM version would be more acceptable than a DRM version to some consumers (e.g. a supplier could decide to make a DRM version higher quality than they would a non-DRM version, so some consumers would prefer the DRM version in that case).''
In that case, it's the supplier deciding to give you crappier quality, not the DRM giving you better quality. The DRM still harms consumers, it's just that they get to choose between two evils.
``- firstly, that the prduct would be available to consumers in some form if DRM wasn't available,''
I see your points, I just don't think they argue against mine. DRM harms consumers, e.g. by prohibiting them from exercising their fair use rights, by opening their systems to exploits, or by denying them access to features they paid for. That's also the only thing DRM does...specifically, it does _not_ stop pirates from making bootleg copies of the material.
This also means that there is a third choice: instead of choosing between DRM and crappy quality (or no product at all), you can choose to obtain a pirated copy. Interestingly, DRM actually makes this third option more attractive. For one thing, with the DRM removed, you get full control and full quality. No worries about losing access to your product when the vendor pulls th plug. Finally, thanks to the DMCA and EUCD, DRM is a mine field where even _playing_ a movie that you paid for can technically be a crime. I'm in the crazy situation where it's illegal for me to play certain DVDs that I bought (on *nix), but it's legal for me to download the same movies from $pirate_network and watch them. Note that, in the former case, I'm a customer, and DRM harms me. In the latter case, I'm not a customer, and I get everything for free. Tell me again how DRM is a Good Thing?
While I appreciate your attempt to correct your parent's somewhat narrow view of programming (as you correctly point out, not all systems are equally powerful), I feel compelled to point out some flaws in your argument.
Your argumentation suggests that a type-safe language will necessarily lead to more cpu-intensive code. This is simply not the case. For the most part, type-safety can be enforced at compile time. The result is a program that is type-safe by construction, without requiring any run-time checks.
There is one case that deserves particular attention: array access. Theoretically, it is possible to construct a static type checker that will refuse to accept array accesses that it cannot prove are within bounds, and yet accept enough of them to make the language usable. However, this is difficult, so many languages take a more pragmatic approach. Lone array accesses incur a run-time check, but common patterns of accessing arrays (such as iterating over every element of the array) are implemented in the language in ways that are both safe and efficient.
Now, to give all this more substance, I will point interested readers to the OCaml programming language. OCaml is just one language that is type-safe, yet has an implementation that generates efficient code. A well written OCaml program should be on par with a well written C program in terms of speed and memory usage. At the same time, OCaml provides many conveniences to the programmer that C doesn't. Polymorphism, namespaces, pattern matching, an object system, the list goes on. Also, it plays well with existing systems. Interfaces to the standard Unix system calls are provided, and the compiler can generate stand-alone executables (i.e. no need to install a runtime on target systems).
``Yet another example of where DRM harms the consumer.''
Example? We need examples of that? Harming cosumers is the _only_ thing DRM _does_!