> as we "go online" in increasing numbers and to an increasing degree, are we losing our ability to think coherently and deeply,
Oh no. It's the other way around: people who have no ability to think coherently or deeply are going online in increasing numbers and to an increasing degree.
> preferring instead to process byte-sized information quickly, regurgitate 140-character "tweets," and skim thought?
Now that there are so many people online who are of the aforementioned variety, a great deal of "information" is created by them. Is it any wonder we have to learn to skim? If we read it deeply, our minds would be fried.
> What exactly do you mean by "C doesn't treat arrays as 'objects' because the computer doesn't do that." > All a computer knows is 1's and 0's, so by your logic having higher level abstractions like literal strings doesn't belong in C.
An array is simply a typed block of memory, just like an int or float. An object is a higher level abstraction, containing access functions, encapsulation, and some standard of behavior. C is a low-level language, where an array fits with other simple variables of its kind. You can't really make objects in C, although you can sorta do it by hand by handcoding vtables and using file-scope variables. That's what the Linux kernel does, for example. If you want objects, you use C++, where higher levels of abstraction can be properly built, and where an array can become an object (vector).
> Arrays in themselves are an abstract higher level abstraction for pointer arithmetic in C.
Arrays are an abstraction for memory blocks, not pointer arithmetic. An array is a physical entity in memory, pointer arithmetic refers to a method of accessing an array.
> Also, arrays STILL aren't first-class entities in C++
Not being an ivory tower CS academic, I looked up "first class entities" in the Wikipedia, and it gives the following list:
* being expressible as an anonymous literal value
It's true that you can't initialize a vector with a static array expression. It's somewhat inconvenient in some cases, but it certainly isn't a major problem. The next C++ standard will include this capability.
* being storable in variables * being storable in data structures
You can store a vector in a variable or a data structure.
* having an intrinsic identity (independent of any given name)
A vector has an identity in the memory location it occupies. Is that what this is talking about?
* being comparable for equality with other entities
Yup.
* being passable as a parameter to a procedure/function
Sure, although you would usually pass by reference due to its size.
* being returnable as the result of a procedure/function
Yes, you can do that, but again, due to size it isn't recommended.
* being constructable at runtime
new vector
* being printable
That can never be standard, because arrays of different things require different output methods. Still, it's pretty simple to write a template streaming operator to do something reasonable.
* being readable
Marshalling templates are also easy to write.
* being transmissible among distributed processes * being storable outside running processes
Through marshalling.
Except for static initialization, which IMO is not of great importance, vector is a "first class entity".
Perhaps you should clarify your vocabulary for us normal people. As far as I know, everything is an "entity", including an array in C, which can certainly be used as such.
> I *know* how memory and pointers work. > int i = 50; char c[i]; works, for example. (It equals char *c = malloc(sizeof(char) * i).)
Uh, no. It equals "char* c = (char*) alloca (sizeof(char) * i)". mallocs need to be freed. alloca is storage on the stack, just as are static arrays, and is freed automatically when leaving the scope. Sounds like you still have some studying to do:)
> vector just wraps the allocation and access facilities.
Well, duh. Any "object" does exactly that, in any language. Other languages just hide the things wrapped and pretend they don't exist, just as you don't seem to even know they exist. Yes, Java containers have a low-level implementation too, you just can't hack it within the language.
> With first-class arrays, compile-time string parsing would be possible in C++
And it isn't now? gcc is perfectly capable of performing basic operations (like strlen, or printf format checking) on strings. Or are you talking about something else entirely? "First-class arrays"? WTF?
> this would make writing DSELs a trivial task.
Of course, everyone here automatically knows what a DSEL is. It's soooo obvious. It must stand for Dumb S*** Easy Language.
> And repeat smart things like not treating arrays as first-class entities? > Honestly, C is full of design errors.
Come back when you know how the computer works, grasshopper. C doesn't treat arrays as "objects" because the computer doesn't do that. If you want higher level abstractions, use C++, where you have the nice vector class that does what you want.
> Re-loading an OS takes time / effort, and in my world that translates to money.
Only if you can actually work instead of doing it. A typical person would do this on his own time, which is not paid at all. Most of us here on Slashdot have more time than money, since nobody wants to date us anyway, so the choice of which to spend is clear. Add to this the fact that I'll have to spend pretty much the same amount of time customizing the preinstalled OS anyway, since the default settings always make me think the world is filled with sadistic idiots, and the choice becomes even more clear.
> Well, first of all, the price difference isn't really all that much.
Maybe not, but it's my money, not yours. I choose the best value I can get for my money, and if that means paying $50 less for a Windows machine instead of the Linux one, I'll do it.
> Secondly, if you WANT Linux and FOSS software to succeed in the desktop realm > If there isn't any profit in it for them, they won't support FOSS. Simple as that.
That's not business. That's charity, and I don't do charity. If they want people to buy Linux machines, they should make Linux machines cheaper. It is ridiculous that a computer with a free OS should cost more than the same computer with an expensive OS.
> Thirdly, Why would you WANT to pay the "Microsoft Tax", or have to deal with fighting > with a machine who's hardware might only be partially supported under Linux.
In this case, the Linux is the "tax", since it makes the computer more expensive. Secondly, I would not buy any computer without first verifying that all its components are supported, so your point is moot. Third, the computer is identical anyway, so it doesn't matter which OS you buy with it, so I buy the cheaper one: Windows.
> if you want a high-end gaming rig, why wouldn't you just build it yourself from hardware you know is Linux supported?
If you want a gaming rig, you would need Windows anyway, since Wine is a PITA to install and use (and doesn't run at all on my x64 distribution)
> Why make things harder on yourself?
Why would it make things harder? The preinstalled Linux will be full of useless crap too, and I know I will have to install my Slackware on top of it anyway before performance is halfway usable. I don't know about you, but I really hate waiting five minutes for the computer to boot up with all those totally unnecessary daemons distributions start by default. And then there's the pain of starting X for a minute or so (yes, I work on the console most of the time). As you can see, it makes absolutely no difference to me what OS is preinstalled. I'll have to wipe it anyway.
> Secondly, if you WANT Linux and FOSS software to succeed in the desktop realm, supporting > companies that are willing to go out on a limb and sell Linux on Desktops and Laptops is necessary.
No it isn't. Try as you like, you'll still be in the minority; most people will keep buying Windows. A fairly small minority. Yes, Linux is popular with the geeks, but geeks make a miniscule proportion of the general population, and will always remain a niche market. Combine that with the fact that many geeks share my attitude toward bloated preinstalled crap and wipe the machine anyway, and you have no market whatsoever.
> it's almost impossible to secure a machine when an attacker has unrestricted physical access.
Who needs unrestricted physical access? Any access will do with the current generation of Slashdotters who, judging by all the posts here, have no idea that you can password-protect the BIOS and secure either grub or lilo to not allow single user boot or init substitution without a password. Sure, the box would still be vulnerable to the old school battery removal attack, but hey, most script kiddies these days don't know about that one any more.
> How about just nicely explaining the problem to him
This is not about discourtesy, it's about P2P's tendency to grab all the available bandwidth. I would, for one, like to have my browser's requests prioritized over my torrent traffic, so I could browse the net at a reasonable rate while downloading. Yes, I can set rate caps in uTorrent, but that is not the ideal solution because it leaves the network underutilized. My browser does not require much bandwidth, it requires latency, which is what the poster was asking for.
> I realize you will shrink from this suggestion, for performance reasons > and because turning an int into a string and sticking it in a map feels yucky.
How about the fact that you have just discarded all field type information? That's a far more serious problem.
> const char *cols_to_render = { "name", "phone", "address", NULL }; > Iterate over that instead of writing a bunch of "comb code".
That's fine if all you are doing is sticking it into a listbox, and that is necessary, of course. But what will you do once you need to actually do something with the data? If you need to fill a form out, how will you know that the phone field maps to the second entry in the array? How will you validate it properly without hardcoding that index? All your code that pertains to a specific field will still be comb code, but with hardcoded indexes instead of field names. That's much worse.
> Almost all the code I've seen uses the hand-written marshalling, and it's hideously verbose and repetitive.
> 10 minutes looking your database's xxxBindxxx functions would have showed > you that you can bind database columns to binary data areas. IOW, RTFM.
Well, that's just lovely. So where do I find your fine manual? For example, sqlite documentation on its bind commands contains no examples of any kind. I can't even see the relevance there, as they seem to bind a value to a prepared statement, whatever that is. Like I said, I'm not a database guru, I'm just trying to see if there is any way I can use a database as storage for my app. If that requires weeks of hard studying, I think I'll just stick with my flat file, thank you very much.
> There are very few cases where real-world information is not most accurately > represented as relational data (in comparison to flat data)
I have a question about this. All you database types (and I do not necessarily mean this in the pejorative sense) never seem to mention how you actually get the data out of the queries. No, I don't know much about databases, as you can tell. However, there does seem to be a strong bias in all db discussions toward directly placing the query output, in text form, onto a web page or some report. By contrast, in my code, I always define my data structures first (C++), and then wonder how to get data from the database into them for manipulation. SQL is entirely text based and all the examples I have seen extract data from queries by looking up a field by name and converting it into a variable (from text?), which seems to be not only inefficient, but highly cumbersome. I certainly don't want to copy data into my structures field by field, and the performance hit (which may become pretty significant after you go through a few million records) appears to be a showstopper. None of the tutorials I've seen demonstrate this particular operation in any other manner. The SQL books never go into code examples at all, and concentrate on forming queries. So tell me, oh db guru, is there some way to directly read a db record into a C++ class, or a query into a C++ vector of such classes, without doing a strtol on every field, like most examples seem to imply?
> Who the hell are you to decide what is a good use of *my* e-mail?
Oh? So some people are allowed to decide how you use your email and others aren't? I can never understand statements like this. "Who the hell are you" is simply not a relevant question at any time.
> I happen to *like* mailing lists
Nobody's perfect.
> and there certainly are legitimate reasons to process large volumes of e-mail.
And what might those reasons be, except for mailing lists?
> What you describe is a tyrrany by majority, or mob rule -- not a democracy.
What do you think democracy is? "Majority rule is a characteristic feature of democracy, though many democratic systems do not adhere to this strictly." -- wikipedia. You might not like it, but you have to call it democracy. What should the alternative be? Tyranny by your personal opinion? "Who the hell are you to decide"? That very question implies majority rule, by implying that no single person is fit to decide anything, and only the majority is fit for it.
> But most importantly, it'd greatly complicate sending an e-mail. I'd have to > find the public key of the person I want to e-mail as well as his e-mail address.
I was simply proposing this as a potential means of determining an email's legitimacy. If it doesn't work, fine. You can still make spam illegal, it will just take a little more effort to determine if it is spam. Not that it's hard. Any human can tell within a few seconds. The key requirement is the ability to do something about it, e.g. to report it to the police for prosecution.
> Any legislative solution will be useless unless it's world-wide.
Not at all. We currently have trade embargoes against countries that we dislike. We could add countries that support spammers to that list.
> If it did, anybody who wanted to create trouble for a business would send out > spam in their name. Trying to follow the money by seeing who gets the money for > the orders doesn't work, since the spammers wouldn't be the same poeple as the business owners.
Spam is mainly sent for economic reasons. If there was no profit in it, there wouldn't be any spam. Yes, it may create trouble for a business, but this trouble is easily resolved by a quick audit of the business' advertising expenses, which is what you'd do anyway to track down spammers.
> Just because a politician knows what spam is, doesn't mean he's qualified in the area of fighting spam.
He might not be qualified to propose technical solutions, but he certainly is qualified to propose legal ones.
> If you own a television in the US, active ads are pushed into and interrupt your viewing
Yes, but that's still not the same thing. TV ads are served by the TV station and are used to subsidize the shows you watch. Yes, you also pay for your cable subscription, but there you are paying for content delivery, not the content itself. I can put up with TV ads (even though I never actually watch them) because they are used to pay for the content. Same situation with ad-supported web pages. The ads help pay for content. Yes, I always block the ads, and no, I would never buy something I saw in an ad (I would, in fact, avoid it, to not encourage more advertising). Nevertheless, the advertisers still think for some reason that what they do generates profits, and it's their business if that turns out not to be the case.
With email, the situation is different because the ads are not connected to anything. They do not help pay for my email account (unless you use gmail) and they do not help my ISP. Spam is, in fact, is the main cause of problems for email providers and ISPs. The purchases, if any suckers can be found to make them, will go to the spammers alone, and I get no benefit at all from viewing (or ignoring) them, like I do with TV ads or ad-supported web pages. Furthermore, spam generally advertises illegal or fraudulent products anyway, so even if the recipient of spam buys the product, he is worse off.
> The other fact, that might be interesting for discussion sake, is that most people don't "own" an email address.
As in the TV example, if you use a free email address, you generally get banner ads to "pay" for it. Banner ads are not spam; they are used to subsidize the cost of hosting your account.
> You have the right to say what you want, but I don't necessarily have the right to stop you from saying it
Sure I do. If you come to my house and say things I don't like, I am fully within my rights to throw you out. I can also post a "No soliciting" or "No trespassing" sign, and expect not to be bothered by anyone.
> We don't have freedom from advertisements and marketing.
And that's precisely the problem. To reiterate, ads are ok if you are looking for them, or if you accept them as payment for something. It is the ads that waste your time without paying for it in some way that must be illegal. Your time is money. Make the bastards pay.
> Advertisements are everywhere. You have the right to look at it or listen to it
This is a different situation. Passive ads on web pages are just something that comes with the page; they are not sent to me personally. I just happen to come across them as I browse. This is fine, since I do not own the sites, and should not dictate the owners what they can not do with them. With email, I own my email box and I have the right to some control of what goes in there.
> Your post advocates a > (X) technical (X) legislative ( ) market-based ( ) vigilante
If my approach is tried, it obviously has a chance of success. If it is summarily dismissed as "not gonna work", then of course it won't.
> (X) Mailing lists and other legitimate email uses would be affected
Mailing lists are not a good use of email. Use discussion forum software or usenet, which are far more appropriate venues for this type of communication.
> (X) Users of email will not put up with it
Why won't they put up with it? Users hate spam, and would certainly welcome anything that removes it. Yes, there are some morons who actually read spam and buy stuff advertised in it, but that is not really relevant here. We're a democracy, and sacrificing the wants of the few for the needs of the many is what we do.
> (X) Microsoft will not put up with it
Microsoft will love it. It runs hotmail, and would certainly appreciate the enormous increase in available capacity that will result from eliminating spam. Spam does not benefit Microsoft. Spam hurts Microsoft.
> (X) Many email users cannot afford to lose business or alienate potential employers
You mean spammers "cannot afford to lose business". Destroying their business is precisely what's needed.
> (X) Lack of centrally controlling authority for email
No central authority for email is needed. What is needed is the ability to pursue legal action against spammers for spamming. This could be done simply by forwarding the spam message to the police, who could then arrest the spammer, if he can be tracked down. Currently, sending spam is not illegal, so the authorities can do nothing.
> (X) Armies of worm riddled broadband-connected Windows boxes
If spam were illegal, the police could track down the people who create these boxes. How? By following the money. Spam exists to sell stuff, so it is trivial to find the company responsible for sending it. If it wasn't possible, the company wouldn't be making any money, would it?
> (X) Technically illiterate politicians
Even politicians these days use email. And anybody who uses email eventually receives an offer to enlarge his penis. Any questions?
> (X) Ideas similar to yours are easy to come up with, yet none have ever been shown practical
If the idea isn't tried, how can it be shown practical?
> (X) Sorry dude, but I don't think it would work.
> Your analogy is not correct. Email is more like snail-mail. And yes, anyone > can send email to your mailbox via snail-mail and not go to jail.
I would instead apply the same analogy to snail mail. It really is not difficult to differentiate between personal mail and spam. The former is written for a single recipient - you. Its intent is conversation. Spam is written generically, and its intent is to get you to buy something. Spam should be illegal in any form. Period. Be it email, phone calls, snail mail, door-to-door salesmen, or street hustlers. There is to be no "push" advertising whatsoever. If I want advertising, I MUST ask for it explicitly. Every time!. Only genuine personal communications should be allowed without explicit permission. Where's the difficulty here?
> How on earth would you actually request each individual email you want to receive?
By explicitly giving the sender your email address. You can also publish it for use of a specific audience. For example, I have my sourceforge address in the header of each source file I write. This is clearly intended for people to report problems with software. There is some gray area, of course, but any email sent with the intent of selling me something definitely violates the criteria.
> I don't see how you could propose a law that requires permission to send an email
One possibility is to pass a law requiring each email to be encrypted with your public key. Anyone trying to contact you legitimately would know what it is, because you'd give it out with your email address, in whatever manner. It also makes bulk mail impossible, especially if you choose a long key.
It ought to be obvious to everyone that spam is a property violation crime. Putting unrequested email in my account is the same as dumping used tires on my front lawn. Sure I have an address, but that doesn't mean I want just anyone to deliver anything to it without my permission. Why aren't we making this explicitly illegal, just like dumping and vandalism already are? Why are we putting up with these people?
> as we "go online" in increasing numbers and to an increasing degree, are we losing our ability to think coherently and deeply,
Oh no. It's the other way around: people who have no ability to think coherently or deeply are going online in increasing numbers and to an increasing degree.
> preferring instead to process byte-sized information quickly, regurgitate 140-character "tweets," and skim thought?
Now that there are so many people online who are of the aforementioned variety, a great deal of "information" is created by them. Is it any wonder we have to learn to skim? If we read it deeply, our minds would be fried.
Well, if you believe Linus, it must be because they are ugly and stupid :)
> What exactly do you mean by "C doesn't treat arrays as 'objects' because the computer doesn't do that."
> All a computer knows is 1's and 0's, so by your logic having higher level abstractions like literal strings doesn't belong in C.
An array is simply a typed block of memory, just like an int or float. An object is a higher level abstraction, containing access functions, encapsulation, and some standard of behavior. C is a low-level language, where an array fits with other simple variables of its kind. You can't really make objects in C, although you can sorta do it by hand by handcoding vtables and using file-scope variables. That's what the Linux kernel does, for example. If you want objects, you use C++, where higher levels of abstraction can be properly built, and where an array can become an object (vector).
> Arrays in themselves are an abstract higher level abstraction for pointer arithmetic in C.
Arrays are an abstraction for memory blocks, not pointer arithmetic. An array is a physical entity in memory, pointer arithmetic refers to a method of accessing an array.
> Also, arrays STILL aren't first-class entities in C++
Not being an ivory tower CS academic, I looked up "first class entities" in the Wikipedia, and it gives the following list:
* being expressible as an anonymous literal value
It's true that you can't initialize a vector with a static array expression. It's somewhat inconvenient in some cases, but it certainly isn't a major problem. The next C++ standard will include this capability.
* being storable in variables
* being storable in data structures
You can store a vector in a variable or a data structure.
* having an intrinsic identity (independent of any given name)
A vector has an identity in the memory location it occupies. Is that what this is talking about?
* being comparable for equality with other entities
Yup.
* being passable as a parameter to a procedure/function
Sure, although you would usually pass by reference due to its size.
* being returnable as the result of a procedure/function
Yes, you can do that, but again, due to size it isn't recommended.
* being constructable at runtime
new vector
* being printable
That can never be standard, because arrays of different things require different output methods. Still, it's pretty simple to write a template streaming operator to do something reasonable.
* being readable
Marshalling templates are also easy to write.
* being transmissible among distributed processes
* being storable outside running processes
Through marshalling.
Except for static initialization, which IMO is not of great importance, vector is a "first class entity".
> I also didnt say objects, I said entities.
:)
Perhaps you should clarify your vocabulary for us normal people. As far as I know, everything is an "entity", including an array in C, which can certainly be used as such.
> I *know* how memory and pointers work.
> int i = 50; char c[i]; works, for example. (It equals char *c = malloc(sizeof(char) * i).)
Uh, no. It equals "char* c = (char*) alloca (sizeof(char) * i)". mallocs need to be freed. alloca is storage on the stack, just as are static arrays, and is freed automatically when leaving the scope. Sounds like you still have some studying to do
> vector just wraps the allocation and access facilities.
Well, duh. Any "object" does exactly that, in any language. Other languages just hide the things wrapped and pretend they don't exist, just as you don't seem to even know they exist. Yes, Java containers have a low-level implementation too, you just can't hack it within the language.
> With first-class arrays, compile-time string parsing would be possible in C++
And it isn't now? gcc is perfectly capable of performing basic operations (like strlen, or printf format checking) on strings. Or are you talking about something else entirely? "First-class arrays"? WTF?
> this would make writing DSELs a trivial task.
Of course, everyone here automatically knows what a DSEL is. It's soooo obvious. It must stand for Dumb S*** Easy Language.
> And repeat smart things like not treating arrays as first-class entities?
> Honestly, C is full of design errors.
Come back when you know how the computer works, grasshopper. C doesn't treat arrays as "objects" because the computer doesn't do that. If you want higher level abstractions, use C++, where you have the nice vector class that does what you want.
What makes you think that would be more safe?
> Re-loading an OS takes time / effort, and in my world that translates to money.
Only if you can actually work instead of doing it. A typical person would do this on his own time, which is not paid at all. Most of us here on Slashdot have more time than money, since nobody wants to date us anyway, so the choice of which to spend is clear. Add to this the fact that I'll have to spend pretty much the same amount of time customizing the preinstalled OS anyway, since the default settings always make me think the world is filled with sadistic idiots, and the choice becomes even more clear.
> Well, first of all, the price difference isn't really all that much.
Maybe not, but it's my money, not yours. I choose the best value I can get for my money, and if that means paying $50 less for a Windows machine instead of the Linux one, I'll do it.
> Secondly, if you WANT Linux and FOSS software to succeed in the desktop realm
> If there isn't any profit in it for them, they won't support FOSS. Simple as that.
That's not business. That's charity, and I don't do charity. If they want people to buy Linux machines, they should make Linux machines cheaper. It is ridiculous that a computer with a free OS should cost more than the same computer with an expensive OS.
> Thirdly, Why would you WANT to pay the "Microsoft Tax", or have to deal with fighting
> with a machine who's hardware might only be partially supported under Linux.
In this case, the Linux is the "tax", since it makes the computer more expensive. Secondly, I would not buy any computer without first verifying that all its components are supported, so your point is moot. Third, the computer is identical anyway, so it doesn't matter which OS you buy with it, so I buy the cheaper one: Windows.
> if you want a high-end gaming rig, why wouldn't you just build it yourself from hardware you know is Linux supported?
If you want a gaming rig, you would need Windows anyway, since Wine is a PITA to install and use (and doesn't run at all on my x64 distribution)
> Why make things harder on yourself?
Why would it make things harder? The preinstalled Linux will be full of useless crap too, and I know I will have to install my Slackware on top of it anyway before performance is halfway usable. I don't know about you, but I really hate waiting five minutes for the computer to boot up with all those totally unnecessary daemons distributions start by default. And then there's the pain of starting X for a minute or so (yes, I work on the console most of the time). As you can see, it makes absolutely no difference to me what OS is preinstalled. I'll have to wipe it anyway.
> Secondly, if you WANT Linux and FOSS software to succeed in the desktop realm, supporting
> companies that are willing to go out on a limb and sell Linux on Desktops and Laptops is necessary.
No it isn't. Try as you like, you'll still be in the minority; most people will keep buying Windows. A fairly small minority. Yes, Linux is popular with the geeks, but geeks make a miniscule proportion of the general population, and will always remain a niche market. Combine that with the fact that many geeks share my attitude toward bloated preinstalled crap and wipe the machine anyway, and you have no market whatsoever.
Is it a bad omen that it costs about the same as a typical subprime mortgage?
> it's almost impossible to secure a machine when an attacker has unrestricted physical access.
Who needs unrestricted physical access? Any access will do with the current generation of Slashdotters who, judging by all the posts here, have no idea that you can password-protect the BIOS and secure either grub or lilo to not allow single user boot or init substitution without a password. Sure, the box would still be vulnerable to the old school battery removal attack, but hey, most script kiddies these days don't know about that one any more.
> How about just nicely explaining the problem to him
This is not about discourtesy, it's about P2P's tendency to grab all the available bandwidth. I would, for one, like to have my browser's requests prioritized over my torrent traffic, so I could browse the net at a reasonable rate while downloading. Yes, I can set rate caps in uTorrent, but that is not the ideal solution because it leaves the network underutilized. My browser does not require much bandwidth, it requires latency, which is what the poster was asking for.
> and because turning an int into a string and sticking it in a map feels yucky.
How about the fact that you have just discarded all field type information? That's a far more serious problem.
> const char *cols_to_render = { "name", "phone", "address", NULL };
> Iterate over that instead of writing a bunch of "comb code".
That's fine if all you are doing is sticking it into a listbox, and that is necessary, of course. But what will you do once you need to actually do something with the data? If you need to fill a form out, how will you know that the phone field maps to the second entry in the array? How will you validate it properly without hardcoding that index? All your code that pertains to a specific field will still be comb code, but with hardcoded indexes instead of field names. That's much worse.
> Almost all the code I've seen uses the hand-written marshalling, and it's hideously verbose and repetitive.
Not if you write it properly:
So do we get to learn Asok's forbidden telekinetic powers?
> 10 minutes looking your database's xxxBindxxx functions would have showed
> you that you can bind database columns to binary data areas. IOW, RTFM.
Well, that's just lovely. So where do I find your fine manual? For example, sqlite documentation on its bind commands contains no examples of any kind. I can't even see the relevance there, as they seem to bind a value to a prepared statement, whatever that is. Like I said, I'm not a database guru, I'm just trying to see if there is any way I can use a database as storage for my app. If that requires weeks of hard studying, I think I'll just stick with my flat file, thank you very much.
> There are very few cases where real-world information is not most accurately
> represented as relational data (in comparison to flat data)
I have a question about this. All you database types (and I do not necessarily mean this in the pejorative sense) never seem to mention how you actually get the data out of the queries. No, I don't know much about databases, as you can tell. However, there does seem to be a strong bias in all db discussions toward directly placing the query output, in text form, onto a web page or some report. By contrast, in my code, I always define my data structures first (C++), and then wonder how to get data from the database into them for manipulation. SQL is entirely text based and all the examples I have seen extract data from queries by looking up a field by name and converting it into a variable (from text?), which seems to be not only inefficient, but highly cumbersome. I certainly don't want to copy data into my structures field by field, and the performance hit (which may become pretty significant after you go through a few million records) appears to be a showstopper. None of the tutorials I've seen demonstrate this particular operation in any other manner. The SQL books never go into code examples at all, and concentrate on forming queries. So tell me, oh db guru, is there some way to directly read a db record into a C++ class, or a query into a C++ vector of such classes, without doing a strtol on every field, like most examples seem to imply?
> Who the hell are you to decide what is a good use of *my* e-mail?
Oh? So some people are allowed to decide how you use your email and others aren't? I can never understand statements like this. "Who the hell are you" is simply not a relevant question at any time.
> I happen to *like* mailing lists
Nobody's perfect.
> and there certainly are legitimate reasons to process large volumes of e-mail.
And what might those reasons be, except for mailing lists?
> What you describe is a tyrrany by majority, or mob rule -- not a democracy.
What do you think democracy is? "Majority rule is a characteristic feature of democracy, though many democratic systems do not adhere to this strictly." -- wikipedia. You might not like it, but you have to call it democracy. What should the alternative be? Tyranny by your personal opinion? "Who the hell are you to decide"? That very question implies majority rule, by implying that no single person is fit to decide anything, and only the majority is fit for it.
> But most importantly, it'd greatly complicate sending an e-mail. I'd have to
> find the public key of the person I want to e-mail as well as his e-mail address.
I was simply proposing this as a potential means of determining an email's legitimacy. If it doesn't work, fine. You can still make spam illegal, it will just take a little more effort to determine if it is spam. Not that it's hard. Any human can tell within a few seconds. The key requirement is the ability to do something about it, e.g. to report it to the police for prosecution.
> Any legislative solution will be useless unless it's world-wide.
Not at all. We currently have trade embargoes against countries that we dislike. We could add countries that support spammers to that list.
> If it did, anybody who wanted to create trouble for a business would send out
> spam in their name. Trying to follow the money by seeing who gets the money for
> the orders doesn't work, since the spammers wouldn't be the same poeple as the business owners.
Spam is mainly sent for economic reasons. If there was no profit in it, there wouldn't be any spam. Yes, it may create trouble for a business, but this trouble is easily resolved by a quick audit of the business' advertising expenses, which is what you'd do anyway to track down spammers.
> Just because a politician knows what spam is, doesn't mean he's qualified in the area of fighting spam.
He might not be qualified to propose technical solutions, but he certainly is qualified to propose legal ones.
> If you own a television in the US, active ads are pushed into and interrupt your viewing
Yes, but that's still not the same thing. TV ads are served by the TV station and are used to subsidize the shows you watch. Yes, you also pay for your cable subscription, but there you are paying for content delivery, not the content itself. I can put up with TV ads (even though I never actually watch them) because they are used to pay for the content. Same situation with ad-supported web pages. The ads help pay for content. Yes, I always block the ads, and no, I would never buy something I saw in an ad (I would, in fact, avoid it, to not encourage more advertising). Nevertheless, the advertisers still think for some reason that what they do generates profits, and it's their business if that turns out not to be the case.
With email, the situation is different because the ads are not connected to anything. They do not help pay for my email account (unless you use gmail) and they do not help my ISP. Spam is, in fact, is the main cause of problems for email providers and ISPs. The purchases, if any suckers can be found to make them, will go to the spammers alone, and I get no benefit at all from viewing (or ignoring) them, like I do with TV ads or ad-supported web pages. Furthermore, spam generally advertises illegal or fraudulent products anyway, so even if the recipient of spam buys the product, he is worse off.
> The other fact, that might be interesting for discussion sake, is that most people don't "own" an email address.
As in the TV example, if you use a free email address, you generally get banner ads to "pay" for it. Banner ads are not spam; they are used to subsidize the cost of hosting your account.
> You have the right to say what you want, but I don't necessarily have the right to stop you from saying it
Sure I do. If you come to my house and say things I don't like, I am fully within my rights to throw you out. I can also post a "No soliciting" or "No trespassing" sign, and expect not to be bothered by anyone.
> We don't have freedom from advertisements and marketing.
And that's precisely the problem. To reiterate, ads are ok if you are looking for them, or if you accept them as payment for something. It is the ads that waste your time without paying for it in some way that must be illegal. Your time is money. Make the bastards pay.
> Advertisements are everywhere. You have the right to look at it or listen to it
This is a different situation. Passive ads on web pages are just something that comes with the page; they are not sent to me personally. I just happen to come across them as I browse. This is fine, since I do not own the sites, and should not dictate the owners what they can not do with them. With email, I own my email box and I have the right to some control of what goes in there.
> Your post advocates a
> (X) technical (X) legislative ( ) market-based ( ) vigilante
If my approach is tried, it obviously has a chance of success. If it is summarily dismissed as "not gonna work", then of course it won't.
> (X) Mailing lists and other legitimate email uses would be affected
Mailing lists are not a good use of email. Use discussion forum software or usenet, which are far more appropriate venues for this type of communication.
> (X) Users of email will not put up with it
Why won't they put up with it? Users hate spam, and would certainly welcome anything that removes it. Yes, there are some morons who actually read spam and buy stuff advertised in it, but that is not really relevant here. We're a democracy, and sacrificing the wants of the few for the needs of the many is what we do.
> (X) Microsoft will not put up with it
Microsoft will love it. It runs hotmail, and would certainly appreciate the enormous increase in available capacity that will result from eliminating spam. Spam does not benefit Microsoft. Spam hurts Microsoft.
> (X) Many email users cannot afford to lose business or alienate potential employers
You mean spammers "cannot afford to lose business". Destroying their business is precisely what's needed.
> (X) Lack of centrally controlling authority for email
No central authority for email is needed. What is needed is the ability to pursue legal action against spammers for spamming. This could be done simply by forwarding the spam message to the police, who could then arrest the spammer, if he can be tracked down. Currently, sending spam is not illegal, so the authorities can do nothing.
> (X) Armies of worm riddled broadband-connected Windows boxes
If spam were illegal, the police could track down the people who create these boxes. How? By following the money. Spam exists to sell stuff, so it is trivial to find the company responsible for sending it. If it wasn't possible, the company wouldn't be making any money, would it?
> (X) Technically illiterate politicians
Even politicians these days use email. And anybody who uses email eventually receives an offer to enlarge his penis. Any questions?
> (X) Ideas similar to yours are easy to come up with, yet none have ever been shown practical
If the idea isn't tried, how can it be shown practical?
> (X) Sorry dude, but I don't think it would work.
Sorry dude. It will work.
> Your analogy is not correct. Email is more like snail-mail. And yes, anyone
> can send email to your mailbox via snail-mail and not go to jail.
I would instead apply the same analogy to snail mail.
It really is not difficult to differentiate between personal mail and spam. The former is written for a single recipient - you. Its intent is conversation. Spam is written generically, and its intent is to get you to buy something. Spam should be illegal in any form. Period. Be it email, phone calls, snail mail, door-to-door salesmen, or street hustlers. There is to be no "push" advertising whatsoever. If I want advertising, I MUST ask for it explicitly. Every time!. Only genuine personal communications should be allowed without explicit permission. Where's the difficulty here?
> How on earth would you actually request each individual email you want to receive?
By explicitly giving the sender your email address. You can also publish it for use of a specific audience. For example, I have my sourceforge address in the header of each source file I write. This is clearly intended for people to report problems with software. There is some gray area, of course, but any email sent with the intent of selling me something definitely violates the criteria.
> I don't see how you could propose a law that requires permission to send an email
One possibility is to pass a law requiring each email to be encrypted with your public key. Anyone trying to contact you legitimately would know what it is, because you'd give it out with your email address, in whatever manner. It also makes bulk mail impossible, especially if you choose a long key.
It ought to be obvious to everyone that spam is a property violation crime. Putting unrequested email in my account is the same as dumping used tires on my front lawn. Sure I have an address, but that doesn't mean I want just anyone to deliver anything to it without my permission. Why aren't we making this explicitly illegal, just like dumping and vandalism already are? Why are we putting up with these people?
> I love command line, but why use default 80x25?!
Because the small fonts you get with 160x60 hurt my eyes. 100x30 is as high as I go.
We don't use no stinkin' UI on Slackware.