The Great Naming Debate
This is a log of #help.mIRC on Webnet, starting on 6/20/05 at 23:07:21 EST and ending on 6/21/05 at 01:43:42 EST.
(The conversation has been stripped of unrelated events & messages)
[23:07:21] Sen_Kurosaki has joined #help.mirc, with address Sen_Kurosaki!nekato@=LoFKZ-62-509-2-6.qld.bigpond.net.au
[23:11:19] * Trashlord sets mode: +v-v Sarten-X Stealth[Gone]
[23:17:41] Sen_Kurosaki says, "Trashlord?"
[23:17:47] @Trashlord says, "?"
[23:18:04] Sen_Kurosaki says, "can you please help me get started of towards making a hash table theme changer?"
[23:18:32] @Trashlord says, "hmake tablename <space>"
[23:19:01] Sen_Kurosaki says, "hmmm"
[23:19:02] Sen_Kurosaki says, "yeah"
[23:19:07] Sen_Kurosaki says, "i know that"
[23:19:14] Sen_Kurosaki says, "its just the coding im having trouble with"
[23:19:24] Sen_Kurosaki says, "the part that ectually makes it work"
[23:19:42] @Trashlord says, "hadd table section [item]"
[23:19:46] +Sarten-X says, "Sen_Kurosaki... don't use hashes for it"
[23:19:50] +Sarten-X says, "it's not worth it"
[23:19:54] Sen_Kurosaki says, "but its easier"
[23:20:03] +Sarten-X says, "no"
[23:20:05] +Sarten-X says, "it's not"
[23:20:17] Sen_Kurosaki says, "variables are messy"
[23:20:32] +Sarten-X says, "says who?"
[23:21:09] Sen_Kurosaki says, "me"
[23:21:50] +Sarten-X says, "then you don't use variables right"
[23:21:57] +Sarten-X says, "my vars are all clean & purdy"
[23:22:18] +Sarten-X says, "%Away.Origin.Webnet 1119301826"
[23:22:18] +Sarten-X says, "%Away.Reason.Webnet chores again"
[23:22:47] +Sarten-X says, "for example: those are ffrom my away system... origin & reason... on network WebNet"
[23:22:52] +fugitive says, "%_xp.hs 405"
[23:22:52] +fugitive says, "%_xp.color gray"
[23:22:54] -> +fugitive wins
[23:22:55] +fugitive says, ":)"
[23:23:36] +Sarten-X says, "and _xp means what, exactly?"
[23:23:45] +Sarten-X says, "unreadable"
[23:23:47] +Sarten-X says, "you lose"
[23:23:48] +Sarten-X says, ":P"
[23:24:04] +fugitive says, "underscore, letter "x", letter "p".. it's readable.."
[23:24:06] +fugitive says, "i win"
[23:24:12] +fugitive says, ":p"
[23:25:24] +Sarten-X says, "you lose... _xp means jack to anybody who didn't write the script... thus, I identify it as an error & remove"
[23:26:16] +fugitive says, "people who don't write the script don't need to be looking at the variables it makes, debugged & amended"
[23:27:31] +Sarten-X says, "but they're unidentified... thus questionable"
[23:28:52] +fugitive says, "it's written in the readme for the script that all _xp variables are for the specific 'addon' and that their existance is harmless"
[23:29:31] +Sarten-X says, "then it's ok... so long as the user has memorized the readme file"
[23:29:54] +Sarten-X says, "and of course ALL users do that"
[23:30:20] * +Sarten-X really doesn't give a **** about the vars, he's just arguing for the principle
[23:30:25] +fugitive says, "anyone who downloads a script/addon/file should read the documentation that goes with it, it's not my responsibility to make my coding readable to the user"
[23:30:27] -> +fugitive is too
[23:30:28] +fugitive says, ":p"
[23:30:31] +Sarten-X says, "lol"
[23:31:59] +Sarten-X says, "but it is your responsibility to follow the Tau of Programming... something about the law of least astonishment... if a user deletes a variable that looks unrelated to anything useful, the effect should be basically nothing."
[23:32:41] +Sarten-X says, "if they remove something that outright says what it will do, then it is no surprise when it doesn't work"
[23:33:26] +fugitive says, "the variables won't look unrelated if there is 15 that start with _xp, and each variable isn't null, and they've read the documentation, they would know that each variable belongs"
[23:33:48] +fugitive says, "that's the user's job, not the creator"
[23:34:13] +fugitive says, "the creator's job is to provide all needed information, which is accomplished"
[23:34:54] +Sarten-X says, "but yet you did not tell me why it's _xp, and not, say, ahv?"
[23:35:19] +fugitive says, "x for excess, p for poker"
[23:36:18] +Sarten-X says, "why not save the trouble of the user, and simply make it %excess.poker.*?"
[23:36:51] +Sarten-X says, "as a coder, you much anticipate the meddling tendancies of the user, and counter for them"
[23:36:56] +Sarten-X says, "i win"
[23:36:57] +Sarten-X says, ":P"
[23:36:57] +fugitive says, "i'll go back to the part where i said the user doesn't need to be messing around with variables he/she didn't make"
[23:37:56] +fugitive says, "i don't care if the user deletes a variable and then my 'addon' doesn't work, that's their own fault, they can then start over with the 'addon' if they can't figure out what they did"
[23:38:02] +fugitive says, "not my problem to deal with ;)"
[23:38:44] +Sarten-X says, "so, you are not fulfilling the duties of a coder!"
[23:38:48] +Sarten-X says, "you lose"
[23:38:49] +Sarten-X says, ":P"
[23:39:20] +fugitive says, "i am fulfilling my coder duties, write all info in the documentation, and tell the user to read it before using my addon, next is their duties as a user!"
[23:39:21] +fugitive says, "i win"
[23:39:36] +Sarten-X says, "you have more duties than that"
[23:40:01] +Sarten-X says, "you must expect the meddling user... you must make your code so it is not as fragile"
[23:41:07] +fugitive says, "it's more of a 'payback' to the user for meddling with my code, they bring all malfunctions on themselves the instant something is changed that wasn't mean to be, their concern, i did what i needed to do"
[23:42:00] +Sarten-X says, "but you must be the benevolent coder, not the vengeful master"
[23:42:18] +Sarten-X says, "you as a coder serve the users... it is the way it must be done"
[23:43:20] +fugitive says, "i have yet to see a demand from the user on my coding about variables not being understandable so they can edit/remove them, even if i did, i wouldn't change my coding to suit their need to tamper"
[23:44:33] +fugitive says, "all the background work is exactly that, in the background, the user should never see that information, if they do, they should know off hand not to mess with it, if they do, it is, again, their own concern"
[23:45:50] +Sarten-X says, "you do not help the users... you are not good coder as a good coder should be"
[23:45:56] * +Sarten-X dun like fugi no more
[23:46:21] +Sarten-X says, "a coder must, as I said... help the users to avoid troubles"
[23:47:11] +Sarten-X says, "because the dumb users come in here, & ask us questions, so we are bothered by your poor choice of wording. badly-named variables are like a plague among code"
[23:48:20] +fugitive says, "the users do avoid troubles, if they don't tamper with things they shouldn't be messing with, it's like almost anything in life, if you take a baseball bat, and start hitting yourself in the head, it's not the manufacturer's fault because the baseball bat was made in a way that a user could do something wrong.. it's the users, or the idiots, fault"
[23:48:47] +Sarten-X says, "true"
[23:50:11] +Sarten-X says, "but if you hit yourself in the head with a bat, you don't ask others how to fix it (too much)... you understand that if you hit yourself, it will hurt... you understand it... removing an unidentified variable cannot easily be linked to the effects... the user does not understand it."
[23:52:06] +fugitive says, "it is stated in the documentation that the user was told to read before using the addon that all variables in the addon begin with "_xp" and are all required to have full functionality in the addon, why do you think things have warning labels and things saying that the company is not responsible for misuse of the product"
[23:52:55] +Sarten-X says, "you cannot trust the user..."
[23:53:13] +Sarten-X says, "but you are expected not to"
[23:53:27] +fugitive says, "that's why i include documentation"
[23:53:43] +Sarten-X says, "a bat manufacturer is expected to assume the user knows that injuries are painful"
[23:54:29] +Sarten-X says, "it boils down to: you are expected to name vars in a nice, dummy-readable fashion... if you don't, you are below what is expected."
[23:54:59] +fugitive says, "but they don't redesign the bats to make them unharmful or make anything they do with the bat painful, so neither should i with my coding, if it is used in any other way than what is said in my documentation, it is not my fault"
[23:55:25] +Sarten-X says, "you are passing the blame for poor coding to your users"
[23:55:42] +Sarten-X says, "essentially, "I can understand it, so **** off""
[23:57:18] +fugitive says, "because they are to blame, they made the immoral choice to edit the coding which they were informed not to mess with, it would be a different story if i didn't include anything at all, but i did my job as a coder and provided information about the product that the user chose to download and use, all the user's choice"
[23:59:35] +Sarten-X says, "all that does is remove your liability... it's like the warning labels on trucks... your code is like putting a warning label on a truck hauling hazardous nuclear waste, but carrying it in an open container... it's bound to spill, and will almost invariably cause problems. Yet the company did warn the exposed people... they put up the sign..."
[00:00:40] +fugitive says, "it is not like going around in an open container, my 'container' simply has a very effective lid on it, but no lock, the user can make the choice of leaving the lid on and having my addon work properly, or removing the lid and having a mess"
[00:01:27] +fugitive says, "that's the problem with mirc scripting, no locks that are 100% effective to the average user ;)"
[00:04:16] +Sarten-X says, "but in usage, the lid will more likely than not be opened... the pandora's box is unlocked. it is YOUR responsibility to ensure that each bit of the harmful cargo that the user MIGHT be exposed to is labeled & the user knows its effects... the trucking companies lock their lids to avoid this hassle. When hauling small quantities of gases, however, note that each tank is individually color-coded."
[00:04:33] +Sarten-X says, "the user has it immediately available to know EXACTLY what they are doing"
[00:05:22] +Sarten-X says, "a single glance can tell them what they are dealing with"
[00:05:57] +fugitive says, "if they read the precautions i wrote for them and told them to read, they would know exactly what things are and what would happen if they were messed with, it's no one's fault but the users if something goes wrong"
[00:06:28] +fugitive says, "it's a single glance through the documentation(which they are told to read anyways) to know what is what, and why they need to leave things be"
[00:07:56] +Sarten-X says, "but that information isn't available when it needs to be used...the gas transporters lock each tank's valve, so nobody without qualified knowledge can open them. you cannot lock it, so you must ensure the knowledge is imparted to them immediately when they need it"
[00:08:51] Trashlord says, "look"
[00:08:57] Trashlord says, "you've been going on about this"
[00:08:58] Trashlord says, "for hours"
[00:09:10] Trashlord says, "you both win, ok?"
[00:09:11] Trashlord says, ";p;"
[00:09:13] Trashlord says, "lol*"
[00:09:27] +Sarten-X says, "lol"
[00:09:37] +Sarten-X says, "how long was that?"
[00:09:50] Trashlord says, "atleast 30 minutes"
[00:09:51] +Sarten-X says, "~40 minutes"
[00:09:51] +fugitive says, "my addon opens a window when a variable is edited or removed by the user, telling the user what they just did, the consequences, and what they can do to fix any problems, so the user has that info when something goes wrong"
[00:10:14] +Sarten-X says, "but you do that AFTER the damage is done"
[00:10:33] +Sarten-X says, "that doesn't help prevent troubles... merely fix them"
[00:10:52] +fugitive says, "it may be, but it also tells the user what to do to fix what they had done"
[00:11:18] +Sarten-X says, "it's like repairing an ancient pipe every time it breaks... the correct way to fix the problem is to replace the pipe... it's preventative maintenance"
[00:11:37] Sarten-X says, ". o O ( Trashy's gonna kick us both soon )"
[00:12:09] +fugitive says, "if all variables are understandable, that is still not a secure lock, there are always users who will do things"
[00:12:21] Trashlord says, "i won't kick you"
[00:12:25] Trashlord says, "I don't even want you to stop"
[00:12:32] Trashlord says, "please, keep arguing, it's entertaining"
[00:14:26] +Sarten-X says, "lol"
[00:14:28] +Sarten-X says, "brb, though"
[00:14:30] +Sarten-X says, "gotta pee"
[00:14:33] +Sarten-X says, "lol"
[00:14:35] -> +fugitive wins
[00:14:40] +fugitive says, "no breaks in arguments, you forfeit"
[00:14:42] +fugitive says, "w00t"
[00:14:46] Tabatha says, "no the toilet won"
[00:15:09] +fugitive says, "hmm, i'd have to say the toilet ultimately lost.."
[00:15:33] Tabatha says, "lol"
[00:21:00] +Sarten-X says, "ok"
[00:21:02] +Sarten-X says, "I is back"
[00:21:06] +Sarten-X says, "sorry about that"
[00:21:08] +Sarten-X says, "ANYWAY!"
[00:21:22] +Sarten-X says, "[00:12:09] +fugitive says, "if all variables are understandable, that is still not a secure lock, there are always users who will do things""
[00:24:49] +Sarten-X says, "indeed there are... but the warning against modification is not hidden away in some document out of sight & out of mind... it is right there, blatently obvious... if a user has (god save us all) thirty different scripts running at once, how are they supposed to know which readme file to check? ALL of them? checking all their readmes for each unknown variable is an unreasonable expectation"
[00:27:40] fugitive says, "it is not unreasonable if there is also an option rught under "Open" for the addon that will open the correct document right there in front of their own eyes, the option is there to open it, and they are told when they load it to read it, it is even in the same folder as the file they had to have somehow loaded from either the Load menu in the editor or using the /load alias, one of which they would have had to read >>"
[00:27:59] fugitive says, "to know where the file was located, and the other also shows it,"
[00:28:28] +Sarten-X says, "you miss the point"
[00:28:49] +Sarten-X says, "it's NOT "right there in front of their own eyes," when they are editing variables"
[00:28:58] fugitive says, "since there is the option right under the "Open" option, i don't need to make understandable variable names, everything is easy to find and literally right in front of their face, they don't even have to look for it, so it is blatantly there right in front of them"
[00:30:22] fugitive says, "it is actually right there when the user loads the addon, the documentation actually loads itself on load, at which time there are no variables to go along with the addon, so there is no way that the user could have not have the information handed to them"
[00:31:45] +Sarten-X says, "really... in front of their face? so you have hooked into mIRC so that when they are editing variables, text automatically pops up telling the function of every variable they look at? You also assume that users reload the script every time they use it, and re-read the readme file... over time, things are forgotten. That's why truckers must be repeatedly refreshed on the meanings of the warning plates."
[00:31:50] +Sarten-X says, "Should they forget a single one, the results could be disastrous"
[00:32:53] +Sarten-X says, "if the full warning was right on the cargo container, this retraining would not be necessary"
[00:33:45] fugitive says, "it is strongly suggested that variables be left alone, that's all the truckers get, warnings, that's all i have to give, there's no possible way(in mirc script, and a lot of other places) to have 100% effective products with no injuries, pain, errors, malfunctions, or mishaps"
[00:34:39] fugitive says, "even with your strung out, fully named according to purpose, variables, they are still tampered with, i'm sure"
[00:35:33] fugitive says, "brb, cig break :p"
[00:42:33] Sarten-X says, "indeed... I cannot guarantee that my users will be free from hazards, either... nor can the colorblind trucker, unseeing of the coded tanks, be certain of his safety. However, I have ensured that my users have the best chance of knowing what they are doing. I have given them the knowledge of the scriptat the time they need it. I can do no more, but I can do less. I can make the vars unreadable to all but the trained eye. I can expect users to read doc after doc."
[00:42:33] Sarten-X says, "I can demand they stay out of variables, and hope for no problems. However, I won't. I will not stand by, and let careless users bring harm to themselves. I will not release into the world a script that may be broken without even a worthwhile attempt to save itself. To do so would not only be unethical as a coder, but downright inhuman. The human creature is inhuman enough without my help."
[00:49:07] fugitive says, "LOL, well, either way, on the very first line of the documentation, i state that all variables beginning with "_xp" are needed to run the addon and are not to be messed with, with me doing that, they know right off the bat not to mess with them, i even have messages in the variables, '%_xp.caution Messing with variables beginning with _xp are not to be edited/removed, you have been warned.', so the user does have"
[00:49:26] fugitive says, "this information in sight when they make the inhuman decision to open up the mirc edited and go to the variables"
[00:57:47] Sarten-X says, "In your warning, it is like telling a child not to do something. with no explanation as to WHY the act would be dangerous, they assume the warning isn't meaningful. the user also doesn't know why the variables are there. If they have, say, only two scripts, one much larger than yours, they are likely to assume the variables, since their ownership isn't obvious, must belong to the larger script. Or worse, suppose they have a virus that they think they are competant enough to remove."
[00:57:47] Sarten-X says, "are you sure they won't assume the warning is a clever attempt to stop them from disabling the virus? It is not the editing that is inhuman... it is the treatment of users like machines. The expecting them to behave in a perfect manner, all the time. Humans are error-prone by nature. It is what makes us better than the computers we master. By assuming the users will behave perfectly, according to your scheme, you treat them as machines. Cold, dea"
[00:58:10] Sarten-X says, "... By assuming the users will behave perfectly, according to your scheme, you treat them as machines. Cold, dead machines."
[00:59:24] Sarten-X says, "The first message that started this debate was at 23:22"
[00:59:32] Sarten-X says, "it's now 1:00"
[00:59:34] Sarten-X says, ":)"
[01:01:05] fugitive says, "(on a side comment.. users who edit variables that they didn't make should be cold, and dead) :p"
[01:02:09] fugitive says, "my documentation clearly states what each variable is used for, and also what would happen if it was to suddently disappear, so they have each and every consequence right there at the beginning of what will happen if they do choose to do something stupid, like lets say, edit/remove variables"
[01:02:13] Sarten-X says, "(on a side comment.. I agree, but we can't count on that... this whole debate is about what we should do to prevent editing)"
[01:03:23] +basicer says, "holy long lines above."
[01:05:13] Sarten-X says, "at the beginning does not mean it is there when they edit. Users get confused. You also don't say what script the vars belong to, or what their innate function is. No code should EVER be trusted to perform flawlessly, so at some point, most users will try to fix errors themselves. If indeed they are stupid enough to edit vars they don't master, can users be trusted to remember warnings for more than a dozen lines, or longer than 5 minutes?"
[01:05:50] Sarten-X says, "basicer: for once, i'm not debating with you..."
[01:14:03] Sarten-X says, "fugi: you countering or what?"
[01:14:34] Sarten-X says, "or do we just stfu and be done with it?"
[01:14:45] fugitive says, "1 sec"
[01:14:48] Sarten-X says, "k"
[01:16:55] fugitive says, "all the information about the variables is in the documentation which is opened on load, and is right under open for the addon's interface, it is even said on the interface that variables and other coding for the addon should not be edited, consequences are stated clearly, even when they do open the editor to edit variables, there are numerous variables whose only purpose is to inform the user that editing variables >>"
[01:17:28] Sarten-X says, "is dumb?"
[01:17:58] fugitive says, "in malfunction from the addon, so, while they are looking through their variable list, they will see that they should not edit anything beginning with "_xp", and it is all on them if they choose to continue to screw with them"
[01:20:17] Sarten-X says, "but as I said, you must tell them what the _xp vars belong to. It is only with a direct reference to the script that created them that the needed information will truly be passed"
[01:21:35] fugitive says, "the variables that have the purpose of just informing the user while they're looking at the variable list states that all of the variables that start with _xp belong to excess poker, all that information is in the documentation they are told to read, and even in the variable list"
[01:23:49] Sarten-X says, "does the warning in the %_xp.caution SPECIFICALLY refer to "excess poker" as creating the variables? if not, then the user has little chance of knowing offhand what _xp means"
[01:24:36] fugitive says, "yes, it clearly states that all "_xp" variables were created by, and belong to, excess poker"
[01:28:30] Sarten-X says, "Then in that case, your variables are clearly described. You have just proven that all users must be given all the information they need. You have just proven that not every user will read the readme, nor remember it. You have proven that, even though you claim not to, and your methods are a bit roundabout, you still do what you can to make variables names clear in the editor window."
[01:28:30] Sarten-X says, "You have just proven that clearly-defined variables are of utmost importance."
[01:28:40] Sarten-X says, "You have just proven my point."
[01:29:31] * ChanServ sets mode: +o Trashlord
[01:29:33] * Trashlord sets mode: +vv Sarten-X fugitive
[01:29:37] +Sarten-X says, "uh-oh"
[01:29:45] @Trashlord says, "what"
[01:29:46] +Sarten-X says, "trashy opped... he's gonna kick us"
[01:29:48] @Trashlord says, "lol"
[01:29:48] +Sarten-X says, "lol"
[01:29:50] @Trashlord says, "carry on"
[01:29:52] +fugitive says, "psht, no..hold on a sec"
[01:29:52] +Sarten-X says, "ok"
[01:29:55] +Sarten-X says, "thanks, btw"
[01:29:56] @Trashlord says, "lol"
[01:30:05] @Trashlord says, "np"
[01:33:25] +fugitive says, "my variable names are still _xp, which you say is unclear, i did no prove any point of yours, i am still going with my points, i have giventhe user information where it is needed, while still making my variables 'understandable', if the users did not have my information in the documentation and in the variable list, yes, i would resort to making the names understandable, but since i have that information for the user>>"
[01:34:36] +Sarten-X says, "[23:30:25] +fugitive says, "anyone who downloads a script/addon/file should read the documentation that goes with it, it's not my responsibility to make my coding readable to the user"
[01:34:54] +Sarten-X says, "f the users did not have my information in the documentation and in the variable list, yes, i would resort to making the names understandable, but since i have that information for the user>>""
[01:36:57] +fugitive says, "i'm still not making my code understandable, it's still the same code, it just has information needed to understand it, it itself isn't understandable"
[01:37:04] +Sarten-X says, "You have just said that the you would try to make the code readable, yet you say it isn't your responsibility. If indeed, you have no need to make it readable, why would you go to the trouble of making extra vars, writing a readme warning, and all the other measures? The only conclusion is that you agree the vars MUST be readable."
[01:37:48] +Sarten-X says, "then there is no difference in the principle, merely the methods used for execution."
[01:39:39] +Sarten-X says, "[01:36:57] +fugitive says, "i'm still not making my code understandable, it's still the same code, it just has information needed to understand it, it itself isn't understandable""
[01:39:42] +fugitive says, "the variables are still unreadable, there are just 'helper' variables that points out information, even those helper variables are "%_xp.caution ..." that's unreadable, the value of the variable is what explains, all in caps to make it stand out, along with other large, bulky characters to get the eye focused on it and draw attention, so i still have unreadable variables"
[01:42:01] +Sarten-X says, "with mine, the information is embedded. With yours, the information is external. Either way, the information must still be presented. (the self-referential %_xp.caution is the key point, as it explains itself in its value, instead of its name)"
[01:42:56] +fugitive says, "i never said that the information didn't have to be there, i'm just saying we both get to the same point, except we use different ways to do it, both effective"
[01:43:09] +Sarten-X says, "indeed, fugitive"
[01:43:36] -> +fugitive thinks that's the end of it.. :p
[01:43:42] * +Sarten-X concurs