←2011-09-27 2011-09-28 2011-09-29→ ↑2011 ↑all
00:08:40 <elliott> oerjan: apparently "???" are valid identifier characters...
00:09:33 <oerjan> but of course
00:09:37 <elliott> oerjan: wat
00:10:07 <oerjan> > let test ??? x = test+x in 2 ??? 2
00:10:08 <lambdabot> 4
00:10:13 <elliott> oerjan: valid /non-operator/
00:10:21 <elliott> I think it's just a TH "bug"
00:10:23 <oerjan> ok, wat
00:10:31 <elliott> in that it's TH creating the names
00:10:53 <monqy> you mean with makeName or whatever it is? yeah you can put whatever you want in there
00:11:03 <elliott> yeah
00:11:06 <oerjan> elliott: istr in a previous discussion someone mentioned the only requirement for TH is the first char has the right case
00:11:10 <elliott> which is nice, since they're record fields :P
00:11:12 <elliott> oerjan: zzo
00:16:02 -!- sebbu3 has changed nick to sebbu.
00:27:24 -!- augur has joined.
00:28:39 -!- augur has quit (Remote host closed the connection).
00:36:03 -!- Jafet has quit (Quit: Leaving.).
00:40:49 <zzo38> I might want to play (and make up) some tarot games (using Latin-suited cards). I do have a few ideas.
00:41:04 <oerjan> <elliott> nothing in the article about that... <-- there's a footnote confirming it
00:41:16 <elliott> oerjan: >_<
00:41:24 <elliott> oh, I see
00:41:28 <elliott> his first name was actually Doctor
00:41:28 <elliott> heh
00:42:53 <zzo38> What might seem I might want some tarot deck, is a deck having features similar to the Spider Tarot, specifically: * Card backgrounds are blue (swords), green (rods), yellow (money), red (cups), and white (majors). * Latin-suited. * Index are 1 to 14 for minors, I to XXI for the trumps, and no index (possibly an entirely blank card) for the fool/excuse.
00:43:16 <elliott> brb
00:46:00 <zzo38> (Such as, the kings (14) still have the picture of the king, but it is labeled "14", not "King".)
00:46:41 -!- MSleep has changed nick to MDude.
00:54:34 <zzo38> I hope one day I can get a tarot deck and a Fanucci deck
00:58:31 <hagb4rd> omg, this one is so ..touchin beutiful..where the hell i have heard this? http://www.youtube.com/watch?v=DZrrQDphhrY
00:58:35 <hagb4rd> infant dreams?
00:58:52 <hagb4rd> ever head of transistor?
00:59:02 <hagb4rd> (music group)
01:09:04 <hagb4rd> there really should be a some kind of machine to deal with the iging patterns.. i mean F.U.C.K.U.P yes.. there are 64 of it, and its binary ..hell, need to evolve this diffusing idea
01:12:28 <elliott> what
01:13:15 <monqy> go on...
01:30:37 -!- Sgeo|web has joined.
01:30:45 * Sgeo|web is starting to get PHP poisoning
01:33:44 -!- Jafet has joined.
01:41:03 -!- quintopia has quit (Ping timeout: 252 seconds).
01:47:03 -!- quintopia has joined.
01:47:03 -!- quintopia has quit (Changing host).
01:47:03 -!- quintopia has joined.
01:53:40 -!- pikhq_ has joined.
01:55:19 -!- pikhq has quit (Ping timeout: 260 seconds).
01:55:45 <zzo38> What is PHP poisoning?
02:00:13 -!- DH____ has joined.
02:00:48 <Sgeo|web> zzo38: any amount of exposure to PHP
02:01:06 <Madoka-Kaname> That's a very low lethal dosage.
02:02:37 -!- Jafet1 has joined.
02:02:37 -!- Jafet has quit (Quit: Leaving.).
02:03:24 -!- keyzs has joined.
02:03:29 <keyzs> http://www.thevenusproject.com/
02:03:33 -!- keyzs has left.
02:03:52 <monqy> oh?
02:04:26 <oerjan> it's a trap!
02:04:30 <oerjan> a venus trap, that is.
02:04:47 <monqy> deadly the venus project trap
02:11:27 <Sgeo|web> The three fastest students (myself included) were told that we should make a thing where, if login fails, the user would be shown a countdown, then redirected to the login page. After one of the other students (not realizing that the assignment was only for us 3) complained that we weren't taught Javascript and that we needed Javascript to do it, I decided to do it without Javascript
02:11:31 <Sgeo|web> Just PHP and HTML
02:11:38 <elliott> hi
02:11:44 <elliott> hi
02:11:45 <elliott> hi
02:11:56 <Sgeo|web> hi
02:12:17 <Sgeo|web> Or are you representing what using my page would feel like?
02:12:22 <elliott> hi
02:13:16 <monqy> hi
02:13:26 <elliott> hi
02:14:38 <Sgeo|web> http://tolga.me/seth/lab2/login.php
02:15:03 <Madoka-Kaname> Sgeo|web, how spiteful.
02:15:03 <Madoka-Kaname> =p
02:15:24 <elliott> i like how the source is invalid
02:15:44 <Sgeo|web> You'll kill me when I show you the PHP source
02:16:00 <elliott> except the html is literally wrong
02:16:11 <Sgeo|web> Because of the />
02:16:23 <Sgeo|web> Maybe I should never have read stuff about XHTML?
02:16:25 <elliott> yes, ypu need an xml header for that
02:16:58 <elliott> but thatll just screw up errorhandling behaviour
02:17:06 <elliott> so dont use the slashes
02:17:07 <Sgeo|web> Wait what?
02:17:16 <Sgeo|web> I mean, wrt screwing up errorhandling
02:17:41 <Sgeo|web> http://pastie.org/private/cnpw2axjigodmwkv3145g
02:17:48 <elliott> xhtml violates postel's law completely, among other things
02:18:36 <elliott> cool unsallted password
02:18:44 <elliott> rainbow table time
02:18:57 -!- derrik has joined.
02:20:05 <monqy> what is this class and why are you in it
02:20:10 <monqy> and why aren't you at a better school
02:20:13 <Sgeo|web> Suppose, hypothetically, I was comparing the sha1'd (password + "lakuhdfoiuyergfuoeaywgrfo78yatgrfuiawygr83q2tr78tawguwaheroa78yw4378ry7834"). Would that be an appropriate salt? Although I'm under the impression that the salt should be different for each user, not sure the details why
02:21:00 <elliott> monqy: because his father, like always
02:21:02 <Sgeo|web> "Web Database Development"
02:21:25 <Sgeo|web> elliott: do you want me to just tell you the password?
02:21:34 <Sgeo|web> Or do you want to get it yourself
02:21:39 <elliott> w/e
02:21:45 <Sgeo|web> The Password is...
02:22:13 * Sgeo|web tries to tell you the Password
02:22:56 <elliott> is it Password
02:23:00 <Sgeo|web> Yes
02:23:19 <monqy> web database development sounds lame
02:23:25 <monqy> why not a proper databases course
02:23:34 <elliott> i wont bother trying to log in to your mail with it then\
02:23:34 <monqy> not some
02:23:35 <monqy> php
02:23:36 <monqy> thing
02:23:46 <Sgeo|web> There are proper database courses
02:23:59 <monqy> why are you in the php thing instead of them
02:24:25 <monqy> if it's because of the "web" part, I'll have you know: web sucks
02:24:35 <monqy> if it's because of the "development" part, I'll have you know: development sucks
02:24:44 <Sgeo|web> I already took some of the proper database courses
02:24:58 <elliott> monqy: requirements, bad school
02:25:05 <monqy> ah
02:25:07 <elliott> bad school: see previous answer
02:25:11 <zzo38> It is true that PHP is not so good, but it can be used
02:25:20 <Sgeo|web> I think this was an elective
02:25:35 * Sgeo|web runs for cover
02:26:00 -!- Jafet has joined.
02:27:21 -!- Jafet1 has quit (Ping timeout: 265 seconds).
02:27:40 -!- Jafet has quit (Client Quit).
02:28:26 -!- Jafet has joined.
02:30:25 <zzo38> At FreeGeek they told me they needed a program, it is a web page that refreshes, he agreed it is not ideal, I suggested using a telnet session or something else, apparently for keeping track of items in the store. But I would built it in to the POS system; in fact I started writing such thing.
02:30:52 <zzo38> But I will also do what is described, using SQL reporting program (a program I wrote by myself in Enhanced CWEB)
02:31:47 <zzo38> How it works, is, a line with # at the front is a special command, and other lines are copied directly to output except for a field name with ` surround meaning use value of that field.
02:32:39 <zzo38> Commands are #! is comment (allowing you to have a shebang line), #Q to execute a query, #Z to mark the end of a query block, #I to include file, #F to define a function, and #X to enter hexadecimal codes.
02:33:31 <zzo38> It was originally designed for TeX output, but it works for HTML too.
02:35:35 -!- Jafet has quit (Ping timeout: 265 seconds).
02:37:13 <Sgeo|web> Please don't force non-programmers to learn to program
02:37:31 -!- augur has joined.
02:37:54 <zzo38> Sgeo|web: Please explain better?
02:37:58 <elliott> Sgeo|web: fsvo force
02:38:29 <Sgeo|web> zzo38: If a user needs to write code in order to use something, then the interface is perhaps not the best.
02:38:38 <Sgeo|web> s/user/end-user/
02:38:54 <Sgeo|web> Um, wait, libraries .. are the people who use libraries considered end-users?
02:39:05 <elliott> Sgeo|web: please...
02:39:23 <Sgeo|web> elliott: what?
02:39:41 -!- calamari has joined.
02:39:52 <zzo38> Sgeo|web: I am writing the code myself; the end-user does not need to touch it if they do not want to.
02:40:04 <elliott> Sgeo|web: demonstrating your ignorance of what an interface or end-user even IS after pleading with someone to not write a program based on an assumption you're making about it is just embarrassing yourself.
02:40:27 <Sgeo|web> zzo38: oh, oops
02:40:30 <Sgeo|web> sorry
02:42:10 <zzo38> But I also do not completely agree. Best programs are those which you can write the programming; including TeX, METAFONT, UNIX shell, TeXnicard, etc.
02:42:21 <zzo38> And SQL.
02:42:24 -!- Jafet has joined.
02:43:26 -!- kmc has joined.
02:43:32 <Sgeo|web> Bleh, it depends on the program.
02:43:38 <Sgeo|web> I guess.
02:43:57 <zzo38> I suppose it can.
02:44:05 <monqy> social networking app where you write it yourself
02:44:25 <zzo38> monqy: That is OpenID.
02:45:03 <elliott> Sgeo|web: Every program must be programmable to be truly useful.
02:45:51 <Sgeo|web> If you say "to be more useful to a segment of the population" then I might agree
02:45:59 <Sgeo|web> Wait
02:46:00 <zzo38> elliott: And that is one good reason of Free-software/Open-source.
02:46:25 <Sgeo|web> An extendable program can offer benefits to non-programmers by virtue of the extensions that programmers write
02:46:47 <Sgeo|web> But I don't think this implies that non-programmable programs are useless.
02:46:55 <Sgeo|web> Just that programmable ones may be more useful
02:47:05 <elliott> The user/programmer distinction is arbitrary and harmful.
02:47:07 <derrik> kinda makes sense
02:47:14 <monqy> what kinda makes sense
02:47:16 <zzo38> Sgeo|web: I suppose so. It also depend what program.
02:47:19 <monqy> you may be: wrong
02:47:21 <monqy> or: right
02:47:23 <derrik> if you look at it in a certain way
02:47:28 <monqy> depending on what you meant
02:47:29 <monqy> by
02:47:32 <monqy> "kinda makes sense"
02:47:34 <zzo38> But generally I think the one is good where you can write the program
02:47:41 <monqy> and:
02:47:46 <monqy> "if you look at in a certain way"
02:47:53 <elliott> derrik: what does
02:48:33 <monqy> and what way
02:48:35 <monqy> is the
02:48:40 <monqy> ceratin
02:48:40 <monqy> way
02:48:55 <elliott> cretin way
02:48:56 <derrik> elliott: i don't agree with you at all.. user/programmer distinction is quite vital
02:50:06 <elliott> No. Consider Commodore 64s; everyone wrote /some/ code, whether it was to load a program from a tape, or following along tutorials in books because BASIC was the interface. The barrier to programming is incredibly, artificially high in today's operating systems.
02:50:24 <derrik> elliott: your typos may be used against you.. if you're a programmer, they already are against you
02:50:44 <Sgeo|web> derrik: Is that meant to be a coherent argument?
02:51:03 <elliott> Experienced users nowadays already do things that come close to programming, they just don't realise it; and certainly they're being held back by having to make an arbitrary elevation between "power user" and "programmer" -- it means they can't do this and that which they're perfectly capable of, fit in their workflow, and would aid them immensely -- because that's /programming/, you need to get special programmer tools and training for that.
02:51:10 <Sgeo|web> elliott: but was "everyone" a smaller segment of the population? These days, more people from wider backgrounds are required to use computers.
02:51:15 <derrik> Sgeo|web: i have a coherent argument too, but why waste effort here among the incoherents?
02:51:22 <elliott> And programmers suffer, too; "writing a program" is a separate thing.
02:51:31 <monqy> derrik: what
02:51:32 <elliott> They can't apply their skills nearly so readily and easily outside that domain.
02:51:51 <elliott> derrik: Can you point me to something I've said about this that was incoherent? I'd be glad to elaborate.
02:52:05 <Sgeo|web> Maybe the system shouldn't make the distinction so readily, but there still needs to be a level at which a computer is usable without having to teach someone anything more than very, very simple stuff
02:52:19 <monqy> i said ceratin........therefore i'm an idiot and time spent on me or you is time wasted.........
02:52:27 <monqy> you said ceratin too.....the curse.....
02:52:48 <derrik> elliott: if your starting point is that the user/programmer distinction is harmful, there is nothing to elaborate, logically
02:53:00 <monqy> what
02:53:06 <elliott> derrik: I'm asking for you to clarify your opposing position.
02:53:11 <Sgeo|web> derrik: um, it's a conclusion that can be argued for or against.
02:53:12 <elliott> Sgeo|web: You again are falling into this trap where you imagine this (mythical) Average Programmer/User/Whatever and religiously make all these decisions based on them, because you make them more ignorant, less capable of learning, less motivated and less knowledgeable than any person truly is.
02:53:41 <elliott> Sgeo|web: It doesn't aid such people (who don't really exist, anyway); it's downright insulting and harmful to them, really, because it holds them back by imagining them in this image.
02:53:51 <derrik> if your idea is to do erase distinctions, it's not elaborating.. it's explaining stuff away
02:54:00 <elliott> Sgeo|web: But what you are also assuming is that programming necessarily has to be hard at all.
02:54:22 <elliott> Sgeo|web: There is no reason that using a UI cannot be a special case of programming, and an easy one at that, because a UI is backed by a program: it is just another abstraction.
02:54:33 <Sgeo|web> There are people who are less capable of learning, less motivated and less knowledgable. Or at least, I have anecdotal evidence of such, which isn't much, but still
02:54:33 <monqy> derrik: what
02:54:43 <monqy> derrik: elaborate
02:54:43 <elliott> What needs to be done is making the programming environment much more omnipresent, and integrating the transition from full UI to programming, blurring the boundaries, by making it just a special case.
02:54:50 <monqy> derrik: on why you won't elaborate
02:55:05 <monqy> derrik: alternatively, elaborate on the thing on which you won't elaborate
02:55:13 <elliott> Sgeo|web: Sure, but you take the absolute worst example imaginable -- that doesn't even form a coherent person, you just mentally answer every hypothetical question with the worst answer that could be given.
02:55:22 <Sgeo|web> elliott: an easy special case of programming might make sense
02:55:24 <elliott> Sgeo|web: Good god, learning Windows would be damn near impossible for such a person -- it's a nightmare.
02:55:29 <elliott> And indeed, it's a nightmare for people in practice, too.
02:55:41 <elliott> But not because they're idiots. Never ever assume people are idiots, because designing based on that will get you nowhere.
02:55:47 <elliott> Sgeo|web: That isn't what I meant.
02:55:49 <derrik> elliott: well, my elaboration.. do programmers work for a purpose or not?
02:55:56 <elliott> I do not want a fisher price interface on top of a language.
02:55:58 <elliott> derrik: Work when?
02:56:09 <zzo38> Then those people who cannot understand it should not use a computer.
02:56:22 <elliott> Sgeo|web: The point is that just as we build higher layers of abstraction as programmers, a full UI is just another layer of abstraction.
02:56:23 <derrik> elliott: ah, so you are so profoundly undistinguished.. no use then :)
02:56:27 <elliott> The problem is that it's implemented badly.
02:56:39 <elliott> Sgeo|web: It does not gel with the lower layers at all, there is no interaction from the user's POV whatsoever.
02:56:59 <monqy> derrik: are you being serious
02:57:04 <elliott> derrik: Whatever; you're avoiding answering any questions with any kind of directness by brushing them off with excuses and saying incoherent vague things to sound wiser.
02:57:17 <elliott> If you won't elaborate at all it clearly won't be productive to try and discuss this with you.
02:57:25 <Madoka-Kaname> derrik doesn't seem to be a very good debater... Might I suggest presenting an actual counterargument?
02:57:29 <elliott> Especially as I've written quite a load of paragraphs above elaborating upon and explicating /my/ position.
02:57:37 <elliott> Madoka-Kaname: I doubt he has one.
02:57:47 <Sgeo|web> elliott: I can vaguely imagine what you want, and agree it would be preferable. But it should be such that it's usable even with minimal learning.
02:57:54 -!- DHeadshot has joined.
02:58:01 -!- DH____ has quit (Read error: Connection reset by peer).
02:58:12 <elliott> Sgeo|web: Nothing is usable with minimal learning.
02:58:15 <derrik> elliott: in any logical discussion your "work when?" has no meaning.. in a logical discussion, when one says "programmers work" it means they are programming.. this is kindergarten level of communication.. if you need to be taught this, it's kind of sad
02:58:23 <zzo38> But when I have equipment/time/etc, I can build the computer, it will have both Forth and BASIC built-in you can write a program, yourself, or from book, or whatever. However, you can use the computer without that if you have other programs; if you have the physical media for the program, insert it and push START button on game controller, it will load by itself.
02:58:32 <elliott> Sgeo|web: If you think Windows, if you think Ubuntu, if you think OS X, if you think the OLPC, if you think any interface is usable with minimal learning, you are wrong and this is not true in practice at all
02:58:36 <monqy> derrik: ahahaha wow did you really just say that
02:59:04 <zzo38> Therefore, this way, it shall makes more sense. You can write programming directly but it work even if you know nothing about the system other than push START.
02:59:07 <elliott> Sgeo|web: Those systems that are especially easy to learn -- that a lot of people can pick up within days to do very simple tasks -- are just simply done by staying as close to real-world analogies as possible, which we have put a whole backbreaking childhood into learning and internalising.
02:59:07 <monqy> derrik: must we follow your rules of conversation to get you to coax an elaboration out of you, or are you merely avoiding it?
02:59:10 <Madoka-Kaname> derrik, go between a UI, a highly configurable UI, a batch processing system system with no control flow, one with conditionals/basic control flow, and so on.
02:59:13 <elliott> Sgeo|web: Which is not easy at all. And those UIs don't scale.
02:59:19 <Madoka-Kaname> When and why does it start becoming programming.
02:59:25 <elliott> derrik: No, you said "do programmers work for a purpose".
02:59:31 <Sgeo|web> I think someone who struggles with basic concepts in Windows but barely survives by memorizing an exact sequence of steps to take should be able to survive this system in the same way.
02:59:31 <elliott> derrik: My question was asking:
02:59:36 <Sgeo|web> And I do have a specific person in mind.
02:59:39 -!- elliott has left ("Leaving").
02:59:41 -!- elliott has joined.
02:59:51 <elliott> derrik: Are you asking: Do programmers "work for a purpose" when they are actually writing lines of code?
02:59:55 <elliott> When they are presenting code to others?
02:59:58 <elliott> As people generally?
03:00:06 <elliott> Then I would ask: What does working for a purpose means?
03:00:25 <elliott> You seem to be assuming the absolute least meaningful interpretation of what I'm saying. That's not a conducive environment.
03:00:25 <monqy> elliott: I think it's that "if normal people aren't programmers, what good are programmers?" but that's a really dumb argument
03:00:29 <Sgeo|web> Is derrik trying to talk about programmers making money?
03:00:33 <elliott> Sgeo|web: They can survive any system with that.
03:00:53 <elliott> Sgeo|web: If someone is just parroting, then they rely only on nothing ever changing, and the limits of their memory in terms of number of actions.
03:01:30 <elliott> It is pointless to think about them. And anyway if someone is operating in that way it just means the system has failed them in terms of educating them to use a computer effectively (which of course is the norm nowadays).
03:01:33 <elliott> monqy: s/aren't/are/ surely?
03:01:45 <derrik> elliott: if there is a purpose (money, code, completed interface, whatever) then the user/programmer distinction is necessarily there..
03:01:50 <monqy> elliott: oh right
03:01:52 <elliott> I /think/ derrik is trying to say that programmers have a purpose (to produce a product application), whereas users don't.
03:02:11 <elliott> But that's clearly not true: In an open source environment, programmers work by scratching their own itch: they work to accomplish a problem/task they have.
03:02:21 <elliott> And that's what users do, too: they do what is necessary to accomplish a task they have.
03:02:28 <monqy> derrik: that's an entriely irrelevant distinction
03:02:29 <Madoka-Kaname> Python console/bash console/etc
03:02:32 <hagb4rd> unsigned eyeofhorus? http://en.wikipedia.org/wiki/Eye_of_Horus#In_arithmetic http://en.wikipedia.org/wiki/I_Ching#The_hexagrams
03:02:36 <elliott> derrik: It is really irrelevant to drag employment which is inherently based on the existing dichotomy into this.
03:02:44 <monqy> derrik: this is between users who can write code and users who can't; yours is about those who do it professionally
03:02:47 <elliott> It forms a circular argument: Programming is a profession, so programmers are different to users.
03:02:58 <elliott> But programming-as-a-profession assumes the distinction; you can't use it as an argument.
03:03:03 <zzo38> Yes; I write program, generally for whatever I am making.
03:03:15 <Sgeo|web> I think user/programmer dichotomy can be eliminated without eliminating programming-as-a-profession
03:03:20 <derrik> elliott: of course anyone can be both user and programmer, but this does not mean the distinction does not exist.. when you read a book and learn stuff from there, you are your own teacher, while you are a student too.. the distinction is quite necessary
03:03:46 <Sgeo|web> After all, no one's going to want to write all the stuff to do XYZ themselves, they have other chores they have to do
03:03:47 <elliott> derrik: Then tell me where you draw the line. Looking at a person sat at a computer, how can you tell whether they are using or programming?
03:03:50 <pikhq_> Sgeo|web: That'd leave it more akin to the distinction between a professional mathematician and a recreational one, though.
03:04:29 * Sgeo|web is a bit uncertain as to the distinction between professional mathematician and recreational
03:04:36 <Sgeo|web> What is a professional mathematician
03:04:38 <derrik> elliott: i don't need to know it about others, as long as i don't need to contact them.. but i clearly need to know it about myself, when i am coding.. i need to know why i am doing it, what will i do with the result, etc
03:04:51 <pikhq_> Sgeo|web: Academia. Versus people doing it for shits and giggles.
03:04:56 <elliott> derrik: I'm not asking you to do it in practice.
03:05:02 <Sgeo|web> derrik: a user has a purpose: To accomplish task XYZ.
03:05:02 <pikhq_> It's a bit of a fuzzy distinction.
03:05:14 <elliott> derrik: I'm asking, as a method of dialogue, to describe to me how you would distinguish any given hypothetical user at a computer, whether they are using or programming.
03:05:27 <elliott> That will then define what you say is the barrier between using or programming in a way that is easiest for me to understand.
03:05:42 <derrik> Sgeo|web: i never said user has no purpose.. user has users' purposes, programmer has programmers' purposes
03:06:09 <Sgeo|web> How do you distinguish between a user purpose and a programmer purpose?
03:06:20 <elliott> derrik: So can you do that?
03:06:34 <monqy> derrik: how about this: to play along with your words: and make you happy: everyone can be and is a programmer to some degree. that's what we were discussing before you misinterpreted it.
03:06:36 <derrik> elliott: hypothetically, it is hypothetical.. could be both, and could be one of those.. depends on the purpose
03:06:57 <Sgeo|web> How is that even an answer to anything elliott asked
03:07:08 <elliott> derrik: Yes, it's a nice tautology. I'm asking you to tell me what questions you would attempt to answer about what the user is doing to determine whether they are using or programming.
03:07:15 <derrik> i mean, hypothetically i don't care.. but if there is a purpose, it can be figured out
03:07:20 <elliott> Your job is to go around and look at people who use computers, and to tell me whether they are using or programming.
03:07:24 <zzo38> I do not have SQL reporting program right now because it is on the FreeGeek computer. But I will post it when I can do so, in case it is program you want to use (or to modify).
03:07:24 -!- Jafet1 has joined.
03:07:31 <elliott> What questions would you attempt to get the answers to, about what they are doing, so you could determine this?
03:07:43 <elliott> If you refuse to participate in this because it's hypothetical, then you're just obstructing the argument; of course it is, it's a tool I use to understand your positions better.
03:07:44 <Madoka-Kaname> derrik, what's experiments on the Python console, or one shot commands in bash?
03:08:16 <Sgeo|web> "Are you doing something that will result in an entity that can be reused in situations other than this specific o..." wait, one-shot scripts
03:08:24 <hagb4rd> to become better programmers we need to get some insight on our nature..and breed some purpose
03:08:38 <elliott> Sgeo|web: Asking derrik, not you :)
03:08:38 <derrik> elliott: if my job is to keep an eye on if people behind computers are working, i would watch what they are typing, if it is what they are supposed to be typing.. simple enough?
03:09:12 <zzo38> Of course you write a command in the UNIX shell, or multiple commands, combined in whatever way possibly by pipes. I prefer the way program are operated by pipes.
03:09:21 <monqy> hagb4rd: hi
03:09:25 -!- Jafet has quit (Ping timeout: 265 seconds).
03:09:32 <hagb4rd> hey monqy
03:09:48 <Sgeo|web> Bash kind of makes the "distinction" blurry, but Bash sucks as a language
03:11:04 <monqy> windows ui is like a language of clicking on things..........natural language is like a language of natural........
03:12:12 -!- Jafet1 has quit (Client Quit).
03:12:34 <elliott> derrik: Sure.
03:12:36 <elliott> derrik: What would you watch for?
03:12:39 <elliott> What patterns in the typing?
03:12:57 <elliott> Obviously, you can't just go by if they were typing or not, because then you'd have to answer "Are they using or programming?" with only a yes/no to "Are they typing?">
03:13:04 <elliott> I'm asking what questions you need to determine that.
03:13:12 <elliott> You can ignore edge-cases, I'm just asking how you would generally determine this.
03:13:22 <monqy> people who aren't programming don't necessarily not have the capacity......
03:13:28 <Madoka-Kaname> Also, programmers write documentation.
03:13:29 <Madoka-Kaname> Hopefully
03:13:43 <Sgeo|web> And some people who are programming don't have the capacity...
03:13:44 <pikhq_> Madoka-Kaname: Wishful thinking if ever I saw it.
03:13:45 <Madoka-Kaname> Well, programmers writing applications at least.
03:14:40 * Sgeo|web brings to mind one horrible LSL script he saw once
03:15:06 <Sgeo|web> Just... lines of repeated code, one number changed by a certain amount each time. With one exception, where they messed up.
03:15:16 <Sgeo|web> And this code was posted for others to use.
03:15:22 <monqy> did they use it
03:15:48 <derrik> elliott: the key here is what they are *supposed to be typing*
03:15:55 <Sgeo|web> No idea
03:16:00 <elliott> derrik: Supposed to?
03:16:05 <elliott> As in, someone is telling them to type certain things?
03:16:09 <Madoka-Kaname> derrik, what is a visual programming language?
03:16:17 <Madoka-Kaname> I dunno
03:16:45 <Madoka-Kaname> I believe a meaningful distinction can be made, but this isn't anything close to it
03:17:55 <derrik> elliott: they are typing because somebody already told them to type certain things.. and the supervisor will watch if the typing matches what the programmer is supposed to be typing.. now, can you think of more ways how to not parse simple expressions?
03:18:10 <Sgeo|web> Would a distinction reliant on the current dichotomy count?
03:18:20 <elliott> derrik: Umm. But I'm a programmer, and I don't have any supervisors, and nobody tells me what to type.
03:18:35 <monqy> you tell yourself what to type dummy
03:18:37 <Sgeo|web> derrik: do you really think all programmers program exclusively at jobs?
03:18:39 <monqy> 8)
03:18:53 <Sgeo|web> Recreational programming does not exist.
03:19:00 <derrik> elliott: then you made up a useless hypothetical situation.. good job
03:19:04 <monqy> what
03:19:10 <elliott> derrik: What?? But that's true.
03:19:12 <elliott> That's not hypothetical.
03:19:23 <Sgeo|web> This network is for non-existent projects
03:19:25 <elliott> I _am_ a programmer, I _do_ have no supervisor, because nobody employs me to program; I program of my own free will.
03:19:26 <monqy> what was the hypothetical and how was it useless
03:19:38 <elliott> I'm an open source programmer who programs in his free time because I love doing it.
03:19:41 <hagb4rd> i'd never believe mono would get things done so easy..just successfully migrated big parts of etl-app without editing a single line of code (win->redhatlinux)
03:19:45 <elliott> How is that hypothetical? How am I not a programmer?
03:19:50 <hagb4rd> and its even faster^^
03:20:00 <derrik> <elliott>derrik: I'm asking, as a method of dialogue, to describe to me how you would distinguish any given hypothetical user at a computer, whether they are using or programming.
03:20:05 <elliott> Can you really say that the huge, reliable open-source codebases out there programmed by people in their own free time were not built by programmers because they weren't being employed to do it?
03:20:22 <elliott> derrik: Right. So you said: find out what they're being told to type by their supervisor.
03:20:31 <elliott> But that obviously fails, because there are many programmers doing it without a supervisor.
03:20:42 <elliott> So that doesn't work to distinguish any hypothetical user because it misses out huge, huge swathes of them.
03:20:56 <derrik> the hypothetical situation was made up by you alone.. in a dialogue, you are useless
03:20:59 <elliott> So I'm still left completely unenlightened as to how you define the distinction between "user" and "programmer", apart from "employment".
03:21:28 <monqy> derrik: it wasn't useless; it was a technique of argument to demonstrate that you are Wrong
03:21:33 <elliott> Nobody else here seems to think I'm useless; I've written hundreds of quite clear (in my opinion) paragraphs of exposition and expansion on my positions, trying to explain what I think and why I think it, and how this can be applied in practice.
03:21:46 <monqy> derrik: what if: you: are useless
03:22:00 <elliott> You've been very vague, everyone's asked you what you meant (and indeed I have many troubles determining too, which is why I was trying to ask in a dialogue format so you can explain to me more naturally, as this is very helpful in practice).
03:22:13 <elliott> With all due respect, I really don't think I can be said to be the useless one in this dialogue.
03:22:14 <derrik> elliott: simple enough, there are programmers who have supervisors.. how about that?
03:22:26 <elliott> What about it? Of course there are.
03:22:32 -!- augur has quit (Remote host closed the connection).
03:22:33 <elliott> Is that how you define the distinction between users and programmers?
03:22:39 <elliott> Whether they have a supervisor telling them to program or not?
03:22:52 <pikhq_> There are also definite non-programmers who have supervisors.
03:23:01 <pikhq_> For instance, people who do not use computers in any way.
03:23:03 <elliott> I mean, if there is a meaningful distinction, which you contend there definitely is, then there is a definition of how a user differs from a programmer; what additional facets a programmer must possess to be a programmer on top of just a user.
03:23:17 <hagb4rd> what is the underlying question? sry :)
03:23:17 <elliott> I'm trying to ask you to articulate or at least broadly define roughly what characteristics these are.
03:23:29 <hagb4rd> must have missed it
03:23:34 <derrik> elliott: conclusion - at least you can tell the difference between a programmer and a supervisor.. it's not my problem that you can't make any further distinctions
03:23:41 <monqy> what
03:23:48 <elliott> hagb4rd: My contention is that the user/programmer distinction is fundamentally meaningless, misleading and harmful to both supposed groups; derrik disagrees.
03:23:58 <elliott> derrik: I'm not sure what you are trying to say.
03:23:59 <hagb4rd> ah
03:24:15 <elliott> derrik: Can we forget about this failed avenue and you maybe answer my question directly? :)
03:24:27 <elliott> I mean, it seems pointless to continue going down it since it obviously hasn't worked to make us understand each other's opinions.
03:24:29 <hagb4rd> thanks elliott, i would agree but still don't see what derrik is out to say
03:24:35 <elliott> What characteristics must a programmer have to be a programmer and not just a user?
03:24:42 <elliott> If there is a meaningful distinction, then these must exist.
03:25:15 <derrik> elliott: you are the programmer, yet you consider yourself just a user?
03:26:03 <elliott> I find "just a user" quite offensive. It's true that certain very unfortunate and harmful realities of current systems force there to be a barrier, but like I said, my contention is that it is completely artificial, with the only real distinction being those who have managed to cross that barrier, which is in large part due to chance.
03:26:14 <elliott> Still, that seems quite a personal remark. Do you not want to answer my question of what the distinguishing characteristics are?
03:26:21 <hagb4rd> y is that important.. i consider myself a wizard
03:26:32 <derrik> the distinction is plain and clear enough for me.. you were able to see distinctions between a programmer and a supervisor.. you knowingly muddle the distinction up between a user and a programmer
03:27:28 <derrik> i don't think i need to explain the distinction, because i have already done it ad nauseam.. now it's your turn to explain the distinction away, coherently
03:27:38 <pikhq_> You haven't even done it once.
03:27:44 <elliott> derrik: I'm sorry, but I really don't see what you consider the distinction.
03:27:46 <elliott> Is it supervisors?
03:27:49 <pikhq_> You have merely asserted there is one.
03:27:59 <elliott> Sure, I might just be being thick, I agree it's entirely possible. But please, I ask you to try and help me.
03:28:09 <elliott> What are the characteristics that distinguish a mere user from a programmer?
03:28:34 <hagb4rd> the context?
03:28:36 <hagb4rd> :>
03:28:40 <elliott> I mean... you say that since programmers and supervisors are "obviously" separate with no justification, one can similarly draw such an obvious boundary between programmer and user that it cannot be explained.
03:28:43 <derrik> elliott: programmer creates, the user consumes.. is this a meaningless distinction?
03:28:49 <elliott> So, I would just be arguing that apples and oranges are a meaningless distinction.
03:28:58 <elliott> But this seems unreasonable, because I can use it to justify any unreasonable distinction:
03:29:07 <elliott> Say we divide people into two groups, blah groups and bleh groups, completely randomly.
03:29:31 <elliott> Since programmers and superiors can be distinguished, I could say that someone was being unreasonable to assert that blah/bleh was an arbitrary distinction, by using that same analogy.
03:29:38 <elliott> It doesn't seem to say much about programmers and users, only programmers and supervisors.
03:29:48 <elliott> derrik: The user consumes? But users create tons of things with computers every day.
03:29:54 <derrik> elliott: the distinction here is not between apples and oranges, but between an apple tree and the one who is picking apples
03:30:09 <elliott> And programmers consume in abundance -- libraries, for instance.
03:30:13 <derrik> the mistake is too profound
03:30:18 <elliott> A user is programming when they use Word's search and replace.
03:30:21 <elliott> They have automated, abstracted a task.
03:30:24 <hagb4rd> duality trap
03:30:29 <elliott> They have turned looking and manually replacing each word in a document...
03:30:30 <hagb4rd> detected
03:30:42 <elliott> With an abstracted window that replaces each occurrence with only one click.
03:30:44 -!- oerjan has quit (Quit: Good night).
03:30:49 <elliott> This is like a programmer turning a hundred lines of repetition into a single function call.
03:30:52 * Sgeo|web has come up with a way to make the distinction, but it disqualifies HQ9+ programmers from being programmers.
03:30:52 <elliott> That is programming.
03:31:05 <elliott> How is what the user is doing there different in form from what the programmer is doing?
03:31:09 <derrik> elliott: i know that.. that's an apple tree.. just plant the seed
03:31:14 <elliott> Sure, what the user does is not seen/reused by other people.
03:31:21 <elliott> But programmers very often create personal, private scripts for their own use.
03:31:28 <elliott> derrik: I don't understand your analogy.
03:31:43 <derrik> elliott: i agree with you - you are thick
03:32:02 <elliott> derrik: At least I'm civil.
03:32:04 <Sgeo|web> Programming is providing a computer system instructions, where the set of instructions is enough to simulate a turing machine.
03:32:11 <Sgeo|web> ...that disqualifies C programmers.
03:32:29 <Sgeo|web> just replace turing machine with ... what's the finite version
03:32:44 <pikhq_> Sgeo|web: It also replaces programming with programming a compiler or interpreter.
03:32:48 <Sgeo|web> I think I may have disqualified writing SQL queries from "programming"
03:33:08 <pikhq_> i.e. you are only 'programming' if you are creating a TC program.
03:33:10 <pikhq_> :)
03:33:30 <hagb4rd> programming is reflecting
03:33:44 <elliott> derrik: So will you be civil or will you just continue insisting I'm the one who's wrong for, like most everyone talking right now, not understanding your convoluted and seemingly-meaningless metaphors? If you call me thick, that's just admitting you've lost the argument.
03:34:04 <Sgeo|web> pikhq_: by "set of instructions", I mean the available set of instructions, not just the instructions used in the provided programs.
03:34:18 <hagb4rd> are you a supervisor derrik?
03:34:54 <Sgeo|web> So using any TC language should qualify
03:35:01 <derrik> elliott: please, it was your own word, long before i said it.. i'm no less civil than you
03:35:29 <elliott> There's a difference between self-deprecation in humbleness to be polite and to attempt to foster a productive discussion and insults.
03:36:03 <elliott> I just wish you would be clear rather than being obscure and accusing me of "just not getting it" when I don't immediately see your position without you having specified it at all.
03:36:12 <derrik> elliott: oh, yes, i understood well.. you also asked me to help you.. don't you appreciate it?
03:36:24 <Sgeo|web> This does make the person ssh'ing into a server to admin Apache a "programmer" due to the console's weak programmer/user distinction
03:36:37 <Sgeo|web> And the person writing SQL queries all day not a programmer.
03:36:38 <elliott> derrik: I wish I could say I appreciated it, but I don't really think you've helped yet.
03:36:48 <Sgeo|web> I don't think this is fixable.
03:37:01 <derrik> elliott: thank me for the effort i wasted until now, then i can agree you are civil, and we can go on
03:37:19 <hagb4rd> this is so human
03:37:21 <elliott> derrik: Sure. I'll thank anyone for spending the time of day trying to debate their positions rationally.
03:37:28 <Sgeo|web> hagb4rd++
03:37:28 <hagb4rd> he pass the test
03:37:48 <elliott> Sgeo|web: ?
03:38:08 <Sgeo|web> I thought hagb4rd was commenting on human tendency to get into conflict
03:38:20 <monqy> specifically stupid bad conflict
03:38:25 <elliott> Sgeo|web: Does what I'm saying sound like conflict? If so, I'm sorry.
03:38:35 <derrik> elliott: well, are there any other similar distinctions that are useless in your mind? teacher/student for example?
03:38:40 <hagb4rd> no, it just reached its peak
03:38:45 <hagb4rd> everything is fine now
03:38:55 <derrik> elliott: salesman/buyer?
03:39:13 <elliott> derrik: I'm sure there are other distinctions I would consider useless... but I find your examples pretty well selected against what I'm saying, because you're choosing some classic dichotomies.
03:39:39 <derrik> to teach well, the examples must be well selected..
03:39:39 <elliott> derrik: Do you agree that programming is, at least, a type of using? One who programs a computer is using it, to program it?
03:39:45 <elliott> Whereas one who is buying is certainly not selling.
03:40:06 <Sgeo|web> elliott: Ada Lovelace programmed a computer without using it..
03:40:14 <derrik> elliott: of course any workman *uses* tools..
03:40:32 <elliott> Sgeo|web: Well, sure. That's not exactly a common scenario, though.
03:41:28 <elliott> derrik: I mean, if I were asked to produce what someone /might/ say were a list of characteristics that programmers have that users don't...
03:41:31 <elliott> I might say:
03:41:38 <elliott> - Is using an editor with syntax highlighting
03:41:50 <elliott> - Is using a compiler or interpreter, for instance in a terminal
03:42:10 <elliott> - Is causing interfaces to appear/be created on the screen that were not present prior of their own invention.
03:42:19 <elliott> derrik: Do you agree that these are some reasonable characteristics?
03:42:35 <Sgeo|web> Excel is an interpreter...
03:42:37 <Sgeo|web> >.>
03:42:40 <monqy> <.<
03:43:00 <pikhq_> Sgeo|web: Very much so. And it's even used as such.
03:43:02 <derrik> elliott: at least add to it - knowledge of programming languages
03:43:20 <elliott> derrik: Ah, but I am trying to distinguish someone who is in the /act/ of programming.
03:43:36 <Sgeo|web> There we go, the original question elliott asked. Except rework it to "currently using a programming language"
03:43:41 <pikhq_> derrik: Then nearly every UNIX shell user is a programmer.
03:43:44 <derrik> elliott: what use is an editor with syntax highlighting if you don't know what syntax is?
03:43:55 <pikhq_> Also nearly every DOS user.
03:43:58 <elliott> derrik: After all, a person who knows seventeen programming languages off by heart and uses them for twenty years but then retires, swears off programming, and just browses the web and uses Microsoft Office -- they're not a programmer, they're an ex-programmer.
03:44:16 <elliott> So I guess it is necessary but not sufficient.
03:44:20 <pikhq_> And, really, just about any user of any computer before the commonality of GUI.
03:44:24 <elliott> derrik: But do you agree that those are reasonable distinguishing characteristics?
03:44:37 <Sgeo|web> pikhq_: my criterion does the same, right?
03:44:53 <pikhq_> Sgeo|web: Yeah.
03:45:33 <derrik> elliott: knowledge of programming languages is kind of vital for a programmer.. if you don't know what syntax is, syntax highlighting is useless.. if you don't know what compilers do, no use of those.. etc
03:45:51 <elliott> derrik: That's what I said: necessary but not sufficient.
03:46:25 <derrik> elliott: man, a child first learns the letters, and then writes and reads and types.. not the other way
03:46:36 <elliott> I'm not disagreeing.
03:46:40 <elliott> Why do you think I am disagreeing?
03:46:50 <Sgeo|web> Ooh, I figured out how to fix it: Programming is the act of using an instruction set where the intersection of what the person is able to use and is considering using, and what exists within the instruction set, is turing complete.
03:47:05 <Sgeo|web> So, someone using ls and cat etc. is not programming.
03:47:25 <pikhq_> But someone using C is not.
03:47:29 <Sgeo|web> Argh
03:47:29 <derrik> because you did not include knowledge of programming languages among the characteristics, elliott..
03:47:29 <elliott> Sgeo|web: So a programmer who idly considers writing a script to fix something but ends up manually doing it anyway is programming?
03:47:40 <elliott> derrik: But then I later amended it too, and called it necessary but not sufficient.
03:47:44 <elliott> Sorry for making errors.
03:48:14 <Sgeo|web> pikhq_: obviously, replace turing complete with whatever-it-is-C-is.
03:48:30 <derrik> elliott: now, all these characteristics can be used to distinguish a programmer from a user.. when you don't have these characteristics, but you are behind a computer using it, you are not a programmer, just a user
03:48:45 <pikhq_> Sgeo|web: FSA.
03:49:01 <Sgeo|web> elliott: hmm, not sure how to fix that, if it's even fixable
03:49:09 <pikhq_> Sgeo|web: Which leaves you with rather a huge problem, because there's a metric fuckton of FSAs.
03:49:21 <Sgeo|web> Is there a most powerful FSA?
03:49:24 <elliott> derrik: OK. What about a person who writes some macros in Word that pops up a box where the user fills in a few fields to, say, perform an automated series of finds and replaces? (But they never leave Word.)
03:49:28 <elliott> They're programming, right?
03:49:28 <Sgeo|web> Erm, wait, what
03:49:29 <derrik> hence user/programmer distinction exists.. q.e.d.
03:49:38 <monqy> sorry to bring up bad memories, but was the point for which the programmer/user dichtomy was brought up not that of capacity to program, say in usage of an application, rather than expertise in the subject?
03:49:39 -!- calamari has quit (Quit: Leaving).
03:49:45 <monqy> or have we just derailed that much
03:49:49 <monqy> that we don't even care
03:49:50 <monqy> ;_;
03:50:02 <hagb4rd> what about some cooking spaghetti while singing a song?
03:50:04 <elliott> monqy: It's a bit more subtle than that, but that seems closer.
03:50:05 <Sgeo|web> monqy: me complaining about something that zzo38 wasn't doing
03:50:40 <hagb4rd> its my spaghetti cooking algo
03:50:49 <pikhq_> Sgeo|web: No, there is not a most powerful FSA.
03:50:56 <zzo38> That I wasn't doing?
03:51:08 <monqy> so the relevance of user/programmer was in determination of if users can be expected to "program"
03:51:15 <Sgeo|web> pikhq_: Least powerful FSA able to accomodate C?
03:51:26 <zzo38> Now you write a lot of stuff try to argument about many things; OK if that is how you want to do
03:51:48 <Sgeo|web> zzo38: I thought you were doing something I disliked but you weren't
03:51:51 <elliott> Sgeo|web: that's just "an FSM with <N states"
03:52:08 <zzo38> Sgeo|web: What that you disliked?
03:52:35 <Sgeo|web> You requiring "end-users" to program for something that vaguely sounded like it didn't need it
03:52:42 <derrik> elliott: your last question (about word macros) you already answered yourself
03:53:11 <elliott> derrik: Alright. What about someone who writes a macro that doesn't present any interface, it's just a hardcoded list of phrases, and then a loop to search and replace each one of those? Still programming?
03:53:15 <elliott> There is a point to this, believe me.
03:53:16 <zzo38> Do you mean the SQL reporting program? You need to write the programming if you are making up new reports, but to just use existing report programs you do not need to do so.
03:53:40 <Sgeo|web> I'm going to go eat cake
03:53:42 <zzo38> You can just use whatever front-end you normally use for the databases, and the report will work.
03:53:59 <derrik> elliott: is syntax highlighting there? are compilers there or the user aware of using compilers? is he creating interfaces that weren't there in the first place? you answered your own question
03:54:04 -!- augur has joined.
03:54:32 <elliott> derrik: No, their macro editor doesn't have syntax highlighting. The user isn't aware that there is a compiler or interpreter involved, they just know that Word accepts their macros as a kind of language.
03:54:37 <elliott> There is no interface created because it is a one-time task.
03:54:41 <elliott> So are you saying this is not programming?
03:54:54 <zzo38> I think VBA does have syntax highlighting.
03:55:25 <hagb4rd> i would go further..every kind of plan you make to achieve sth, like catching your train is programming
03:55:29 <derrik> elliott: one-time tasks, if they don't create a program, are certainly not programming
03:55:47 <elliott> derrik: But they wrote a loop to process the list of phrases and call the Word function to replace them.
03:55:51 <elliott> Are you really saying that's not programming?
03:56:07 <zzo38> How do I do comma categories in Haskell?
03:56:13 <elliott> It even involved array indexing.
03:56:16 <derrik> elliott: yes, i can do it even without a computer.. i am an editor (in the original sense of the word) not a programmer
03:56:24 <elliott> derrik: But they wrote something like this.
03:56:33 <elliott> phrases = [['a','b'], ['c','d'], ...more phrases...]
03:56:34 <elliott> int i = 0
03:56:38 <elliott> while i < length(phrases)
03:56:46 <elliott> Word.ReplaceInDocument(currentDocument(), phrases[i][0],
03:56:53 <elliott> phrases[i][1]
03:56:56 <elliott> continue;
03:57:00 <elliott> Exit();
03:57:06 <derrik> elliott: good, so they learned a bit of code.. was the result a program?
03:57:11 <elliott> Are you really saying the act of that was not _programming_?
03:57:17 <elliott> Are you saying it was instead coding?
03:57:32 <derrik> it was not even coding, really..
03:57:39 <hagb4rd> lol
03:57:43 <monqy> i agree with hagb4rd
03:57:44 <Madoka-Kaname> derrik, define "coding" and "programming" already.
03:57:44 <derrik> what i would call coding, is to change code in a program
03:57:52 <Madoka-Kaname> Define "program"
03:58:09 <derrik> Madoka-Kaname: are you a programmer too?
03:58:22 <derrik> if yes, i don't have to define basic stuff
03:58:36 <Madoka-Kaname> derrik, I am, but I don't think our definitions of those words are the same.
03:58:38 <elliott> derrik: You are really saying that the authoring of a non-trivial loop involving such programming-related concepts such as loops, formal syntax, indexing, namespaces, functions, to accomplish an automated task which was given to an interpreter?
03:58:43 <elliott> Is not coding or programming?
03:58:53 <elliott> I don't think you will find anyone to agree with you on that point.
03:58:58 <Madoka-Kaname> Unless you want to define programmer as "somebody who (whatever you believe programming is) and agrees with me on the definitions of those terms"
03:59:07 <elliott> That is a very alien idea to me, that a program must be "this complex" or "in a file" or "syntax-highlighted" to be a program.
03:59:17 <elliott> That it has to persist beyond its initial use to be code.
03:59:32 <elliott> That is really at odds with anything I've ever heard or thought about programming, and I don't think it makes sense at all.
03:59:45 <elliott> The definition of code suddenly carries all this baggage about what you'll do with it /later/.
03:59:51 <zzo38> That is what happens when you decide complicated philosophical stuff.
04:00:12 <elliott> I might expect to hear that judgement of what is code and what isn't from a non-programmer, but to hear it from you (I presume you are a programmer) is very surprising to me indeed.
04:00:55 <Madoka-Kaname> I'm going to go with "either derrik fails to have a point, doesn't know what their point is, or is a horrible debater"
04:01:00 <Madoka-Kaname> Maybe a combination of two or three.
04:01:11 <elliott> Madoka-Kaname: That's not really helpful.
04:01:50 <derrik> elliott: i don't think i need to agree with you.. there is something called logic (of language).. in that logic, all distinctions may become relevant in a certain context, even user/programmer.. and they may lose their relevance in certain contexts.. if you never created a program for an end user, and never will, yes, the distinction is irrelevant for you, but it is very relevant for the...
04:01:51 <derrik> ...overwhelming majority of computer users who don't even know macros
04:02:06 <elliott> derrik: What relevance does that have to the case being discussed?
04:02:13 <elliott> I know what logic is, but how is that relevant?
04:02:17 <elliott> Sure, all distinctions could be relevant in SOME context.
04:02:30 <elliott> But so could my "divide people into two random groups and call them blah and bleh" distinction.
04:02:35 <derrik> elliott: now, please remind me, what "case" are we discussing?
04:02:42 <elliott> That doesn't mean blah/bleh is a useful, helpful distinction, that we should create Blah Products and Bleh Products...
04:02:49 <Madoka-Kaname> elliott, if you ask me, the difference between programming and not-programming is the ability to solve novel problems.
04:02:53 <Madoka-Kaname> Most UIs don't have that.
04:03:14 <elliott> derrik: The user who wrote a predefined list of phrases in a macro with a loop to replace each of these phrases, only once, without syntax highlighting or a true knowledge of what a compiler or interpreter is.
04:03:22 <Madoka-Kaname> (Which doesn't sound like derrik's point at all.)
04:03:30 <elliott> But using arrays, while loops, array indexing, incrementing, syntax, function calls...
04:03:45 <elliott> And with the intent to make Word follow their automated desires, as is the intent of all programmers.
04:03:54 <elliott> You say this is not programming because it does not produce a persistent "program".
04:03:56 <derrik> elliott: you already answered that question yourself.. take some other case now
04:04:04 <elliott> And you said it wasn't coding either.
04:04:09 <elliott> derrik: I didn't.
04:04:13 <elliott> You disagree with my answer.
04:04:13 <hagb4rd> its called polemic at was a prospering art/discipline during in ancient greece
04:04:17 <elliott> I find this a very important point.
04:04:24 <elliott> I don't think we can continue without this being resolved.
04:04:29 <derrik> elliott: your characteristics were the answer
04:04:37 <elliott> derrik: My characteristics were not to set any definition in stone.
04:04:50 <elliott> I was providing a list of example characteristics that someone who holds your position might use to answer my previous question.
04:05:00 <elliott> I was trying to show the kind of answer I was looking for to better understand you.
04:05:10 <derrik> elliott: oh, then we will have to build it up from the basics again... some other day, kthanksbye
04:05:17 <elliott> You agreed that they were reasonable characteristics, but in this case they have produced what to me seems like an incredibly absurd result.
04:05:26 <elliott> derrik: Are you just trying to waste my time?
04:05:32 <Sgeo|web> elliott: my new criterion is still narrow than the old one, assuming that "doing it manually" was still doing it in bash or something
04:05:45 <Sgeo|web> narrower
04:06:03 <Sgeo|web> AFK for a short to less short period of time
04:06:38 <Madoka-Kaname> derrik, you have demonstrated an unwillingness to actually argue your point. You arn't going to convince anybody like that. This is the mild version of what I have to say about doing that
04:06:44 <elliott> derrik: You really just seem to be leading me on, aided by lots of vague statements and claims to me and others that you don't have to explain yourself because it's obvious.
04:07:18 <elliott> derrik: I have tried to be as polite and accommodating as I can, but for you to decide that suddenly the fact that you don't have a snappy-but-unhelpful response to what I've said means you can just cut it short with a mocking "kthanksbye"...
04:07:19 <Madoka-Kaname> There's demonstrating an unwillingness to argue, there's actually trying to argue, and then there's this.
04:07:25 <elliott> derrik: What I'm saying is, fuck you.
04:07:43 <Madoka-Kaname> <Madoka-Kaname> elliott, if you ask me, the difference between programming and not-programming is the ability to solve novel problems.
04:07:43 <Madoka-Kaname> <Madoka-Kaname> Most UIs don't have that.
04:07:48 <elliott> derrik: And fuck you for making me waste all these keypresses when all you want to do is be stubborn and act superior that you understand all these "obvious" concepts and distinctions.
04:08:37 <elliott> derrik: Now I'm going to discuss this with people who deserve to be in this channel because they contribute productively and constructively by at least humouring and trying to come to an agreement when a point of debate is raised, rather than just wasting the other person's time with vagueness and unwillingness to argue (yet still replying that their position is clearly true) for long periods of time.
04:08:50 <elliott> derrik: Hopefully over time there will be more of them, and less of you.
04:09:00 <elliott> Now.
04:09:13 <elliott> Madoka-Kaname: I think that excludes a lot of programming in practice.
04:09:24 <elliott> People certainly do create the same web database interface CRUD apps day after day, after all.
04:09:26 <hagb4rd> it might console you that me at least enjoyed your unbreakable confindence in consense
04:09:44 <elliott> Madoka-Kaname: And though it doesn't exactly require your brain to do it, it's still programming, I think everyone would agree: same toolchain, same language, etc.
04:09:50 <zzo38> I expect in next D&D session I and my brother both gain an experence level; XP totals usually average 5000 per session. Now, to see if I can qualify for one prestige class or if I have to select the other one instead. I hope I am able.
04:10:00 <elliott> hagb4rd: Wow, consense is a word I'd never heard before.
04:10:06 <elliott> hagb4rd: But thank you, assuming you're addressing me. :)
04:10:16 <elliott> It's unfortunate that it couldn't have come to something productive.
04:10:17 <hagb4rd> ;)
04:11:18 <Madoka-Kaname> elliott, the distinction that I try to make is less "are solving a novel program" and more "the tools available can"
04:11:29 <Madoka-Kaname> Which is less talking about the person doing things and more about the thing they're using.
04:11:39 <elliott> Madoka-Kaname: Well, Word exposes a full programming language with complete API access to its users, via VBA.
04:11:50 <elliott> I suppose you can say that opening a VBA editor is tantamount to opening another tool entirely.
04:11:58 <elliott> Which I suppose is reasonable, but then tools are quite vaguely defined.
04:12:13 <elliott> Visual Studio might even have enough wizards to produce a very simple, nearly-useless GUI program without ever opening the code editor.
04:14:11 <Madoka-Kaname> elliott, I suppose you could say that without the VBA editor and support for the macros it generates, Word wouldn't be able to solve a completely new problem (well, I suppose you could do what /// does...)
04:14:32 <elliott> Madoka-Kaname: You should see the kind of mail merge setup I have, it's a TURING MACHINE. :p
04:14:36 <elliott> (It isn't but that would be cool.)
04:15:06 <elliott> Madoka-Kaname: But I think that actually supports my argument: Word only supports novel problems via a klunky side mechanism that is not nearly as easy to use as Word itself (well, Word itself is hardly a walk in the park, but I digress).
04:15:29 <elliott> The whole computing system should be equipped to solve novel problems as a whole, and each component should support this.
04:16:03 <Madoka-Kaname> Which... isn't exactly a trivial task.
04:16:14 <zzo38> Is "Barrier a c >>= f = Barrier a $ c >=> f" a proper monad?
04:16:30 <elliott> Madoka-Kaname: It's more like it's a difficult system to imagine starting from current systems as a base.
04:16:40 <elliott> I would say @ is actually a simpler system than a Linux desktop.
04:16:43 <elliott> By a very long way.
04:16:59 <zzo38> Is it possible to make comma categories in Haskell?
04:17:20 <elliott> http://hackage.haskell.org/packages/archive/data-category/0.4.1/doc/html/src/Data-Category-Comma.html
04:17:34 <elliott> Is what I found by googling
04:17:39 <elliott> http://hackage.haskell.org/packages/archive/data-category/0.4.1/doc/html/Data-Category-Comma.html
04:22:36 <Sgeo|web> The perfect distinction:
04:22:50 <Sgeo|web> Programming is any activity which a consensus of #esoteric agrees is programming.
04:23:21 <pikhq_> Sgeo|web: Vejn.
04:23:37 <Sgeo|web> ??
04:23:52 -!- arryl has joined.
04:25:04 <elliott> Sgeo|web: Like we ever get consensus.
04:25:20 <elliott> Well, I don't think anyone disagrees that @ is the best. If anyone thinks it isn't, they should be banned.
04:25:27 <elliott> Oh, wait, hi arryl, you look new, do you agree that @ is the best.
04:25:28 <elliott> `? welcome
04:25:30 <HackEgo> Welcome to the international hub for esoteric programming language design and deployment! For more information, check out our wiki: http://esolangs.org/wiki/Main_Page
04:25:59 * Sgeo|web just wants to know what "vejn" means
04:25:59 -!- arryl has quit (Client Quit).
04:26:10 <Sgeo|web> Hey, I can
04:26:16 <elliott> rip arylryl
04:26:19 <Sgeo|web> I can't even yell at elliott for scaring away the newcomer
04:26:30 <elliott> I just do that with welcoming now
04:31:02 <derrik> derrik: okay, thanks for being yourself there for a while.. the way i see it: we have been through two "cases" set forth by you.. the first was hypothetical and the next moment hypothetical was not good enough for you.. the second case was by the end of which you developed characteristics to distinguish user and programmer, which was exactly my point to prove.. then you tried to bring forth...
04:31:06 <derrik> ...a third case and drop your characteristics.. well, my effort to help you is good enough for one day.. i am a professional teacher by the way, and my the way i speak is consciously chosen to accommodate a self-admitted thick adult like you.. well, good enough for a day
04:32:05 <elliott> You're talking to yourself.
04:32:25 <derrik> elliott: yes, we did :)
04:32:33 -!- derrik has left ("left").
04:32:36 <elliott> I'm sorry to hear that you're a professional teacher; but at least kids must be used to that these days.
04:32:39 <elliott> Oh, good, he left.
04:32:45 <monqy> i'm glad too is this bad
04:32:59 <elliott> No I think he was pretty objectively a negative contribution to this place.
04:33:01 <monqy> and sorry for the kids too
04:33:09 <elliott> Maybe even Sgeo|web will agree, wait no he wants everyone in here.
04:34:34 <Sgeo|web> I kind of tuned him out when he started making non-constructive arguments
04:34:43 <Sgeo|web> I think I turned blind to the whole insult thing
04:34:56 -!- zzo38 has left.
04:35:18 <elliott> He just called me thick, but I was frankly looking for any excuse to change the tedious loop at that point.
04:35:25 <elliott> Did he ever make any constructive arguments?
04:37:14 <Sgeo|web> I.. don't think so. I tend to notice non-constructive arguments more than constructive ones. I hate non-constructive arguments, especially when I thought I previously agreed with their stance.
04:37:40 <Sgeo|web> Yeah yeah, call me out for being side-minded. I am human
04:37:50 <elliott> He's piped up a couple of times before, so I didn't really expect anything better.
04:38:11 <elliott> That was mostly an exercise in how ridiculously better one side of an argument can be. :p
04:45:15 <hagb4rd> ye teacher seems really to be the alternative solution if you failed completely..poor kids ack
04:45:40 <hagb4rd> supervisor!
04:47:14 <elliott> At least most of the conversations in here are productive :)
04:47:22 <elliott> Distinguishing conversations from flamewars :P
04:49:01 <Sgeo|web> elliott: if I added "ajkhdgoiyegro87ty68w374tvb583w74ytw78534tnh86,7w3s4ty5a789w2 tv587634t5vw78qa34t b5iwvakztJHGRy4 to7853qtb4678wbtgva4iuyt58y37a4bgt578q9a" to the submitted password and compared that sha1 to the stored sha1, would that be decent salting?
04:49:26 <Sgeo|web> Although I guess someone could generate a rainbow table for that particular salt
04:49:46 <Sgeo|web> But at least no pre-existing rainbow tables should be sufficient
04:50:09 <Sgeo|web> Although I don't think rainbow tables would be much use cracking one password? Would brute-force be better?
04:50:52 <pikhq_> You'd probably do better to actually create and store a random salt for each password.
04:51:11 <Sgeo|web> But there's only one password and it's hardcoded..
04:51:30 <pikhq_> The eff?
04:51:41 <pikhq_> But, yes, that would be decent salting.
04:51:52 <elliott> Sgeo|web: Don't add keyboard randomness.
04:51:54 <Sgeo|web> It's just a simple lab project, to get us to learn how to do forms
04:51:55 <elliott> That's a terrible source of randomness.
04:52:17 <Sgeo|web> elliott: o.O. Are there any actual examples or demonstrations of that being used?
04:52:22 <Sgeo|web> Although that is a good point
04:52:31 <elliott> Sgeo|web: Keyboard randomness is literally one of the worst sources of entropy, it's almost completely predictable.
04:52:32 <elliott> $ cat /dev/urandom | tr -cd a-zA-Z0-9 | head -c 99
04:52:32 <elliott> sCu0Z5H0UZwCEd7vagVU0DIdeZwoJXx7J8TLRdBOw5V9QjwomcGTETtt5TE0kBz6uGMcGl62UcqxtYgbmuzjjSiiamE0eOZQ9ta
04:52:38 <elliott> Use that. Except... run it yourself :P
04:52:46 <elliott> And use a nice power of two, not 99 X-D
04:52:52 <elliott> But yes, it would be fine for a single password.
04:53:01 <Sgeo|web> Why a nice power of 2 for a salt?
04:53:02 <elliott> Creating a rainbow table for one hash would basically defeat the point.
04:53:09 <elliott> Since the point is that you'd have one salt per password.
04:53:10 <pikhq_> Sgeo|web: Powers of 2 are nice.
04:53:14 <elliott> Sgeo|web: Because powers of two should always be used.
04:53:23 <elliott> I suggest 96 in this case, though it's excessive.
04:53:33 <Sgeo|web> 96 is a power of 2 now?
04:53:36 <elliott> Point.
04:53:42 <elliott> You should really use bcrypt or scrypt rather than plain SHA for passwording, anyway.
04:53:45 <elliott> But in PHP... yeaaah.
04:54:16 <Sgeo|web> I don't know if the professor even mentioned md5 to the class, but certainly was surprised by my use of sha1
04:54:26 <elliott> In a good way?
04:54:40 <elliott> Anyway, it's not really all that massively better.
04:54:44 <Sgeo|web> Oh
04:54:46 <elliott> You should definitely use at least bcrypt.
04:54:47 <monqy> store every password plaintext always: the sgeos school way
04:54:52 <elliott> (It used to be much better.)
04:54:58 <elliott> (But now it's only a few orders of magnitude better :P)
04:55:01 <Sgeo|web> Used to be?
04:55:05 <Sgeo|web> Oh, sha1, not bcrypt
04:55:07 <elliott> Right.
04:55:09 <elliott> There's a nice http://www.mindrot.org/projects/py-bcrypt/ which makes bcrypt easy.
04:55:17 <elliott> scrypt is The Hot New Thing though.
04:55:27 <elliott> "We estimate that on modern (2009) hardware, if 5 seconds are spent computing a derived key, the cost of a hardware brute-force attack against scrypt is roughly 4000 times greater than the cost of a similar attack against bcrypt (to find the same password), and 20000 times greater than a similar attack against PBKDF2."
04:56:40 -!- zzo38 has joined.
05:05:45 -!- GreaseMonkey has joined.
05:05:46 -!- GreaseMonkey has quit (Changing host).
05:05:46 -!- GreaseMonkey has joined.
05:09:04 <zzo38> Let's make side-bet of the D&D game that I am in.
05:10:39 <zzo38> shachaf: But what I have, it has three constructors; Unit, Barrier, and Fail (although you can omit Fail if you want to).
05:12:16 <zzo38> shachaf: It seem to me does satisfy. The one I am less sure, which is the one I ask, and why I ask (although I think is correct), is: Barrier a c >>= f = Barrier a $ c >=> f;
05:13:20 <zzo38> Yes; I just ask to make sure, in case I made a mistake.
05:14:04 -!- zzo38 has left.
05:14:44 <elliott> ...
05:27:09 -!- zzo38 has joined.
05:27:20 <zzo38> Let's made side-bet of Dungeons&Dragons game.
05:28:17 <elliott> ok
05:30:21 <quintopia> i wonder why the author of geom is so unsure as to whether it can be used to compute nonconstructible numbers. the only ways of generating new points appear to be compass and straightedge methods
05:32:32 -!- hagb4rd has quit (Quit: Nettalk6 - www.ntalk.de).
05:36:12 <Patashu> Is geom turing complete? It -should- be
05:36:42 -!- hagb4rd has joined.
05:38:20 <zzo38> Bet in difference of XP after next session of D&D game. To bet on the one after next worth more points, and one after that even more. etc. Same thing with other bets on different thing, such as money, equipment, location, death....
05:38:48 <Patashu> you're betting on what the players will do and what the DM will give in his scenario?
05:38:57 <Patashu> if the DM is aware of the bets, he can easily make them suceed/fail
05:39:29 <zzo38> These bets must be made on side, the DM is not aware of them, and the bets do not affect the game at all. In addition, they are not made by the players or DM.
05:40:04 <zzo38> (Of course the players and DM can bet too; and you can tell the DM if you want to; neither of these will help as far as I know.)
05:40:21 <monqy> quintopia: perhaps he hasn't thought that far, or realized that, or realized its applicability there
05:40:36 <Patashu> but it's pretty much psychological, since it's up to the DM completely how the game proceeds
05:40:39 <Patashu> unless he's a rules lawyer
05:40:40 <zzo38> The game is complicated; it is difficult to tell what happen next.
05:41:15 <zzo38> The DM isn't rules lawyer in fact he isn't even very good with the rules. He ask me question about rules. But he is still good at DM stuff otherwise.
05:41:32 <Patashu> SO it'd be like making side bets on the outcome of a book almost
05:41:38 <Patashu> (I wonder if anyone's ever done that, hehe)
05:41:49 <zzo38> Of course some things has to do with randomness, some don't, but it is hard to tell everything a lot!!
05:42:09 <zzo38> Has anyone bet on outcome of a book? I suppose is similar, since the recording file is a book, too.
05:42:29 <quintopia> patashu: if geom is turing-complete, it should be possible to write a program to compute the cube root of two, right?
05:42:50 <Patashu> you can copmute the cube root of two to arbitrary digits
05:42:52 <Patashu> just not exactly
05:42:59 <Patashu> right?
05:43:06 <quintopia> maybe
05:43:15 <elliott> righ
05:43:16 <elliott> t
05:43:26 <elliott> and it can be arbitrarily encoded
05:43:36 <Patashu> it'd be funny if you start straightedging and compassing the number 3 then 3.1 then 3.14 then suddenly the hand of god crumples up your paper. 'YOU CAN'T CONSTRUCT PI, THOSE ARE THE RULES, I KNOW WHAT YOU'RE UP TO'
05:43:47 <elliott> lol
05:43:58 <Patashu> I don't think that's what pi being unconstructable means anyway :D
05:44:01 <quintopia> he does that when i try to divide by zero >.>
05:44:09 <zzo38> Things are not close to what the DM expects. Not close to what the players or the DM expects! Everything goes different.
05:44:48 <Patashu> is there a 3D version of straightedge and compass?
05:45:21 <quintopia> you can use regular ones in 3 space
05:45:49 <quintopia> and you get 3 dimensional points whose components are constructible numbers in the traditional sense
05:46:03 <zzo38> What other bets can you think of for D&D game?
05:46:13 <Patashu> How much mountain dew they drink
05:46:52 <quintopia> patashu: do you know how to find a sequence of constructible numbers arbitrarily close to cube root of 2 (using geometric techniques)?
05:46:56 <zzo38> No, stuff directly with the game. And none of us drink or eat anything during the game; that would mess up the books.
05:47:41 <quintopia> number of attacks, number of attacks blocked
05:47:43 <Patashu> hmm, that's a good question
05:47:57 <zzo38> Of course one bet is experience levels, but that seem a bit easier, at least in the games I play since it is more predictable about average XP totals and that stuff.
05:48:17 <zzo38> quintopia: Yes, that is one thing. Of course the answer can be zero, but it can also go very high.
05:49:03 <Patashu> surely it must be possible to get arbitrarily close by constructing rational numbers and cutting between them, but I don't know the process
05:49:30 <zzo38> You can read the recording at first if it help; and then, the bet is worth more, by the more number of sessions after the current one that has been played, that you are betting on.
05:51:20 <zzo38> There may be many things that are specific to the campaign, game, and session, being played.
05:52:19 <zzo38> (I am one of the players, but I don't care what bets you make. I am reasonably sure the DM doesn't care either. But I am interested in these bets, even if they are not revealed until after the session is played.)
05:59:31 <zzo38> Some things I can think of based on the current game/session: * Number of form changes. * Number of ambushes. * CR of brains consumed (if you wish simpler, partition it at <9 and >=9). * Number of lost caravans. * Number of military spies. * Whether or not the next town will have a library. * Whether or not my spellbook will ever be retrieved.
06:02:03 <zzo38> More general things: * Next experience level. * Number of uses of spells. * In-game time in one session. * Money gained/lost. * Spells cast by NPCs. * XP totals. * Number of critical hits.
06:05:49 <zzo38> * Number of deliberate misses. * Languages used in-game. * Anti-magic fields. * Prices of objects in-game.
06:06:25 <zzo38> Anything else?
06:06:55 <Patashu> real time spent in combat?
06:07:29 <zzo38> OK, but I wanted only things that would be recorded.
06:07:48 <Patashu> all this stuff is recorded?
06:07:50 <Patashu> by who?
06:07:57 <zzo38> Number of hits and blocks is OK, though.
06:08:17 <zzo38> Patashu: I record it. I use TeX to record this stuff, using a macro file I wrote for this purpose.
06:08:23 <zzo38> Do you want to see it?
06:08:32 <Patashu> No, that's ok
06:08:45 <Patashu> So it has to be something you record already, or anything theoretically recordable is okay?
06:08:50 <Patashu> And objective
06:09:21 <zzo38> Anything that would be recorded (even if it hasn't been yet) and objective.
06:09:50 <zzo38> That is, in-game events, including XP totals and character sheets, and session headings.
06:10:04 <Patashu> Number of 1s rolls
06:10:06 <Patashu> *rolled
06:11:11 <zzo38> I don't record that but it does count. If it was kept track of, I would tell you if your bet succeeded or failed. But it belongs anyways, even though it is unlikely to be recorded (probably because I forget)
06:11:42 <Patashu> CR of brains consumed? Is this something that occurs often in your sessions?
06:12:16 <zzo38> I cannot answer that question unless you read the recordings. Same with all the other things I listed under "Some things I can think of based on the current game/session".
06:12:44 <zzo38> (If you want the reason for the partitioning, that is a separate thing.)
06:13:40 <zzo38> Note things change; some of the things I listed are relevant to the current context; some are more long-term.
06:18:19 <zzo38> I will explain the reason for the partitioning right now since that is simple. It has to do with prestige classes.
06:18:38 <zzo38> But for "More general things", another idea is: * Number of times each kind of dice rolled.
06:19:18 <zzo38> * Number of PC deaths. * Number of NPC deaths. * Number of resurrections.
06:21:56 <zzo38> (Possibly separate them into *Number of PC resurrections * Number of NPC resurrections.)
06:23:20 <zzo38> Have you ever invent any card games?
06:25:05 <Patashu> I invented a card game when I was like 10
06:25:08 <Patashu> But it was trivial
06:25:10 <zzo38> O, if you make any of these side-bets of D&D game, I would like to know. No actual payment (at least, not to/from me), but I would like to know the general things you bet on, don't bother to tell me specifically until after the session is played. But write it down.
06:25:53 <zzo38> Patashu: Can you describe it? I have invented various card-game, solitaire and not, for various number of players, and for various kind of decks of cards (some for standard deck, some are for tarot cards)
06:26:42 <Patashu> You had cards numbered 1 through 9. A round consisted of presenting then discarding a card. If your card was higher you got a point.
06:26:45 <Patashu> It was something really simple like that
06:28:46 <zzo38> How many cards of each rank?
06:29:03 <Patashu> Each player had their own hand
06:29:08 <Patashu> So one/player
06:31:19 <quintopia> i once made a card game. it was like 100 cards or something, each with a picture and a name. a third were attack, a third were defense, and a third were neutral. i forget the rules, but it was probably rock-paper-scissorsish
06:31:39 <Patashu> you forget the rules completely?
06:32:51 <quintopia> yes
06:33:08 <quintopia> never wrote em down i think
06:33:19 <quintopia> this was like 15 years ago
06:33:36 <quintopia> i only remembered i did it because i found the cards in an old box cleaning up
06:33:54 <zzo38> I would like to have a Latin-suited tarot deck so that I can try to play some games I invented with it; I think I found somewhere, a deck designed to be working good for both game and for divination.
06:34:29 <zzo38> I notice the number of cards is divisible by 3, but not by 4. This is contrary to ordinary playing cards.
06:36:58 <zzo38> One game I invented for tarot cards is called Matadore. It is played by three players. You deal some cards at first, after all those are exhausted you deal the rest of the cards and continue. Your score is multiplied by the number of matadores. The excuse can be played at any time even if you have the suit led, but never wins a trick.
06:37:38 <zzo38> You cannot lead the excuse unless it is your only card, in which case you earn 1 point immediately and it automatically wins the trick. For the purpose of counting matadores, the excuse card counts as the zero of trumps.
06:38:09 <zzo38> At the game you can make bids and doubles, and then you must pass cards to the next player before playing the tricks.
06:38:30 <zzo38> Some cards are positive points and some negative, but mostly you try to win tricks, especially the final trick.
06:42:44 <zzo38> I have also invented a game using standard playing cards, using only the 1 to 7 of each suit, called Chinese Euchre, even though it is neither Chinese nor Euchre. Even though 1 is low and clubs is low, a 1 still beats a 7 and a club still beats a spade. Aces are worth 1 point each, it is 2 points if opponent is unable to play a proper card to follow your lead, and 4 points for the final trick.
06:47:15 <zzo38> Do you know how to play the card game Napoleon? It has a few unusual rules. One is that partners are not necessarily known by all players at the beginning of the game. Scoring cards are the TJQKA of each suit, worth 1 point each. If you win all 20 points without bidding 20, you lose (this is called the Siberian Rule). If all players follow suit, a 2 beats an ace, otherwise ace is high.
06:49:15 <zzo38> The method of deciding partners is as follows: The declarer names any card (whether he holds it or not). The player who holds that card is the declarer's partner, and the other three players go against him. (If the declarer names a card he holds in his own hand, he plays alone against four opponents.) Other players do not know who the partner is until the named card is played.
06:51:05 <zzo38> Except on the first trick, the ace of spades beats everything (regardless of trump suit). The second highest card is the jack of trumps and the third highest is the jack of the other suit of same color of trumps; both of these rules don't work on the first trick.
07:05:54 -!- azaq23 has joined.
07:06:07 -!- azaq23 has quit (Max SendQ exceeded).
07:07:04 -!- azaq23 has joined.
07:07:45 <elliott> :t showString
07:07:46 <lambdabot> String -> String -> String
07:12:15 <zzo38> What is your opinion about counting honors in Whist? My opinion is that honors should not be counted in Whist, although honours should still be counted in Bridge.
07:12:36 <elliott> > lines "a\n"
07:12:37 <lambdabot> ["a"]
07:12:40 <elliott> > unlines (lines "a\n")
07:12:40 <lambdabot> "a\n"
07:13:59 <zzo38> If you are playing Bridge, and you receive all thirteen cards of one suit, and you are first to bid, what should you do?
07:14:31 <zzo38> Note that a NT bid will beat you and in that case, unless you go first, you lose.
07:14:49 <cheater> probably think of doing something else because bridge is boring
07:20:30 -!- GreaseMonkey has quit (Quit: The Other Game).
07:20:35 <zzo38> But you win if you can trick the player to the right to bid 7NT and then you double. That way you win since you play first.
07:21:53 <zzo38> In the game of Hearts, any player with all the clubs achieves control and wins.
07:26:00 -!- Jafet has joined.
07:26:19 -!- myndzi has quit (Ping timeout: 252 seconds).
07:28:28 <elliott> :t showSpace
07:28:29 <lambdabot> Not in scope: `showSpace'
07:29:49 -!- myndzi has joined.
07:37:20 -!- myndzi has quit (Read error: Connection reset by peer).
07:39:24 <zzo38> How do I make a Haskell program so that it can be loaded by other Haskell program even in different directories and other computers? Do I need to do some command of cabal?
07:39:44 <elliott> you want to write a cabal file
07:39:57 <elliott> try "cabal init --no-comments" in a project root directory
07:40:07 <elliott> it will ask a few questions and generate a skeleton cabal file for your library or program
07:40:20 <elliott> http://www.haskell.org/cabal/users-guide/ has full documentation of the format after that
07:42:51 <zzo38> OK, I filled in the questions. It tells me it is unknown license type, and that I forgot to fill in the synopsis.
07:43:02 <elliott> PublicDomain is one of the license types, I think
07:43:15 <elliott> But you should really fill in the synopsis, it's just a one-line description of the package.
07:43:34 <zzo38> That is what I did, I pushed 9 and the file does say PublicDomain but it still told me it is unknown license type
07:43:40 <elliott> Huh.
07:43:45 <elliott> Just put PublicDomain in the license field in the cabal file, then.
07:43:59 <zzo38> OK. I will fill the synopsis, so I just uncomment "Synopsis:" and fill in some text?
07:44:18 <elliott> Yep, just a one-sentence summary of the package
07:44:20 <zzo38> elliott: The license field in the cabal file already says PublicDomain, I checked.
07:44:23 <elliott> Ah, okay then
07:44:25 <elliott> That's fine then
07:45:45 <zzo38> "Generating LICENSE... Warning: unknown license type, you must put a copy in LICENSE yourself."
07:46:15 <zzo38> It also says to add the "Description" field too.
07:46:45 <elliott> The description field is nice but not vital.
07:46:53 <elliott> (It's just a multiple-paragraph description of your package and its use.)
07:46:59 <elliott> You can just ignore that LICENSE warning.
07:47:10 <elliott> Though you could put a public domain dedication in LICENSE.
07:48:01 <Sgeo|web> Is Sinatra decent?
07:48:04 <Sgeo|web> >.>
07:49:05 <zzo38> I tried to make the package for BarrierMonad. (I might do others too, later.) Where it says Category, is Control the correct choice? I am unsure how the category does.
07:49:47 <zzo38> And what do I do for the example.lhs file? It is not needed to use the module, it only contains examples, and is needed if you want to print out the BarrierMonad.lhs file since it has \input that file
07:51:38 <elliott> Control sounds the right choice to me.
07:51:43 <elliott> And is it an executable program?
07:52:04 <zzo38> No it is library, and I selected that one.
07:52:09 <elliott> I mean, example.lhs.
07:52:16 <elliott> If so, you could add it as an executable in a separate section, called "barriermonad-example" or something (it will be installed into the user's PATH most likely, so you should pick a unique name; you don't have to rename the .lhs).
07:52:28 <elliott> Or you could just leave it out and have the user compile it themselves if they want to; that's fine too.
07:52:36 <elliott> It probably doesn't need to be installed into the user's PATH, after all.
07:52:41 <zzo38> The file example.lhs is neither executable nor library; it is meant only for use in GHCi.
07:52:47 <zzo38> And for reading.
07:52:56 <elliott> OK, just leave it out then.
07:54:46 <zzo38> That is, if you load BarrierMonad.lhs into TeX, it will expect to read example.lhs too; and you might also want to load example.lhs into GHCi; but it is otherwise of no use and is not needed to use the BarrierMonad library.
07:55:59 <zzo38> How does cabal supposed to deal with these kind of thing?
07:56:32 <elliott> It isn't.
07:56:34 <elliott> Why would it?
07:56:41 <elliott> That works fine as simply a file in the source tarball.
07:56:50 <elliott> cabal is about Haskell package management.
07:57:34 <zzo38> Is it enough that the filename is not capitalized? Will that make it work properly? The other filename is capitalized because it is a library module expected loaded from other programs too, but the one not capitalized is only for itself and unneeded file.
07:58:35 <elliott> The name is irrelevant.
07:58:41 <elliott> cabal won't even know it exists.
08:00:58 <zzo38> But I want to include the file but is only for example. Is there the way of specifying that?
08:01:07 <elliott> Just include it in your tarball.
08:01:08 -!- myndzi has joined.
08:01:16 <elliott> cabal /only/ cares about executables or what you register with the GHC package system.
08:01:22 <elliott> cabal doesn't need to care about your examples.
08:01:25 <zzo38> OK.
08:01:27 -!- myndzi has quit (Client Quit).
08:01:35 -!- myndzi has joined.
08:02:17 -!- BeholdMyGlory has joined.
08:02:24 <zzo38> If you want a printout, the example file is required, and so is the birdstyle.tex file even though neither is needed for using the module in other Haskell program.
08:04:16 <zzo38> What do I do about that? Do I just add a README file?
08:05:28 <zzo38> The .cabal file mentions "License-file: LICENSE" but there is not such file. Is that OK? If not, is it OK to comment out that line?
08:05:36 <elliott> Just remove that line.
08:07:12 <zzo38> OK
08:09:43 -!- monqy has quit (Quit: hello).
08:10:37 <zzo38> The definition "yield = flip Barrier Unit;" is named as such due to similarity of the yield command in JavaScript. I did not realize it at first and it was named something else, but very soon after that, I renamed it because I didn't like the old name very much.
08:11:03 <zzo38> (Also because at first, before I renamed it, I didn't notice that similarity. And then I did notice.)
08:12:22 <zzo38> Do you think the type of "continue" is more useful as it is or with the arguments flipped?
08:13:41 <zzo38> (The way it currently is, is probably a simpler definition, and maybe it runs more efficiently too)
08:16:28 <zzo38> Now I made up barrier monad file, is there some kind of way that can have cobarrier comonads as well?
08:18:50 <elliott> you'd have to ask copumpkin
08:22:54 <zzo38> Would you ever use join with barrier monads? This is an example of what it does:
08:23:17 <zzo38> collect . convert (+ 1) id . join $ do { yield 7; yield 100; return $ do { yield 99; yield 111; }; } = [8,101,100,112]
08:23:33 <zzo38> collect . join . convert (+ 1) id $ do { yield 7; yield 100; return $ do { yield 99; yield 111; }; } = [8,101,99,111]
08:24:42 <zzo38> collect . convert (+ 1) id $ do { yield 7; yield 100; return $ do { yield 99; yield 111; }; } = [8,101]
08:26:30 <elliott> o
08:30:23 <zzo38> (It is what I expected it to do; but I have not thought of how join would be used in barrier monads in proper programs.)
08:39:45 -!- zzo38 has quit (Remote host closed the connection).
09:00:11 -!- Patashu has quit (Quit: MSN: Patashu@hotmail.com , Gmail: Patashu0@gmail.com , AIM: Patashu0 , YIM: patashu2 .).
09:04:57 -!- myndzi has quit (Read error: Connection reset by peer).
09:09:57 -!- myndzi has joined.
09:25:07 -!- DHeadshot has quit (Read error: Connection reset by peer).
09:25:10 -!- DH____ has joined.
09:39:44 -!- DH____ has quit (Read error: Connection reset by peer).
09:53:53 -!- BeholdMyGlory has quit (Remote host closed the connection).
10:06:38 -!- Vorpal has joined.
10:36:37 <elliott> Oh neat, the Kindle three uses a webkit browser
10:40:32 -!- Nisstyre has quit (Ping timeout: 248 seconds).
10:41:06 -!- derdon has joined.
10:44:48 -!- sebbu has quit (Ping timeout: 248 seconds).
10:58:57 -!- sebbu has joined.
10:58:57 -!- sebbu has quit (Changing host).
10:58:57 -!- sebbu has joined.
11:38:58 -!- brisingr has joined.
11:41:12 <elliott> hi brisingr
11:57:45 <brisingr> hi
11:58:04 <brisingr> sorry, was forcefully made to eat
11:59:08 <brisingr> s/forcefully made/unsafeCoerced/
12:29:02 -!- derrik has joined.
12:29:12 -!- brisingr has left.
12:29:30 -!- derrik has quit (Client Quit).
12:30:17 -!- derrik has joined.
12:30:59 -!- derrik has quit (Client Quit).
12:32:01 -!- derrik has joined.
12:32:29 -!- derrik has quit (Client Quit).
12:33:25 -!- derrik has joined.
12:36:30 -!- derdon has quit (Remote host closed the connection).
12:37:41 -!- Zuu has quit (Ping timeout: 244 seconds).
12:56:19 -!- Zuu has joined.
13:16:36 <CakeProphet> anyone awake and also knowledgable for C++?
13:18:14 <elliott> no
13:18:17 <elliott> im kind of
13:18:18 <elliott> go on
13:19:52 <elliott> CakeProphet:
13:20:05 <CakeProphet> I was wondering if a variable declaration can construct an object multiple times within a function body. For example, when the declaration is within a loop;
13:20:24 <CakeProphet> or if I must use dynamic allocation at that point.
13:20:39 <elliott> like you mean call the constructor with the same storage?
13:21:20 <CakeProphet> like place a stack variable declaration inside the body of a loop. what happens? is the variable constructed once at the start of the function, or each time the declaration is encountered in the loop?
13:21:28 <elliott> tias
13:21:41 <CakeProphet> what does that mean.
13:21:43 <elliott> class foo { public: foo(){puts("lol");}};
13:21:59 <elliott> int main(){for(int i=0;i<99;i++){foo x; (void)x;}}
13:22:04 <elliott> tias=try it and see
13:22:08 <CakeProphet> oh...
13:22:15 <CakeProphet> well, yes that's what I was trying to avoid but okay.
13:24:16 <CakeProphet> elliott: I got 99 lols
13:24:17 <CakeProphet> so good
13:24:22 <elliott> there you go then
13:24:32 <CakeProphet> and I assuming that's all auto memory that will be deleted at the end of the function
13:24:38 <CakeProphet> since
13:24:40 <CakeProphet> that would make sense
13:24:43 <CakeProphet> given C++'s semantics.
13:27:33 <CakeProphet> elliott: what do you think computer science is? some kind of science?
13:27:39 <CakeProphet> NO EXPERIMENTATION.
13:27:40 <elliott> Mathematics, actually
13:27:47 <elliott> But C++ violates that.
13:27:58 <CakeProphet> well applied computer science has some principles of science I guess
13:28:03 <CakeProphet> but yes computer science is mathematics.
13:35:09 <lifthrasiir> elliott: is your keyboard finally fixed?
13:35:19 <elliott> m...maybe...
13:50:51 <CakeProphet> ...I have no idea how to do this.
13:50:58 <CakeProphet> without constructing an expression tree.
13:51:07 * CakeProphet has to convert an infix expression to prefix
13:51:12 <CakeProphet> I can do postfix... but not prefix.
13:51:24 <CakeProphet> and it has to use a stack, so I can't use expression trees.
13:51:50 -!- augur has quit (Remote host closed the connection).
13:52:36 <elliott> CakeProphet: itt: shunting yard
13:53:58 <elliott> oh has to use a stack
13:53:59 <elliott> lol
13:54:01 <CakeProphet> yeah
13:54:01 <CakeProphet> see
13:54:07 <CakeProphet> that's for postfix
13:54:19 <elliott> it can just as easily produce an ast.
13:54:24 <CakeProphet> I'm thinking I'll need a stack for both operands and operators...
13:54:29 <CakeProphet> elliott: don't think I can use that.
13:57:08 <CakeProphet> I probably should've gone to class the day it was explained. :P
13:59:29 <elliott> well shunting yard does use a stack
14:00:55 <CakeProphet> but does not convert to prefix directly.
14:01:28 <CakeProphet> I have this strange feeling that I'm talking in circles.
14:01:37 <CakeProphet> or maybe figure 8
14:01:39 <CakeProphet> 's
14:05:01 <CakeProphet> I think I can do it with two stacks.
14:18:54 -!- derrik_ has joined.
14:19:13 -!- derrik_ has quit (Client Quit).
14:19:30 -!- derrik_ has joined.
14:19:44 -!- derrik_ has left.
14:20:13 -!- derrik has quit (Ping timeout: 252 seconds).
14:20:53 -!- derrik has joined.
14:23:50 -!- copumpkin has quit (Quit: Computer has gone to sleep.).
14:35:55 -!- augur has joined.
14:41:14 <CakeProphet> can parentheses be considered to have a precedence?
14:41:43 <CakeProphet> specifically the lowest.
14:42:28 -!- Phantom_Hoover has joined.
14:42:31 <CakeProphet> well I don't think it makes sense for circumfix operators to have precedence as they're explicit about it.
14:43:36 <elliott> Phantom_Hoover: phwpqhowqiowh
14:43:54 <Phantom_Hoover> Astute as ever.
14:43:55 <lambdabot> Phantom_Hoover: You have 2 new messages. '/msg lambdabot @messages' to read them.
14:44:35 <CakeProphet> time to WORK THINGS OUT WITH PEN AND PAPER
14:45:57 <CakeProphet> ugh this is so bad.
14:45:57 -!- copumpkin has joined.
14:46:04 <CakeProphet> I want trees...
14:47:32 <CakeProphet> fuck it I'm using trees.
14:47:43 <CakeProphet> MY TEACHER WILL GET OVER IT.
14:48:03 <CakeProphet> wat STL has no tree....
14:48:14 <Phantom_Hoover> I thought you were talking about Minecraft and then drugs before I realised.
14:48:52 <CakeProphet> ..
14:49:09 <CakeProphet> yes I could not actually be talking about programming
14:49:15 <CakeProphet> on a channel about programming languages.
14:50:33 <CakeProphet> elliott: okay so how does the shunting ard algorithm work with an AST.
14:50:41 <CakeProphet> obviously you don't just output to a stream/queue/string/whatever
14:50:45 <elliott> Wikipedia :P
14:50:55 <CakeProphet> I'm looking at it right now but I'm not seeing an explanation.
14:50:59 <CakeProphet> just the algorithm itself
14:51:11 <CakeProphet> which I'm already familiar with.
14:51:56 <Phantom_Hoover> <CakeProphet> yes I could not actually be talking about programming
14:51:56 <CakeProphet> hmmm
14:51:56 <Phantom_Hoover> <CakeProphet> on a channel about programming languages.
14:52:03 <Phantom_Hoover> How long have you been here again?
14:52:27 <CakeProphet> well we don't stray horridly off topic most of the time
14:52:32 <CakeProphet> most of the time we are talking about programming somehow.
14:53:05 <CakeProphet> hmmmmm
14:53:52 <elliott> CakeProphet: You clearly missed the about three months when the channel was literally just Minecraft talk.
14:53:53 <Vorpal> <CakeProphet> can parentheses be considered to have a precedence? <-- if doing a bison/yacc grammar I would probably not handle parens as an operator with a defined associative and precedence...
14:54:00 <Vorpal> if that is what you meant
14:54:09 <CakeProphet> I guess.
14:54:22 <CakeProphet> elliott: how does the tree construction work with shunting yard help
14:54:31 <elliott> Your MOM shunts a yard.
14:54:33 <Vorpal> <CakeProphet> elliott: okay so how does the shunting ard algorithm work with an AST. <-- uh, the shunting yard algorithm does not use an AST
14:54:45 <elliott> Vorpal: No, but there's no reason you have to produce a literal postfix string.
14:54:45 <Vorpal> it uses two stacks or some such iirc
14:54:50 <elliott> It's about output.
14:54:56 <Phantom_Hoover> elliott, when did we export it all into -minecraft?
14:54:58 <elliott> You can easily make it output a syntax tree, even if it's just by going through the result backwards.
14:55:11 <CakeProphet> oh...
14:55:20 <elliott> Phantom_Hoover: When I wrote Herobrine. So late two thousand and ten or so?
14:55:21 <Vorpal> elliott: what use is the shunting yard algorithm if you have an AST anyway? You can just do a post-order tree traversal
14:55:22 <CakeProphet> that's kind of gross, but okay.
14:55:29 <elliott> Vorpal: I mean, input string → output AST
14:55:31 <CakeProphet> Vorpal is missing the point.
14:55:33 <Phantom_Hoover> elliott, so two months at most?
14:55:44 <elliott> Phantom_Hoover: Weeell, I'm not sure on the exact dates.
14:55:46 <Vorpal> elliott: oh you want to use the shunting yard algorithm to generate an AST? Hm okay
14:55:47 <elliott> But it was a LOT of Minecraft talk.
14:55:52 <elliott> Vorpal: Well, CakeProphet does.
14:55:52 <Phantom_Hoover> ("TWO MONTHS YOU TWAT!")
14:55:52 <elliott> Might.
14:55:57 <CakeProphet> if by you you mean CakeProphet
14:55:57 <Vorpal> elliott: right
14:56:07 <Vorpal> elliott: not sure how sensible that is. But sure, go on
14:56:09 <CakeProphet> elliott: yes because I can find no other sane method to convert infix to prefix.
14:56:23 <elliott> Seems the easiest way.
14:56:32 <elliott> I mean, you could just shunting-yard then reverse :-D
14:56:35 <elliott> Except without reversing the operands :P
14:57:11 <CakeProphet> ...how does that work.
14:57:15 <Vorpal> CakeProphet: build an AST the normal way from your grammar, then do a pre-order tree walk? That would take you to prefix form I think. It is so much easier to do this sort of stuff when you already have an AST...
14:57:26 <CakeProphet> Vorpal: I am not writing this code for myself
14:57:31 <CakeProphet> it's for a class. I have requirements and stuff.
14:57:43 <Vorpal> CakeProphet: hm.
14:58:57 <Vorpal> how do you evaluate a prefix expression? I mean, for postfix you can use a simple stack machine. Do you push operators for prefix and pop them off when you see operands?
14:59:20 <CakeProphet> I believe so yes.
14:59:21 <Vorpal> Sure you could build an AST for your prefix expression, but then what was the point of it
14:59:27 <CakeProphet> *infix expression
14:59:30 <CakeProphet> I am taking an infix expression
14:59:33 <CakeProphet> and converting it to prefix
14:59:37 <CakeProphet> not evaluating anything.
14:59:53 <Vorpal> CakeProphet: it was a related issue I was thinking about
15:00:03 <CakeProphet> NO SIDE-TRACKING ALLOWED
15:00:30 <CakeProphet> these are the rules.
15:00:57 <Vorpal> anyway you need to evaluate something like + 2 4 into + on the stack, then a special 2+ on the stack, and only then you can actually calculate it
15:01:16 <Vorpal> somehow it feels like prefix is stupid to evaluate with a stack machine to me
15:03:28 <CakeProphet> elliott: I have a feeling I can construct a tree as part of the algorithm...
15:03:38 <CakeProphet> perhaps if I use a queue to collect operands.
15:05:01 <CakeProphet> er no I mean a stack.
15:07:21 <Phantom_Hoover> 03:04:36: <Sgeo|web> What is a professional mathematician
15:07:22 <CakeProphet> hmmm yeah okay I think I know how.
15:07:26 <Phantom_Hoover> One who gets paid you idiot.
15:08:18 <elliott> Phantom_Hoover: Pro definition.
15:08:47 <Phantom_Hoover> One who gets paid *for mathsing*.
15:08:49 <Phantom_Hoover> You idiot.
15:09:42 <CakeProphet> okay so I can maintain a stack of tree nodes I think...
15:13:37 <CakeProphet> wow it sure is a pain in the ass that string literals in C++ are not string objects...
15:14:16 <elliott> std::string(s)
15:14:43 <Phantom_Hoover> 03:16:09: <Madoka-Kaname> derrik, what is a visual programming language?
15:14:54 <elliott> It's #esoteric Jeopardy.
15:15:21 <Phantom_Hoover> This is a question that can only be answered by the most hideous echelons of Microsoft, although I suspect their answer is 'one which we are hyping'.
15:15:39 <elliott> Phantom_Hoover: You realise visual programming languages are actual things.
15:15:55 <CakeProphet> pure-data, reaktor, max/msp
15:15:59 <CakeProphet> Excel maybe.
15:16:02 <Phantom_Hoover> elliott, whaaaaaaaaaaaaaaaaaaaaaaaaaaat
15:16:25 <derrik> hi Phantom_Hoover
15:17:22 <elliott> derrik: Your connection is broken.
15:20:20 <derrik> elliott: if you see this, then maybe not
15:20:34 <elliott> * derrik (~xix@gprs-inet-65-7.elisa.ee) has joined #esoteric
15:20:34 <elliott> * brisingr (~brisingr@ has left #esoteric
15:20:34 <elliott> * derrik has quit (Client Quit)
15:20:34 <elliott> * derrik (~xix@gprs-inet-65-7.elisa.ee) has joined #esoteric
15:20:34 <elliott> * derrik has quit (Client Quit)
15:20:34 <elliott> * derrik (~xix@gprs-inet-65-7.elisa.ee) has joined #esoteric
15:20:36 <elliott> * derrik has quit (Client Quit)
15:20:38 <elliott> * derrik (~xix@gprs-inet-65-7.elisa.ee) has joined #esoteric
15:20:41 <elliott> [...]
15:20:42 <elliott> * derrik_ (~xix@ has joined #esoteric
15:20:44 <elliott> * derrik_ has quit (Client Quit)
15:20:46 <elliott> * derrik_ (~xix@ has joined #esoteric
15:20:48 <elliott> * derrik_ (~xix@ has left #esoteric
15:20:50 <elliott> * derrik has quit (Ping timeout: 252 seconds)
15:20:52 <elliott> * derrik (~xix@ has joined #esoteric
15:20:54 <elliott> It is.
15:21:03 <elliott> Please don't make your client flood joins/quits; it clogs up the channel a lot and happens quite often.
15:21:14 <derrik> elliott: unstable, yes.. but not broken at the moment
15:21:23 <elliott> Well, broken in that it is disruptive.
15:21:56 <derrik> sorry for the mess.. i will try cleaner manners
15:22:10 <elliott> Thanks.
15:23:39 <Vorpal> <Phantom_Hoover> 03:16:09: <Madoka-Kaname> derrik, what is a visual programming language? <-- Piet maybe?
15:24:31 <Vorpal> hm guess not
15:25:20 <Vorpal> https://secure.wikimedia.org/wikipedia/en/wiki/File:Pure_Data_with_many_patches_open_%28netpd_project%29.png <-- what a mess
15:25:49 <elliott> Less messy than your typical C project.
15:26:30 <Vorpal> elliott: the mess of windows I meant. With a typical C project I have like one terminal and one tabbed editor open.
15:26:38 <elliott> That's you.
15:26:51 <elliott> Such systems can get worse... http://1.bp.blogspot.com/_gK7ubK8-F84/RiokBgnK_QI/AAAAAAAACjM/6bkc0VDODr4/s320/max2.jpg
15:27:01 <elliott> http://jackaperkins.files.wordpress.com/2011/08/maxpatch.jpg
15:27:04 <Vorpal> what a messy graph
15:27:06 <elliott> Literal spaghetti code.
15:27:12 <Vorpal> yes
15:27:52 <Vorpal> elliott: okay I actually have 5 windows open on my desktop atm: firefox, irc, emacs, xfce-terminal and a PDF.
15:28:04 <Vorpal> (and I'm coding)
15:28:24 <elliott> I have twenty Chrome windows, two Pidgin windows, a terminal, xchat, and emacs.
15:28:43 <Vorpal> unusually I have only 5 tabs in firefox atm. Often I have like 200
15:28:54 <Vorpal> elliott: wait a second, doesn't pidgin do tabs?
15:29:10 <elliott> Vorpal: One is the buddy list.
15:29:15 <Vorpal> oh
15:29:19 <Vorpal> right
15:30:01 <Vorpal> elliott: the only time I tend to have a sprawl of windows open is when using gimp. However I often become annoyed at the sprawl of windows in gimp...
15:36:33 <hagb4rd> yes, this remind me i wanted to write a tool to save winpositions like bookmarks (recover with hotkey..muahrhr)
15:37:07 <hagb4rd> this what the world needs
15:37:29 <CakeProphet> elliott: I was thinking about how you could reverse just the operators in a string to get postfix -> prefix
15:37:32 <CakeProphet> but uh.... how?
15:38:12 <CakeProphet> I guess reflect them around the midpoint??
15:38:21 <CakeProphet> or something?
15:38:23 <CakeProphet> no. I have no idea.
15:38:27 <elliott> CakeProphet: Start from end; whenever you see an operator, push it to the stack, then recurse times its arity.
15:38:36 <elliott> The final "stack" contains the prefix expression in the wrong order. :p
15:38:39 <elliott> You really want a queue there.
15:38:48 <CakeProphet> ah
15:39:04 <CakeProphet> erm okay but then how do I pop the queue...
15:39:18 <CakeProphet> the opposite right?
15:39:21 <elliott> What.
15:39:44 <CakeProphet> you just told me to push the operators onto a queue in reverse.... and that's it.
15:39:59 -!- derrik has quit (Quit: take carez).
15:40:07 <elliott> Take carez yourself.
15:40:09 <elliott> CakeProphet: No, I didn't.
15:40:24 <CakeProphet> well, that's all I understood from it.
15:41:02 <elliott> Oh wait, infix
15:41:05 <elliott> Oh wait postfix
15:41:08 <CakeProphet> yes
15:41:12 <elliott> Yeah this is easy:
15:41:21 <CakeProphet> I'm using shunting yard to convert to postfix
15:41:30 <CakeProphet> and then I'm going to take thatand convert to prefix.
15:42:00 <CakeProphet> either with trees or with elliott's magic reversing algorithm
15:43:01 -!- Vorpal has quit (Quit: ZNC - http://znc.sourceforge.net).
15:43:01 <elliott> sec
15:43:53 <CakeProphet> I'm thinking it would work siilarly to an algorithm to evaluate the postfix
15:44:34 -!- Vorpal_ has joined.
15:44:55 <elliott> well I have something but it assumes all operators are binary
15:44:56 <elliott> is that ok
15:45:18 <CakeProphet> yep
15:45:18 <CakeProphet> they are.
15:45:31 <elliott> data Tm = Op ...
15:45:31 <elliott> | Lit ...
15:45:32 <elliott> postfixToPrefix :: Seq Tm -> (Seq Tm, Seq Tm)
15:45:32 <elliott> postfixToPrefix s =
15:45:32 <elliott> case viewr s of
15:45:32 <elliott> EmptyR -> (Seq.empty, Seq.empty)
15:45:34 <elliott> s' :> op@Op{} ->
15:45:36 <elliott> let (a,s'') = postfixToPrefix s'
15:45:38 <elliott> (b,s''') = postfixToPrefix s''
15:45:40 <elliott> in (Seq.singleton op >< a >< b, s''')
15:45:42 <elliott> s' :> lit@Lit{} -> (Seq.singleton lit, s')
15:45:53 <CakeProphet> oh no.
15:46:05 <elliott> postfixToPrefix (Seq.fromList [Lit 99, Lit 999, Op '+']) --> (Seq.fromList [Op '+', Lit 99, Lit 999], Seq.fromList []), I believe
15:46:06 <CakeProphet> I have to convert Haskell to C++
15:46:10 -!- Vorpal_ has changed nick to Vorpal.
15:46:42 <Vorpal> CakeProphet, you could just do system("ghci ...")
15:47:10 <elliott> CakeProphet: Oops, it is reversed.
15:47:16 <CakeProphet> I'm highly considering constructing an AST from the postfix and then using the nice little show Tree function I already made.
15:47:21 <elliott> import Data.Sequence (Seq, ViewR(..), (><))
15:47:21 <elliott> import qualified Data.Sequence as Seq
15:47:21 <elliott> data Tm = Op String | Lit Int deriving (Show)
15:47:21 <elliott> postfixToPrefix :: Seq Tm -> (Seq Tm, Seq Tm)
15:47:21 <elliott> postfixToPrefix s =
15:47:23 <elliott> case Seq.viewr s of
15:47:25 <elliott> EmptyR -> (Seq.empty, Seq.empty)
15:47:27 <elliott> s' :> op@Op{} ->
15:47:29 <elliott> let (b,s'') = postfixToPrefix s'
15:47:31 <elliott> (a,s''') = postfixToPrefix s''
15:47:33 <elliott> in (Seq.singleton op >< a >< b, s''')
15:47:35 <elliott> s' :> lit@Lit{} -> (Seq.singleton lit, s')
15:47:37 <elliott> There.
15:47:39 <elliott> It's a very simple algorithm.
15:47:41 <elliott> In fact
15:47:43 <elliott> You can generalise it easily
15:47:48 <CakeProphet> except half of that notation is completely new to me.
15:47:49 <elliott> CakeProphet: Watch as I make this trivial
15:48:40 <elliott> OK, so...
15:49:06 <CakeProphet> :> is kind of like reverse cons?
15:49:25 <Vorpal> no it is a weird smily
15:49:28 <Vorpal> smiley*
15:49:30 <elliott> CakeProphet: Let me simplify this
15:49:53 <elliott> :t replicateM
15:49:53 <Vorpal> :t (:>)
15:49:54 <lambdabot> forall (m :: * -> *) a. (Monad m) => Int -> m a -> m [a]
15:49:55 <lambdabot> Not in scope: data constructor `:>'
15:49:56 <CakeProphet> are you traversing the string backwards?
15:49:57 <Vorpal> hm
15:51:18 <elliott> CakeProphet: Yes. But seriously, stop trying to understand it.
15:51:21 <elliott> Let me do this simplification, OK?
15:51:24 <CakeProphet> sure.
15:51:28 <CakeProphet> I think I kind of understand it.
15:51:30 <CakeProphet> though.
15:51:42 <CakeProphet> the translation to C++ will be tricky though.
15:52:29 <elliott> CakeProphet: Yes, but it will be /much simpler/.
15:54:32 <elliott> OK, almost done.
15:54:37 <elliott> :t evalState
15:54:38 <lambdabot> forall s a. State s a -> s -> a
15:54:40 <elliott> :t runState
15:54:41 <lambdabot> forall s a. State s a -> s -> (a, s)
15:55:03 <CakeProphet> oh god
15:55:04 <CakeProphet> not state.
15:55:10 <elliott> stfu
15:55:15 <elliott> c++ has state all over the place
15:55:24 <CakeProphet> use ST if you want to make it look like C++
15:56:03 -!- BeholdMyGlory has joined.
15:56:40 <Vorpal> CakeProphet, that sounds like a nightmare: trying to make haskell look like C++
15:56:43 <Vorpal> just eww
15:57:24 <CakeProphet> elliott: you can't just explain it in pseudocode?
15:57:40 <elliott> CakeProphet: OK, fine, how about this: Do it however you want, I don't care.
15:58:18 <CakeProphet> elliott: I would appreciate the help, but if you don't want to help that's fine.
15:58:29 <elliott> I do, you just don't seem interested.
15:58:50 <CakeProphet> I'm not interested in translating Haskell to C++ no, but having the Haskell would certainly help and is something I'm interested in.
16:00:18 <CakeProphet> I think I could do it recursively as in the original algorithm though
16:00:27 <CakeProphet> well the second one
16:01:00 <CakeProphet> as long as I don't use references the inputs will be copied and will thus function as though immutable.
16:01:38 <CakeProphet> though it would probably be more efficient to explicitly use a stack and do it the mutable way.
16:02:07 <elliott> Dude, it's a trivial stateful algorithm.
16:02:49 <CakeProphet> I am not good with statefulness.
16:05:10 -!- monqy has joined.
16:05:19 <CakeProphet> but if I understand correctly.
16:05:29 <elliott> Too busy writing the simpler version, not interested
16:05:37 <CakeProphet> I basically need to set up a stack machine as though I am evaluating the postfix.
16:05:46 <CakeProphet> but instead I output prefix expressions.
16:05:59 <CakeProphet> er, no.
16:06:02 <CakeProphet> that won't work.
16:06:20 <CakeProphet> I need like two stacks maybe.
16:07:01 <CakeProphet> in any case I need to leave soon but I'll read the logs later if you finish anything.
16:07:34 <CakeProphet> hmmm... also
16:08:02 <CakeProphet> what if I use a stack instead of queue to output the shunting yard algorithm.
16:08:11 <CakeProphet> basically that would just reverse it.
16:14:21 <elliott> postfixToPrefix :: Seq Tm -> State (Seq Tm) (Seq Tm)
16:14:21 <elliott> postfixToPrefix s =
16:14:21 <elliott> case Seq.viewr s of
16:14:21 <elliott> EmptyR -> return Seq.empty
16:14:21 <elliott> s' :> tm -> put s' >> foldl (><) (Seq.singleton tm) <$> replicateM (arity tm) m
16:14:21 <elliott> where m = state (swap . runState (postfixToPrefix Seq.empty))
16:14:25 <elliott> Hmm, this definitely can be simplified...
16:16:05 -!- ais523 has joined.
16:27:19 <elliott> hi ais523
16:27:29 <ais523> hi elliott
16:51:22 -!- CakeProphet has quit (Read error: Operation timed out).
17:05:48 <elliott> ais523: do you have any experience with incremental GC on a terabyte-large, odd NUMA heap?
17:05:50 <elliott> no? shame
17:06:07 <ais523> heh, that was a kind-of random question to ask
17:06:11 <ais523> and no, I don't
17:06:15 <elliott> ais523: @ :-)
17:06:27 <elliott> It would have been better completely devoid of context.
17:06:46 <ais523> indeed
17:06:49 <ais523> but no, I still don't
17:06:49 -!- MichaelBurge_ has joined.
17:06:55 <elliott> shame
17:07:44 -!- Irish42 has joined.
17:08:00 <Irish42> hello all
17:08:06 <elliott> hi
17:08:08 <elliott> `? welcome
17:08:11 -!- Irish42 has left.
17:08:12 <HackEgo> Welcome to the international hub for esoteric programming language design and deployment! For more information, check out our wiki: http://esolangs.org/wiki/Main_Page
17:08:14 <elliott> HackEgo...
17:08:25 <elliott> that wasn't helpful
17:10:00 -!- MichaelBurge has quit (Ping timeout: 260 seconds).
17:14:24 -!- elliott_ has joined.
17:16:04 -!- elliott has quit (Ping timeout: 256 seconds).
17:19:48 -!- MichaelBurge_ has quit (Read error: Connection reset by peer).
17:20:54 -!- MichaelBurge has joined.
17:23:33 -!- boily has quit (Ping timeout: 240 seconds).
17:39:43 -!- boily has joined.
17:47:05 -!- boily has quit (Ping timeout: 252 seconds).
17:53:49 -!- MichaelBurge has quit (Read error: Connection reset by peer).
17:54:02 -!- MichaelBurge has joined.
18:03:27 -!- boily has joined.
18:04:49 -!- Ngevd has joined.
18:05:37 <Ngevd> Hello!
18:06:17 <Ngevd> If learning to ride a tricycle is, I dunno, like programming in Scratch, and bicycle in C++, unicycling is freakin' Malbolge
18:06:21 <cheater> hi Ngevd
18:06:24 <cheater> `? welcome
18:06:25 <HackEgo> Welcome to the international hub for esoteric programming language design and deployment! For more information, check out our wiki: http://esolangs.org/wiki/Main_Page
18:06:31 <Ngevd> I have been here before
18:06:35 <Ngevd> I am also known as Taneb
18:06:44 <cheater> never heard of
18:06:52 <Ngevd> What date is it?
18:08:08 <Sgeo|web> Hi Ngevd
18:08:20 <Sgeo|web> 9/28/2011 using weird US notation
18:08:40 <ais523> Wed 28 Sep, according to my status bar
18:08:44 <Ngevd> In sensible British notation that makes 9/28/2011
18:08:52 <ais523> the day-of-the-week reminder is useful, I get disoriented sometimes
18:08:58 <ais523> Ngevd: *28/9/2011
18:08:59 <Ngevd> So, yeah, I've been here a couple of months
18:09:19 <Ngevd> Indeed
18:09:24 <Ngevd> Had a long dau
18:09:26 <Ngevd> *day
18:49:03 -!- Ngevd has quit (Ping timeout: 252 seconds).
18:49:13 -!- augur has quit (Remote host closed the connection).
18:49:26 <fizzie> In Finnish notation that's "28.9.2011".
18:50:01 <elliott_> Is that what they use in Hel/Finland?
18:50:05 <elliott_> I guess "Hel" is the native name.
18:50:10 <elliott_> Apt.
18:51:51 -!- Ngevd has joined.
18:52:02 <fizzie> Apt-get.
18:53:01 <elliott_> Yes, I too thought of this. You are such a good bot.
18:53:09 -!- augur has joined.
18:53:12 <elliott_> Fix my bug would you? And don't say "beep".
18:53:24 <fizzie> MEEP.
18:54:09 <elliott_> Oh.
18:56:51 -!- ais523 has quit (Remote host closed the connection).
19:00:17 <Ngevd> I may make a language designed to compile into BytePusher
19:04:00 -!- hagb4rd has quit (Ping timeout: 248 seconds).
19:07:21 -!- GreaseMonkey has joined.
19:13:08 -!- hagb4rd has joined.
19:16:02 -!- sebbu has quit (Read error: Connection reset by peer).
19:16:29 -!- sebbu has joined.
19:20:22 <Phantom_Hoover> OK
19:20:23 <Phantom_Hoover> Evenings
19:20:28 <Phantom_Hoover> should not be this warm
19:23:03 <fizzie> Phantom_Hoover: Nick suggestion: Tantor_Hoover, so you can share an acronym with Template Haskell.
19:24:15 <Ngevd> And Taneb's Hat
19:28:31 <Ngevd> It's a nice hat
19:28:38 <Ngevd> Well, three hats
19:29:08 <Sgeo|web> ^Taneb
19:29:13 <Sgeo|web> erm, hmm
19:29:15 <Sgeo|web> Taneb^
19:29:37 <Ngevd> :?
19:29:52 <Sgeo|web> ^ is hat
19:30:11 -!- SgeoN1 has joined.
19:30:34 <Ngevd> Ooh
19:32:06 <elliott_> Phantom_Hoover: Wonderful summer weather, innit
19:32:10 <elliott_> Innit is so a classy word now.
19:32:34 <Ngevd> I actually heard someone say "Innit" unironically during the summer
19:33:32 <elliott_> You just missed the additional layer of irony.
19:33:52 <SgeoN1> People keep typoing process 1? Why?
19:34:07 <SgeoN1> ^joke
19:34:27 <elliott_> THANK GOD YOU MARKED THE JOKE
19:34:36 <elliott_> Actually I wouldn't have got it if you hadn't because it is the least funny.
19:35:00 <SgeoN1> I was worried someone might actually think I thought people were gypping init
19:35:09 <SgeoN1> Typoong
19:35:41 * SgeoN1 surrenders
19:38:33 -!- GreaseMonkey has quit (Quit: The Other Game).
19:41:50 <Phantom_Hoover> <fizzie> Phantom_Hoover: Nick suggestion: Tantor_Hoover, so you can share an acronym with Template Haskell.
19:42:00 <Phantom_Hoover> Why Tantor?
19:42:04 -!- Phantom_Hoover has changed nick to Trantor_Hoover.
19:44:49 -!- tromp has joined.
19:45:25 <elliott_> hi tromp
19:45:35 <fizzie> Trantor_Hoover: Well, he's got a trunk, that works for a hoover.
19:45:54 <elliott_> Heyy, esolangs.org/w redirects to the wiki.
19:45:56 <elliott_> VALUABLE KEYPRESSES.
19:53:52 -!- oerjan has joined.
19:54:10 <SgeoN1> H over
19:54:17 <elliott_> what
19:54:22 <SgeoN1> Vlbl kyptss
19:55:09 <SgeoN1> W atocrct great
19:56:20 <SgeoN1> FL autocrtc
19:57:17 <oerjan> W splng?
19:58:05 <elliott_> W /r.t; [ copula.
20:01:51 <oerjan> k
20:03:25 <oerjan> <Phantom_Hoover> Why Tantor?
20:03:30 <oerjan> that's irrelephant.
20:04:51 -!- ais523 has joined.
20:04:52 -!- ais523 has quit (Changing host).
20:04:52 -!- ais523 has joined.
20:05:15 <oerjan> but i see you settled on something more megalomaniac
20:16:53 <oerjan> elliott_: i have this strange hunch that earlier today you failed to recognize a troll - in the original usenet sense of the word...
20:17:12 <elliott_> oerjan: Quite intentional. derrik is a moron, but perhaps not a troll: he has been here for months.
20:17:37 <elliott_> However he's not done anything but pipe up in the same vague nonsense every time, so I think I'll just be annoying until he goes away.
20:17:44 <elliott_> Do my secret plans still work if I tell everyone about them first? :/
20:18:02 <oerjan> i do not believe the original usenet sense required people to always troll. in fact i think respected community members sometimes did it.
20:18:24 <elliott_> I don't think it's possible to emulate that level of mental tedium.
20:18:35 <oerjan> my memory is somewhat vague, though.
20:18:43 <elliott_> Well, you're right.
20:18:47 <elliott_> I'm 90 percent sure he's Actually That Stupid, though.
20:19:11 <ais523> oerjan: the original phrase was "trolling for newbies"
20:19:24 <ais523> it was done by established community members against new ones
20:19:27 <oerjan> ais523: yeah
20:19:57 <oerjan> ok so not quite the original sense then, i guess
20:21:13 <oerjan> which means elliott_ is probably the greatest troll in this channel :P
20:21:15 <elliott_> oerjan: but no, I was quite aware that it would never become productive ever.
20:21:31 <elliott_> I'm not sure what I was doing, but it was something related to proving a point.
20:21:38 <elliott_> Whatever it was it was amusing.
20:21:45 <oerjan> good, good.
20:22:11 <oerjan> i suspected so, after all you never asked me to ban him ;P
20:22:33 <elliott_> I don't see any need for banning when the entire channel is on someone's back :P
20:26:32 <Ngevd> [sic]
20:27:14 <oerjan> i thought that was what Uniquode was... :P
20:28:22 <ais523> no, that's Itanium
20:28:41 <Ngevd> Uniquode is more like Befunge
20:30:42 <Ngevd> ReCISC is much lower level than Befunge
20:30:52 <Ngevd> Or indeed Uniquode, which is what I meant to say
20:33:43 <fizzie> Newly diculated.
20:36:53 <pikhq_> There's also the AS/400.
20:49:05 <oerjan> <zzo38> That is what I did, I pushed 9 and the file does say PublicDomain but it still told me it is unknown license type
20:49:36 <oerjan> http://osdir.com/ml/lang.haskell.cabal.devel/2008-02/msg00218.html seems to indicate something like this was fixed years ago?
20:52:10 <tromp> Hi, elliot
20:52:36 * oerjan picks up a t tromp lost
20:53:33 <tromp> sorry; was busy shortening my smallest brainfuck interpreter:(
20:53:47 <oerjan> APOLOGY ACCEPTED
20:54:23 <ais523> tromp: a hint, you can type the first few letters of someone's name then press tab
20:54:27 <ais523> and your client will fill in the rest for you
20:55:03 <tromp> thx for the tip, ais523
21:04:09 <oerjan> <Vorpal> <CakeProphet> can parentheses be considered to have a precedence? <-- if doing a bison/yacc grammar I would probably not handle parens as an operator with a defined associative and precedence...
21:04:53 <oerjan> i think you might need ( to be highest precedence to parse things like a . b ( c ) correctly.
21:05:05 <oerjan> but that might be the default
21:05:54 <oerjan> ) doesn't need one though, since it must be matched with the previous ( regardless
21:06:01 <oerjan> or so i think
21:08:48 -!- elliott_ has quit (Ping timeout: 248 seconds).
21:09:32 <Vorpal> <oerjan> i think you might need ( to be highest precedence to parse things like a . b ( c ) correctly. <-- what sort of grammar is that?
21:09:46 <oerjan> haskellike?
21:09:49 <Vorpal> oh okay
21:10:02 <Vorpal> oerjan, could have been a object oriented member function call too
21:10:12 <Vorpal> a.b(c)
21:10:18 <oerjan> i first put + there but it seemed more logical with a higher-order operator
21:11:39 <Trantor_Hoover> Is Con Air on TV CON AIR IS ON TV GUYS
21:12:04 <oerjan> don't believe him he's a con full of hot air
21:13:07 <Vorpal> oerjan, well it does need a precedence in the language but I was assuming he was using something like yacc or bison, where you normally use something like: %left PLUS MINUS\n%left TIMES DIVIDE or whatever to assign priority of operators. I just said I wouldn't use that method for ()
21:13:46 <Vorpal> but rather would do something like term : LPAREN expr RPAREN or such
21:13:50 <oerjan> Vorpal: ok then i guess i just said you could :P
21:13:59 <Trantor_Hoover> Oh my god Chief O'Brien is in this
21:14:13 <oerjan> but of course all precedence can be replaced by splitting token types in principle
21:14:23 <Vorpal> (where expr : expr PLUS EXPR | ... | term
21:14:25 <Vorpal> )
21:14:34 <Vorpal> err make the second expr lower case
21:14:50 <oerjan> i vaguely recall there might be tricky cases though
21:15:05 <Vorpal> oerjan, and yes. But how does %left in bison and such interact when you have more than one terminal in a production?
21:15:08 -!- Ngevd has quit (Quit: what a big quitter he is, eh?).
21:15:20 <Vorpal> Trantor_Hoover, why that nick?
21:15:38 <Trantor_Hoover> Vorpal, because it's really hot here just like on Trantor.
21:15:56 <Vorpal> ah okay
21:16:00 <oerjan> Vorpal: oh. i'm not sure which it chooses but iirc you can give a production an explicit precedence too
21:16:22 <Vorpal> oerjan, oh right, that is true
21:17:07 <Vorpal> oerjan, you invent a pseudo-token and do a %left xyyz or such above, and then you use something like: foo : BAR quux BAZ %prec xyyz { ... } iirc?
21:17:20 <Vorpal> where xyyz is the pseudo-token
21:17:33 <Vorpal> not sure if it needs to be upper case as terminals
21:17:34 <oerjan> that rings a bell. you don't need a pseudo-token if a real one fits, i think.
21:17:36 <Trantor_Hoover> OK so
21:17:38 <Trantor_Hoover> inevitably
21:17:42 <Trantor_Hoover> when it gets to the end
21:17:43 <Vorpal> oerjan, oh that is probably true
21:17:46 <Trantor_Hoover> I will be in hysterics
21:18:04 <Vorpal> oerjan, anyway parens should probably use %nonassoc (or was it %noassoc)?
21:18:11 <Trantor_Hoover> my parents are here
21:18:24 <Trantor_Hoover> help
21:19:56 <oerjan> Vorpal: i don't think it will matter, since all productions involving parens should match them and so will not have an opportunity for ambiguity of ( ... ( ... (
21:20:12 <Vorpal> oerjan, anyway I still find writing bison style grammars far easier than using parsec. I really would prefer a bison style parser generator for haskell. Especially since that avoids backtracking due to the bottom up nature, while parsec is top-down.
21:20:22 <Vorpal> oerjan, true
21:20:27 <oerjan> Vorpal: it's called happy :P
21:20:36 <Vorpal> oerjan, hm, should try that out
21:20:40 <oerjan> (never used it)
21:21:56 <Vorpal> oerjan, another issue with parsec: left-recursive grammars. Requires extra work than what you need in yacc.
21:22:05 <Vorpal> s/than/compared to/
21:22:50 <oerjan> yeah a bit
21:24:24 <oerjan> hm i recall someone recently having trouble making parsec's expressionparser stuff work right.
21:24:30 <oerjan> here
21:24:44 -!- Nisstyre has joined.
21:24:51 <Vorpal> oerjan, btw do you happen to know how yacc and bison are able to detect shift/reduce and reduce/reduce conflicts when generating the code (as opposed to during parsing when it is obvious how to do it)?
21:25:42 <ais523> Vorpal: they compile the grammar definition to lookup tables
21:25:52 <ais523> a conflict would require putting two different numbers in the same cell of the lookup table
21:25:56 <Vorpal> aha
21:26:10 <Vorpal> ais523, yet those issues are only warnings. That is strange
21:26:26 <oerjan> Vorpal: reduce/reduce are fatal, aren't they...
21:26:27 <ais523> because they can be sorted out by giving defaults
21:26:31 <Vorpal> oerjan, oh maybe
21:26:36 <Vorpal> shift/reduce are not at least
21:26:39 <ais523> generally, reduce/reduce is really bad and a problem with your grammar unless you expliclty say which is wanted
21:26:48 <ais523> shift/reduce can normally be sorted by using operator precedence
21:26:54 <Vorpal> yeah
21:26:55 <oerjan> but shift/reduce defaults to shift because it's the "greedy" behavior you usually want
21:27:13 <ais523> oerjan: actually, it defaults to the operator of higher precedence reducing first
21:27:27 <ais523> and the default for the same precedence depends on associativity
21:27:28 <oerjan> ais523: um i mean if there is no precedence resolution
21:27:34 <ais523> IIRC the default associativity is to shift first
21:27:55 <Vorpal> shift/reduce defaulting to shift means operators are treated as right associative by default, no?
21:28:14 <oerjan> the haskell report explicitly says that ambiguous syntax is resolved greedily
21:28:40 <ais523> oerjan: so did the CLC-INTERCAL definition, until nobody could figure out what it meant any more
21:28:45 <oerjan> Vorpal: i think so
21:28:46 <ais523> I worked out some of the simpler cases by experiment
21:29:06 <Vorpal> <ais523> oerjan: so did the CLC-INTERCAL definition, until nobody could figure out what it meant any more <-- eh, in the user manual or what?
21:29:15 <ais523> Vorpal: it was mentioned in a readme somewhere, IIRC
21:29:20 <Vorpal> awesome
21:29:47 -!- Patashu has joined.
21:29:51 <Vorpal> ais523, this is like the LR(1) thing in the intercal manual you mentioned before. Really hard to understand unless you wrote an implementation
21:30:16 <ais523> Vorpal: I wrote a testcase and a document about it
21:30:20 <Vorpal> heh
21:30:36 <ais523> it turns out that C-INTERCAL still wasn't doing it right when I started maintaing it, even though there'd been attempted bugfixes of that several times
21:30:46 <Vorpal> ais523, you did LR(inf) right for c-intercal? How?
21:31:35 <ais523> not exactly; the parser works out what sort of spark/ears nesting it's in
21:31:40 <ais523> and lets the lexer know
21:31:52 <Vorpal> heh, how does it do that?
21:31:56 <ais523> so the lexer can then work out whether a ' or " is definitely closing, or whether it might be opening
21:32:29 <ais523> that still doesn't handle every case, but it does handle everything that the INTERCAL-72 manual says you have to be able to handle (presumably because they couldn't figure out how to parse the other cases either)
21:32:31 -!- augur has quit (Remote host closed the connection).
21:33:07 <Vorpal> ais523, hm, I thought {...} stuff in bison was executed after the entire production was matched? So where would you embed this code?
21:33:09 <ais523> anyway, there's an informal agreement to always alternate sparks and ears at different levels of nesting, and then the problem doesn't come up at all
21:33:20 <ais523> Vorpal: in the {...}
21:33:36 <ais523> the lexer pushes opening sparkears onto a stack, the parser pops them again
21:33:41 <Vorpal> hh
21:33:42 <Vorpal> heh*
21:34:20 <Vorpal> ais523, what are the cases it can't handle?
21:34:22 -!- augur has joined.
21:35:40 <ais523> let me dig one up
21:35:49 <Vorpal> thanks
21:36:23 <ais523> here's an example that does work now but used not to, and actually happened in practice: DO .5 <- '?"'#65535~"'?.7$",2SUB.1"'~#21845"'~#1"$#1'~#3
21:36:46 <Vorpal> hm...
21:36:57 <ais523> here's a contrived example that doesn't work even with the current code: DO .1 <- ,3SUB",2SUB.1".2~.3"".4
21:37:10 <Vorpal> heh yeah that looks weird
21:37:24 <ais523> (admittedly, anyone writing that sort of thing is almost certainly trying to deliberately obfuscate their code)
21:37:40 <ais523> a better way to write the same thing is DO .1 <- ,3SUB",2SUB1'.2~.3'".4
21:37:47 <Vorpal> ah
21:37:54 <ais523> where it's completely clear how it nests (and that is accepted)
21:37:55 <Vorpal> what does that code do?
21:38:00 <ais523> nothing particularly useful
21:38:56 <ais523> in C, it becomes something like d1 = c3[c2[1][iselect(d2,d3)]][d4]
21:44:05 <Trantor_Hoover> Colm Meany's American accent is... pretty bad.
21:47:49 <Patashu> Woah, what? This sonic hack for the genesis has Helix Nebula playing by Anamanaguchi in the intro
21:48:02 <Patashu> Someone wrote an mp3 decoder for genesis I guess
21:48:09 <Patashu> http://www.youtube.com/watch?v=hiMeE0vJTnQ
21:48:57 <Trantor_Hoover> Oh, *no*, another Humble Bundle.
21:50:20 <ais523> I wasn't too impressed by the last one
21:50:25 <ais523> or the one before, FWIW
21:50:34 <ais523> the games feel unfinished, short, and many aren't much fun
21:51:15 <ais523> I completed And Yet It Moves (apart from the bonus levels and achievements); I was happy with the difficulty it started with and ended with, but its difficulty curve is too inconsistent to make it all that fun
21:51:22 <ais523> and it got samish after a while
21:51:52 <Trantor_Hoover> This one has Frozen Synapse in it.
21:52:11 <ais523> I know, they emailed me too
21:52:30 <ais523> I was planning to pay more than the £5 I originally paid if the games were good enough
21:52:37 <ais523> but I don't think it's worth more than £5, in retrospect
21:52:38 <ais523> so I won't
21:53:57 <Trantor_Hoover> Frozen Synapse has been universally acclaimed from what I've seen.
21:54:07 <Patashu> frozen synapse owns
21:54:08 <ais523> I've never heard of it, but might look at it
21:54:38 <oerjan> > let op o c a = a $ \x b -> b $ \y -> c $ x `o` y; calc a = a id; num n = ($ n) in calc (op (*)) (op (+)) (num 2) (num 3) (num 4)
21:54:40 <lambdabot> 20
21:54:56 * oerjan cackles evilly
21:55:37 <ais523> RPN Haskell?
21:55:58 <ais523> :t `o c a -> a $ \x b -> b $ \y -> c $ x `o` y
21:55:59 <lambdabot> parse error on input ``'
21:56:02 <ais523> :t \o c a -> a $ \x b -> b $ \y -> c $ x `o` y
21:56:03 <lambdabot> forall b t b1 t1 a b2. (t -> t1 -> a) -> (a -> b2) -> ((t -> ((t1 -> b2) -> b1) -> b1) -> b) -> b
21:56:21 <ais523> hmm, there's more going on there than meets the eye
21:56:31 <oerjan> PN, not RPN
21:56:33 <Deewiant> PN, not RPN
21:56:52 <ais523> oh, right
21:56:55 <oerjan> i was inspired by cakeprophet's log troubles
21:56:56 <ais523> reverse RPN
21:57:13 <oerjan> there might be a way to do it RPN too
21:59:05 * Trantor_Hoover buys on impulse.
22:00:24 <fizzie> Real MP3 decoding on the Genesis/MegaDrive sounds slightly unlikely; it has a 68k-alike at 7.67 MHz. I'm under the impression that even well-optimized MP3 decoding takes around 40 MIPS. Though maybe with parameters low enough, who knows.
22:00:54 <Trantor_Hoover> The bastards.
22:01:26 <Trantor_Hoover> They've made the lowest default payment $20.
22:01:55 <Madoka-Kaname> @djinn (t -> t1 -> a) -> (a -> b2) -> ((t -> ((t1 -> b2) -> b1) -> b1) -> b) -> b
22:01:55 <lambdabot> f a b c = c (\ d e -> e (\ f -> b (a d f)))
22:02:22 <Patashu> fizzie, you think it might be a wav then?
22:03:27 <fizzie> Well, not exactly a "wav", but something more easily decodable at least.
22:03:58 <fizzie> "Integrated IRC chat" as a game feature sounds a) weird and b) RAS-syndromish.
22:05:35 <oerjan> > let op o (x,(y,s)) c = c (x `o` y, s); calc a = a (); stop s = s; num n s = ($ (n, s)) in calc (num 3) (num 4) (num 2) (op (+)) (op (*)) stop
22:05:36 <lambdabot> (18,())
22:05:59 <oerjan> oh hm
22:06:07 <oerjan> > let op o (x,(y,s)) c = c (y `o` x, s); calc a = a (); stop s = s; num n s = ($ (n, s)) in calc (num 3) (num 4) (num 2) (op (+)) (op (*)) stop
22:06:08 <lambdabot> (18,())
22:06:27 <Patashu> aha: 'The PCM music takes up a lot of space, which is why the ROM is 6MB. '
22:06:29 <Patashu> now, what's PCM
22:06:42 <fizzie> Raw audio, basically.
22:06:47 <Patashu> figures
22:07:07 <fizzie> What you might call a wav, except the .wav file container can contain pretty much anything.
22:07:07 <Patashu> I thought it'd have to be mp3 because whenever I have a wav of a song it's like, 20 megabytes
22:07:13 <Patashu> and there's no way you could fit that much
22:08:58 <fizzie> If it's, say, mono and 22.050 kHz and 8 bits per sample, that's already just one eighth the bytes of "CD quality" (44.1 kHz, 16-bit, stereo) audio.
22:09:29 <fizzie> (I don't think Genesis has more than 1 PCM-enabled channel.)
22:12:31 <Trantor_Hoover> <fizzie> "Integrated IRC chat" as a game feature sounds a) weird and b) RAS-syndromish.
22:12:35 <Trantor_Hoover> Uplink dude.
22:13:39 <Trantor_Hoover> If Frozen Synapse isn't available for 64-bit Linux...
22:15:12 <fizzie> Uplink had an IRC client? I never even noticed.
22:16:28 <Sgeo|web> Will there be an Uplink 2?
22:17:21 <Trantor_Hoover> fizzie, you need to buy it.
22:17:47 <ais523> buy an IRC client?
22:17:49 <ais523> ouch
22:17:58 <Sgeo|web> ais523: in-game money, not real money
22:17:58 <Trantor_Hoover> ais523, it's uplink, piracy is unheard of.
22:17:59 <ais523> there are plenty of good free ones, for Linux at least
22:18:19 <Sgeo|web> Although the game itself costs real money
22:18:41 <Sgeo|web> Am I on ais523's mental ignore again?
22:19:03 <Trantor_Hoover> Want whois? You're damn well paying for it.
22:19:21 <Trantor_Hoover> Lost the file copier? Guess what!
22:19:38 <ais523> Sgeo|web: not mental ignore, just crossed messages
22:22:39 <Sgeo|web> How do you go about losing a file copier?
22:22:56 <Vorpal> fizzie "RAS-syndromish"?
22:22:56 <ais523> rm /bin/cp?
22:23:09 <ais523> Vorpal: RAS syndrome = Redundant Acronym Syndrom syndrome
22:23:17 <ais523> it's a joke originally made by New Scientist, but it caught on
22:23:20 <Vorpal> ah
22:24:06 <Vorpal> fizzie, btw I saw another game with integrated irc client than uplink. Recent too. Trying to remember the name of it.
22:24:17 <Vorpal> tactical simulator kind of thingy iirc
22:24:25 <fizzie> Frozen Synapse?
22:24:29 <Vorpal> fizzie, ah yes
22:24:34 -!- azaq23 has quit (Quit: Leaving.).
22:24:38 <fizzie> It's what I was talking about, not Uplink.
22:24:41 <Vorpal> oh
22:24:52 <fizzie> It's been the topic, thanks to being in a new Bundle.
22:24:59 <Vorpal> oh new bundle!?
22:25:10 <fizzie> Of one game.
22:25:26 <Vorpal> fizzie, what
22:25:46 <fizzie> You could call it a bundloid.
22:25:47 <Trantor_Hoover> "Cameron Poe then reunites with his loving wife and daughter."
22:25:52 <Trantor_Hoover> WP plot synopsis.
22:25:55 <Vorpal> oh there are bonuses
22:27:42 <fizzie> ais523: Another departmental christmas party thing: there was a standard Linux installation, the task was to read a particular file (/etc/motd, I think) by the most "creative" means. And the part that makes it related: all the external-executable commands (such as 'cp') you used were disabled by means of a 'rm' (itself exempt, I think) to up the difficulty and enforce the "creativity".
22:28:12 <ais523> does just "< /etc/motd" in the shell work?
22:28:15 <ais523> let me try that
22:28:27 <ais523> bash: /etc/motd: No such file or directory
22:28:28 <ais523> hmm
22:28:42 <ais523> just "< /etc/passwd" gave no response, anyway
22:28:46 <ais523> so I guess it doesn't actually output it
22:28:51 <Madoka-Kaname> fizzie, can you use gcc?
22:29:18 <ais523> just checks it for existence
22:29:26 <fizzie> ais523: It would just set up a fd for it, not actually read it. Though bash does have a 'read' and all.
22:29:51 <fizzie> Madoka-Kaname: Well, yes, once. Then nobody else can, after.
22:30:23 <Madoka-Kaname> fizzie, write a program that opens /dev/sha, parses the MBT, then parses the partition
22:30:23 <fizzie> I don't recall the solutions, but some were appropriately creative, after the easy ones had been done.
22:30:52 <Madoka-Kaname> Actually.
22:30:55 <fizzie> They might still be on a wall somewhere.
22:31:50 <Madoka-Kaname> Write a program that includes gcc and ln into itself, then on execution, outputs the gcc binary, the ln binary, etc, etc and reads /etc/motd by manually parsing the HD
22:32:30 <Vorpal> bought it
22:32:36 <Vorpal> the bonus games look fun
22:34:02 <Madoka-Kaname> fizzie, are you allowed to create a shar for /?
22:34:11 <Madoka-Kaname> (i.e. cheating)
22:34:31 <fizzie> I already have the frozenbyte bundle, so I'm not sure whether to get this new one. Maybe I should try the demo.
22:34:55 <Vorpal> fizzie, since I lacked the frozenbyte bundle this looked great for me
22:35:03 <fizzie> Madoka-Kaname: This was in christmas 2009, how should I know? I don't think anyone "cheated".
22:35:40 <Trantor_Hoover> Oh god
22:35:41 <Trantor_Hoover> I think
22:35:47 <Trantor_Hoover> I think That Scene is coming up.
22:35:58 <Trantor_Hoover> fizzie, just pay less than $4.
22:35:59 -!- Sgeo|web_ has joined.
22:36:06 <Trantor_Hoover> You'll get only Frozen Synapse.
22:36:13 <Sgeo|web_> Fuck accidentally hitting close
22:36:16 <Sgeo|web_> FUCK IT IN ITS ASS
22:36:30 <Sgeo|web_> Ok, why am I so irritable
22:37:31 <Trantor_Hoover> Were I Madoka-Kaname, I would make some unsettling reference to hormones.
22:37:56 <Madoka-Kaname> I would never do that
22:38:09 -!- Sgeo|web has quit (Ping timeout: 252 seconds).
22:38:14 <Trantor_Hoover> You went through a whole phase of hormones, remember?
22:38:15 <Vorpal> shadowgrounds: survivor is 1.1 GB in download? heh
22:38:18 <Trantor_Hoover> Hmm, wait...
22:38:21 <Vorpal> that is quite large for an indie game
22:38:25 * Madoka-Kaname baps Trantor_Hoover
22:40:23 <Vorpal> this... is going to take a while
22:41:15 <Trantor_Hoover> omaogmogmgomgomogmomgomgom it is thaat sine omgomgomgomgom
22:42:08 -!- hagb4rd has quit (Ping timeout: 248 seconds).
22:43:39 <Vorpal> also the sound track is a larger download than the game for Frozen Synapse?
22:43:40 <Vorpal> eh
22:43:49 <Trantor_Hoover> crying of laughter
22:43:49 <Vorpal> cd quality or something?)
22:43:58 <Vorpal> s/)//
22:44:53 -!- hagb4rd has joined.
22:46:24 * Trantor_Hoover → sleep
22:46:26 -!- Trantor_Hoover has quit (Quit: Leaving).
22:48:11 <Vorpal> fizzie, there still?
22:48:26 <Vorpal> fizzie, I can't get the creation of an account in frozen synapse to work
22:48:29 <Vorpal> :/
22:48:38 <Vorpal> it just times out
22:52:27 <Sgeo|web_> Love, love, is a (procedurally-generated MMO), love is a doing (procedurally-generated MMO),
22:54:57 <monqy> are you okay?
22:55:34 <oerjan> he is just stating the facts, apparently
22:57:53 -!- myndzi\ has joined.
23:00:00 <Vorpal> there, works now
23:01:11 -!- myndzi has quit (Ping timeout: 245 seconds).
23:04:24 -!- BeholdMyGlory has quit (Remote host closed the connection).
23:06:30 <Madoka-Kaname> > fix (brain Vorpal)
23:06:31 <lambdabot> Not in scope: `brain'Not in scope: data constructor `Vorpal'
23:06:34 <Madoka-Kaname> Damnit.
23:06:52 -!- augur has quit (Remote host closed the connection).
23:14:57 <Sgeo|web_> Thomas Edison Invents Marketing Other People's Ideas
23:17:45 -!- copumpkin has quit (Quit: Computer has gone to sleep.).
23:41:01 -!- copumpkin has joined.
23:47:20 -!- ais523 has quit (Remote host closed the connection).
23:54:45 -!- augur has joined.
←2011-09-27 2011-09-28 2011-09-29→ ↑2011 ↑all