←2010-09-10 2010-09-11 2010-09-12→ ↑2010 ↑all
00:00:07 <alise> hmm it would be nice to have a word like
00:00:09 <cpressey> Gregor: Avoiding the FUCKING CRAZINESS that is EITHER COAST.
00:00:11 <alise> "not- X" -> "X not"
00:00:12 <alise> e.g.
00:00:14 <alise> not- empty?
00:00:17 <alise> for obvious reasons
00:00:24 <Gregor> cpressey: The west coast is AWESOMESAUCE
00:00:58 <cpressey> Gregor: I disagree strongly
00:01:08 <Sgeo> I might not be that great at recognizing bad fiction, but this movie's horrible
00:01:16 <Gregor> cpressey: Exclude California!
00:01:18 <alise> also basic stack words like swap should be something like ~
00:01:25 <Gregor> cpressey: The pacific northwest is where the awesomesauce is!
00:01:26 <alise> to avoid cluttering code up
00:02:12 <Sgeo> Factor has stuff like keep
00:02:18 <Sgeo> [ somepoppyword ] keep
00:02:26 <Sgeo> And bi and tri
00:02:31 <Sgeo> But yeah, I think I agree
00:02:32 <alise> Sgeo: [ x ] keep is just dup x though
00:02:41 <alise> unless it keeps all dropped
00:02:44 -!- Phantom_Hoover has joined.
00:02:47 <alise> in which case it's a bit more i guess
00:02:55 <Sgeo> I don't think it keeps all dropped
00:03:02 <cpressey> Gregor: Suck it up if you like, but I left Seattle, and am never, ever going back.
00:03:08 <alise> if we have a while that pops only the condition and predicate words that don't pop their argument you get stuff like
00:03:10 <alise> : loop [read-packet empty? not] [handle-packet] while ;
00:03:11 <cpressey> (it = the "awesomesauce")
00:03:13 <alise> which is lovely
00:03:25 <Phantom_Hoover> oklopol, a hatheist is a concerted attempt to steal a hat, much like a bank heist.
00:03:40 <alise> ~ as swap is definitely nice though
00:03:43 <alise> : handle-packet "Received: " ~ cat print ;
00:03:47 <alise> cat for concatenate, ofc
00:04:09 <Gregor> cpressey: Should've gone to Portland then :P (/me will continue to arbitrarily shrink the area considered "awesomesauce" until you have insufficient evidence to refute it :P )
00:04:28 <Sgeo> : ~ ( x y -- y x ) swap ;
00:04:37 <alise> Sgeo: i'm talking about language design
00:04:42 <alise> that's like saying "oh, I can make Lisp do that"
00:04:45 <cpressey> Gregor: http://www.sciencedaily.com/releases/2010/04/100422184040.htm
00:05:01 <alise> cpressey: [hi5]
00:05:17 <alise> : connect ... ;
00:05:17 <alise> : read-packet 4096 bytes read ;
00:05:17 <alise> : handle-packet "Received: " ~ cat print ;
00:05:17 <alise> : loop [read-packet empty? not] [handle-packet] while ;
00:05:17 <alise> : run connect loop ;
00:05:44 <Gregor> cpressey: Oh please, like such things are unique to Oregon, if you're going to reject anywhere with minor problems, why are you OK with cultural wastelands? :P
00:06:11 <alise> (yes, so [...] is syntax there; i don't give a shit)
00:06:23 <alise> (it's not like it's stopping you reading word-by-word)
00:07:03 <alise> ("..." too)
00:07:20 <Sgeo> ... is syntax?
00:07:25 <Sgeo> And not just pseudoness?
00:07:37 <Sgeo> Oh, the quote marks
00:07:39 <Sgeo> >.>
00:08:31 <alise> Factor:
00:08:39 <alise> : until [ [ not ] compose ] dip while ;
00:08:40 -!- Phantom_Hoover_ has joined.
00:08:41 <cpressey> Gregor: You think Chicago is a cultural wasteland?
00:08:43 <alise> AliseCat:
00:08:46 <alise> : until [: not o] dip while ;
00:08:49 <alise> I WIN HAHAHA
00:08:56 <Gregor> cpressey: Oh, Chicago. Well, OK, that's borderline tolerable.
00:08:59 <alise> I don't really need :
00:08:59 <alise> : until [[not] o] dip while ;
00:09:00 <Gregor> I just knew "midwest" :P
00:09:48 <alise> Quick, I need a verb that means "to negate a boolean function f, yielding g such that g(x) === not f(x)".
00:09:53 <alise> But not "negate"; that's too ambiguous.
00:10:12 <cpressey> Yeah, God forbid I was in Minneapolis or Madison or Cleveland or Indianapolis.
00:10:19 <cpressey> later.
00:10:21 -!- cpressey has quit (Quit: Leaving.).
00:11:18 <alise> hmm, maybe -not is nice
00:11:21 <alise> e.g. [empty?] -not
00:11:28 <alise> Even reminiscent of "Yeah, it's empty. NOT."
00:11:44 -!- Phantom_Hoover has quit (Ping timeout: 276 seconds).
00:11:52 <alise> hmm, is there a name for the relationship between if/unless, while/until, etc.?
00:12:14 <Sgeo> Useless?
00:12:16 <Sgeo> >.>
00:12:23 <alise> I mean in the English language.
00:12:27 <alise> And no, they are not.
00:12:34 -!- Wamanuz4 has joined.
00:12:43 <alise> I would have thought someone enamoured with Factor would have appreciated the readability of code in a relatively natural style.
00:13:18 <Sgeo> I still have yet to get any practice with Factor >.>
00:13:35 <Sgeo> Also, it's only really readable sometimes
00:13:45 <Sgeo> Things life if are annoying
00:15:36 <Sgeo> [ whendoesthishappen ] [ whendoesthisotherthinghappen ] if ! OH!!!
00:16:30 <alise> ...?
00:16:38 -!- Wamanuz3 has quit (Ping timeout: 272 seconds).
00:16:53 <alise> Sgeo: what does Factor call w? [x] w -> swap x swap
00:17:17 <oklopol> mixing natural languages with programming ones != natural, but instead ugly and impure
00:17:43 <Sgeo> I _think_ dip, hold on
00:17:53 <alise> that's not dip
00:17:54 <oklopol> dip is a fucking stupid command
00:17:59 <alise> [x] dip -> drop x undrop
00:18:00 <Sgeo> keep?
00:18:05 -!- olsner has joined.
00:18:06 <alise> i don't see how it's keep
00:18:06 <Sgeo> Wait
00:18:10 <Sgeo> hold on
00:18:12 <alise> [x] keep -> dup x afaik
00:18:16 <alise> oklopol: dip is awesome
00:18:26 <oklopol> awesomeness is a retarded concept
00:19:01 <Sgeo> I don't know if it has a combinator like that
00:19:16 <oklopol> don't even get me started on combinators......
00:20:30 <oklopol> wait what was dip again?
00:20:40 <oklopol> i didn't read the word until now
00:20:54 <alise> oklopol: basically you have your stack A B C D
00:20:56 <alise> D on top that is
00:20:58 <alise> [x] dip
00:21:01 <alise> x see sthe stack as
00:21:03 <alise> A B C
00:21:06 <alise> *sees
00:21:08 <alise> and say replaces C with C'
00:21:10 <oklopol> right
00:21:10 <alise> and it ends with
00:21:12 <alise> A B C' D
00:21:18 <alise> i.e. drop x undrop
00:21:21 <alise> or in more sane terms
00:21:27 <alise> send-to-other-stack x bring-from-other-stack
00:21:28 <Phantom_Hoover_> IDEA FOR MOON SERVER:
00:21:43 <Sgeo> There's a word "with" that I don't understand
00:21:48 <Phantom_Hoover_> Power things with Stirling engines from the cooling!
00:22:15 <alise> apparently [ A ] with B === swap [ swap A ] curry B
00:22:21 <alise> that's not very helpful though.
00:22:27 <alise> ah hmm
00:22:35 <alise> 2 { 1 2 3 } [ - ] with map .
00:22:44 <alise> a bit ... strange ...
00:22:50 <oklopol> curry?
00:23:11 <oklopol> erm applies multi-arg func to one arg i guess?
00:23:21 <alise> oklopol: yes
00:23:21 <Sgeo> curry takes an object and a quot and makes a quot(-like) that includes the object
00:23:31 <alise> 5 [ . ] curry ---> [ 5 . ]
00:23:38 <alise> i.e. partial application
00:24:44 * Sgeo has to try 2 { 1 2 3 } [ - ] with
00:25:38 -!- FireFly has quit (Quit: swatted to death).
00:25:52 <alise> Sgeo: you forgot map
00:26:06 <alise> so oklopol! clearly you know lots about language
00:26:17 <alise> what is the name for the relationship between if/unless, while/until, and so forth?
00:26:19 <Sgeo> That bit's confusing, trying to take it one step at a time
00:27:44 <Phantom_Hoover_> alise, I suspect those relations are at least partly a construct of CS.
00:28:26 <alise> Phantom_Hoover_: No...
00:28:28 <alise> They're clearly opposites.
00:29:00 <Phantom_Hoover_> Hmm
00:29:57 <alise> But "opposite" is not very specific.
00:31:01 <alise> Phantom_Hoover_: Instead, figure out a good name for the word that composes not onto a word!
00:31:08 <fizzie> Call them inversions, it's a nice-sounding word.
00:31:15 <fizzie> Also very overloaded already.
00:31:19 <alise> That is, "[empty?] -not" === "[empty? not]".
00:31:23 <Phantom_Hoover_> alise, antonyms, perhaps?
00:31:30 <alise> Phantom_Hoover_: No, I mean, rename "-not".
00:31:58 <fizzie> "ant", short for "antonym"; then no-one can understand it. "[empty?] ant".
00:34:34 <alise> Perhaps "anti", but ehh.
00:35:07 <fizzie> Why not: "[empty?] oh-no".
00:35:07 <alise> : until [-not] dip while ;
00:35:11 <alise> : until [anti] dip while ;
00:35:14 <alise> I'm not sure which is better.
00:35:23 <fizzie> : until [oh-no] dip while ;
00:35:42 <alise> no :P
00:35:53 <fizzie> : until [oh-no-you-don't] dip while ;
00:36:06 <alise> : unless [not] dip if ;
00:36:06 <alise> : until [anti] dip while ;
00:36:12 <fizzie> "Are you saying no just to be negative?"
00:36:12 <alise> I guess I don't like how not and anti are so different-looking.
00:37:42 <cpressey_> combinator languages are "lexically rich"
00:37:48 <alise> negate is the obvious choice, but...
00:37:50 <alise> it's so LONG!
00:37:56 <alise> and also
00:37:59 <alise> 3 negate ==> ERROR
00:38:03 <alise> which is a bit confusing
00:38:11 <alise> cpressey_: in what sense?
00:38:23 <fizzie> "nada".
00:38:36 <cpressey_> alise: you have umpteen words to juggle the arguments the way you need
00:38:46 <alise> cpressey_: like Lojban!
00:39:07 <alise> ~ is definitely a nicer name than swap though imo
00:39:09 <cpressey_> fizzie: Come come elucidate your thoughts.
00:39:18 <alise> : handle-packet "Received: " ~ cat print ;
00:39:57 * Phantom_Hoover_ ← sleep
00:40:18 <cpressey_> alise: Is that Factor?
00:40:44 <cpressey_> I should check it out but I have so many languages of my own to design
00:41:16 <alise> cpressey_: No, it's "alise's cat"!
00:41:56 <cpressey_> omg cnfused
00:43:40 <alise> : handle-packet "Received: " swap append print ;
00:43:41 <cpressey_> alise: I made a tiny bit of progress on that apply/ylppa language this week, btw. To summarize, I swapped the meaning of * and / because it's so much saner to have x/x=1. Also 1*x=x, x/1=x. But not in general true that (x/y)*y=x, because, weirdly, 1/x=x.
00:43:41 <alise> is the Factor
00:43:42 <alise> or something
00:43:59 <alise> Define 1.
00:44:06 <cpressey_> 1 is the quoted hole.
00:44:17 -!- Phantom_Hoover_ has quit (Ping timeout: 245 seconds).
00:44:25 <alise> so e.g. a symbol or what?
00:44:27 <cpressey_> 1*x = x because putting anything in the hole is that thing.
00:44:43 <cpressey_> Or, it's like the identity function. f(x)=x
00:45:52 -!- cpressey_ has changed nick to cpressey.
00:46:45 <alise> Wat.
00:47:23 <cpressey> well, nothing important; it will probably only make sense in context, which I'm trying to write up
00:49:19 <cpressey> (It is tantalizing that (x/y)*y=x holds for many cases, so I keep thinking maybe there is a way to add rules to the system so that * is actually associative, and eventually turn it into a group. But any rules that would work seem gnarly and contrived.)
00:49:36 <cpressey> holes within holes and things
00:50:06 <cpressey> named holes (actually i've been there before)
00:50:18 <oklopol> no more groups plz :-p
00:50:21 <cpressey> ternary operators (don't know how to even begin abstract algebra on those)
00:50:22 <cpressey> etc
00:50:25 <oklopol> slaep ->
00:50:45 <cpressey> oklopol: killjoy! goodnight
00:50:56 <oklopol> there aren't really any algebras with > binary ops afaik
00:51:11 <cpressey> yeah, didn't think so
00:51:13 <oklopol> i mean ones that have been named
00:51:24 <oklopol> or rsrchd
00:51:26 <oklopol> ->
00:51:33 <cpressey> pizza ->
00:54:14 <alise> <cpressey> named holes (actually i've been there before) ;; DOESN'T EVERYONE NAME THEIR HOLES
00:55:43 <alise> Irritator is a genus of dinosaur :-D
00:55:56 <alise> [[Martill et al. (1996) wrote that the generic name Irritator came "from irritation, the feeling the authors felt (understated here) when discovering that the snout had been artificially elongated."]]
00:56:12 <alise> [[Irritator was first scientifically described in 1996 by paleontologists Martill, Cruikshank, Frey, Small and Clarke.[1] Its only known fossil, an 80 cm skull discovered in eastern Brazil, was badly obscured by plaster which was added by the commercial fossil-collecting fossil-poachers who illegally sold it (the trade of fossils is prohibited by law in Brazil), in hopes of making the fossil look more complete and valuable. For example, "the posterior port
00:56:12 <alise> ion of the saggital [sic] crest... [was] fabricated by fossil dealers."[1] The buyers were not aware of the modifications to the illegally collected specimen, and it required them a great deal of work to reconstruct the original features — hence the name.]]
00:58:41 -!- jcp has quit (Ping timeout: 255 seconds).
00:59:18 <alise> ...Or perish.
00:59:32 <alise> http://pastie.org/1151189.txt?key=rwbueifvabdyjmxseyiuua
00:59:45 <cpressey> alise: hyperthetiwhat?
00:59:52 <alise> http://pastie.org/1151189.txt?key=rwbueifvabdyjmxseyiuua
00:59:53 <alise> That
01:00:19 <cpressey> well i certainly wouldn't want to perish
01:00:50 <olsner> alise: ... OR DIE!
01:00:55 <alise> Perish ... OR DIE!
01:01:04 <cpressey> How is it bad?
01:01:26 <olsner> alise: it looks like forth
01:01:32 <olsner> exactly like forth
01:01:38 <alise> olsner: no it doesn't
01:01:39 <olsner> forth
01:01:41 <cpressey> I assumed it was Factor, but not for any good reason
01:01:47 <alise> Forth uses [...] for a completely different thing
01:01:52 <alise> and Joy, Factor etc. use it for the same meaning that I do
01:01:55 <alise> cpressey: no, it's my hypothetical language
01:02:05 <alise> rewrite it in whatever you think is a cleaner style and the language design gets changed accordingly
01:02:12 <olsner> alise: isn't [ and ] completely user-defined in forth?
01:02:40 <olsner> or at least dynamic enough that any definition can be implemented by a forth interpreter/system?
01:02:55 <alise> olsner: i'm referring to what it's defined as by default
01:02:55 <cpressey> alise: what's your goal for this language?
01:03:00 <alise> just like overriding :, you'd have to be fucking stupid
01:03:03 <alise> as it's rather vital
01:03:12 <olsner> (incidentally, I have no idea what [ and ] do)
01:03:19 <alise> olsner: compile mode/interpret mode switches
01:03:38 * cpressey shudders
01:03:42 <alise> cpressey: promote the factorisation of code into short, one-line definitions; have functional expressivity; make code read very literately and concisely, without needless fluff
01:03:48 <alise> (thus the renaming of swap to ~)
01:04:18 <cpressey> what is the meaning of ... in connect anyway?
01:04:45 <olsner> hmm, so '[' makes the code get re-interpreted each time instead of being compiled at the time of definition?
01:04:53 <olsner> or something? :)
01:05:14 <cpressey> read-packet needs to take... a stream or something... as an argument
01:05:26 <alise> cpressey: ... is a placeholder
01:05:27 <olsner> I should just re-read that forth implementation that was passed around the other week
01:05:29 <alise> obviously read-packet does
01:05:33 <alise> as connect pushes the connection
01:05:45 <alise> and read-packet takes it off the top of the stack (not dropping it, of course)
01:05:46 <cpressey> alise: that was not obvious from the code, you see
01:05:54 <alise> cpressey: it sure is
01:05:59 <alise> you're just not used to concatenative style
01:06:03 <alise> there's no way to indicate passing an argument :)
01:06:08 <alise> olsner: nothing even remotely like what you said
01:06:10 <alise> yeah, read it
01:06:14 <olsner> alise: ok, cool
01:06:18 <alise> http://www.annexia.org/_file/jonesforth.s.txt
01:06:23 <alise> http://www.annexia.org/_file/jonesforth.f.txt
01:06:24 <cpressey> see, some way to indicate that might help "code read very literatelu=y"
01:06:27 <alise> (you read the second file after the first)
01:06:28 <cpressey> just sayin'
01:06:38 <alise> cpressey: so basically you dislike concatenative style. ok. that's not very helpful
01:06:45 <cpressey> s/u=//
01:06:48 <olsner> I have already read both files :)
01:06:57 <alise> i think reading a packet is a very obvious action to take, the rest is just context
01:07:01 <cpressey> alise: I have no idea what ... returns
01:07:16 <cpressey> i feel somewhat unfairly blamed, here
01:07:28 <alise> : connect make-socket-and-connect-it ;
01:07:32 <alise> ... is not actual code
01:07:43 <alise> although maybe I'll use it for the body of unimplemented abstract methods or something
01:07:46 <alise> since it's amusing
01:09:06 <alise> cpressey: i /could/ sprinkle stack effect declarations everywhere, but they're so irritating
01:09:13 <alise> i like my stack effects simple enough that it doesn't matter!
01:09:39 <cpressey> back to "lexically rich". yeah, you might be asking the wrong person
01:10:13 -!- wareya has quit (Read error: Connection reset by peer).
01:10:30 <cpressey> anyway, i never did get to the pizza, so re -->
01:10:49 <alise> : connect socket "some-server.net" (host) 1234 (port) connect ;
01:10:51 <alise> or something
01:10:51 <alise> er
01:10:57 <alise> with a less-clashy last word
01:11:36 -!- wareya has joined.
01:12:19 <Sgeo> Crawl apparently has a ring of Atheism
01:13:35 <olsner> you have acquired the Ring of Atheism (+1 resistance against religion)
01:17:37 <Ilari> Does it also work against things that work like religions but do not have gods? :->
01:18:30 <Sgeo> I can't find any evidence that I didn't hallucinate it
01:20:48 <Gregor> Ahhhh, music.
01:21:00 <Gregor> "molto rubato": Meaningless Italian, meaningful musical Italian!
01:23:30 <alise> mucho molto, molto rubato
01:33:47 <Sgeo> http://www.youtube.com/watch?v=XFGrQMD6Uqc
01:33:51 <Sgeo> http://www.youtube.com/watch?v=1BxFlmb6S6E
01:35:59 <alise> Sgeo discovers Britain
01:43:01 <cpressey> [ "Received: " ~ cat print ;
01:43:07 <cpressey> no
01:43:15 <cpressey> try again cpressey
01:44:18 <cpressey> [ "Received: " ~ cat print ] 'handle-packet =
01:44:18 <alise> cpressey: what
01:44:25 <alise> cpressey: that is not easier to read.
01:44:31 <alise> nor is it significantly purer
01:44:36 <alise> you rely on 'foo being syntax there, for instance
01:44:41 <alise> and [...]
01:45:06 <cpressey> you didn;t mention purity
01:45:33 <cpressey> it discards : as syntax
01:45:38 <alise> syntax is user-defined obvs
01:46:31 <cpressey> i can't handle [ ] being mode switches, anyway
01:47:19 <alise> it's not in this :P
01:47:21 <Sgeo> 'foo syntax?
01:47:47 <alise> cpressey: Have you ever made an OISC?
01:47:56 <cpressey> alise: no
01:48:02 <alise> cpressey: Get crackin'
01:48:08 <cpressey> alise: screw you
01:48:12 <alise> Lambda the Ultimate One-Instruction-Set Computer
01:48:18 <alise> It has to be done
01:48:25 <alise> Also, noted in log: cpressey + pizza = lowercase.
01:48:26 <cpressey> blog reference? why?
01:48:42 * cpressey cnfysed
01:49:05 <alise> not a blog reference
01:49:17 <alise> the blog title is a reference to the "Lambda the Ultimate ..." series of papers detailing Scheme
01:49:26 <alise> the Lambda Papers
01:49:32 <alise> the ones of that form are
01:49:37 <alise> Lambda: The Ultimate Imperative
01:49:39 <alise> Lambda: The Ultimate Declarative
01:49:46 <alise> http://en.wikipedia.org/wiki/History_of_the_Scheme_programming_language#The_Lambda_Papers
01:49:48 <cpressey> oh
01:49:51 <alise> oh
01:49:52 <alise> and also
01:49:55 <alise> 1977: Debunking the 'Expensive Procedure Call' Myth, or, Procedure Call Implementations Considered Harmful, or, Lambda: The Ultimate GOTO
01:49:55 <alise> 1979: Design of LISP-based Processors, or SCHEME: A Dielectric LISP, or Finite Memories Considered Harmful, or LAMBDA: The Ultimate Opcode
01:50:05 <alise> thus firmly establishing it as a meme
01:50:18 <cpressey> yes i missed it
01:50:22 <cpressey> because i'm a loser
01:50:44 <alise> so clearly the lambda instruction composes an existing lambda, the result of calling another existing lambda with a specified value, and one base operation of your choice
01:50:48 <alise> then stores it somewhere
01:54:14 <Sgeo> Ugh
01:54:22 <Sgeo> The answer to prefix v. postfix is obvious:
01:54:41 <Sgeo> It depends.
01:54:53 <Sgeo> if is good as prefix, tests are good as postfix
01:55:12 <cpressey> die if not $good;
01:55:38 <Sgeo> Infix is never good
01:55:48 * Sgeo ducks
01:57:28 * cpressey is an existing lambda
01:57:30 <alise> axioms
01:57:39 <cpressey> axioms ftw
01:57:42 <alise> Sgeo: you know, you've already admitted you have no idea about Factor or whatever
01:57:51 <alise> so making sweeping statements is incredibly inadvisable :P
01:58:06 <cpressey> even Python has postfix if now. I don't approve of this
01:58:13 <cpressey> Py "no tail call optimization" thon
01:58:19 <cpressey> Unless Guido has gone back on that
01:58:32 <alise> that's ancient
01:58:36 <alise> "x if y else z"
01:58:36 <Sgeo> I think my statement is less sweeping than "Always use postfix!" or "Always use prefix!"
01:58:42 <alise> --> if y then x else z endif
01:58:54 <alise> Sgeo: no, but it does state that you have solved the problem and it is obvious
01:59:03 <cpressey> alise: well, 2.x -- not Ancient-ancient
01:59:11 <cpressey> x being something
01:59:16 <cpressey> 2.mumble, I meant
01:59:25 <alise> which is quite frankly insulting to very intelligent people in the language scene who have thought about this a lot and do not find it so obvious at all
01:59:41 * Sgeo wants to make a Multifix esolang
01:59:45 <cpressey> It's obvious that the answer is not obvious.
02:00:04 <cpressey> Sgeo is going all Zen on our sorry asses.
02:01:03 <cpressey> meanwhile, topology
02:01:08 <cpressey> oh, no
02:01:26 <cpressey> no topology, because the mathematician types are asleep now.
02:01:30 <cpressey> because they live in europe.
02:01:32 <cpressey> huh.
02:01:45 <cpressey> what a coincidence.
02:03:25 <Sgeo> I think it was the way alise described Factor that made me really interested in Factor
02:03:47 <Gregor> http://codu.org/tmp/GRegor-op13-mov2-wipp7.pdf I've gotten too notationally clever, and Lilypond doesn't like me for it.
02:07:04 <alise> But it's meant to
02:07:27 * cpressey sighs and looks up Factor
02:08:09 <cpressey> My first exposure to Factor was a Factor zealot emailng me out of the blue and telling me I must have seen this language (because I am cpressey) and it's awesome
02:08:29 <cpressey> and I tried to explain that I was more interested in esolangs
02:08:41 <cpressey> and that didn't seem to go through
02:09:33 <cpressey> uh... first example code it posted looks absolutely horrible. Reloading to give it a fighting chance
02:10:17 <alise> i've never seen a factor zealot, interesting.
02:10:52 <cpressey> alise: As you said once, "forth does seem to attract the crazies"... this was possibly an Advanced Specimen<TM>.
02:10:52 <Sgeo> Are there languages that don't have zealots?
02:11:11 <Gregor> Yes.
02:11:14 <alise> Sgeo: INTERCAL.
02:11:23 <alise> I was about to say Plof, but oops Gregor and pikhq.
02:11:33 <Gregor> alise: Oh you don't even know man.
02:11:35 <cpressey> ILLGOL. I dearly hope.
02:11:35 <Gregor> alise: YOU DON'T EVEN KNOW
02:11:41 <Gregor> alise: Muahahahaha
02:12:29 <cpressey> So I'm thinking of calling the apply/yppla language "Spade", because it's all about creating holes in things and filling them up again.
02:12:43 <cpressey> And "Shovel" sounded a little awkward
02:13:27 <cpressey> Oh and I was completely wrong: 1/y=1, which is far more reasonable than 1/y=y.
02:14:31 -!- jcp has joined.
02:15:18 * cpressey fails to be excited by Factor, again
02:15:19 <Sgeo> cpressey, new example any better?
02:15:23 <Sgeo> And what was the old example?
02:15:46 <cpressey> Sgeo: a bit, but not much. The better example was gen'ing XML. The "so what" example was sending email.
02:16:24 <alise> why didn't they just call Corin Nemec's SG-1 character Corin Nemec?
02:16:47 <alise> i can't even manage to remember his other, normal alien name; Gregor is right again
02:16:57 <Sgeo> Jonas Quinn
02:17:16 <alise> I don't care
02:17:19 <Sgeo> Corin Nemelex Xobeh
02:18:23 <Gregor> And he's a SCIENTOLOGIST.
02:18:46 <cpressey> I am offended that I cannot write a Haskell interpreter in about 5 pages of Haskell. If not for that, Haskell would excite me.
02:19:22 <Sgeo> How many pages of Scheme does it take to make a Scheme interpreter? Not counting eval-like stuff
02:19:46 <cpressey> I am offended that Scheme contains insufficient visual differentiation to prevent my eyes from bleeding. If not for that, Scheme would excite me. Also dynamic-wind set! whew
02:20:00 <alise> dynamic-wind set! call-with-current-continuation
02:20:02 <alise> you now have a headache
02:20:09 <cpressey> a-yup
02:20:14 <alise> <Sgeo> How many pages of Scheme does it take to make a Scheme interpreter? Not counting eval-like stuff
02:20:26 <alise> you can do a decent subset in a page or two
02:20:37 <alise> utilising eval for library functions like display :P
02:20:44 <Sgeo> dynamic-wind?
02:21:02 <alise> Sgeo: you DON'T want to know.
02:21:09 <Sgeo> Yes! I! Do!
02:21:31 <cpressey> Based on the previous two offenses, one might reasonably conclude that a pure Scheme with polymorphic, inferred, algebraicy types would excite me. One might be onto something, if so.
02:21:42 <alise> Fine, second.
02:21:48 <alise> Sgeo: http://www.schemers.org/Documents/Standards/R5RS/HTML/r5rs-Z-H-9.html#%_sec_6.4
02:21:51 <Gregor> alise: I ACTUALLY feel like the current next-gen rewrite of Plof being discussed, btw, is something you'll like.
02:21:59 <alise> Grep for "(dynamic-wind".
02:22:20 <alise> Also, "(call-with-current-continuation", for a more detailed look at how they interact.
02:22:26 <alise> No, I will not help explain; you got yourself into this.
02:22:30 <alise> Gregor: Shoot.
02:22:45 <cpressey> /* You are not expected to understand this. */
02:22:47 <Gregor> alise: Nuh uh, it's not ready for public consumption yet, I'm just TANTALIZING YOU X-P
02:22:50 <alise> Gregor: If I make a completely new design that's awesome and unrecognisable but somehow Plof inside will you accep tit?
02:23:19 <Gregor> alise: I sort of have? Your suggestion for some Forth-related changes, plus a year or whatever of rearranging that and munging it, is fundamental to the new design.
02:23:38 <alise> Gregor: What were my Forth-related suggestions? >__>
02:23:55 <Gregor> alise: Well, your original Forth-related suggestion was basically "replace your bytecode with Forth" :P
02:24:36 <alise> Gregor: That was a good suggestion. :P
02:24:40 <cpressey> so that it fails at parallelizing and goes slower
02:24:53 <alise> cpressey sure is in grumpy old bastard mood
02:24:58 <alise> it failed at that anyway
02:25:05 <Gregor> But my interpretation has become "use the Forth-style of defining simple elements ('words' for Forth) that translate concatenatively to machine code" ... or something like that, I guess it's hard to identify what the chain of thought is now :P
02:25:06 <alise> I can't even begin to imagine how inefficient Plof is.
02:25:18 <alise> Gregor: Bah, but the compiler architecture is what would hel pyou.
02:25:31 <alise> http://plof.codu.org/wiki/Plof4 HAHA I HAVE STOLEN YOUR IDEA WORDS
02:25:41 <Gregor> That's junk.
02:25:52 <alise> IT'S STUPID
02:25:58 <Gregor> I've totally changed it again since I wrote that. Well, not totally changed it, but everything below that is different too.
02:26:11 <Gregor> alise: Fine, I'll PM you to describe the current work-in-progress design :P
02:26:23 <Gregor> alise: Same as they have for two years now.
02:26:26 <alise> WHICH IS
02:26:32 <alise> (I HAVEN'T CARED FOR TWO YEARS)
02:26:33 <Gregor> if (condition) (body)
02:27:05 * Sgeo can agree with that
02:27:16 <cpressey> alise: grumpy old DRUNK bastard, you mean!
02:27:20 <cpressey> (no, not yet)
02:27:45 <alise> cpressey: DRUNK ON PIZZA
02:28:26 <Sgeo> >.>
02:31:05 * Sgeo finds some PSOX-related logs
02:31:21 <Sgeo> And yes, there is a logical train of thought from alise's last statement to that
02:33:41 <cpressey> Ooh mono. I forgot! haha
02:33:53 <cpressey> (no logial train there, just remembering)
02:35:07 <cpressey> btw, http://catseye.tc/lab/madison/doc/madison.html
02:35:35 <cpressey> That is my HTMLification of some notes I scrawled down on a strictly-typed term-rewriting language.
02:35:38 <cpressey> It is not esoteric.
02:35:47 <alise> on the contrary :)
02:36:21 * Sgeo switches his love to Madison
02:36:24 <cpressey> It's even less esoteric than most term-rewriting languages
02:36:34 <cpressey> oh, bad craziness
02:36:48 <alise> "The notation a -> b is read as "a rewrites to b" and means that occurrences of a, when found, are replaced by occurrences of b. Both sides may contain variables; all variables occurring in b must also occur in a."
02:36:51 <alise> make it covalent!
02:36:54 <alise> then you can use =
02:36:59 <alise> and give it timeless semantics
02:36:59 <cpressey> no thanks
02:37:20 <cpressey> maybe later
02:37:25 <Sgeo> "timeless semantics"? Would Haskell be considered to have timeless semantics?
02:37:33 <alise> Sgeo: well i'm not sure
02:37:37 <cpressey> the objective of this (not stated) is to see if you can do the typing also with the rewrite engine
02:37:39 <Sgeo> *gasp*
02:37:40 <alise> in a covalent system it doesn't matter which direction you go in
02:37:55 <cpressey> Prolog would be closer?
02:38:09 <cpressey> Prolog you can backwards in
02:38:20 <cpressey> You nondetermine, but, you can
02:38:49 <Sgeo> Is Prolog even TC?
02:39:06 <cpressey> ...
02:39:19 <alise> "Both a and b may contain types."
02:39:24 <alise> i dislike how this isn't fit into the other machinery
02:39:37 <cpressey> Sgeo: Yes, Prolog is TC.
02:39:51 <cpressey> alise: I think types are terms
02:39:58 <cpressey> just, you know, specially decorated ones
02:40:05 <cpressey> but i'm not sure
02:40:09 <cpressey> would need to build it to know.
02:40:17 <alise> well
02:40:21 <alise> how is *List A a term?
02:40:21 <cpressey> (and type variables are like pattern variables)
02:40:22 <alise> what's A
02:40:31 <cpressey> A is a (type) variable
02:40:44 <cpressey> nil => *List A is problematic, I admit
02:40:45 <alise> hmm i think you need a which-has-a-type operator
02:40:55 <alise> cons x:A xs:(*List A) => *List A
02:41:04 <alise> that way it makes more sense
02:41:09 <cpressey> Types *should* be inferrable for simple programs, but in general, yes
02:41:09 <alise> since the thing on the left is the actual fully-specified call
02:41:14 <alise> you know what i mean
02:41:15 <alise> to declare types
02:41:19 <alise> rather than just putting the types in there
02:41:28 <alise> this way the left hand side is always a valid term for calling just that
02:41:38 <alise> because x:A == x but it only works if x is of type A
02:41:38 <alise> so
02:41:41 <alise> cons x:A xs:(*List A) => *List A
02:41:50 <alise> is only applicable if you give cons an A and a *List A
02:41:58 <alise> of course you need some sort of rule to exclude everything not explicitly allowed
02:42:01 <cpressey> but you're not using x and xs, so why mention them?
02:42:03 <alise> i.e. have no default rule
02:42:11 <alise> cpressey: consistency; right now, your left-hand side terms are nonsensical
02:42:11 <cpressey> the => already tells you "I only care about types here"
02:42:15 <alise> cons A *List A isn't a well-typed expression
02:42:21 <alise> since A is not of type A, and *List A is not of type *List A
02:42:31 <alise> so you have expressions on the LHS that aren't valid or meaningful at all
02:42:35 <cpressey> A *is* type A
02:42:42 <alise> what?
02:42:44 <alise> no, A is a type
02:42:49 <cpressey> right
02:42:51 <alise> N isn't a natural
02:42:56 <cpressey> and A in that expression means "the type A"
02:42:58 <alise> "*List A" isn't a list of As, it's a type
02:43:04 <alise> cpressey: yes. which you can't pass to cons
02:43:08 <alise> obviously.
02:43:14 <cpressey> alise: You're not "passing" anything -- it's a type rule
02:43:18 <cpressey> =>
02:43:20 <alise> yes. which is inconsistent
02:43:21 <cpressey> is not ->
02:43:29 <alise> because A => B should mean
02:43:34 <alise> "the *expression* A types as B"
02:43:46 <alise> so just as we use variables to denote anything in a rule, we use variables with type tags to denote "anything of this type"
02:43:46 <alise> so
02:43:55 <alise> cons (x:A) (xs:*List A) => *List A
02:43:56 <alise> means
02:44:01 <alise> anything that satisfies the pattern on the left
02:44:02 <alise> is typed as right
02:44:03 <alise> whereas
02:44:08 <alise> cons x xs -> ...
02:44:09 <alise> means
02:44:11 <alise> anything that satisfies the pattern on the left
02:44:13 <alise> is rewritten as right
02:44:15 <alise> you see the symmetry?
02:44:26 <alise> so basically you just introduce a simple rule
02:44:38 <alise> (x:A) matches a given y iff y matches x and y is of type A
02:44:39 <alise> done.
02:44:45 <alise> we can also do polymorphic things like
02:44:47 <alise> id (x:a) => a
02:44:55 <alise> assuming lowercase means a variable, but whatever, you get the idea there
02:45:11 <cpressey> I can't see any advantage your notation has
02:45:44 <alise> cpressey: semantics
02:45:46 <cpressey> x and xs are never used, thus redundant. When *would* you use them?
02:45:53 <alise> it makes the semantics of A=>B closer to the rewriting language
02:45:54 <cpressey> alise: that's glib
02:45:56 <alise> well you could even do something like
02:46:02 <alise> cons(:foo, :bar) => Int
02:46:04 <cpressey> if you like, pretend x and xs are there
02:46:06 <alise> saying that if you pass cons the symbols foo and bar
02:46:09 <alise> it's of type Int
02:46:10 <alise> when you do
02:46:11 <alise> foo -> bar
02:46:12 <alise> you say
02:46:16 <alise> if you ever see a foo
02:46:17 <alise> rewrite it to bar
02:46:20 <alise> foo => bar
02:46:20 <alise> is saying
02:46:22 <alise> if you ever see a foo
02:46:24 <alise> it has type bar
02:46:29 <alise> so the foo on the left should have the full pattern-matching capability
02:46:38 <alise> rather than being restricted to a types-on-left-only non-expression facility
02:46:40 <cpressey> if I wanted to do dependent types, maybe
02:46:43 <alise> this runs deeper.
02:46:44 <alise> cpressey: no
02:46:46 <cpressey> but ... I certainly don't
02:46:49 <cpressey> alise: screw you
02:46:51 <alise> nothing to do with dependent types at all
02:46:59 <alise> well i don't have to justify it to you
02:47:03 <alise> i'm right, after all :)
02:47:07 <cpressey> sorry, i misunderstood what you said
02:47:18 <cpressey> the "screw you" was uncalled for.
02:47:22 <cpressey> still, I don't agree
02:47:30 <alise> i've been ruder to plenty.
02:48:10 <alise> i'll just develop my own language with this :-P
02:48:43 <alise> i mean i guess it does easily lead to dependent types but i don't /think/ that's strictly necessary
02:49:11 <cpressey> i can't see why else you'd care about the *values* x and xs in a *type* rule
02:50:00 <alise> cpressey: my version is the more purist, term-rewriting form i guess
02:50:03 <alise> whereas yours is the more practical
02:50:43 <alise> cpressey: btw, I'm not sure I like the `Foo thing
02:50:48 <cpressey> perhaps... i really don't know. this design was largely to isolate a space that i was playing with in rho
02:50:55 <cpressey> `Foo?
02:50:56 <alise> I don't see any reason not to just have a "type Foo" declaration to let you say just Foo
02:50:58 <alise> erm
02:50:59 <alise> *Foo
02:50:59 <alise> sorry
02:51:03 <alise> injected my own better syntax :-D
02:51:07 <HackEgo> No output.
02:51:07 <cpressey> yeah, either would work
02:51:26 * cpressey gives HackEgo a Scooby snack
02:51:42 <alise> i mean even Pure has a declaration to declare a nonfix (something that has no rewriting or whatever but is used as a symbol, not a variable)
02:51:45 <alise> since e.g. if you had nonfix n
02:51:46 <alise> fact n = ...
02:51:50 <alise> would match literally n
02:51:54 <alise> otherwise n would be a variable
02:51:56 <alise> this is similar
02:52:19 <alise> heh, and with this instead of nonfix you could just do
02:52:22 <alise> foo : whateverthetype
02:52:24 <alise> and provide no rules
02:52:25 <alise> er =>
02:52:29 <alise> keep injecting my own syntax
02:52:30 <cpressey> I agree there maybe need to be some decls. Also the lack of parens on constructors -- could lead to ambiguity
02:52:59 <alise> ADTs are nice with this
02:53:04 <alise> zero => *Nat
02:53:08 <alise> succ *Nat => *Nat
02:53:49 <cpressey> anyway, between this, and Spade, and Pophery, and an overriding urge to compile C programs for AmigaOS 1.3... well, "work cut out" seems like an understatement.
02:53:53 <cpressey> but i'm lazy
02:54:04 <cpressey> oooh mono
02:54:08 <cpressey> (and easily distracted)
02:54:17 <alise> mono is meh
02:54:19 <alise> :P
02:54:57 <cpressey> mono-2.0-devel? probably
02:55:21 <cpressey> .NET is to satisfy that "sick" urge, like coding in Falcon would
02:55:22 <alise> cpressey: i think you should maybe make stuff the more boring a(b,c,d,...)
02:55:30 <alise> since your types right now are near-incomprehensible
02:55:31 <cpressey> alise: yeah, i may succumb
02:55:56 <cpressey> even(nil) -> true. even(cons(H,T)) -> not(even(T)).
02:56:10 <alise> even (cons H T) -> not (even T). ;; doesn't really buy you much
02:56:39 <alise> cpressey: the => rules look quite similar to -> rules
02:56:42 <alise> a bit confusing when reading a function
02:57:04 <alise> cpressey: ofc you do get an x vs x() confusion
02:57:15 <alise> (I recommend making them identical; i.e. x() is just a silly way to write x.)
02:57:48 -!- benuphoenix has joined.
02:57:50 <cpressey> alise: could do like: types true -> Bool; false -> Bool; end types. rules not(true) -> false; not(false) -> true; end rules.
02:57:59 <alise> cpressey: oh, and if you're totally boring, capitalise the first letter of variables to make it clear which are literal symbols and which are variables
02:58:08 <alise> also, ew @ that
02:58:19 <cpressey> capital letter rule is already in effect
02:58:27 <cpressey> a la Prolog
02:58:35 <alise> ok
02:58:41 <alise> then you don't need *List
02:58:42 <alise> just write list
02:58:43 <alise> list(A)
02:58:45 <cpressey> it's boring and doesn't scale to other character systems, but hey
02:58:47 <alise> it's unambiguous
02:59:01 <cpressey> alise: maybe.
02:59:15 <cpressey> alise: probably.
03:00:06 <cpressey> so mono-2.0-devel does not come with ilasm, but mono-1.0-devel does? ripoff!
03:00:50 <cpressey> I've been meaning to write a compiler from PL-{GOTO} to .NET for a long time.
03:01:06 <cpressey> The stupidity of the goal apparently does not phase me.
03:01:13 <cpressey> Er, *faze
03:02:06 <cpressey> alise: Also: Underload interpreter in C.
03:02:15 <cpressey> Should be easy. Not been done.
03:02:20 <alise> there's an anagolf for that
03:02:22 <alise> so yes, yes it has been done
03:02:26 <alise> also, I wrote a compiler to C
03:02:28 <alise> in Scheme
03:02:32 <Sgeo> ilasm is an anagram of islam!
03:02:33 <alise> so if you bundled a scheme interpreter and gcc...
03:02:35 <cpressey> anagolf for an underload interpreter?
03:02:40 <alise> yes
03:02:43 <cpressey> Sgeo: *gasp*
03:02:51 <alise> http://golf.shinh.org/p.rb?Underload+interpreter
03:03:05 <alise> cpressey:
03:03:06 <alise> n,A,C,E,s[1<<20],*r;main(c,X){char*p=s,*q=p-~read(0,p,s);for(r=X;c=*p++,A=c!=97,C=c==42,E=c==94,X=c==40,c*n?n+=X-=c==41,*q++=n?c:!++r,1:!A|C|E?q-=~sprintf(E?p=q:(*r=q),"(%s%s"+A,E[r-=C+E],E?p:C?*r:")"):c-33?r[1]=X?++n,q:c=='~'?X=*--r,*r++=r[1],X:c-58?X=c==83,c-60&&c|n&&printf(X?"%s":"\nErr'%c'",X?*r--:n?40:c),X:*r++:--r;);}
03:03:10 <alise> there you go
03:03:22 <alise> it even has error messages
03:03:30 <alise> all in 325 dubiously-legal characters
03:03:32 <cpressey> Would kind of prefer a lot a *reasonable* C implementation, but beggars can't be choosers.
03:03:41 <alise> cpressey: you can easily expand that
03:03:46 <alise> anyway it's not difficult to write one
03:04:16 <alise> cpressey: Name it and I'll write one in a few lines.
03:05:02 <cpressey> Wait, what?
03:05:10 <alise> Name the interpreter. :P
03:05:32 <cpressey> ... Un... derload??
03:05:40 * cpressey CNFSUED
03:06:30 <Sgeo> Write it in Factor!
03:07:03 <alise> cpressey: Interpreters need names!
03:07:04 <alise> Sgeo: C.
03:07:19 <Sgeo> Oh, it's a golf thing
03:07:27 <alise> No, it isn't.
03:07:32 <cpressey> alise: OH
03:08:16 <cpressey> alise: elephant
03:08:20 <cpressey> there
03:09:10 <cpressey> yay! even under Linux, ilasm takes command line options that are introduced with "/".
03:10:02 <cpressey> Well, the anagolf version will not compile under DICE C (surprise!) and I totally do not understand how it works (surprise!).
03:10:31 <alise> it uses argv as the stack
03:10:32 <alise> :-D
03:10:46 <Sgeo> DICE C?
03:10:48 <cpressey> that helps explain some, but how does it concatenate strings?
03:10:55 <cpressey> sprintf
03:10:58 <cpressey> that's how
03:11:09 <cpressey> Sgeo: a compiler for AmigaOS 1.3
03:11:29 <cpressey> a C compiler, even
03:13:45 <cpressey> OK there's something I don't get about Underload
03:13:57 <cpressey> No wait
03:14:46 <cpressey> I like how it's so very nearly a push-down automaton
03:14:55 <cpressey> Except for the ()'ing and the eval'ing
03:19:35 <cpressey> I think you can implement swap in a PDA though. Well you could if both stack elements are bounded. Here, I dunno.
03:20:23 <alise> cpressey: Psht, my OS doesn't like a 2^20 x 2^20 array.
03:21:01 <alise> No wait.
03:21:04 <alise> It's broken for other reasons!
03:21:34 <cpressey> scowendrel!
03:21:44 <alise> [ehird@dinky ulc]$ ./ulc
03:21:44 <alise> (:aSS):aSS
03:21:44 <alise> Segmentation fault
03:21:51 <alise> It's broken for that reason, but others too!
03:22:18 <alise> cpressey: There is only one reasonable solution: Use the C stack as a stack! Oh yes!
03:22:59 <alise> cpressey: My compiler is more impressive, anyway.
03:23:12 <cpressey> I shall have to try this
03:23:31 <alise> cpressey: Get a stack pointer, make sure you can make calls with foo(); without that trashing the stack, have fun.
03:23:47 <alise> Recurse for ^, obviously. If you take the code as the first argument, just set up the stack and then don't push any code.
03:23:59 <alise> Call and it should take the first thing on the stack -- the first Underload stack element -- as the code.
03:24:04 <alise> Good f'n luck.
03:26:14 <cpressey> hahahaha
03:26:44 * cpressey plays Temple of Apshai instead
03:27:51 <cpressey> no, I am going to implement it. in C. but pedantically.
03:29:44 <cpressey> and it's going to have horrible memory performance because it's going to call malloc/free all over
03:30:31 <alise> data NestedList t = NLNil
03:30:31 <alise> | NLCons (t (Nested t)) (NestedList t)
03:30:31 <alise> | NLNest (Nested t) (NestedList t)
03:30:31 <alise> data Blimped t = X (t (Blimped t))
03:30:31 <alise> | Blimp Integer
03:30:31 <alise> blimp :: NestedList t -> [Blimped t]
03:30:33 <alise> cpressey: write it for me.
03:33:40 <cpressey> whats all this about blimps then
03:34:08 <alise> cpressey: the flattening procedure essential to my Underload compiler architecture
03:34:15 <alise> basically, it turns a nested structure into a bunch of pointers
03:34:25 <cpressey> this but in scheme?
03:35:05 <cpressey> I was just going to ask, ^ doesn't have to be the last instruction in an Underload program, DOES IT.
03:35:18 <alise> no
03:35:19 <alise> of course not
03:35:23 <alise> it would be sub-TC then
03:35:25 <alise> i think
03:35:43 <alise> (()(*))(~:^:S*a~^a~!~*~:(/)S^):^
03:35:53 <cpressey> maybe it would, but the style in general is not (Muriel replaces the current program witha new program at the equivalent operator)
03:36:08 <alise> ^ is just a function call
03:36:34 <cpressey> but in last place -- could/should be "tail call optimized" -- as if it were a continuation
03:36:56 -!- zzo38 has joined.
03:36:59 <alise> my compiler had tail calls.
03:37:07 <cpressey> hey zzo38
03:37:15 <cpressey> What's up?
03:37:16 <alise> (and yes, it was some gnarly scheme)
03:37:18 <alise> although only a page or so
03:37:23 <alise> because i'm just that awesome
03:38:16 <zzo38> cpressey: The ceiling is up, fortunately, it did not fall down yet
03:38:57 <alise> 08:02:23 <ais523> <hinoe> n,A,C,E,s[1<<20],*r;main(c,X){char*p=s,*q=p-~read(0,p,
03:38:57 <alise> s);for(r=X;c=*p++,A=c!=97,C=c==42,E=c==94,X=c==40,c*n?n+=X-=c==41,*q++=n?c:!++r,
03:38:57 <alise> 1:!A|C|E?q-=~sprintf(E?p=q:(*r=q),"(%s%s"+A,E[r-=C+E],E?p:C?*r:")"):c-33?r[1]=X?
03:38:57 <alise> ++n,q:c=='~'?X=*--r,*r++=r[1],X:c-58?X=c==83,c-60&&c|n&&printf(X?"%s":"\nErr'%c'
03:38:57 <alise> ",X?*r--:n?40:c),X:*r++:--r;);}
03:38:57 <alise> 08:02:35 <ais523> now, /that's/ an impressive Underload interp
03:39:00 <alise> Endorsed by the creator!
03:39:06 <alise> cpressey is up against some pretty stiff competition.
03:39:47 <alise> cpressey: I even went out of my way to make the generated function identifier numbers nicely ordered.
03:39:50 <Sgeo> zzo38, what are your thoughts on Factor?
03:39:51 <alise> :P
03:39:56 <Sgeo> If I haven't asked already?
03:39:56 <cpressey> alise: isn't that the same one you posted earlier?
03:40:16 <alise> cpressey: yes
03:40:18 <cpressey> zzo38: Good to hear it. That's what's right and proper, for a ceiling.
03:40:45 * Sgeo disgusts at the notion of right and proper.
03:40:53 <Sgeo> Therefore, I will tear my ceiling down.
03:41:13 <cpressey> alise: The challenge for me right now is just to get it *working*.
03:41:29 <cpressey> I really... I really don't do the obfsctd thing or the golf thing, on some level.
03:41:36 <zzo38> Sgeo: I don't really have much opinion, except for one, which is that it is not a good replacement for Forth.
03:41:51 <cpressey> My ability to enter into it is limited. Sad, but there you have it.
03:41:57 <cpressey> *"enter into it"
03:42:06 <alise> cpressey: anagolf is a great way to practice and hone programming skills
03:42:24 <Sgeo> On a "for embedded/limited environment programming" sense, or soe other sense?
03:42:34 <alise> 17:31:14 <ehird`> FUCK YEAH!!!
03:42:34 <alise> 17:31:15 <ehird`> % ./out
03:42:34 <alise> 17:31:15 <ehird`> (:aSS):aSS
03:42:34 <alise> 17:31:21 <ehird`> I COMPILED FUCKING >UNDERLOAD<
03:42:39 <cpressey> alise: tl; dr There are certain sets of skills as a programmer, and I know I am excellent in some, but this isn't one.
03:42:41 <alise> -- 2008-01-07
03:42:49 <alise> cpressey: it's fun though.
03:42:50 <cpressey> Oh hey
03:43:03 <alise> 17:26:49 <ehird`> http://rafb.net/p/XEGp7F68.html
03:43:05 <alise> Oh you're joking.
03:43:28 <cpressey> alise: I could probably use getting back into practice, yes.
03:43:42 -!- augur has joined.
03:43:47 * cpressey wants to explain what he meant by "enter into it" but it's just too much right now
03:44:09 <cpressey> I'm joking?
03:44:20 <cpressey> Or are you talking to your past-self-ehird?
03:44:25 <alise> latter
03:44:32 <alise> rafb.net's pastebin got taken down
03:44:36 <alise> and it never persisted things more than like 24 hours
03:44:44 <alise> i'm trying to find my original compiler
03:44:44 <cpressey> >:(
03:44:45 <alise> of glory
03:44:48 * cpressey does not approve
03:45:01 <alise> ./08.01.08:10:53:11 <ais523> I saw you were discussing Underload from the logs. How could I not join?
03:45:41 <alise> ah, a pastebin.ca version of ... not my interpreter
03:45:44 <alise> erm
03:45:45 <alise> not my compiler
03:48:45 <cpressey> mercy me. python has destroyed my ability to ACTUALLY code.
03:48:54 <cpressey> no no -- it's not THAT bad
03:48:58 <cpressey> gimme a minute
03:49:19 <cpressey> (but it IS weird. I pass this on as a cautionary tale!)
03:52:34 <cpressey> almost done!
03:52:56 <cpressey> zzo38: (I'm writing an Underload interpreter in C -- one that I can *read*)
03:53:05 <cpressey> (and can compile under AmigaOS 1.3)
03:53:14 <cpressey> (THAT PART IS VERY IMPORTANT)
03:53:39 <zzo38> cpressey: (Does it work on other computers as well?)
03:53:51 <alise> (Yes)
03:54:01 <cpressey> zzo38: hopefully. going to try it with gcc and pcc under Ubuntu
03:55:00 <cpressey> unfortunately, the source code, through a mystic cosmic accident, is called 'stringie.c', and I don't like that as the name of the interpreter. I'm going to rename it 'elephant' because... alise called hers 'ulc' even though I said 'elephant
03:55:42 <alise> stringie is a great name keep it
03:55:58 <cpressey> ...
03:56:07 <cpressey> i may be contractually obliged to, now
03:56:20 <Sgeo> string Internet Explorer?
03:56:51 <cpressey> now... to appease the volcano-gods of gcc error messages
03:56:55 <alise> ./08.01.14:14:20:06 * ehird` is rewriting his underload compiler in Haskell
03:57:04 <Gregor> Spidermonkey Tracemonkey Internet Netscape Gecko Internet Explorer?
03:57:21 <cpressey> Gregor: Needs an R.
03:57:23 <cpressey> Realplayer!
03:57:33 <alise> ./08.01.15:11:25:26 <ehird`> ais523: by the way, my underload to C compiler is broken. i've started a rewrite, but eh
03:57:36 <alise> WHY DID YOU BREAK IT
03:57:37 <alise> WHY
03:57:44 <Gregor> Whoops, missed the 'R', durp :P
03:57:46 <alise> ./08.01.16:09:06:05 <ehird`> who wants to try out the current version of the underload compiler
03:57:48 <alise> Yes!
03:57:49 <alise> ./08.01.16:09:07:01 <ehird`> svn co svn://elliotthird.org/underload
03:57:51 <alise> Fuck you!
03:58:05 <Sgeo> alise, you don't have any of your old files?
03:58:17 <alise> Yes, on another machine. Somewhere in the eternal depths of its fiery harddrives.
03:58:26 <alise> It's 3:58 am. This is not the time to get that machine out.
03:58:27 * cpressey knows what that's like
03:58:46 <Sgeo> alise, sleepninighty
03:58:55 <alise> Sgeo: Oh, shut the hell up.
03:59:00 <alise> It's Friday/Saturday.
04:00:05 <cpressey> Hm, so when you execute ^, you do not start with a fresh stack? OK
04:00:53 <augur> alise: elliotthird.org isnt a valid website. :|
04:00:57 <alise> cpressey: ^ is "function call", or "replace this ^ with the contents of the item on the top of the stack and keep going"
04:00:59 <alise> augur: but it was
04:01:02 <alise> it is not now
04:01:04 <augur> for shame
04:02:09 <alise> 10:49:56 <ehird`> Woot!
04:02:09 <alise> 10:49:59 <ehird`> The underload->C compiler works.
04:02:09 <alise> 10:50:07 <ehird`> It does tail-call optimization and all that jazz.
04:02:09 <alise> 10:50:13 <ehird`> svn co svn://elliotthird.org/underload
04:02:11 <alise> I HATE YOU SO MUCH
04:02:30 <cpressey> http://www.esolangs.org/wiki/Underlad -- "There is currently no text in this page, you can search for this page title in other pages or edit this page."
04:02:33 <Sgeo> http://web.archive.org/web/20070922130719/http://elliotthird.org/ useless?
04:02:34 <cpressey> Underlad!
04:02:41 <Sgeo> Useless.
04:02:43 <cpressey> Underlad to the rescue!
04:02:45 <alise> Sgeo: for an svn server, yes
04:02:53 <alise> and for everything else
04:03:07 <augur> cpressey: you're underlad only if he's on top
04:03:08 <augur> 8D
04:03:27 <alise> once upon a time that domain got to the top of digg
04:03:36 <Sgeo> /nick underlady
04:03:36 <augur> alise: wow, what
04:03:37 <augur> how
04:03:38 <alise> in a move that would probably put Sgeo in a blissful, heroin-esque state for several days
04:03:44 <Sgeo> alise, hm?
04:03:48 <alise> Sgeo: ALL THE ATTENTION
04:03:54 <Sgeo> Ah, lol
04:03:55 <alise> augur: well, technically the domain was w.elliotthird.org
04:03:56 <alise> now
04:03:57 <Sgeo> Yes, yes, it would
04:04:02 <alise> envision a site where there is a big number
04:04:03 <alise> and a button
04:04:10 <alise> if you press this button the number goes up for everyone, in realtime
04:04:14 <augur> alise: envisioning
04:04:15 <alise> now imagine you have a name and password
04:04:19 <augur> ok
04:04:20 <alise> it keeps track of how many times you click it
04:04:23 <alise> there is a high score of 30 or so
04:04:27 <alise> of the people who have clicked most
04:04:35 <augur> ok
04:04:41 <alise> augur: now imagine this gets popular in a social circle, and then some of them post it on places
04:04:48 <alise> imagine it gets hundreds of diggs
04:04:50 <alise> imagine it gets on /b/
04:04:54 <augur> ok
04:04:59 <alise> imagine digg and /b/ both get one account each and hammer away at it
04:05:06 <alise> imagine that somehow oklopol is still near the top
04:05:06 <augur> oic
04:05:11 <augur> hahaha
04:05:11 <alise> now imagine it gets to #1 on digg
04:05:12 <augur> well
04:05:14 <alise> and then
04:05:14 -!- lament has joined.
04:05:15 <alise> AND THEN
04:05:15 <augur> ofcourse he would be
04:05:17 <alise> i wake up one day
04:05:21 <alise> and ssh to my server
04:05:24 <alise> and it's all broken
04:05:25 <alise> why?
04:05:31 <augur> alise: well, oklopol and all
04:05:32 <alise> the mysql logs filled up the whole filesystem
04:05:33 <alise> that's like 4 gigabytes
04:05:36 <alise> :-D
04:05:40 <augur> XD
04:05:50 <alise> http://digg.com/news/gaming/The_Most_Pointless_Website_Ever
04:05:58 <alise> lists as 0 diggs and 0 comments, heh, they sure broke digg
04:06:04 <alise> and uhh
04:06:07 <alise> all the comments are gone
04:06:09 <alise> or, well, most of them
04:06:24 <alise> augur: oh yeah and i put a little realtime-shoutbox-chat thing on it just to see what would happen
04:06:29 <alise> the answer is a lot of niggers and faggots happened
04:06:35 <augur> ofcourse
04:06:57 <alise> http://www.bugmenot.com/view/w.elliotthird.org
04:07:00 <alise> you know you're famous when...
04:07:10 <augur> ahahaha
04:07:14 * Sgeo ponders stealing alise's idea
04:07:26 <alise> Sgeo: it's dead now. complete luck that it got popular.
04:07:35 <alise> and you have serious attention issues.
04:07:39 <augur> alise: you got a picture of what this looked like
04:07:41 <augur> ?
04:07:42 <alise> augur: ...then everyone forgot about me and i earned not a penny from the whole endeavour
04:07:44 <augur> it sounds familiar
04:07:47 <alise> augur: not personally but i could look for one
04:07:52 <alise> it was just all set in verdana, very little decoration
04:07:56 <alise> just a few-file PHP hackup
04:08:00 <alise> updating it was... "fun"
04:08:01 * Sgeo either wouldn't actually do it, or would make a huge disclaimer saying that it wasn't originally my idea
04:08:06 <alise> when it was getting hit hundreds of times a second
04:08:06 <alise> oh yeah
04:08:09 <alise> every single person connected
04:08:13 <alise> made at least 3 or so ajax requests
04:08:14 <alise> every 500ms
04:08:20 <augur> hahaha
04:08:22 <alise> slicehost must have loooved that
04:09:17 <cpressey> Segmentation fault
04:09:34 * Sgeo writes on cpressey's memory
04:10:14 <augur> alise: do you have archives of the source?
04:10:22 <alise> augur: yes ... on some machine
04:10:27 <augur> :|
04:10:30 <alise> augur: it's php, so frankly a bit embarassing
04:10:38 <alise> i think i even used someone else's ajax library, although i don't recall
04:10:43 <Sgeo> Rewriting in Factor would be an interesting project!
04:10:51 <alise> augur: this was circa 2008 btw
04:10:58 <augur> true
04:11:02 <Sgeo> Then again, finding hosting for Factor stuff sounds like a pita
04:11:07 <augur> so just when we were getting to know each other :D
04:11:14 <alise> it was sajax i think
04:11:21 <alise> yeah
04:11:28 <augur> man wait
04:11:30 <alise> either sajax or i did it myself
04:11:34 <alise> it went through like 3 versions
04:11:36 <augur> so how old are you now
04:11:37 <alise> the third one being the one that got popular
04:11:38 <augur> cause
04:11:42 <alise> augur: 15 as of august 22
04:11:47 <augur> we've known each other like, what, 3 years
04:11:49 <augur> hm.
04:11:56 <augur> happy 15th!
04:11:56 <cpressey> idea? /b/?? /cpressey CFNUSDE
04:12:06 <alise> cpressey: I presume you know what /b/ is...
04:12:12 <alise> augur: yeah well i've been in and out of contact with someone on the interwebnets since i was 8
04:12:12 <alise> so ha
04:12:14 <augur> alise: when are you legal in the uk? 8D
04:12:16 <Sgeo> ColdFusion porn?
04:12:19 * Sgeo runs in horror
04:12:20 <alise> (or, in human terms, 2004)
04:12:23 <cpressey> alise: Why do you presume that?
04:12:34 <alise> cpressey: Is the rock you live under comfortable?
04:12:49 <cpressey> alise: YES! Hello?
04:13:25 <alise> augur: Uh, when I turn 16.
04:13:27 <alise> So ... in a year.
04:13:41 <cpressey> Here's me. Here's the so-called "real world", made up of slavering morons. Here's the distance between the two. Comfortable!
04:13:45 <augur> IM BUYIN MY TICKET <3 <3 <3
04:14:11 <alise> augur: But then I won't get £50 from oklopol...
04:14:24 <cpressey> ok now to febug a duckin' semegnation flaut
04:14:31 <augur> oh dont worry, i'll take car of him for you ;o ;o
04:14:43 <alise> Assassination. Well, interesting, if a little extreme.
04:14:52 <alise> Unless you're planning to steal his automotive vehicle.
04:15:00 <augur> alise: well, not assassination
04:15:05 <augur> but certainly a little death
04:15:08 <alise> ass-to-assination
04:15:12 <augur> <3
04:15:24 <alise> ./08.01.16:10:50:13 <ehird`> svn co svn://elliotthird.org/underload
04:15:26 <alise> I HATE YOU PAST SELF
04:15:28 <alise> DIE IN A FIRE
04:15:51 <augur> why wha
04:16:01 <Sgeo> Which model of time-travel do you want me to use to help fulfill this desire?
04:16:02 <alise> it's no longer there
04:16:05 <alise> and i want my fucking code
04:16:13 <alise> Sgeo: the hilarious one
04:16:14 <augur> alise: o wut
04:16:20 <augur> well why isnt it there anymore
04:16:31 <alise> augur: because i wiped the vps like 29385473495435 times and the domain expired and--
04:16:35 <alise> --it's ancient code.
04:16:38 <Sgeo> I'm sorry, could you be clearer? The one where killing you in the past makes you cease to exist in the present?
04:16:39 <Sgeo> Ok
04:16:39 <alise> 2008, even!
04:16:39 <Sgeo> !
04:16:49 <alise> Sgeo: death of the main character isn't good comedy!
04:17:08 <Sgeo> Ok, then one where you turn out to not be Elliott Hird?
04:17:16 <alise> dun dun DUN
04:17:26 <Sgeo> BRB
04:18:30 <cpressey> just an interdimensional electromagnetic life form "borrowing" Elliott Hird's body.
04:18:55 <cpressey> wait
04:18:57 <cpressey> n/m
04:19:59 <augur> aww
04:20:06 <augur> ship me the corpse?
04:21:08 <lament> wanna find out just how stiff it is?
04:21:25 <augur> bodies dont stay stiff after rigor passes, you realize
04:21:46 <lament> you best be quick
04:22:56 <zzo38> Recently I realized something I have forgotten about D&D game, my character can make spider web maximum 60 sq ft (approximately the size of the opening near the room where I play D&D)
04:23:38 <cpressey> hahahaha i had a function char *pop(void) and it wasn't returning nothing thanks gcc for pointing that out
04:24:02 <zzo38> I also wondering if you have heard of the new virtual machine that Nintendo attempt to invent?
04:24:12 <cpressey> zzo38: ... you play D&D in a big room! I only remember playing it in basements and cramped apartments
04:24:13 <zzo38> Apparently it has at least three address spaces?
04:24:41 <cpressey> sigh, everyone and their aunt has their own virtual machine these days
04:24:57 <zzo38> cpressey: Yes I do, but the table is slightly small.... but it is good enough, we have only two player and one DM
04:25:54 <Sgeo> cpressey, I guess I need to make a VM too
04:26:00 <Sgeo> In Factor!
04:27:38 * cpressey shakes head
04:27:48 <cpressey> Sgeo: have you programmed much in Forth?
04:28:35 <cpressey> or Maentwrog?
04:29:09 <Sgeo> cpressey, almost nothing!
04:29:16 <Sgeo> I'm trying to learn
04:29:46 * Sgeo wonders how easy it would be to take a given Forth and turn it into Factor
04:30:30 <cpressey> Sgeo: it... no.
04:30:39 <cpressey> They're close, but.
04:30:45 <alise> they're not
04:31:16 <cpressey> One groks functions. The other only sort of doesn't.
04:31:49 <cpressey> how easy it would be to take a given C and turn it into Java
04:31:58 <cpressey> and even then, that doesn't capture it
04:32:20 <Sgeo> Bubut.. the Forth aparser would onyl need to be slightly modified
04:32:22 <Sgeo> parser
04:32:42 <Sgeo> And that could be done in Forth for some Forths, iiuc
04:33:05 <Sgeo> Hmm, maybe slightly's the wrong word
04:33:19 <Sgeo> And what do you mean by "only sort of doesn't", and which language?
04:35:21 <cpressey> catseye@catseye-laptop:/cygdrive/e/checkout/lab/elephant$ ./stringie '(:aSS):aSS'
04:35:24 <cpressey> (:aSS):aSScatseye@catseye-laptop:/cygdrive/e/checkout/lab/elephant$
04:35:29 <cpressey> it works
04:35:35 <cpressey> the canonical ass-quine works
04:36:21 <cpressey> Sgeo: I mean that. Forth doesn't really have the notion of a function. It does, sort of, kind of, but no. Whereas Factor is (I hope) built around the notion of a function.
04:36:30 <cpressey> I don't know the details, I admit.
04:36:45 <cpressey> But concatenative programming is not the same thing as... stack-based programming.
04:37:08 <Sgeo> Hmm, what's the difference?
04:37:18 <cpressey> Sgeo: Do you know Haskell?
04:37:25 <Sgeo> Yes
04:37:30 <Sgeo> To some extent
04:37:59 <cpressey> Well, Haskell has combinators, right? "point-free programming".
04:38:09 <Sgeo> Factor's words aren't really pure. There is such a thing as modifiable state, global variables, and ... oh, sorry
04:38:24 <cpressey> Factor is kind of the same approach.
04:38:34 <cpressey> Naw, I'm in no state to explain this. Sorry.
04:39:36 <cpressey> http://www.latrobe.edu.au/philosophy/phimvt/joy/j02maf.html
04:39:43 <cpressey> but that uses too many fancy words
04:41:01 <cpressey> (I'm also assuming Factor is actually following concatenative principles, and not just fudging along somehow)
04:42:03 <Sgeo> cpressey, I find that page fully readable so far
04:42:17 <cpressey> One really cheap way to say it is: Factor (or at least Joy) has theoretical foundations. Forth has none -- only practical foundations. The gap between the two is larger than it looks, because of this.
04:42:49 <cpressey> Sgeo: I thought the stuff about monoids was a bit gratuitous, but what do I know
04:42:59 <Sgeo> I didn't get up to that part yet
04:43:46 * Sgeo stops reading
04:45:16 <cpressey> ./stringie '(12)S(*a(~:)~*^~):((1)S)~*~((2)S:*)~*:(~:()~)~*^(a(:^)*~a(*()~)~*^~^):^' ... 1221121221221121122121121221121121221221121221Aborted
04:45:28 <cpressey> I believe I have written a functioning Underload interpreter
04:46:00 <cpressey> That can generate, let's see, about 40 whole terms in the Kolakoski sequence, before its head explodes
04:46:03 <cpressey> but wait!
04:46:12 <cpressey> I did have an idea for how to make it tail recursive
04:50:12 <alise> cpressey: Meanwhile, I have written the blimper and the parser.
04:50:18 <alise> But I still long for my original horrible thing.
04:50:43 <alise> *Main> let Just x = parse "(:aSS):aSS"
04:50:43 <alise> *Main> x
04:50:43 <alise> Nest (Cons Duplicate (Cons Enclose (Cons Output (Cons Output Nil)))) (Cons Duplicate (Cons Enclose (Cons Output (Cons Output Nil))))
04:50:43 <alise> *Main> blimp x
04:50:43 <alise> [[Ref 1,Val Duplicate,Val Enclose,Val Output,Val Output],[Val Duplicate,Val Enclose,Val Output,Val Output]]
04:51:01 <alise> *Main> parse "(()(*))(~:^:S*a~^a~!~*~:(/)S^):^"
04:51:01 <alise> Nothing
04:51:02 <alise> whut
04:51:42 <alise> oh
04:52:03 <cpressey> marf
04:52:49 <alise> *Main Data.Maybe> blimp . fromJust . parse $ "(()(*))(~:^:S*a~^a~!~*~:(/)):^"
04:52:49 <alise> [[Ref 1,Ref 3,Val Duplicate,Val Call],[Ref 2,Ref 2],[],[Val Concatenate],[Val Swap,Val Duplicate,Val Call,Val Duplicate,Val Output,Val Concatenate,Val Enclose,Val Swap,Val Call,Val Enclose,Val Swap,Val Discard,Val Swap,Val Concatenate,Val Swap,Val Duplicate,Ref 4],[]]
04:53:18 <alise> ./08.01.23:10:06:31 <ehird> darcs get http://elliotthird.org/underload/
04:53:19 <alise> you're kidding me.
04:54:16 <Quadrescence> Sgeo: The next time you talk about Factor in any channel except #concatenative, I am going to punch you in the colon with my dick
04:54:49 <cpressey> well, ./stringie '(:^):^' is continuing to run and according to top the memory usage isn't going above 1756 so I think it's properly tail-recursive
04:54:56 -!- augur has quit (Remote host closed the connection).
04:55:12 <cpressey> still can only do about 40 digits of kola, tho
04:55:15 -!- augur has joined.
04:56:32 * alise wonders how you punch someone in the colon with a dick, exactly
04:59:46 <Sgeo> Quadrescence, I can't even reach that channel
05:02:32 <cpressey> Sgeo: ...
05:03:32 <cpressey> Sgeo: There's someone else with your exact nick in it, then. I don't know how that's possible.
05:03:44 <Sgeo> No, that's #concatenative
05:04:33 <cpressey> Sgeo: Are you going all Zen on my sorry ass again???
05:04:53 <cpressey> I'm not in #concatenative, I'm in #concatenative! OM
05:05:19 * Sgeo is now in #concatenative!
05:05:33 <Sgeo> I think I'm driving cpressey crazu
05:05:36 <Sgeo> crazy even
05:06:34 <Quadrescence> alise: what's up with your chicken shit bull shit too
05:06:57 <cpressey> Sgeo: Well, you're forcing me to read carefully despite the wine goggles. That's almost as bad.
05:07:02 <cpressey> con cat e nat ive
05:07:11 <alise> Quadrescence: I suppose it's a hybrid of both brands of shit.
05:07:13 <cpressey> /join #concatnative
05:07:26 <cpressey> /join #concatentive
05:07:55 <Sgeo> How many characters are in what Quadrescence wants me to join, and how many characters in the actual channel?
05:08:01 <Sgeo> Also, why might I be unable to reach it?
05:08:34 <cpressey> Sgeo: 13. 13.
05:09:09 <cpressey> Unless you think Quadrescence's comma *following* #concatenative is supposed to be part of the channel name,
05:09:24 <Sgeo> =P
05:09:27 <Quadrescence> Sgeo is just being a dumbfuck
05:09:44 <Sgeo> XChat certainly thinks it is
05:09:58 <cpressey> XChat is garbage, it would seem.
05:10:34 <cpressey> No offense, but... "X" in front anything does not exactly scream "quality implementation".
05:10:38 <cpressey> *front of
05:10:55 <Sgeo> X itself being a case in point?
05:11:04 <alise> Quadrescence sure is in a fucking bad mood.
05:11:07 <cpressey> Well it's not in FRONT of anything there, but, sort of
05:11:15 <Quadrescence> alise: No I'm not, but Sgeo is annoying
05:11:15 <cpressey> xterm is a better example
05:11:18 <cpressey> xclock
05:11:20 <cpressey> xman
05:11:32 <Sgeo> I assume those are older than GTK+ and Qt
05:11:35 <alise> Quadrescence: presumably me too.
05:11:38 <cpressey> holy cow yes.
05:11:45 <Quadrescence> alise: no just teasin bro
05:11:54 <Quadrescence> alise: he joined #TUNES and said to do it in Factor which is the worst idea I've ever heard
05:12:00 <alise> saying bro --> colon punch
05:12:02 <cpressey> what WHAT?
05:12:15 <cpressey> wait WAIT what?
05:12:19 <Quadrescence> alise: i colon punched sgeo
05:13:29 <Sgeo> Quadrescence, the only person active at that time was Phantom_Hoover
05:13:42 <Sgeo> And I sort of treated that channel as long dead, anyway
05:13:47 <Quadrescence> so
05:14:06 <Quadrescence> Sgeo: go learn C
05:14:29 <Sgeo> WHat more of C do you want me to learn?
05:14:37 <Quadrescence> all of it
05:14:43 <Quadrescence> since you don't know any
05:15:11 <Sgeo> #include <stdio.h>
05:15:17 <Sgeo> /Bleh, forgot the header exactly
05:15:19 <Sgeo> //Bleh, forgot the header exactly
05:15:30 <Quadrescence> sorry asshole // is not standard C89
05:15:33 <Quadrescence> try again
05:15:46 <cpressey> http://pastie.org/1151532
05:15:52 <Sgeo> /* Bleh, C commentness */
05:16:01 <Sgeo> int main() {
05:16:06 <cpressey> that's 'stringie the underload interpreter', in case anyone cares
05:16:30 <Sgeo> int showoff = 5; // Variables must come before everything else in a function
05:16:35 <cpressey> one of the only underload interpreters known to be written while under the influence!
05:16:43 <alise> cpressey: apart from all of them
05:16:52 <Quadrescence> cpressey: good work
05:17:09 <Quadrescence> Sgeo: thanks for telling me two lines which are parsable in about 100 languages
05:17:14 <Sgeo> printf("%d\n", showoff);
05:17:19 <Sgeo> return 0;
05:17:21 <Sgeo> }
05:17:27 <Quadrescence> showoff isn't defined you lose
05:17:40 * Sgeo blinks
05:18:13 <alise> i see no error with his code apart from the //, which is really arguable as tons of C89 compilers do it, especially older ones, and C99 added it
05:18:17 <Quadrescence> (the line with alleged "showoff" contains an invalid token)
05:18:27 <Sgeo> int showoff;
05:18:29 <Sgeo> showoff = 5;
05:18:34 <Sgeo> Happy?
05:18:37 <alise> Quadrescence: so basically this has turned into
05:18:57 <alise> "Quadrescence hates C99, and if you, say, only know C99 and not C89, he doesn't even want to acknowledge your existence"
05:18:58 <Sgeo> Oh, right, the //
05:19:03 <cpressey> alise: in this case I can name the specific wine
05:19:05 <alise> after all, Sgeo's code is perfectly valid C99.
05:19:09 <Quadrescence> Sgeo: I'm glad you have demonstrated the ability to write a C program that is taught in the first hour of a class
05:19:19 <alise> cpressey: "This wine is called LSD!"
05:19:27 <Sgeo> You want me to do pointer stuff?
05:19:28 <cpressey> HAHAHAHAHA no
05:19:31 <alise> Quadrescence: oh right because you can write complex C programs over IRC
05:19:33 <alise> and will on command
05:19:39 <Quadrescence> alise: sure why not
05:19:42 <Sgeo> Which is ridiculously simple but everyone thinks is confusing?
05:19:49 <cpressey> programming while actually on LSD would... oh god
05:19:57 <Quadrescence> Sgeo: maybe not make any errors next time around
05:20:37 <alise> cpressey: new life goal recorded.
05:20:42 <alise> Quadrescence: he made no errors.
05:20:47 <alise> Quadrescence: the only errors he made derive from your zealotry.
05:21:06 <Quadrescence> alise: well standards are pretty tight on those things
05:21:16 <alise> Quadrescence: C99 has //.
05:21:25 <alise> you said "learn C", not "learn C89 then forget C99"
05:21:26 <Sgeo> Well, I did try to emphasize that I was being strict :/
05:21:36 <Quadrescence> alise: no shit sherlock
05:22:00 <alise> Quadrescence: yet your only complaints were nitpicks about using //.
05:22:02 <Quadrescence> alise: i said "c89" and he continued to make the error
05:22:13 <Quadrescence> alise: there's not much to fuck up on a program like that
05:22:20 <alise> Quadrescence: presumably he didn't think you'd be anal enough.
05:22:27 <Sgeo> I forgot :/
05:22:28 <alise> anyway, just shut the fuck up; this is worse than Factor talk.
05:22:29 <Quadrescence> I'm not not being anal
05:22:38 <Quadrescence> I'm just following the standard
05:22:42 <Sgeo> alise, you're the reason I'm obsessed with Factor
05:22:59 <alise> yeah, and the reason AnMaster is here too.
05:23:03 <alise> we all have mistakes that we have to live with
05:24:18 <Quadrescence> AnMaster rocks my socks off
05:24:41 <Quadrescence> Sgeo: oh and int main() { is not legit
05:24:42 <alise> i only hope you're layering on the sarcasm
05:24:43 <Quadrescence> just sayin
05:24:44 <Sgeo> alise, now I'm curious about that story
05:24:46 <alise> yes it is, Quadrescence
05:24:49 <Sgeo> Quadrescence, the arguments?
05:24:50 <Quadrescence> No it isn't
05:24:52 <alise> (void) is only required in a declaration
05:24:57 <Sgeo> ...Oh, right
05:25:00 <Sgeo> The (void) junk
05:25:03 <alise> which is irrelevant her
05:25:04 <alise> e
05:25:07 <alise> as it isn't a declaration
05:25:08 <alise> Quadrescence is wrong
05:25:25 <cpressey> int main(int argc, char **argv) { ... }
05:25:31 <alise> cpressey: is but one valid signature
05:25:31 <cpressey> burnt into my brain like a mantra
05:25:41 <cpressey> char *argv[] is what some prefer
05:25:43 <Quadrescence> cpressey: good man
05:25:46 <alise> you can also have int main(void). which is the same type as that produced by saying "int main() { ..."
05:25:49 <Quadrescence> cpressey is also a cool dood
05:25:50 <alise> although in a declaration it would have to be (Void).
05:25:54 <alise> *void
05:26:02 <alise> Quadrescence: are you going to accept the correction or just ignore it?
05:26:07 <cpressey> and void main() sometimes works, although compilers vary in the hard time they'll give ya
05:26:40 <Quadrescence> main() has unspecified arguments, the standard recommends using int main(void) or int main(int argc, char* argv[])
05:26:48 <alise> Quadrescence: no
05:26:49 <Quadrescence> always
05:26:52 <alise> main() has unspecified arguments IN A DECLARATION
05:27:14 <cpressey> I love C
05:27:23 <alise> for someone being anal about the standard it is quite surprising that you do not know this.
05:27:29 <Quadrescence> alise: btw aren't you 14 or something
05:27:41 <cpressey> FIFTEEN NOW
05:27:54 <cpressey> alise: answering yer questions for ya
05:28:00 <Quadrescence> thx cpressey
05:28:00 <alise> cpressey: THANKS PAL
05:28:08 <alise> -- the only possible followup to that is either going to be disregarding something I say because of my answer, or something utterly irrelevant.
05:28:13 <alise> so i won't answer. although cpressey already has.
05:28:28 <Quadrescence> that wasn't a followup as indicated by "btw"
05:28:31 <Quadrescence> "by the way"
05:28:40 <Quadrescence> "let's fork the convo temporarily"
05:29:15 <alise> to what end? my age isn't a terribly exciting subject, and i'm very, very tired.
05:29:22 <alise> i should sleep.
05:29:28 <Quadrescence> well you're 15, kids are usually tired early
05:29:42 <cpressey> Quadrescence: -_-
05:30:02 <Quadrescence> btw I genuinely think AnMaster is badass like cpressey is
05:30:05 <alise> it's 5:29 am
05:30:06 <Quadrescence> I wasn't sarcastic about that
05:30:08 <Sgeo> I don't feel like an adult when I'm in here :/
05:30:11 <alise> i've been awake since 8:30 or so
05:30:13 <Quadrescence> alise: sounds early to me
05:30:14 <cpressey> I'm badass now?
05:30:21 <Quadrescence> cpressey: Yeah, your C was top notch
05:30:22 -!- cheater99 has joined.
05:30:28 <cpressey> hahahaha
05:30:34 <alise> Quadrescence rates badassery on how well someone can adhere to C89.
05:30:34 <cpressey> Which C was this, then?
05:30:42 <Quadrescence> cpressey: that one time
05:30:53 <Quadrescence> alise: I didn't rate AnMaster that way
05:31:01 <Quadrescence> AnMaster is just cool all by himself
05:31:06 <alise> Quadrescence: so basically i've been awake 21 hours. i've had a rather busy day.
05:31:10 <alise> and i haven't eaten in a while
05:31:16 <alise> i wouldn't exactly call that early
05:31:24 <alise> anyone who thinks AnMaster is badass is just retarded.
05:31:26 <Quadrescence> alise: Oh so you're being a dumbass (another kid quality) by malnourishing yourself, kool
05:31:37 <cpressey> Oh man
05:31:52 <alise> oh shut up, it's been less than a handful of hours
05:32:04 <Quadrescence> what
05:32:07 <cheater99> alise: for whom the bell tolls?
05:32:10 <alise> cpressey: in future, don't answer my questions for me. and i won't answer yours. kthx
05:32:15 <Sgeo> alise, don't turn into me
05:32:19 <Quadrescence> cheater99: good author nice one
05:32:23 <Quadrescence> cheater99: you're a cool dood too
05:32:24 <cpressey> alise: will do
05:32:30 <Quadrescence> cheater99: did you use freebasic at any point?
05:32:50 <cheater99> alise: take a look to the sky, just before your eyes, is the last tiny will
05:32:56 <Quadrescence> alise: about 2 weeks ago you said you were 13 or something so I knew the vicinity of your age
05:33:10 <alise> well as much as I'm enjoying the Quadrescence-talks-to-kiddies-about-how-kiddieful-they-are channel, I think I'll tune out.
05:33:24 <alise> and then go to bed.
05:33:32 <cheater99> Quadrescence: am i a badass
05:33:35 <Quadrescence> alise: I'd like to remind you that you do nothing important, and your "busy day" is really just a "busywork" day
05:33:44 <cheater99> Quadrescence: am i a badass
05:33:49 <Quadrescence> cheater99: damn straight you are
05:33:54 <cheater99> fuck YEA
05:33:56 <cpressey> Quadrescence: so, do you enjoy being a jerk, or is it something you can't help?
05:34:06 * cheater99 does metal hand pose
05:34:17 <alise> Quadrescence: I did an infinitesimal amount of work that goes an infinitesimal amount further to obtaining the most basic level of qualification offered in the country as part of standardised schooling.
05:34:20 <zzo38> Do you think some features in Enhanced CWEB is a closest way to make 'pataprogramming in C?
05:34:22 <augur> oh dear Quadrescence
05:34:27 <alise> which then leads to another qualification which leads to university which leads to academia.
05:34:31 <alise> The work itself, busy, yes.
05:34:34 <Quadrescence> alise: Sorry but you can't measure an infinitesimal amount of something in this day
05:34:37 <Quadrescence> so no you didn't
05:34:41 <alise> But not busywork, as it had an end, however small.
05:34:58 <cheater99> Quadrescence: shh
05:35:42 <zzo38> alise: To measure infinitesimal amounts of things, you need infinitesimal numbers that are measurable
05:35:47 <cheater99> alise: it's ok baby, you've been very brave today
05:35:51 * cheater99 gives alise a hug
05:35:58 <alise> nobody has ever used the word "infinitesimal" in anything other than a hyperliteral sense!
05:36:05 <alise> i'm so ~witty~ for pointing it out
05:36:24 <zzo38> alise: Are you sure? OK.....,,,,
05:36:31 <cheater99> dx is infinitesimal
05:36:44 <Quadrescence> cheater99: nice cheater99 knows more math than alise
05:36:51 <alise> zzo38: sarcasm.
05:36:54 <cheater99> Quadrescence: no, shh
05:37:00 <cheater99> Quadrescence: stop being silly.
05:37:09 <Quadrescence> not silly it's tru
05:37:12 <cheater99> Quadrescence: of course i do, but that's not the point
05:37:19 <alise> Quadrescence: i assume you're operating on the assumption that this is going to irritate or otherwise annoy me eventually
05:37:22 <cheater99> the point is, alise's tired, and wants a foot rub
05:37:28 <zzo38> cheater99: I don't use "dx" as infinitesimal, but instead meaning how "x" changes. (It still works out, in the end, though.)
05:37:48 <cheater99> you're thinking of \Deltax
05:38:05 <Quadrescence> alise: what did you say i didn't understand
05:38:18 * Sgeo differentiates Quadrescence
05:38:26 <Quadrescence> Sgeo: you just got me back
05:38:31 <cheater99> alise: so how did this thing start
05:38:34 <alise> Quadrescence: the only reason you're bugging me is to make me irritated.
05:38:37 <cheater99> obviously quad is a bit pissy
05:38:39 <cheater99> and you're pissy
05:38:42 <alise> i'm not pissy
05:38:43 <cheater99> you kids need to chillax
05:38:44 <alise> just tired
05:38:48 <cheater99> tiredpissy
05:38:48 <Quadrescence> alise: oh no, I don't want to get you irritated at all!
05:38:54 <Quadrescence> I just want you to get your act together
05:39:01 <Quadrescence> same with sgeo
05:39:04 <cheater99> is quaddie here just to piss you off
05:39:05 <alise> cheater99: not pissy at all.
05:39:09 <Sgeo> My "act"?
05:39:15 <Quadrescence> cpressey has his act together most surely
05:39:15 <alise> cheater99: well, he started talking to piss Sgeo off
05:39:17 <cpressey> Yes you two, you need to become upstanding citizens like Quadrescence here.
05:39:17 <Quadrescence> so does anmaster
05:39:20 <alise> then switched to me when Sgeo stopped responding
05:39:22 <alise> so roughly that.
05:39:24 <zzo38> No, Delta x is the change in "x", what I mean by "how x changes" is something else
05:39:35 <cheater99> alise: so why r u responding
05:39:35 <Sgeo> My act together in what sense?
05:39:37 <alise> i guess all Quadrescence really wants is to be a father figure.
05:39:42 <alise> maybe he could try reproducing.
05:39:48 <cheater99> alise: just start talking about something he won't understand anyways
05:39:48 <Quadrescence> alise: i was earlier
05:39:55 <alise> cheater99: i'm going to sleep in a few seconds, so might as well
05:39:57 <cheater99> alise: like cayley numbers
05:40:02 <Quadrescence> my dick smells like the wetness of a woman right now
05:40:07 <Quadrescence> but that's TMI
05:40:27 <zzo38> Did you win a big spider, yet? On the other side, did you win $4594.492 yet?
05:40:31 <cheater99> the fact that you have a dick is truly surprising
05:40:44 <cheater99> i thought i was the only Man on the internet
05:40:45 <Quadrescence> cheater99: octonion algebra is easy
05:40:49 <zzo38> And on the other other side, did you win lose yet?
05:40:53 <cheater99> Quadrescence: google is slow today
05:41:05 <Quadrescence> cheater99: i'm writing a book with a large section on algebra
05:41:21 <Quadrescence> which trivializes octonions from such a standpoint
05:41:31 <cheater99> if you publish it with 'octonion', i'll request a copy and ritually burn it
05:41:43 <cheater99> it's cayley octave
05:41:54 <cheater99> octonion is just silly
05:41:55 <Quadrescence> It won't talk about octonions explicitly
05:42:21 <cheater99> alise: nighty night little moonray
05:42:25 * cheater99 tucks alise in
05:42:38 * cheater99 sings alise a bedtime song
05:42:39 <zzo38> Quadrescence: What is this book, please?
05:42:58 <Quadrescence> zzo38: you can have a pdf of what it is right now if you want
05:43:06 * cheater99 leaves to his own room.
05:43:32 <cheater99> Quadrescence: it's 'octave' though.
05:43:35 <zzo38> Quadrescence: I don't need a PDF right now, but I would like to know what it is about in general and what title, and so on.
05:43:43 <cheater99> an octonion is a salad out of onions and octopuses.
05:44:15 <Quadrescence> zzo38: "Computer Algebra and Algebraic Programming"
05:44:48 <Quadrescence> zzo38: it is about the theory and implementation of computer algebraic algorithms and computer algebra systems with an emphasis on a paradigm I at least call "algebraic programming"
05:44:51 <cpressey> alise: I don't believe what Vorpal said about j not being well defined for negative numbers
05:44:56 <cpressey> I think it is
05:45:03 <alise> cpressey: i think it might depend on the semantics of k
05:45:10 <cpressey> oh right,k
05:45:12 <alise> i mean
05:45:19 <alise> when you put a j on a negative number after a k
05:45:24 <alise> what's the effect of the control flow there?
05:45:29 <cpressey> it could hit the k again
05:45:38 <alise> right
05:45:42 <cpressey> and then wtf
05:45:44 <alise> but since k says to repeat n times, it'd stack up
05:46:01 <alise> hmm
05:46:51 <Sgeo> http://www.archive.org/details/Torley_Wong_-_The_Final_Selection
05:47:13 <zzo38> Quadrescence: Maybe you can write a program to go with it, in Enhanced CWEB, and include the program in the appendix (it is possible to change the starting page number, if necessary)
05:47:28 <zzo38> What software (and other things) are you using to write a book?
05:47:30 * Sgeo likes "Lovers' Dance"
05:47:31 <alise> Sgeo: oh yes, the second life guy who went deaf
05:47:33 <alise> unless i'm mistaken
05:47:36 <Sgeo> alise, yes
05:47:43 <alise> my memory disturbs even me
05:47:47 <Quadrescence> zzo38: LaTeX, PGF/TikZ for diagrams
05:47:55 <alise> http://music.torley.com/ ;; what how is he releasing new things
05:48:01 <Quadrescence> Lisp and C for actual implementation languages
05:48:16 <Sgeo> What Lisp?
05:48:34 <Quadrescence> Sgeo: AUTOLISP
05:48:34 <zzo38> I think if you want to write C program, try Enhanced CWEB? It is not designed for LaTeX, but it should be possible to make combine book
05:48:37 <cpressey> LaTeX as an actual implementation language. It's the only way
05:48:47 <alise> Quadrescence: either you're joking or just stupid
05:49:03 <Sgeo> alise, hm? Why is Autolisp bad?
05:49:05 <Quadrescence> alise: true
05:49:08 <zzo38> cpressey: ???
05:49:49 <zzo38> Do you know about Enhanced CWEB?
05:49:59 <cpressey> zzo38: If it can be done, someone here needs to do it!
05:50:05 <Quadrescence> zzo38: Well, Enhanced CWEB produces pure TeX iirc, and that is easy to incorporate
05:50:08 <cpressey> zzo38: Only the examples you've posted
05:50:26 <Sgeo> For some reason, I remember reading that Torley went undeaf, but I may have hallucinated that
05:50:49 <cpressey> Beethoven was deaf (from what I understand) when he wrote his very late stuff
05:50:55 <cpressey> He was also a genius, though
05:51:04 <cheater99> those torley wong tracks are so bad
05:51:08 <cheater99> i bet his ears went long before he noticed
05:51:12 <zzo38> cpressey: If what can be done, someone here needs to do what?
05:51:40 <cpressey> zzo38: Write real, computational programs in LaTeX. Maybe by feeding the output of LaTeX back into LaTeX.
05:51:45 <zzo38> Quadrescence: Enhanced CWEB produces files for use with Plain TeX. However you can change the starting page number and put them together.
05:51:55 <Quadrescence> zzo38: Yeah, it'd be easy
05:52:28 <zzo38> cpressey: I have written real computational programs in Plain TeX, but it seems LaTeX is too specialized for other kind of things, like typing certain kind of documents... still, I prefer Plain TeX
05:52:39 <cpressey> Quadrescence: so are all algebraic programming experts pussy magnets, or is it just you?
05:52:44 <Sgeo> alise, what's wrong with Autolisp?
05:52:50 <zzo38> Quadrescence: And if you need help with Enhanced CWEB, you can ask me, I might be able to help
05:53:08 <Sgeo> Also, alise, I might need your help with parts again
05:53:09 <cpressey> zzo38: That's pretty coo.
05:53:10 <Quadrescence> cpressey: I don't really know; I am quite a magnet
05:53:11 <cpressey> *cool.
05:53:27 <Sgeo> I might be able to get my dad to agree to get parts within 6 weeks of me deciding what the parts should be
05:53:34 * Sgeo happies
05:54:16 <cheater99> parts?
05:54:18 <cheater99> for what?
05:54:20 <cheater99> what r u building?
05:54:21 <Quadrescence> cpressey: http://i.imgur.com/J8yh3.jpg
05:54:22 <Sgeo> Gaming computer
05:54:27 <cheater99> nice
05:54:30 <cheater99> i cud help u
05:54:34 <cpressey> Quadrescence: surely your raw, irresistable animal sexuality can be attributed to *something*, and if not algebraic programming, then what?
05:54:41 <cheater99> i m good with computerz
05:55:02 <Quadrescence> cpressey: to the instinctive nature of humans to reproduce?
05:55:09 <cheater99> cpressey: i wouldn't know, it seems like Quadrescence only has that one thing.
05:55:28 <alise> i love how cpressey totally asked for a picture.
05:55:39 <Quadrescence> me too
05:55:44 <cpressey> Quadrescence: naw, every living creature has that. but you, you're special.
05:56:01 <cpressey> alise: i am so totally not looking at any pictures wrt this k
05:56:12 <Quadrescence> cpressey: that photo is of me
05:56:16 <Quadrescence> sfw
05:56:28 <Sgeo> It is, in fact, sfw
05:56:29 <alise> it's actually a photo of a mountain of raging bees
05:56:34 <alise> descending on a pack of solid lies
05:56:41 <alise> meeting at the mountain's top
05:56:44 <augur> Quadrescence: why are you all wet in that pic
05:56:50 <alise> augur: you don't want to know
05:56:57 <augur> yes i do
05:57:01 <Quadrescence> augur: I was sitting in a hot car for a while
05:57:05 <Quadrescence> so it's pretty Gross Sweat
05:57:18 <Quadrescence> Thanks for asking though you are quite observant
05:57:23 <augur> OH REALLY
05:57:31 <Quadrescence> yeah
05:57:33 <cpressey> Sgeo: wait what parts? for what?
05:57:40 <Sgeo> cpressey, gaming computer
05:57:41 <augur> i like a sweaty grimey man
05:57:46 <cpressey> Sgeo: OK
05:58:06 <Quadrescence> augur: nice ;)
05:58:29 <augur> Quadrescence: got any more pics? 8D
05:58:33 <cpressey> omg
05:58:34 <Quadrescence> augur: yeah
05:58:39 <augur> wonderful
05:58:42 <augur> link away!
06:00:30 <Quadrescence> http://i.imgur.com/tAVTM.jpg
06:00:30 <Quadrescence> http://i.imgur.com/BySSK.jpg
06:00:30 <Quadrescence> http://i.imgur.com/hrSR7.jpg
06:00:30 <Quadrescence> http://i.imgur.com/MJDtg.jpg
06:00:30 <Quadrescence> http://i.imgur.com/sqKOd.jpg
06:00:32 <Quadrescence> http://i.imgur.com/u5z7p.jpg
06:00:39 <Quadrescence> how's that
06:01:23 <Quadrescence> wait the myspace-esque one http://i.imgur.com/iPy0d.jpg
06:01:24 <augur> fuckable
06:01:47 <cpressey> how bout you two move this to pm
06:02:00 <Quadrescence> maybe later cpressey
06:02:02 <augur> cpressey: but that would defeat the point
06:02:15 <alise> Funge-98 Final Specification
06:02:15 <alise> Chris Pressey, Sept 11, 1998
06:02:15 <alise> revised for clarity: Sept 30 1998
06:02:15 <alise> Table of Contents
06:02:15 <alise> Introduction
06:02:15 <alise> What is a Funge?
06:02:17 <alise> About this Document
06:02:19 <alise> The Funge Virtual Machine
06:02:21 <alise> Code and Data
06:02:23 <alise> Funge-Space
06:02:25 <alise> Stack Stack
06:02:27 <alise> Funge Source File Format
06:02:29 <alise> Code: Program Flow
06:02:31 <alise> Instruction Pointer
06:02:33 <alise> Instructions
06:02:35 <alise> Direction Changing
06:02:37 <alise> Wrapping
06:02:39 <alise> Flow Control
06:02:41 <alise> Decision Making
06:02:43 <alise> Data: Cell Crunching
06:02:45 <alise> Integers
06:02:47 <alise> Strings
06:02:49 <alise> Stack Manipulation
06:02:51 <alise> Stack Stack Manipulation
06:02:53 <alise> Media: Communications and Storage
06:02:55 <alise> Funge-Space Storage
06:02:57 * augur manipulates alise's stack
06:02:57 <alise> Standard Input/Output
06:02:59 <alise> File Input/Output
06:03:01 <alise> System Execution
06:03:03 <alise> System Information Retrieval
06:03:05 <alise> Scale: Extension and Customization
06:03:07 <alise> Handprints
06:03:09 <alise> Fingerprints
06:03:11 <alise> Funge Central Registry
06:03:13 <alise> Appendix
06:03:15 <alise> Instruction Quick Reference
06:03:17 <alise> Concurrent Funge-98
06:03:19 <alise> Lahey-Space
06:03:21 <alise> Other Topologies
06:03:23 <alise> Introduction
06:03:25 <alise> What is a Funge?
06:03:27 <alise> Funges are programming languages whose programs are typically expressed in a given topological pattern and number of dimensions.
06:03:30 <alise> Funge-98 is currently an official prototype standard for Funges. Funge-98 has evolved from Funge-97, which was a generalization of Befunge-97, which was an improvement over Befunge-96, which was an update of the original Befunge-93 language definition.
06:03:34 <alise> Funge-98 is a class of three real and officially sanctioned programming languages (Unefunge, Befunge, and Trefunge) and provides a paradigm for describing any number of imaginary ones with different topologies and any number of dimensions.
06:03:38 <alise> The most popular Funge by far is Befunge, which is two-dimensional and based on a Cartesian Lahey-Space (or Cartesian Torus, in Befunge-93 only) topology. Other Cartesian Lahey-Space Funges include Unefunge (one-dimensional) and Trefunge (three-dimensional.) Since not all Funge instructions are appropriate in all Funges, comparison to Befunge is often used to clarify points in this document.
06:03:43 <alise> About this Document
06:03:45 <alise> This is a final document. The information it contains has been formally approved and it is endorsed by its supporters as the 'official' technical specification of the Funge language family.
06:03:48 <alise> This document is suitable
06:03:49 <augur> ALISE I WILL FUCK YOU UP
06:03:50 <alise> Introduction
06:03:52 <alise> What is a Funge?
06:03:54 <alise> Funges are programming languages whose programs are typically expressed in a given topological pattern and number of dimensions.
06:03:56 <Sgeo> alise, you're spamming
06:03:57 <alise> Funge-98 is currently an official prototype standard for Funges. Funge-98 has evolved from Funge-97, which was a generalization of Befunge-97, which was an improvement over Befunge-96, which was an update of the original Befunge-93 language definition.
06:04:01 <Sgeo> /flushq or similar?
06:04:01 <alise> Funge-98 is a class of three real and officially sanctioned programming languages (Unefunge, Befunge, and Trefunge) and provides a paradigm for describing any number of imaginary ones with different topologies and any number of dimensions.
06:04:05 <alise> The most popular Funge by far is Befunge, which is two-dimensional and based on a Cartesian Lahey-Space (or Cartesian Torus, in Befunge-93 only) topology. Other Cartesian Lahey-Space Funges include Unefunge (one-dimensional) and Trefunge (three-dimensional.) Since not all Funge instructions are appropriate in all Funges, comparison to Befunge is often used to clarify points in this document.
06:04:10 <augur> Sgeo: i suspect he accidentally send the whole thing
06:04:10 <cpressey> spamming is preferable
06:04:10 <alise> About this Document
06:04:12 <alise> This is a final document. The information it contains has been formally approved and it is endorsed by its supporters as the 'official' technical specification of the Funge language family.
06:04:15 <alise> This document is suitable for an audience not already familiar with any Funge of any kind or year.
06:04:17 <alise> The Funge Virtual Machine
06:04:18 <augur> and it wont stop till it sends it all
06:04:19 <alise> Code and Data
06:04:21 <alise> Any given piece of code or data in a Funge can be stored in one of two places (called a cell):
06:04:23 <alise> Funge-Space, a matrix appropriate to the dimensionality, topology and tiling pattern of the Funge, where each node in its topological net contains a cell; or
06:04:26 <alise> the stack in Befunge-93 or the stack stack in Funge-98; either way, it's often called the stack and it's accessed as a last-in, first-out (LIFO) stack of cells.
06:04:29 <alise> Befunge-93 defines signed 32-bit stack cells and unsigned 8-bit Funge-Space cells. In Funge-98, stack and Funge-Space cells alike should be treated as signed integers of the same size.
06:04:32 <augur> the rate its going seems like that
06:04:32 <alise> What size exactly is left up to the impl
06:04:32 <Sgeo> Flushq on XChat stops sending
06:04:36 <alise> 32 bits is typical. 16 bit and 8 bit versions are discussed as separate variations on Funge-98. More than 32 bits is just fine. The important thing is that the stack cells have the same memory size as the Funge-Space cells.
06:04:39 <alise> Funge-Space
06:04:41 <alise> In Befunge-93, Funge-Space is restricted to 80 cells in the x dimension and 25 cells in the y dimension. No such limits are imposed on Funge-98 programs. A Funge-98 interpreter, ideally, has an addressing range equal to that of its cell size. i.e. A 32-bit implementation of Funge-98 uses signed 32-bit integers as each of its coordinate indices.
06:04:43 <Sgeo> Don't know what the equiv is for alise's client
06:04:46 <alise> With such a large typical addressing range, the Funge-98-Space is generally considered to be dynamically allocated by some behind-the-scenes mechanism in the compiler. It needn't be, of course, but in practice, it usually is.
06:04:49 <alise> So, the storage mechanism has be consistently trustworthy about how it provides Funge-Space to the running program. A Funge-98 program should be able to rely on all code and data that it puts in Funge-Space through this mechanism not disappearing. A Funge-98 program should also be able to rely on the memory mechanism acting as if a cell contains blank space (ASCII 32) if it is unallocated, and setting memory to be full of blank space cells upon actual alloc
06:04:54 <alise> ation (program load, or p instruction). If the underlying memory mechanism cannot provide this (e.g. no more memory is available to be allocated,) the interpreter should complain with an error and do what it can to recover, (but not necessarily gracefully).
06:04:58 <alise> The co-ordinate mapping used for both Befunge-93 and Funge-98 reflects the "Computer Storage" co-ordinate system used in screen graphics and spreadsheets; a larger y coordinate means further down the page. Compared to a standard mathematical representation
06:05:02 <alise> of the usual Cartesian co-ordinate system, it is upside-down.
06:05:03 <Sgeo> alise, Alt-F4?
06:05:04 <alise> Befunge-93 32-bit Befunge-98
06:05:06 <alise> ========== =================
06:05:08 <alise> 0 x 79 |-2,147,483,648
06:05:09 <cpressey> Sgeo: THIS IS PREFERABLE
06:05:10 <alise> 0+-------------+ |
06:05:12 <alise> | | x
06:05:14 <alise> | -----+-----
06:05:16 <alise> y| -2,147,483,648 | 2,147,483,647
06:05:18 <alise> | |
06:05:20 <alise> | y|2,147,483,647
06:05:22 <alise> 24+
06:05:24 <alise> Stack Stack
06:05:25 <Sgeo> cpressey, wha?
06:05:26 <alise> The Funge stack stack is a LIFO stack of typical LIFO stacks of cells. In Befunge-93, only two operations are possible on only one stack (referred to as the stack): to push a cell onto the top of the stack, and to pop a cell off the top of the stack.
06:05:30 <alise> In the case of Funge-98, however, the stack refers to the topmost stack on the stack stack. The push and pop operations are possible on the stack stack as well, but they push and pop entire stacks.
06:05:33 <alise> There is also a Funge-98 instruction to rid the stack (that is, the topmost stack of the stack stack) of cells, completely emptying it.
06:05:34 <augur> alise is stuck
06:05:36 <alise> If a program attempts to pop a cell off the stack when it is empty, no error occurs; the program acts as if it popped a 0.
06:05:39 <augur> he cant respond at all i think
06:05:39 <alise> In this document, short stacks are generally notated left to right to mean bottom to top. The leftmost values listed in the documentation are the bottommost and the first to be pushed onto the stack. Long stacks are notated top to bottom, to mean precisely that, top to bottom..
06:05:43 <alise> Funge Source File Format
06:05:45 <alise> A Befunge-93 source (program) file name, by common convention, ends in the extension .bf. There is no enforced convention for what any given Funge-98 source file name ends in (e.g. you could easily write a C-Befunge polyglot whose file name ends in .c), but .b98 is a good choice for Befunge-98 sources - "standard" example programs use this suffix.
06:05:50 <alise> Befunge-93 source files are plain text files containing only printable ASCII characters and the end-of-line controls described below.
06:05:53 <alise> Funge-98 source files are made up of Funge characters. The Funge-98 character set overlays the ASCII subset used by Befunge-93 and may have characters greater than 127 present in it (and greater than 255 on systems where characters are stored in multiple bytes; but no greater than 2,147,483,647.) The Funge character set is 'display-independent.' That is to say, character #417 may look like a squiggle on system Foo and a happy face on system Bar, but the mea
06:05:58 <alise> ning is always the same to Funge, 'character #417', regardless of what it looks like.
06:06:00 <alise> In other words, what Funge characters look like on a particular computer or OS depends entirely on that computer or OS. However, when characters are not generally considered to be printable, they can have special meaning to Funge-98:
06:06:02 <Sgeo> E can still Alt-F4 or worst-comes-to-worst, hard-reset
06:06:04 <alise> 0..31 : "ASCII controls" (only 10 is currently defined to mean EOL)
06:06:06 <alise> 32..126 : "ASCII printable characters" (all are input/output and fixed-width)
06:06:08 <Quadrescence> (15 year olds are known for their immature spamming; maturity doesn't come till later for most (modulo a few special exceptions))
06:06:08 <alise> 127 : "delete control" (undefined)
06:06:10 <alise> 128..2bil: "extended printable characters" (machine and font specific)
06:06:10 <Sgeo> Assuming e sees any of this
06:06:12 <alise> In Befunge-93, each line ends with the current operating system's "end of line" character, which may be a line feed (10) (Linux), carriage return (13) (MacOS), or carriage return-line feed (13, 10) (MS-DOS).
06:06:15 <alise> In Funge-98, however, any of the following sequences should, ideally, be recognized by the interpreter as an end-of-line marker, no matter what operating system it's running on:
06:06:18 <alise> Line Feed (10)
06:06:20 <alise> Carriage Return (13)
06:06:22 <alise> Carriage Return, Line Feed (13, 10)
06:06:24 <alise> If an interpreter cannot support all three varieties of end-of-line marker, it should be clearly noted in that interpreter's documentation.
06:06:27 <alise> End-of-line markers do not appear in Funge-Space once the program is loaded.
06:06:29 <alise> In Befunge-93, each line can contain up to 80 significant characters before the "End of Line" marker. There can be up to 25 such lines in the source file. There are no such restrictions on Befunge-98 and the user can reasonably expect to be able to have as many lines of as many characters as they want, for non-contrived cases.
06:06:33 <alise> Before load, every cell in Funge-Space contains a space (32) character. These default contents are written over by characters in the program source when it is loaded. However, spaces in the program source do not overwrite anything in Funge-Space; in essence the space character is transparent in source files. This becomes important when the i "Input File" instruction is used to include overlapping files.
06:06:38 <alise> The source file begins at the origin of Funge-Space. Subsequent columns of characters increment the x coordinate, and subsequent lines increment the y coordinate (if one is present) and reset the x coordinate to zero. Subsequent lines in Unefunge are simply appended to the first, and the end of the source file indicates the end of the (single) line. End-of-line markers are never copied into Funge-Space.
06:06:43 <alise> In Trefunge-98, the Form Feed (12) character increments the z coordinate and resets the x and y coordinates to zero.
06:06:46 <alise> Code: Program Flow
06:06:48 <alise> Instruction Pointer
06:06:50 <alise> The instruction pointer (IP) can be thought of as a vector (set of co-ordinates) which represents the "current position" of a running Funge program. It holds the same function as the instruction pointer (or program counter (PC)) in any other language or processor - to indicate where the currently executing instruction is located.
06:06:56 <alise> In most other languages and machines (both virtual and real,) the IP/PC is restricted to unidirectional travel in a single dimension, with random jumps. However, in Funge, the IP keeps track of another vector called the delta. Every tick, the IP executes its current instruction (that is, the instruction at the location pointed to by the IP), then travels to a new location, by adding its delta vector to its position vector.
06:07:01 <alise> At the beginning of a program, in Funge-98 as in Befunge-93, the IP always begins at the origin and starts with a delta of (1, 0). The origin is (0, 0) in Befunge, (0) in Unefunge, and (0, 0, 0) in Trefunge.
06:07:04 <alise> In two dimensions, we have the following terminology.
06:07:06 <alise> If the IP's delta is either (0,-1) (south), (1,0) (east), (0,1) (north), or (-1,0) (west), it is said to be traveling cardinally. This is the same as how a rook moves in chess and this is in fact the only way the IP can move in Befunge-93.
06:07:10 <alise> Any IP with a nonzero delta is considered moving. Any IP with a zero delta is said to be stopped. Any moving IP that is not traveling cardinally is said to be flying.
06:07:13 <alise> Instructions
06:07:15 <alise> All standard instructions are one character long and range from ASCII 32 (space) to ASCII 126 (~). There are no multicharacter instructions in Funge.
06:07:18 <alise> An instruction is executed by an IP every tick. The IP executed is the one at the current position of the IP. Only after that does the IP moves by its delta to a new position.
06:07:18 <cpressey> Quadrescence: I'm surprised how little you understand
06:07:21 <alise> Instructions A to Z all initially act like the r "Reflect" instruction. However, other instructions assign semantics to these instructions dynamically, allowing the Funge programmer to use libraries of both standard and proprietary instruction sets tagged with unique ID's (or fingerprints.)
06:07:25 <alise> However, a Funge-98 interpreter may also expose any number of proprietary instructions above ASCII 127 or below ASCII 0.
06:07:25 <Quadrescence> cpressey: true
06:07:26 <augur> can someone please kick alise
06:07:28 <alise> For all these reasons, when encountering any unimplemented instruction (this includes instructions like | in Unefunge,) the Funge interpreter should at least provide an option for informing the user that it was told to execute an instruction that isn't implemented, and possibly warning the user that this file might be an incorrect language or version.
06:07:33 <alise> An unimplemented instruction must otherwise act as if r was executed, and must not touch the stack. All undefined or otherwise unimplemented instructions must be considered unimplemented.
06:07:36 <alise> Also, any of the instructions t (concurrent execution,) = (execute,) i (input-file,) and o (output-file) may be unavailable in different interpreters for many reasons, and are routinely bound to (i.e. act just like) r as well. However, they may also act like r when they fail to exec
06:07:39 <Sgeo> Is oerjan an op?
06:07:40 <alise> ute. To test if they are actually supported, execute 1y and examine the cell it produces.
06:07:42 <alise> Direction Changing
06:07:44 <alise> A few instructions are essential for changing the delta of the IP. The > "Go East" instruction causes the IP to travel east; the < "Go West" instruction causes the IP to travel west. These instructions are valid in all Funges.
06:07:48 <alise> The ^ "Go North" instruction causes the IP to travel north; the v "Go South" instruction causes the IP to travel south. These instructions are not available in Unefunge.
06:07:48 * Sgeo wants to be an op
06:07:51 <alise> The h "Go High" instruction causes the IP to travel up (delta <- (0,0,1)); the l "Go Low" instruction causes the IP to travel down (delta <- (0,0,-1)). These instructions are not available in Unefunge or Befunge.
06:07:53 <cpressey> Quadrescence: actually no, I guess I'm not that surprised
06:07:54 <alise> The ? "Go Away" instruction causes the IP to travel in a random cardinal direction appropriate to the number of dimensions in use: east or west in Unefunge; north, south, east or west in Befunge, etc.
06:07:57 <alise> The following instructions are not in Befunge-93, but they are in Funge-98.
06:07:59 <alise> The ] "Turn Right" and [ "Turn Left" instructions rotate by 90 degrees the delta of the IP which encounters them. They always rotate on the z axis. These instructions are not available in Unefunge.
06:08:00 <Quadrescence> cpressey: yeah :/
06:08:02 <alise> To remember which is which, visualize yourself on the seat of a bicycle, looking down at the handlebars:
06:08:04 <alise> +-
06:08:06 <alise>
06:08:08 <alise> +-+-+
06:08:10 <alise> | |-+
06:08:12 <alise>  |
06:08:14 <alise> -+
06:08:16 <alise> [ ]
06:08:18 <alise> Turn LeftGo ForwardTurn Right
06:08:20 <alise> The r "Reverse" instruction multiplies the IP's delta by -1. In two dimensions, this is the equivalent of reflecting the delta of the IP about the z-axis.
06:08:21 <cpressey> Quadrescence: would you ever say anything to contradict me?
06:08:23 <alise> The x "Absolute Vector" instruction pops a vector off the stack, and sets the IP delta to that vector.
06:08:25 <alise> A vector on the stack is stored bottom-to-top, so that in Befunge, x (and all other vector-popping instructions) pops a value it calls dy, then pops a value it calls dx, then sets the delta to (dx, dy).
06:08:26 <Sgeo> Might alise be vulnerable to some exploit?
06:08:28 <alise> Wrapping
06:08:30 <alise> Befunge-93 handles the case of the IP travelling out of bounds (off the map of Funge-Space) by treating the space as a torus. If the IP leaves the west edge, it reappears on the east edge at the same row; if it leaves the south edge, it reappears at the north edge at the same column, and vice versa in both cases.
06:08:32 <Quadrescence> cpressey: yes
06:08:34 <alise> For various reasons, toroidal wrapping is problematic in Funge-98. Instead, we use a special wrapping technique that has more consistent results in this new, more flexible environment where Funge-Space can have an arbitrary size and the IP can fly. It is called same-line wrapping.
06:08:35 <augur> Sgeo: a funge exploit?
06:08:38 <alise> Same-line wrapping can be described in several ways, but the crucial idea it encompasses is this: unless the delta or position of the IP were to be changed by an intervening instruction, the IP will always wrap such that it would eventually return to the instruction it was on before it wrapped.
06:08:39 <Sgeo> Hehe
06:08:40 <cpressey> Quadrescence: I see
06:08:42 <alise> The mathematical description of same-line wrapping is known as Lahey-space wrapping, which defines a special topological space. It is generally of more interest to topologists and mathematicians than programmers. We won't cover it here, but it is included in the Appendix for completeness.
06:08:46 <alise> The algorithmic description of same-line wrapping can be described as backtrack wrapping. It is more of interest to Funge interpreter implementers than Funge programmers. However, it does describe exactly how the wrapping acts in terms that a programmer can understand, so we will include it here.
06:08:47 <Sgeo> Some exploit that tends to kick people off IRC
06:08:50 <alise> When the IP attempts to travel into the whitespace between the code and the end of known, addressable space, it backtracks. This means that its delta is reversed and it ignores (skips over without executing) all instructions. Travelling thus, it finds the other 'edge' of code when there is again nothing but whitespace in front of it. It is reflected 180 degrees once more (to restore its original delta) and stops ignoring instructions. Execution then resumes
06:08:55 -!- augur has set topic: ALISE: poke me when you're not spamming anymore. | The cheesy channel (cheddar) | Also combûter programming | Should the esolangs community have a Hackiki wiki? You should've voted: http://poll.fm/23p9l | http://tunes.org/~nef/logs/esoteric/?C=M;O=D.
06:08:55 <alise> normally - the wrap is complete.
06:08:59 <alise> It is easy to see at this point that the IP remains on the same line: thus the name. (Also note that this never takes any ticks in regards to multithreading, as would be expected from any wrapping process.)
06:09:02 <alise> Same-line wrapping has the advantage of being backward-compatible with Befunge-93's toroidal wrapping. It also works safely both when the IP delta is flying (non-cardinal), and when the size of the program changes.
06:09:05 <alise> As noted, by default every cell in Funge-Space contains a space (32) character. (This holds true with most decent Befunge-93 interpreters, too, although it was not in the original.)
06:09:06 * cpressey watches his beautiful beautiful spec fling through the aether
06:09:08 <Quadrescence> cpressey: One day you'll be on good terms with me I hope!
06:09:08 <alise> In Befunge-93, when interpreted as an instruction, a space is treated as a "no operation" or nop. The interpreter does nothing and continues on its merry way.
06:09:11 <alise> Funge-98 acts much the same way, except technically, Funge-98 processes any number of spaces in "no time whatsoever", and this becomes important when you have more than one IP in Funge-Space at the same time (multithreading), which you'll read about later. For an explicit nop instruction in Funge-98, use z.
06:09:15 <alise> Space also takes on special properties (in Funge-98) with a special mode of the interpreter called stringmode, which you'll also read about late
06:09:18 <alise> Flow Control
06:09:18 <Quadrescence> cpressey: did you write this spec
06:09:19 <Quadrescence> ?
06:09:20 <alise> The # "Trampoline" instruction moves the IP one position beyond the next Funge-Space cell in its path.
06:09:22 <alise> The @ "Stop" instruction kills the current IP. In non-Concurrent Funge, there is only a single IP. Either way, when no IP's are left alive, the program will subsequently end with no error (returning error code 0).
06:09:25 <alise> The following instructions and markers are not in Befunge-93, but they are in Funge-98.
06:09:27 <alise> The ; "Jump Over" marker causes the IP to jump over all subsequent instructions until the next ; marker. Like space, this takes zero ticks to execute, so that subroutines, comments, and satellite code can be insulated by surrounding it with ; markers, with no effect on multithreading.
06:09:31 <alise> ; is truly ethereal; like space, it cannot ever be truly executed, in the sense of it taking up a tick and doing something.
06:09:33 <cpressey> Quadrescence: you don't even know *that*
06:09:34 <alise> The j "Jump Forward" instruction pops a value off the stack, and jumps over that many spaces. If there is a 1 on the stack, j will work like # does. e.g. 2j789. would print 9 and leave an empty stack. Negative values are legal arguments for j, such that 04-j@ is an infinite loop.
06:09:38 <alise> The q "Quit" instruction, only in Funge-98, ends the entire program immediately (regardless of the number of IPs active in Concurrent Funge). It also pops a cell off the stack and uses that value as the return value of the Funge interpreter to the operating system.
06:09:39 <Quadrescence> cpressey: true
06:09:42 <alise> Note that most operating systems will only look at the least significant byte your return value, unsigned. But you can return a full cell, and the OS will interpret as much of it as it can handle, treating it as signed or unsigned as the OS demands.
06:09:46 <alise> The k "Iterate" instruction pops a value n off the stack. Then it finds the next instruction in Funge-space in the path of the IP (note that this cannot be a marker such as space or ;), treats it as an instruction, executing it n times. This takes only one tick with respect to concurrent operation.
06:09:50 <alise> Note that some instructions don't make much sense within the context of k unless you include zero as one of the p
06:09:52 -!- augur has set topic: The cheesy channel (cheddar) | Also combûter programming | Should the esolangs community have a Hackiki wiki? You should've voted: http://poll.fm/23p9l | http://tunes.org/~nef/logs/esoteric/?C=M;O=D.
06:09:53 <alise> n off the stack. Then it finds the next instruction in Funge-space in the path of the IP (note that this cannot be a marker such as space or ;), treats it as an instruction, executing it n times. This takes only one tick with respect to concurrent operation.
06:09:57 <alise> Note that some instructions don't make much sense within the context of k unless you include zero as one of the possibilities for how many times the instruction is repeated. For example, no matter how many times after the first time k execute ^, the result is the same. However, you may pass a zero count to k, and the ^ instruction will not be executed; this can be a valuable behaviour.
06:10:00 <augur> stupid limechat has no /ignore :|
06:10:02 <alise> Also, note k will never, ever actually execute instruction #32, space, or ;.
06:10:04 <alise> Decision Making
06:10:06 <alise> The ! "Logical Not" instruction pops a value off the stack and pushes a value which is the logical negation of it. If the value is zero, it pushes one; if it is non-zero, it pushes zero.
06:10:09 <alise> The ` "Greater Than" instruction pops two cells off the stack, then pushes a one if second cell is greater than the first. Otherwise pushes a zero.
06:10:12 <alise> Funge has instructions that act like directional 'if' statements. The _ "East-West If" instruction pops a value off the stack; if it is zero it acts like >, and if non-zero it acts like <.
06:10:15 <augur> WHY ARE THERE NOT OPS?!
06:10:15 <alise> The | "North-South If" instruction pops a value off the stack; if it is zero it acts
06:10:16 <Sgeo> alise was able to successfully contact me.
06:10:17 <alise> like v, and if non-zero it acts like ^. | is not available in Unefunge.
06:10:19 <alise> The m "High-Low If" (think middle) instruction pops a value off the stack; if it is zero it acts like l, and if non-zero it acts like h. m is not available in Unefunge or Befunge.
06:10:22 <Sgeo> And implied that this is deliberate.
06:10:22 <alise> The w "Compare" instruction pops a value b off the stack, then pops a value a, then compares them. (a is called a because it was the first of the two values to be pushed onto the stack.) If the a is smaller, w acts like [, and turns left. If the a is greater, w acts like ], and turns right. If a and b are equal, w does not affect the IP's delta. This instruction is not available in Befunge-93, nor Unefunge.
06:10:24 <Sgeo> Sorry, alise.
06:10:25 <Quadrescence> cpressey: I wanted to offer typesetting it for you
06:10:27 <alise> Data: Cell Crunching
06:10:29 <alise> Integers
06:10:31 <alise> Instructions 0 "Push Zero" through 9 "Push Niner" push the values zero through nine onto the stack, respectively. In Funge-98, a through f also push 10 through 15 respectively.
06:10:34 <alise> The + "Add" instruction pops two cells from the stack, adds them using integer addition, and pushes the result back onto the stack.
06:10:37 <alise> The * "Multiply" instruction pops two cells from the stack, multiplies them using integer multiplication, and pushes the result back onto the stack. In this way numbers larger than 9 (or 15) can be pushed onto the stack.
06:10:40 <alise> For example, to push the value 123 onto the stack, one might write
06:10:42 <alise> 99*76*+
06:10:44 <alise> or
06:10:44 <Sgeo> I hope never to have to violate your trust again.
06:10:46 <alise> 555**2-
06:10:48 <alise> Funge also offers the following arithmetic instructions:
06:10:50 <alise> the - "Subtract" instruction, which pops two values, subtracts the first from the second using integer subtraction, and pushes the result;
06:10:53 <alise> the / "Divide" instruction, which pops two values, divides the second by the first using integer division, and pushes the result (note that division by zero produces a result of zero in Funge-98, but Befunge-93 instead is supposed to ask the user what they want the result of the division to be); and
06:10:55 <cpressey> Quadrescence: hm, typesetting.... hm. no
06:10:57 <alise> the % "Remainder" instruction, which pops two values, divides the second by the first using integer division, and pushes the remainder, of those. Remainder by zero is subject to the same rules as division by zero, but if either argument is negative, the result is implementation-defined.
06:11:01 <alise> Strings
06:11:03 <alise> The instruction " "Toggle Stringmode" toggles a special mode of the Funge interpreter called stringmode. In stringmode, every cell encountered by the IP (except " and in Funge-98, space) is not interpreted as an instruction, but rather as a Funge character, and is pushed onto the stack. A subsequent " toggles stringmode once more, turning it off.
06:11:08 <alise> In Funge-98 stringmode, spaces are treated "SGML-style"; that is, when any contiguous series of spaces is processed, it only takes one tick and pushes one space onto the stack. This introduces a small backward-incompatibility with Befunge-93; programs that have multiple spaces and/or wrap while in stringmode will have to be changed to work the same under Funge-98.
06:11:13 <alise> Befunge-93Befunge-98
06:11:15 <alise> "hello world" "hello world"
06:11:17 <alise> "hello world" "hello "::"world"
06:11:18 <Sgeo> Or, maybe e messaged me at a different time
06:11:19 <alise> There is also a ' "Fetch Character" instruction in Funge-98. This pushes the Funge character value of the next encountered cell (position + delta) onto the stack, then adds the delta to the position (like #), skipping over the character (in no ticks). For example, the following two snippets perform the same function, printing a Q:
06:11:23 <alise> "Q",
06:11:24 <Sgeo> In the middle somewhere
06:11:25 <alise> 'Q,
06:11:27 <alise> s "Store Character" is the mirror image of the ' instruction: this instead pops a value off the stack and writes it into (position + delta).
06:11:29 <Sgeo> And thus can't actually respond
06:11:29 <Quadrescence> cpressey: well I am not offering it, I just was going to if you answered my question earlier with "yes"
06:11:30 <alise> Some instructions expect a Funge string on the stack as one of their arguments. The standard format for these strings is called 0"gnirts" - that is, a null-terminated string with the start of the string at the top of the stack and the null termination at the bottom.
06:11:36 <alise> Stack Manipulation
06:11:38 <alise> The $ "Pop" instruction pops a cell off the stack and discards it.
06:11:40 <alise> The : "Duplicate" instruction pops a cell off the stack, then pushes it back onto the stack twice, duplicating it.
06:11:43 <alise> The \ "Swap" instruction pops two cells off the stack, then pushes the first cell back on, then the second cell, in effect swapping the top two cells on the stack.
06:11:46 <alise> The n "Clear Stack" instruction (not available in Befunge-93) completely wipes the stack (popping and discarding elements until it is empty.)
06:11:49 <alise> Stack Stack Manipulation
06:11:51 <alise> The stack stack transparently overlays the stack - that is to say, the top stack of Funge-98's stack stack is treated the same as Befunge-93's sole stack. The Funge programmer will never notice the difference unless they use the {, }, or u instructions of Funge-98.
06:11:55 <alise> When working with different stacks on the stack stack, though, it's useful to give two of them names: the top of stack stack or TOSS, which indicates the topmost stack on the stack stack, which works to emulate the sole stack of Befunge-93; and the second on stack stack or SOSS, which is the stack directly under the TOSS.
06:11:59 <alise> The { "Begin Block" instruction pops a cell it calls n, then pushes a new stack on the top of the stack stack, transfers n elements from the SOSS to the TOSS, then pushes the storage offset as a vector onto the SOSS, then sets the new storage offset to the location to be executed next by the IP (storage offset <- position + delta). It copies these elements as a block, so order is preserved.
06:12:04 <alise> If the SOSS contains k elements, where k is less than n, the k elements are transferred as the top k elements and the remaining bottom (n-k) elements are filled in with zero-value cells.
06:12:07 <alise> If n is zero, no elements are transferred.
06:12:09 <alise> If n is negative, |n| zeroes are pushed onto the SOSS.
06:12:11 <alise> The corresponding } "End Block" instruction pops a cell off the stack that it calls n, then pops a vector off the SOSS which it assigns to the storage offset, then transfers n elements (as a block) from the TOSS to the SOSS, then pops the top stack off the stack stack.
06:12:15 <alise> The transfer of elements for } "End Block" is in all respects similar to the transfer of elements for { "Begin Block", except for the direction in which elements are transferred. "Transfer" is used here in the sense of "move," not "copy": the original cells are removed.
06:12:19 <alise> If n is zero, no elements are transferred.
06:12:21 <alise> If n is negative, |n| cells are popped off of the (original) SOSS.
06:12:23 <alise> { makes the current TOSS the new SOSS. } makes the current SOSS the new TOSS.
06:12:25 <alise> { may act like r if no more memory is available for another stack. } acts like r if a stack-stack underflow would otherwise occur (i.e. when there is only one stack on the stack-stack.)
06:12:28 <alise> The practical use of these instructions is to "insulate" and "localize" procedures or other blocks of Funge code.
06:12:31 <alise> The u "Stack under Stack" instruction pops a count and transfers that many cells from the SOSS to the TOSS. It transfers these cells in a pop-push loop. In other words, the order is not preserved during transfer, it is reversed.
06:12:35 <alise> If there is no SOSS (the TOSS is the only stack), u should act like r.
06:12:37 <alise> If count is negative, |count| cells are transferred (similarly in a pop-push loop) from the TOSS to the SOSS.
06:12:40 <alise> If count is zero, nothing happens.
06:12:42 <alise> Media: Communications and Storage
06:12:44 <alise> Funge-Space Storage
06:12:46 <alise> The g "Get" and p "Put" instructions are used to store and retrieve data and code in Funge-Space.
06:12:48 <alise> In Befunge-93, g pops a vector (that is, it pops a y value, then an x value,) and pushes the value (character) in the Befunge-Space cell at (x, y) onto the stack. p pops a vector, then it pops a value, then it places that value in the Funge-Space cell at (x, y).
06:12:52 <alise> In Funge-98, each IP has an additional vector property called the storage offset. Initially this vector is the set to the origin. As such, it works to emulate Befunge-93. The arguments to g and p are the same, but instead of pointing to absolute locations in Funge-Space, they reference a cell relative to the storage offset.
06:12:56 <alise> Standard Input/Output
06:12:58 <alise> The . "Output Decimal" and , "Output Character" instructions provide numeric and Funge character/control output, respectively; they pop a cell off the stack and send it in numeric or Funge character format to the standard output, which is usually displayed by the interpreter in an interactive user terminal.
06:13:02 <alise> Outputting character number 10 will result in a new line being displayed on the standard output.
06:13:04 <alise> Numeric output is formatted as a decimal integer followed by a space.
06:13:06 <alise> These instructions will act as r does, should the standard output fail for any reason.
06:13:08 <alise> The & "Input Decimal" and ~ "Input Character" instructions provide numeric and Funge character/control input, respectively. They each suspend the program and wait for the user to enter a value in numeric or Funge character format to the standard input, which is usually displayed with the standard output. They then push this value on the stack.
06:13:12 <cpressey> Quadrescence: Ever read McLuhan?
06:13:12 <alise> An input of character number 10 indicates that the user pressed the 'Enter' key, or the equivalent key on their keyboard.
06:13:15 <alise> Decimal input reads and discards characters until it encounters decimal digit characters, at which point it reads a decimal number from those digits, up until (but not including) the point at which input characters stop being digits, or the point where the next digit would cause a cell overflow, whichever comes first.
06:13:19 <alise> Although the standard input and output are generally displayed in some sort of interactive user terminal, they needn't be; many operating systems support redirection. In the case of an end-of-file or other file error condition, the & and ~ both act like r.
06:13:23 <alise> File Input/Output
06:13:25 <alise> File I/O is done with the i "Input File" and o "Output File" instructions, which are only available in Funge-98.
06:13:28 <alise> i pops a null-terminated 0"gnirts" string for the filename, followed by a flags cell, then a vector Va telling it where to operate. If the file can be opened for reading, it is inserted into Funge-Space at Va, and immediately closed. Two vectors are then pushed onto the stack
06:13:32 <alise> , Va and Vb, suitable arguments to a corresponding o instruction. If the file open failed, the instruction acts like r.
06:13:35 <alise> i is in all respects similar to the procedure used to load the main Funge source code file, except it may specify any file, not necessarily Funge source code, and at any location, not necessarily the origin.
06:13:38 <alise> Also, if the least significant bit of the flags cell is high, i treats the file as a binary file; that is, EOL and FF sequences are stored in Funge-space instead of causing the dimension counters to be reset and incremented.
06:13:40 <Quadrescence> cpressey: no
06:13:41 <alise> o first pops a null-terminated 0"gnirts" string to use for a filename. Then it pops a flags cell. It then pops a vector Va indicating a least point (point with the smallest numerical coordinates of a region; also known as the upper-left corner, when used in the context of Befunge) in space, and another vector Vb describing the size of a rectangle (or a rectangular prism in Trefunge, etc). If the file named by the filename can be opened for writing, the cont
06:13:46 <alise> ents of the rectangle of Funge-Space from Va to Va+Vb are written into it, and it is immediately closed. If not, the instruction acts like r.
06:13:47 <Sgeo> This was all a ploy of alise to get Quadrescence to be quiet.
06:13:49 <alise> The first vectors popped by both of these instructions are considered relative to the storage offset. (The size vector Vb, of course, is relative to the least point Va.)
06:13:52 <alise> Note that in a greater-than-two-dimensional environment, specifying a more-than-two-dimensional size such as (3,3,3) is not guaranteed to produce sensical results.
06:13:55 <alise> Also, if the least significant bit of the flags cell is high, o treats the file as a linear text file; that is, any spaces before each EOL, and any EOLs before the EOF, are not written out. The resulting text file is identical in appearance and takes up less storage space.
06:13:56 <Quadrescence> Sgeo: true
06:13:58 <cheater99> Sgeo: it worked
06:13:59 <alise> System Execution
06:14:00 <Sgeo> Again, alise, I'm really sorry.
06:14:01 <alise> The = "Execute" instruction pops a string off the stack, and attempts to execute it. How it executes it is implementation dependant. However, an implementation may support one of several standardized ways of interpreting the string, and which routine it uses can be determined by querying y. Typically methods include treating it as a C system() call would, or on a platform such as MacOS, for example, treating the string as AppleScript would be in order.
06:14:06 <alise> After execution, a failure value is pushed onto the stack. If this value is zero, everything went as expected. If the value is non-zero, it may be the return-code of the program that was executed; at any rate it means that the attempt to execute the program, or the program itself, did not succeed.
06:14:10 <alise> System Information Retrieval
06:14:12 <alise> The y "Get SysInfo" instruction, only available in Funge-98, pops one value off the stack. If the value is zero or negative, y tells you far more than you ever really want to know about the underlying Funge interpreter, operating system, and computer (and is thus usually followed soon after by a n instruction).
06:14:18 <alise> Each cell of information retrieved by y, only applies to either the current IP, the current environment (that is, the interpreter of the current IP,) or the global environment (the environment of every IP in the same Funge-space, regardless of which interpreter it's running on.)
06:14:22 <alise> After an execution of y with a non-positive argument, the stack contains many more cells (listed from top to bottom:)
06:14:25 <alise> 1 cell containing flags (env).
06:14:27 <alise> Least Significant Bit 0 (0x01): high if t is implemented. (is this Concurrent Funge-98?)
06:14:29 <alise> Bit 1 (0x02): high if i is implemented.
06:14:31 <alise> Bit 2 (0x04): high if o is implemented.
06:14:33 <alise> Bit 3 (0x08): high if = is implemented.
06:14:35 <alise> Most Significant Bit 4 (0x10): high if unbuffered standard I/O (like getch()) is in effect, low if the usual buffered variety (like scanf("%c")) is being used.
06:14:38 <alise> Further more significant bits: undefined, should all be low in Funge-98
06:14:40 <alise> 1 cell containing the number of bytes per cell (global env).
06:14:42 <alise> aka cell size. Typically 4, could also be 2, 8, really really large, infinity, etc.
06:14:44 <alise> 1 cell containing the implementation's handprint (env).
06:14:46 <alise> 1 cell containing the implementation's version number (env).
06:14:48 <alise> If the version number contains points, they're stripped. v2.01 == 201, v1.03.05 = 10305, v1.5g = 1507. Don't use non-numbers in the version number to indicate 'personalizations' - change the handprint instead.
06:14:51 <alise> 1 cell containing an ID code for the Operating Paradigm (global env)
06:14:53 <alise> 0 = Unavailable
06:14:55 <alise> 1 = Equivalent to C-language system() call behaviour
06:14:59 <alise> 2 = Equivalent to interpretation by a specific shell or program
06:15:01 <alise> This shell or program is specified by the interpreter but should ideally be customizable by the interpreter-user, if applicable. Befunge programs that run under this paradigm should document what program they expect to interpret the string passed to =.
06:15:05 <alise> 3 = Equivalent to interpretation by the same shell as started this Funge interpreter, if applicable
06:15:07 <alise> If the interpreter supports this paradigm, then in this manner, the user executing a Befunge source can easily choose which shell to use for = instructions.
06:15:10 <alise> This value is included so the program can have a reasonable idea of what = will do. The values shown here are only the most basic set available at the time of publication. See the Registry for any late-breaking headway into further Operating Paradigms.
06:15:14 <alise> 1 cell containing a path seperator character (global env)
06:15:16 <alise> This is what path seperators for i and o filenames should look like.
06:15:18 <alise> 1 cell containing the number of scalars per vector (global env)
06:15:20 <alise> aka number of dimensions. 2 for Befunge, 1 for Unefunge, 3 for Trefunge.
06:15:22 <alise> 1 cell containing a unique ID for the current IP (ip)
06:15:24 <alise> Only significant for Concurrent Funge. This ID differentiates this IP from all others currently in the IP list.
06:15:27 <alise> 1 cell containing a unique team number for the current IP (ip)
06:15:27 <cpressey> < alise> aka cell size. Typically 4, could also be 2, 8, really really large, infinity, etc. <-- LOVE THAT PART
06:15:29 <alise> Only significant for NetFunge, BeGlad, and the like.
06:15:31 <alise> 1 vector containing the Funge-Space position of the current IP (ip)
06:15:33 <alise> 1 vector containing the Funge-Space delta of the current IP (ip)
06:15:35 <alise> 1 vector containing the Funge-Space storage offset of the current IP (ip)
06:15:37 <alise> 1 vector containing the least point which contains a non-space cell, relative to the origin (env)
06:15:39 <alise> 1 vector containing the greatest point which contains a non-space cell, relative to the least point (env)
06:15:41 <alise> These two vectors are useful to give to the o instruction to output the entire program source as a text file.
06:15:44 <alise> 1 cell containing current ((year - 1900) * 256 * 256) + (month * 256) + (day of month) (env)
06:15:46 <alise> 1 cell containing current (hour * 256 * 256) + (minute * 256) + (second) (env)
06:15:48 <alise> 1 cell containing the total number of stacks currently in use by the IP (size of stack stack) (ip)
06:15:50 <alise> size-of-stack-stack cells containing size of each stack, listed from TOSS to BOSS (ip)
06:15:52 <alise> Stack sizes are pushed as if they were measured before y began pushing elements onto the stack.
06:15:54 <alise> a series of sequences of characters (strings), each terminated by a null, the series terminated by an additional double null, containing the command-line arguments. (env)
06:15:57 <alise> This means any isolated argument can be a null string, but no two consecutive arguments may be null strings - a rather contrived scenario, null string arguments being rare in themselves.
06:16:00 <alise> The first string is the name of the Funge source program being run.
06:16:02 <alise> a series of strings, each terminated by a null, the series terminated by an additional null, containing the environment variables. (env)
06:16:05 <alise> The format for each variable setting is NAME=VALUE.
06:16:07 <alise> If y is given a positive argument, all these cells are pushed onto the stack as if the argument was non-positive. However, y then goes on to copy the argumentth stack cell (counting from the top) into a temporary location, subsequently removing all the cells it pushed onto the stack. It then pushes the temporary cell onto the stack. For example, 3y will act as if only the handprint was pushed onto the stack.
06:16:07 <cheater99> cpressey: how far through are we
06:16:09 <cheater99> 10%?
06:16:12 <alise> An interesting side-effect of this behaviour is that if y is given an argument that exceeds the number of cells it pushes onto the stack, it can act as a 'pick' instruction on data that was on the stack before y was even executed.
06:16:19 <alise> Scale: Extension and Customization
06:16:21 <alise> Funge-98 is totally customizable and scalable in terms of functionality, and non-trivial programs can now be written portably in it without any sort of directives. The fingerprint mechanism allows for the definition of a virtually unlimited number of libraries in the form of fingerprinted extensions. The handprint mechanism allows a program to identify exactly what interpreter it's running on.
06:16:24 <cpressey> cheater99: more than that I think, but the whole appendix is yet to come
06:16:26 <alise> Handprints
06:16:28 <alise> A handprint is a bitstring which uniquely identifies a particular implementation (interpreter, compiler, etc.) of Funge-98.
06:16:31 <alise> These should really only be used by Funge-98 programs which know about bugs in a known interpreter, and want to work around them when their portable source is run on that interpreter. (Features, on the other hand, should be fingerprints: if everything is properly implemented, the current handprint should be irrelevant. Fingerprints should always be used in preference to handprints when making a design decision - handprints are a fallback for the less-than-i
06:16:36 <alise> deal case.)
06:16:38 <alise> Handprints generally stay they same between revisions of an interpreter. They are accompanied by a version number when retrieved from y.
06:16:41 <Sgeo> alise asked me a question, I wonder if I should repeat it.
06:16:41 <alise> Fingerprints
06:16:43 <alise> Extension and customization of Funge-98 are accomplished through the so-called "fingerprint mechanism". No such mechanism exists for Befunge-93.
06:16:45 <Sgeo> I know my answer.
06:16:46 <alise> To be more precise, a fingerprint is a unique ID code which indicates a library of routines (a fingerprinted extension) to be assigned temporarily to what the instructions A to Z do. Multiple loaded fingerprints can overlap and overload, so even object-oriented-like inheritance is possible.
06:16:50 <Sgeo> Maybe if everyone else agreed...
06:16:50 <alise> Generally speaking, these new semantics and instructions are only available to and only apply to the IP which loaded them. The fingerprint spec itself may make exceptions to this rule, but it must clearly specify what they are.
06:16:54 <alise> The semantics of any given extension are generally coded directly into the interpreter. There is no reason, however, they may not be made available in a dynamically-loadable form; but there is no convenient, standard format for such a form.
06:16:58 <alise> Whether the semantics are dynamically loaded from a disk file containing some form of executable code, or hard-wired into the Funge interpreter, is really a moot point from the Funge programmer's perspective.
06:17:01 <alise> However, it is useful to explain at this point for the benefit of both Funge programmers and potential Funge extension writers, that there are two classes of fingerprinted extensions: those that interact with and change the behaviour of the underlying Funge Virtual Machine and/or are not re-entrant (feral extensions), and those which are self-contained and re-entrant (tame extensions).
06:17:04 <Sgeo> Although I doubt it
06:17:06 <alise> The main difference is that a feral extension cannot simply or easily be "dropped into" a Funge interpreter which is not aware of it. When specifying fingerprinted extensions for public use, please try to make them as tame as possible - although many times it is unavoidable to have a feral fingerprint in order to accomplish a certain semantic goal, such as program control of proprietary interpreter features.
06:17:10 <cpressey> Sgeo: I'm not sure alise's client is in any position to respond at this point
06:17:11 <alise> The ( "Load Semantics" instruction loads the semantics for a given fingerprint onto any or all of the instructions A to Z. ( pops a count. It then pops count cells. For each cell that it pops, it multiplies a temporary value (which is initially zero) by 256, and adds the cell value to it.
06:17:15 <alise> In this way, ( builds a fingerprint. This mechanism makes it simple to express large fingerprints like 0x452e472e in printable ASCII such as ".G.E"4( ... ), while not requiring the use of ASCII as the medium for all fingerprints.
06:17:19 <alise> ( then uses this fingerprint to locate and load a set of semantics for the instructions A to Z. If the Funge implementation cannot find the correct library for the given fingerprint, ( acts like r. If, however, the semantic library load is successful, the new fingerprint, then a 1, are pushed onto the stack (to be accepted by a subsequent ) instruction.)
06:17:20 <Sgeo> cpressey, e is responding via PM
06:17:24 <alise> The corresponding ) "Unload Semantics" instruction unloads the semantics for a given fingerprint from any or all of the instructions A to Z (even if that fingerprint had never been loaded before). It pops a count and builds a fingerprint in exactly the same way.
06:17:28 <alise> () in Funge are kind of like "use x ... no x" in Perl. The interpreter-writer or interpreter-customiz
06:17:30 <alise> er is allowed to make fingerprints do anything they like, and they may implement fingerprints however they like, but they have to follow some general rules as a 'contract' between the fingerprint and the fingerprint user.
06:17:33 <alise> A fingerprint should not affect the semantics of any instructions besides A to Z, except under exceptional circumstances which must be clearly documented in the fingerprint's spec.
06:17:36 <alise> When loaded, a fingerprint which implements A and B semantics should act something like:
06:17:38 <alise> save(A); bind(A, myAsemantic()); save(B); bind(B, myBsemantic());
06:17:40 <alise> When unloaded, the same fingerprint should act something like
06:17:42 <alise> restore(B); restore(A);
06:17:44 <alise> In this sense, 'bind' means to change what the execution of an instruction does in the current Funge-98 program.
06:17:47 <alise> 'save' means to save (push onto a stack) the semantics of an instruction for later use.
06:17:49 <alise> 'restore' means to recall (pop from a stack) the semantics of an instruction from the last saved version.
06:17:51 <alise> This allows 'overloading' fingerprints. Say three fingerprints are implemented on your interpreter,
06:17:53 <alise> E.G. which implements D as 'Destroy' and R as 'Restore'
06:17:55 <alise> TEST which implements S as 'Send', R as 'Receive', and E as 'Encrypt'
06:17:57 <alise> WORK which implements S as 'Slice', D as 'Dice', P as 'Puree'
06:17:59 <alise> With these, the Funge programmer ought to be able to make code like:
06:18:01 <alise> ".G.E"4( ... "TSET"4( ... "KROW"4( ... S ... ) ... ) ... )
06:18:03 <alise> Here, the S instruction indicates the 'Slice' instruction in the WORK fingerprint, not 'Send' in TEST. But if it was written as:
06:18:06 <alise> "KROW"4( ... "TSET"4( ... ".G.E"4( ... S ... ) ... ) ... )
06:18:08 <alise> The S would indicate 'Send' from TEST, since there is no S in E.G., and a D instruction in the same location would indicate 'Destroy' in E.G., but P would be a 'Puree' from WORK, because it's not defined in either TEST or E.G.
06:18:12 <alise> Funge Central Registry
06:18:14 <alise> The Funge Central Registry is an online database located at http://www.cats-eye.com/funge/registry/. Before developing and releasing your own Funge-98 implementation or extension, please register all applicable handprints and fingerprints you will require here.
06:18:18 <alise> This system is in place both to reduce conflicts between fingerprints and handprints world-wide, ensuring their uniqueness, and to provide a quick reference to all known extant handprints and fingerprints.
06:18:21 <alise> There really are no standard libraries in Befunge. A Funge-98 interpreter need not implement any fingerprints whatsoever. Funge-98 "standard" libraries are no more than "officially sanctioned" extensions, catalogued in the Registry by their fingerprints. Since extensions are forever accumulating, see the registry for a list of "standard" fingerprints.
06:18:26 <alise> Appendix
06:18:28 <alise> Instruction Quick Reference
06:18:28 <cpressey> cheater99: we're about 75% or 80% through
06:18:30 <alise> 98 Funge-98 only, not in Befunge-93.
06:18:32 <alise> 2D Minimum 2 dimensions (not in Unefunge).
06:18:34 <alise> 3D Minimum 3 dimensions (not in Unefunge or Befunge).
06:18:36 <alise> c Concurrent Funge. Check y to see if these instructions are implemented.
06:18:38 <alise> f Filesystem Funge. Check y to see if these instructions are implemented.
06:18:40 <alise> DecimalASCIIInstructionStack BeforeStack AfterOther Effects
06:18:42 <alise> (bottom ... top)
06:18:44 <alise> 32spaceSpace  not normally executed
06:18:45 <cpressey> love the tabs
06:18:46 <alise> 33!Logical NotbNOT b 
06:18:48 <alise> 34"Toggle Stringmode  stringmode <- NOT stringmode
06:18:50 <alise> 35#Trampoline  pos <- pos + delta
06:18:52 <alise> 36$Popn  
06:18:54 <alise> 37%Remaindera ba REM b 
06:18:56 <alise> 38&Input Integer aa = readint()
06:18:58 <alise> 39'Fetch Character/98 cpos <- pos + delta
06:19:00 <alise> 40(Load Semantics/98en..e1 nf 1overloads A-Z
06:19:02 <alise> 41)Unload Semantics/98en..e1 n unloads last A-Z
06:19:04 <alise> 42*Multiplya ba * b 
06:19:06 <alise> 43+Adda ba + b 
06:19:08 <alise> 44,Output Characterc writechar(c)
06:19:10 <alise> 45-Subtracta ba - b 
06:19:12 <alise> 46.Output Integera writeint(a)
06:19:14 <alise> 47/Dividea ba / b 
06:19:16 <alise> 480Push Zero 0 
06:19:18 <alise> 491Push One 1 
06:19:20 <alise> 502Push Two 2 
06:19:22 <alise> 513Push Three 3 
06:19:24 <alise> 524Push Four 4 
06:19:26 <alise> 535Push Five 5 
06:19:28 <alise> 546Push Six 6 
06:19:30 <alise> 557Push Seven 7 
06:19:32 <alise> 568Push Eight 8 
06:19:34 <alise> 579Push Niner 9 
06:19:36 <alise> 58:Duplicatevv v 
06:19:38 <alise> 59;Jump Over/98  nothing executed until next semicolon
06:19:40 <alise> 60<Go West  delta <- (-1,0)
06:19:42 <alise> 61=Execute/98/fSTRrr = system-execute(STR)
06:19:44 <alise> 62>Go East  delta <- (1,0)
06:19:46 <alise> 63?Go Away  delta <- (1,0)?(-1,0)?(0,1)?(0,-1)
06:19:48 <alise> 64@Stop  halt IP
06:19:50 <alise> 65-90A-Z   Fingerprint-Defined/98
06:19:52 <alise> 91[Turn Left/98/2D  delta <- rot(-90, delta)
06:19:54 <alise> 92\Swapa bb a 
06:19:56 <alise> 93]Turn Right/98/2D  delta <- rot(90, delta)
06:19:58 <alise> 94^Go North/2D  delta <- (0,-1)
06:20:00 <alise> 95_East-West If b delta <- if (b) (-1,0) else (1,0)
06:20:02 <alise> 96`Greater Than a ba > beither 1 or 0
06:20:04 <alise> 97aPush Ten/98 10 
06:20:06 <alise> 98bPush Eleven/98 11 
06:20:08 <alise> 99cPush Twelve/98 12 
06:20:10 <alise> 100dPush Thirteen/98 13 
06:20:12 <alise> 101ePush Fourteen/98 14 
06:20:14 <alise> 102fPush Fifteen/98 15 
06:20:16 <alise> 103gGetVavv = fetch-funge-space(offset+Va)
06:20:18 <alise> 104hGo High/98/3D  delta <- (0,0,-1)
06:20:20 <alise> 105iInput File/98/fVa f STRVa Vbinputs file
06:20:22 <alise> 106jJump Forward/98s pos <- pos + delta * s
06:20:24 <alise> 107kIterate/98n execute next instruction now, n times
06:20:26 <alise> 108lGo Low/98/3D  delta <- (0,0,1)
06:20:28 <alise> 109mHigh-Low If/98/3Db delta <- if (b) (0,0,-1) else (0,0,1)
06:20:30 <alise> 110nClear Stack/98en..e1  
06:20:32 <alise> 111oOutput File/98/fVa Vb f STR outputs file
06:20:34 <alise> 112pPutv Va store-funge-space(offset+Va,v)
06:20:36 <alise> 113qQuit/98r immediate exit, returncode = r
06:20:38 <alise> 114rReflect/98  delta <- delta * -1
06:20:40 <alise> 115sStore Character/98c store-funge-space(position+delta,v)
06:20:42 <alise> 116tSplit/98/c  Split IP
06:20:44 <alise> 117uStack Under Stack/98n(en..e1) 
06:20:46 <alise> 118vGo South/2D  delta <- (0,1)
06:20:48 <alise> 119wCompare/98/2Da b if (a>b) ']' elsif (a<b) '[' else 'z'
06:20:50 <alise> 120xAbsolute Delta/98Va delta <- Va
06:20:52 <alise> 121yGet SysInfo/98cen(..e1) 
06:20:54 <alise> 122zNo Operation/98   
06:20:56 <alise> 123{Begin Block/98en..e1 n(en..e1) offset <- pos + delta, etc
06:20:58 <alise> 124|North-South If/2Db delta <- if (b) (0,-1) else (0,1)
06:21:00 <alise> 125}End Block/98en..e1 n(en..e1) offset <- SOSS Va, etc
06:21:02 <alise> 126~Input Character cc = readchar()
06:21:04 <alise> Concurrent Funge-98
06:21:06 <alise> Befunge-93 does not allow for multithreaded execution. However, Concurrent Funge-98, a superset of Funge-98, defines a list of any number of concurrently running instruction pointers called the IP list. In Concurrent Funge, IP's are sometimes called threads and each has its own location, delta, and stack.
06:21:10 <alise> You can also think of a Concurrent Funge-98 interpreter as having an internal and imaginary clock which produces ticks sequentially. Each tick, the IP list is processed: instructions encountered by each IP are dealt with in the sequence the IPs appear on the list, and each IP then moves as specified by its delta.
06:21:14 <alise> The list is always processed repetitively, sequentially, and in the same direction, and when IP's are deleted they fall out and the next one which would normally execute anyway actually executes.
06:21:17 <alise> Creating additional IP's is done with the t "Split" instruction, available in Concurrent Funge-98 only. It causes the current IP to be duplicated, and this duplicate is added to the IP list such that it is executed for the first time before the parent IP is next executed.
06:21:21 <alise> When a child IP is borne unto Funge-Space thus, its location, storage offset, and stack are all copied verbatim from the parent IP's. The child IP's delta is reversed (a la r) from its parent's, though.
06:21:24 <alise> The @ "Stop" instruction kills the current IP. If the current IP is the only active IP in the IP list, the program ends. If it was not the last in the IP list, there would then be a gap in the list: in this case the top part of the list "shifts down" and the next thread in the list is executed.
06:21:28 <alise> Lahey-Space
06:21:30 <alise> Lahey-Space is a mathematical model of the space used in Funge-98.
06:21:32 <alise> The requirements for a line in Lahey-space are the following: Starting from the origin, no matter what direction you head, you eventually reach the origin. If you go the other way you reach the origin from the other direction.
06:21:36 <alise> We surmise that if you head out on a Lahey-line, you would eventually return along the same Lahey-line, heading in the same direction, but coming from the other direction. This would mean you would eventually repeat your path, and (in Funge terms) have consistant wrapping through unlimited space.
06:21:40 <alise> Now, imagine a sphere of radius one centered one unit above the origin. Imagine a plane placed two units above the origin, i.e. resting on top of the sphere.
06:21:40 <cpressey> YES, DON'T FORGET LAHEY-SPACE!
06:21:43 <alise> One thing you might notice is that when you draw a straight line from the origin to any point on the plane, you intersect the sphere exactly twice, once at the origin, once in a unique location. In this manner, you can map the plane uniquely onto the sphere.
06:21:47 <alise> Now, each normal line from a point A on the plane to a point B on the plane can be transformed into a Lahey-line, which in our model is represented as an arc of the sphere containing both point A' on the sphere and point B' on the sphere. This arc can then be extended into a full circle, going 'around' the sphere to wrap.
06:21:51 <alise> Other Topologies
06:21:53 <alise> As mentioned, Funge is a family of programming languages, and Befunge has many relatives and descendants. This document only covers Cartesian Funges. Other Funges, such as Honefunges (hex-net topology) and Kleinefunges (Klein-bottles) are certainly possible.
06:21:57 <alise> However, Advanced Funges may not find either torodial space or Lahey-space sufficient for complex topologies, so this spec provides a language for defining wrapping behaviour in a mathematical way.
06:22:00 <alise> We can define an a wrapping function W() along the lines of:
06:22:02 <alise> W(x,y) = (x<0 -> x:=79, x>79 -> x:=0, y<0 -> y:=24, y>24 -> y:=0)
06:22:04 <alise> for Befunge-93. Complex topologies can define their own wrapping functions. If these functions are strictly and clearly specified in the documentation of the Advanced Funge in question, it will save a lot of confusion to users, and is highly recommended.
06:22:08 <alise> Copyunder (u)1998 Cat's-Eye Technologies. See http://www.cats-eye.com/license/ for license information.
06:22:33 <alise> no shit sherlock
06:22:38 <Quadrescence> no shit sherlock
06:23:01 <alise> lol
06:23:03 <alise> haha
06:23:05 <alise> My trust is so broken that my heart will never be whole again.
06:23:09 <Quadrescence> rofl
06:24:07 <alise> Thank you for participating in the group reading and commentary session of Chris Pressey's "Funge-98 Final Specification".
06:24:10 <alise> Join us again next week, when we will be reciting the entire INTERCAL-72 manual.
06:24:14 <alise> Cool, messages arriving out of order.
06:24:30 <cpressey> Best. Reading. EVER.
06:24:39 <Sgeo> Some messages from alise arrived during the reading
06:24:48 <Sgeo> I still can't figure it out
06:26:13 <alise> Now we will be playing the entire text of Finnegans Wake.
06:32:43 * Sgeo should attempt to implement some esolang in Factor
06:32:46 <Sgeo> To get some practice
06:33:07 <augur> oh hey alise
06:33:15 <Sgeo> lol
06:33:24 <alise> Goodnight.
06:33:29 <augur> night
06:33:32 <cpressey> night alise
06:33:35 <Sgeo> Night alise
06:34:07 <alise> Suggestions for notable works of documentation or literature that could be read as part of a future session are greatly appreciated. Comments on a postcard. Do not use while pregnant. All rights reversed.
06:34:11 <alise> Bye.
06:34:13 -!- alise has quit (Quit: Leaving).
06:34:27 <cpressey> Sgeo: it would be a good idea. i can say from experience that underload is pretty easy.
06:35:02 <Sgeo> Factor comes with some parsing vocabulary
06:37:18 <cpressey> hmmm
06:43:32 -!- Mathnerd314 has quit (Quit: ChatZilla 0.9.86-rdmsoft [XULRunner]).
06:44:33 <cheater99> alise should do that more often
06:46:45 -!- zzo38 has quit (Remote host closed the connection).
06:47:18 <cpressey> cheater99: you are a distinctly creepy individual
06:58:32 -!- ais523 has joined.
07:01:39 <cpressey> morning, ais523. in case you care, i just wrote an Underload interpreter in C, and compiled it under AmigaOS 1.3.
07:01:53 <ais523> heh
07:02:05 <ais523> I do care; writing it in C is not the interesting part, compiling it under AmigaOS is
07:05:01 <ais523> meanwhile, Esolang now has two FALSE fans called Ian
07:05:05 <cpressey> agreed. the code ( http://pastie.org/1151532 ) is quite amateurish, especially in its memory management (although I did attempt to do some "tail call optimization"). I couldn't use the anagolf C implemementation, because DICE C (for AmigaOS) isn't... quite that smart.
07:05:09 <ais523> which is confusing when trying to review recent changes
07:05:17 <cpressey> hmph
07:05:27 <ais523> cpressey: the anagolf impl crashes on the vast majority of Underload programs
07:05:35 <ais523> because it doesn't actually allocate memory, it just uses it and hopes it's free
07:05:44 <ais523> presumably, that's OK for golfing, but not for regular programming
07:05:46 <cpressey> yes. i noticed that.
07:05:59 <cpressey> boggling at how it could possibly work correctly, rather.
07:06:07 <ais523> well, there's always a chance...
07:06:50 <ais523> I have an Underload in C interp aiming for maximum efficiency sitting on my hard drive atm; I can't remember whether I've shown it to anyone or not
07:07:27 -!- ais523 has quit (Read error: Connection reset by peer).
07:09:25 -!- ais523 has joined.
07:09:33 -!- ais523 has quit (Changing host).
07:09:33 -!- ais523 has joined.
07:16:02 <cheater99> cpressey: why am i creepy?
07:31:57 <cheater99> cpressey cpressey cpressey
07:33:17 <pikhq> That's why.
07:33:58 <cheater99> meta is not an answer.
07:53:47 -!- wareya_ has joined.
07:56:27 -!- wareya has quit (Ping timeout: 265 seconds).
07:59:59 -!- clog has quit (ended).
08:00:00 -!- clog has joined.
08:05:36 -!- ais523 has set topic: eightebed | http://tunes.org/~nef/logs/esoteric/?C=M;O=D.
08:06:14 -!- cheater00 has joined.
08:10:02 -!- cheater99 has quit (Ping timeout: 264 seconds).
08:42:11 -!- tombom has joined.
08:53:31 -!- rodgort has quit (Ping timeout: 240 seconds).
08:59:17 -!- Phantom_Hoover has joined.
09:02:17 -!- rodgort has joined.
09:09:45 -!- tombom has quit (Ping timeout: 272 seconds).
09:09:54 -!- lament has quit (Ping timeout: 272 seconds).
09:40:41 -!- Jonty_ has quit (Ping timeout: 240 seconds).
09:53:17 -!- FireFly has joined.
10:06:33 -!- nooga has quit (Ping timeout: 260 seconds).
10:24:02 -!- rodgort has quit (Ping timeout: 276 seconds).
10:31:56 -!- rodgort has joined.
10:37:19 -!- cheater00 has quit (Quit: Leaving).
10:39:35 -!- tombom has joined.
10:47:26 -!- Phantom_Hoover has quit (Ping timeout: 276 seconds).
10:57:49 -!- Wamanuz4 has changed nick to Wamanuz5.
10:57:54 -!- Wamanuz5 has changed nick to Wamanuz.
11:41:04 <Vorpal> <Quadrescence> btw I genuinely think AnMaster is badass like cpressey is <-- um... thanks I guess
11:41:43 -!- Phantom_Hoover has joined.
11:42:26 <Phantom_Hoover> ais523, was it Birmingham or Manchester you lived in?
11:42:46 <ais523> well, perhaps you should write it down, you seem to keep forgetting
11:42:57 <ais523> why do you care anyway?
11:43:47 <Phantom_Hoover> Because I need a backup for Operation Hatheist!
11:47:05 <Phantom_Hoover> If I can't get the hat in Edinburgh, you can get it when it goes through England!
11:52:34 <Phantom_Hoover> DAMMIT AIS I NEED YOU
11:53:13 <ais523> I don't really see what I have to do with hat theft...
11:59:33 <Phantom_Hoover> You're ideally placed for it!
12:01:19 <Vorpal> -_-
12:09:49 <Phantom_Hoover> ais523, do you have a ready supply of depleted Eucharist?
12:10:07 <ais523> I doubt it, although I don't understand the question
12:11:10 <Phantom_Hoover> It's just Eucharist that has decayed from pure god-flesh to various, more stable dough.
12:28:02 -!- BeholdMyGlory has joined.
12:54:29 -!- sftp has quit (Remote host closed the connection).
13:00:57 <ais523> ooh, SCO just appealed. Again.
13:01:23 <ais523> they had two appeals left and used one (they get more if any of the appeals actually go their way...)
13:05:39 -!- derdon has joined.
13:22:25 -!- Phantom_Hoover_ has joined.
13:22:47 -!- Phantom_Hoover has quit (Ping timeout: 276 seconds).
13:28:37 -!- relet has joined.
13:41:49 -!- er-steppenwolf has joined.
13:43:19 * Phantom_Hoover_ wonders if you can have d/dx(f(x))=f^-1(x)
13:44:38 -!- er-steppenwolf has left (?).
13:44:48 <ais523> it doesn't seem obviously impossible
13:45:11 -!- sftp has joined.
13:46:13 <Phantom_Hoover_> Yes, but I can't think for the life of me what it is.
13:55:10 -!- sftp has quit (Remote host closed the connection).
14:00:11 -!- sftp has joined.
14:03:01 -!- Wamanuz2 has joined.
14:05:30 <fizzie> You would at least need to have a smaller domain for the function than R. I mean, if you want the function to be differentiable everywhere, it needs to be continuous; and a continuous function is invertible only if it's strictly monotonous; the derivative of a monotonous function is either >0 or <0 everywhere, whereas the inverse function would need to give negative values at least somewhere (assuming R was the domain).
14:05:40 -!- Wamanuz has quit (Ping timeout: 240 seconds).
14:06:31 <Phantom_Hoover_> fizzie, awww
14:12:51 <Phantom_Hoover_> Incidentally, does anyone know why LyX refuses to work with noweb for me?
14:13:18 <Phantom_Hoover_> It says something about literate-article.layout being missing, but I have no idea what that is.
14:14:58 <Phantom_Hoover_> And nor does Google, annoyingly.
14:28:19 <Phantom_Hoover_> Does noöne have any idea?
14:44:01 -!- Phantom_Hoover has joined.
14:45:20 -!- Phantom_Hoover_ has quit (Ping timeout: 276 seconds).
14:46:18 <Vorpal> fizzie, should work for R+ or similar though?
14:47:33 <Vorpal> Phantom_Hoover, as for the lyx issue. Is it supposed to work with noweb? As in, has anyone else tried and got it to work?
14:47:47 <Vorpal> oh and:
14:47:49 <Vorpal> $ locate literate-article.layout
14:47:49 <Vorpal> /usr/share/lyx/layouts/literate-article.layout
14:47:50 <Vorpal> hm
14:48:03 <Vorpal> exists on both arch and ubuntu for me
14:48:20 <Phantom_Hoover> Yes, same.
14:48:30 <Phantom_Hoover> Why does it mock me like this, then?
14:48:47 <Vorpal> no clue. How are you using it?
14:49:49 <Phantom_Hoover> Hmm, it actually says that literate-article is not usable.
14:50:27 <Vorpal> well, maybe you are missing some package it needs?
14:50:49 <Phantom_Hoover> The only package it uses is noweb...
14:50:56 <Phantom_Hoover> And I have noweb installed.
14:51:56 <Vorpal> hm
14:52:57 <Vorpal> Phantom_Hoover, rerun the system check thingy?
14:53:25 <Phantom_Hoover> System check thingy?
14:53:37 -!- ais523 has quit (Remote host closed the connection).
14:53:45 <Vorpal> Tools → Reconfigure
14:53:48 <Vorpal> then restart lyx
14:54:08 <Phantom_Hoover> Disturbingly, though I have the noweb package installed, locate noweb only shows one of LyX's files.
14:54:31 <Vorpal> Phantom_Hoover, lyx caches what packages are available on the system.
14:54:41 <Vorpal> Thus if you change that set you need to run that option
14:55:08 <Phantom_Hoover> Well, it didn't complain this time.
14:55:51 <Vorpal> then you probably forgot to run the reconfigure option after you installed noweb (assuming you installed lyx before noweb)
14:55:52 <Phantom_Hoover> But it doesn't generate DVIs or PDFs.
14:56:11 <Vorpal> hm why does noweb depend on iconx?
14:56:15 <Phantom_Hoover> No idea.
14:58:54 <Phantom_Hoover> Well, it seems to be working all right now.
14:58:55 <Phantom_Hoover> Bye
14:58:57 -!- Phantom_Hoover has quit (Quit: Leaving).
15:11:14 -!- lifthrasiir has quit (Read error: Connection reset by peer).
15:11:25 -!- lifthrasiir has joined.
15:13:17 -!- Phantom_Hoover has joined.
15:14:57 -!- alise has joined.
15:15:15 -!- Phantom_Hoover has quit (Client Quit).
15:16:39 <alise> gah, ais523 was here but left
15:17:43 -!- augur has quit (Remote host closed the connection).
15:18:00 <alise> 06:54:08 <Phantom_Hoover> Disturbingly, though I have the noweb package installed, locate noweb only shows one of LyX's files.
15:18:06 <alise> that's just locate's cached db
15:18:13 <alise> it should appear shortly
15:35:26 <alise> Gregor: sidux totally sucks.
15:44:44 <alise> It sucks SO MUCH and you should totally defend it by listing everything good about it.
15:44:51 <alise> Because it SUCKS and only AWFUL PEOPLE use it.
16:11:22 -!- hiato has quit (Quit: underflow).
16:12:32 -!- Mathnerd314 has joined.
16:28:03 <alise> hrrmph
16:37:07 <alise> "Native ZFS for Linux"
16:37:10 <alise> http://github.com/behlendorf/zfs/wiki
16:37:23 <alise> AWESOME OR AWESOME
16:38:12 <alise> http://github.com/behlendorf/zfs/wiki/faq
16:41:50 -!- ais523 has joined.
16:47:54 <alise> [ehird@dinky Downloads]$ sudo dd if=/dev/zero of=/dev/sdb
16:47:59 <alise> a scary command to run
16:48:00 <alise> hi ais523
16:48:15 <ais523> hi alise
16:48:45 <ais523> also, I'd make sure I was certain I knew what sdb was connected to before I ran that!
16:48:56 <alise> a USB stick! Unless I'm horribly wrong!
16:49:04 <alise> In which case, something else!
16:49:07 <alise> Possibly important!
16:49:13 <alise> Exclamation mark.
16:49:32 <ais523> you could try dmesg immediately after plugging it in
16:49:37 <ais523> hmm, a good way to check would be to reformat it
16:49:51 <ais523> mke2fs goes completely crazy if you try to reformat a mounted filesystem
16:50:17 <alise> hmm, it's actually mounted
16:50:19 <alise> sdb1 that is
16:50:24 <alise> this will be fun, then
16:50:25 <ais523> arguably a bad sign
16:50:30 <alise> the dd is... not doing anything
16:50:39 <ais523> hmm, use "mount" to check what filesystems are mounted where
16:50:40 <alise> ais523: oh, I know it's the USB stick; unetbootin just told me that it has files already on it
16:50:46 <alise> and named it ARCH(date)
16:50:50 <alise> meaning it's the USB stick with Arch Linux on it
16:50:56 <ais523> ah, OK
16:51:00 <alise> 850240000 bytes (850 MB) copied, 225.212 s, 3.8 MB/s
16:51:01 <alise> wow, dd is slow
16:51:04 <ais523> surely that dd should have a bs= set?
16:51:13 <alise> indeed...
16:51:14 <ais523> if you don't, it tries to copy a byte at a time IIRC
16:51:24 <alise> is there any downside to doing bs=sizeofstick count=1?
16:51:29 <alise> i guess maybe it should be a power of two
16:51:46 <ais523> it should be the natural block size of the device for best performance
16:51:52 <alise> i have no idea what that is
16:51:56 <ais523> but I don't know what it is for a typical USB controller
16:52:16 <alise> [ehird@dinky Downloads]$ sudo dd bs=16384 if=/dev/zero of=/dev/sdb
16:52:18 <alise> That should be fine.
16:53:16 <alise> It's just 4 gigs, sheesh.
16:53:33 <ais523> checking online suggests that for USB drives, it's memory management that's the dd bottleneck rather than the USB controller
16:53:52 <ais523> apparently Linux handles all block sizes equally, but Cygwin dd screws up some sizes quite badly (like 4k)
16:54:33 <ais523> Wikipedia says that the actual physical block size tends to be 64, 128, or 256 KiB
16:55:00 <ais523> or maybe as much as 512 KiB on newer NAND flashes
16:56:46 <alise> [ehird@dinky Downloads]$ sudo kill -9 7067
16:56:46 <alise> [ehird@dinky Downloads]$ sudo kill -9 7067
16:56:49 <alise> [ehird@dinky Downloads]$
16:56:55 <alise> I am... scared.
16:57:17 <fizzie> Since it's sort of eso-related, maybe I could mention it here, too: submitted a sqrt(-garfield) strip that's -- in addition to a strip about Garfield taking up painting -- also a Piet program that prints out "Garfield".
16:57:28 <alise> fizzie: <3
16:57:52 <alise> fizzie: Totally kissing DMM's ass, though. How could he /not/ publish it?
16:58:11 <oklopol> in piet, the size of a colored area was somehow meaningful right?
16:58:18 <fizzie> I was thinking of starting the email with something like "there's this programming language called Piet, maybe you've heard of it?", but didn't.
16:58:19 <oklopol> like that it's not just a colored 2d brainfuck
16:58:23 <ais523> Piet is presumably quite easy to steganographically embed in other languages
16:58:26 <fizzie> oklopol: Yes, for the "push" command.
16:58:28 <ais523> oklopol: yes, sometimes
16:58:53 <oklopol> but are two colors that differ just a bit completely different
16:58:55 <alise> ais523: So, I have been meaning to ask you: do you have the original Underload compiler anywhere? The one written in Scheme, with the latest prelude.c/postlude.c (was that the filename?) files.
16:58:59 <oklopol> oh wait
16:59:07 <alise> It's on another machine here but I have no idea where and the machine is in a box.
16:59:07 <oklopol> was it so that just a few colors are meaningful
16:59:18 <oklopol> i should just open the page
16:59:25 <alise> http://esoteric.voxelperfect.net/wiki/Piet
16:59:25 <alise> :P
16:59:31 <alise> *http://esolangs.org/wiki/Piet
16:59:31 <ais523> alise: I think so, let me check
16:59:34 <fizzie> oklopol: It has a palette of 18 colors, and the spec doesn't define what other colors should do.
17:00:04 <fizzie> (I don't know what implementations tend to do, maybe to map to nearest Piet color or something.)
17:00:38 <fizzie> http://p.zem.fi/867u has the "program" (you can barely call it that) in a textual form; it's basically "push everything, then a dup-if-print loop".
17:00:40 <alise> fizzie: most likely just cry
17:00:51 <alise> heh, do you have a piet compiler?
17:01:08 <alise> to Piet, that is
17:01:18 <fizzie> No, that was just for illustrative purposes. (At least I *think* I didn't write one.)
17:01:35 <ais523> alise: it seems I have two copies, one in a directory "underload-0", and the other in a directory "underload-olddardcs", which I assume is a typo
17:02:25 <alise> ais523: hmm, if you could upload both that would be appreciated
17:02:31 <alise> perhaps one is the older one before your improvements to the prelude
17:02:37 <fizzie> Also http://zem.fi/~fis/pietfield.png and http://zem.fi/~fis/pietfield-trace.png for the strip and npiet's trace pic (with 3x3-pixel codels).
17:03:01 <alise> fizzie: Awesome.
17:03:10 <ais523> alise: checked the last-modified dates, they're a day apart
17:03:18 <alise> ais523: well, a lot can change in a day.
17:03:21 <fizzie> Maybe I should've made it print out "Stupid in Green" though. Oh well.
17:03:34 <alise> fizzie: nah, "Garfield" is better
17:03:44 <alise> "Stupid in Green" feels like repeating yourself
17:04:19 <alise> can dd output a status report every so often?
17:04:21 <alise> without me manually triggering it
17:05:06 <oklopol> fizzie: erm, do you just have the program between two panels? :P
17:05:09 <fizzie> No, but maybe you can put a bash "kill; sleep;" loop somewhere to trigger it every so often.
17:05:32 <fizzie> oklopol: The loopy part is there; the push(n) data is mostly in panels, though.
17:05:40 <oklopol> okay
17:05:42 <ais523> alise: I just diffed them, the only difference is that one contains a function void invalid(void) which prints an error message and exits
17:06:03 <alise> ais523: hmm
17:06:06 <alise> ais523: which one contains it?
17:06:09 <alise> the old one or the new one?
17:06:11 <oklopol> i thought you made a new strip so that it'd be a piet program already.
17:06:19 <ais523> the old one
17:06:29 <oklopol> (i thought maybe garfield painted the program :P)
17:06:41 <ais523> which makes sense, I suppose; if the /only/ difference is the existence of the function, it implies the function isn't called anywhere, at least if they both compile
17:06:44 <oklopol> "look jon, this here is me"
17:07:11 <fizzie> oklopol: Oh, I couldn't draw my way out of a wet paper bag, so that's just the http://garfield.nfshost.com/2003/10/21/ one.
17:07:49 <fizzie> Rest of the image was dumped to Piet palette without dithering, but there's nothing remotely orange-like in it, so I made Garfield himself be dithered.
17:11:24 <alise> ais523: odd
17:11:29 <alise> ais523: is there no difference in any other file?
17:11:40 <alise> i wonder what the compiler spits out for a non-instruction
17:11:44 <ais523> no, in the three files that exist in common to the three directories
17:11:54 <alise> hmm
17:12:02 <alise> can I have a tar of the new one, then? :)
17:12:37 <ais523> hmm, the new one doesn't contain things like the Makefile
17:12:38 <oklopol> fizzie: so how then did you get the constants?
17:12:42 <ais523> oh well, I'm sure it's trivial to reconstruct
17:12:58 <oklopol> does it calculate the size of a connected area and mod 256
17:13:00 <alise> ais523: hmm, can you tar up the other one too? I can probably reconstruct it into one directory
17:13:03 <oklopol> because i guess it's easy then
17:13:14 <ais523> alise: the other one's got mixed with some of my own files
17:13:15 <oklopol> because the areas are huge
17:13:26 <alise> ais523: ah; just the Makefile, then?
17:13:54 <alise> thanks for this; it sure beats disk archaeology
17:13:58 <ais523> hmm, neither of them have a makefile it seems
17:14:18 <ais523> the old one seems to have a load of intermediate directories, and a few copies of Underload programs I was using to test
17:14:22 <alise> well, it /is/ a Scheme program.
17:14:30 <ais523> *intermediate files
17:14:33 <ais523> also, filebin.ca seems to be down atm
17:14:36 <alise> hmm, are you sure the compiler in the new one doesn't spit out invalid()?
17:14:44 <alise> if it does, then it won't function correctly on... invalid programs
17:14:45 <fizzie> oklopol: Yes, the push() instruction pushes the size of the area it left from (ops are defined as the hue/lightness difference between two consecutive areas); in three cases I used existing huge background blobs, the rest are mostly single-pixel-high color bits outside the black panel border, modified a bit.
17:14:47 <ais523> yes, the word isn't anywere in the source
17:14:51 <alise> alright then
17:14:53 <alise> strange
17:14:59 <alise> must be a relic of a previous version
17:15:08 <fizzie> oklopol: It does assume that out(char) outputs just the low 8 bits. I did look up what it would do if out(char) outputs a Unicode codepoint, though, just a sec.
17:15:10 <alise> I've forgotten how ugly the compiler is, so this should be fun :P
17:15:14 <ais523> strangely, the case statement that compiles commands doesn't have a default case at all
17:15:38 <fizzie> oklopol: It will print "G<TELEGU LETTER VOCALIC LL>rfi<TIFINAGH LETTER YAZZ>ld" if you run it in an interpreter that outputs Unicode values.
17:15:38 <alise> ais523: then it simply ignores invalid commands
17:15:41 <alise> an acceptable approach, I suppose
17:15:45 <ais523> presumably, you're relying on executing invalid commands being undefined behavior
17:16:06 <alise> Past me, the author is past me, I have no idea what the hell he was thinking.
17:16:25 <ais523> alise: filebin isn't loading; how else should I send it to you?
17:16:43 <ais523> given that it's three files and they're all ASCII text, I could just pastebin a shar or something
17:16:51 <ais523> actually, I like that method, it's nostalgic, I'll do that
17:16:54 <alise> a shar would be fine.
17:17:00 <alise> you could use another file upload service, but most of them are awful
17:17:11 <ais523> agreed
17:17:19 <alise> and a significant portion of them probably require javascript
17:17:57 <fizzie> oklopol: If you have the fonts, that's "Gౡrfiⵥld".
17:18:32 <pikhq> Ah, Code2000.
17:18:44 <alise> I see the latter, but the former is [0C61].
17:19:55 <ais523> http://pastebin.ca/raw/1938322
17:20:06 <ais523> incidentally, pastebin.ca seems to highlight parens inside comments, in shellscript
17:20:21 <ais523> hmm, TELEGU LETTER VOCALIC LL is quite pretty
17:20:22 <fizzie> alise: http://zem.fi/~fis/telegu-ll.png if you just *must* get to see it.
17:20:39 <ais523> you can copy-and-paste unicode characters into Wikipedia's search box to see what they are
17:20:49 <alise> ais523: how does THAT work?
17:21:01 <ais523> alise: even systems that can't render them can normally copy-and-paste them correctly
17:21:08 <ais523> and they all have redirects to the appropriate article
17:21:09 <alise> well, yes
17:21:21 <alise> i was thinking of some image-based magic that the search box does
17:21:34 <alise> or perhaps an embedded full-Unicode font with @font-face used as a search box font
17:21:46 <ais523> that's like... assuming that Google does OCR on your search query to figure out what you're searching for
17:21:59 <alise> ais523: it's a sharbomb, right?
17:22:07 <ais523> yes
17:22:15 <alise> ais523: oh, I knew it was crazy; I just couldn't think what you meant
17:22:18 <ais523> it even says so in the header, IIRC
17:22:19 <alise> that's a great idea, though!
17:22:28 <alise> ais523: well, it lists the files, but...
17:22:39 <ais523> ...but doesn't list a directory to contain them
17:22:48 <alise> : command not foundd5sum
17:22:48 <alise> Note: not verifying md5sums. Consider installing GNU coreutils.
17:22:48 <alise> '938322: line 30: syntax error near unexpected token `do
17:22:48 <alise> '938322: line 30: `do
17:22:52 <alise> I guess by "sh" it means "bash".
17:23:00 <alise> Wait, my sh /is/ bash.
17:23:02 <ais523> ooh, naughty GNU
17:23:09 <alise> And even bash doesn't work.
17:23:13 <alise> Doubleyouteeeff?
17:23:25 <ais523> let me try extracting it
17:23:36 <alise> dunno why it says '938322; that ' should be a 1
17:23:41 <alise> ais523: dos line endings
17:23:50 <ais523> ah, aha
17:23:51 <alise> ais523: probably pastebin's fault
17:23:52 <ais523> works fine here
17:23:55 <ais523> and yes, agree
17:23:57 <ais523> *agreed
17:24:01 <ais523> run it through dtou, then try again
17:24:09 <alise> dtou? is that /another/ tool for that?
17:24:31 <fizzie> There's so many tools I can never remember what's installed where; then I just "tr -d '\r'" everywhere.
17:24:37 <alise> in protest, I will attempt to use cpressey's tool to do it instead
17:25:06 <alise> Uhh, if I can find it.
17:25:24 <ais523> alise: it's the one DJGPP uses
17:25:42 <ais523> and that's the platform on which I tend to do the most line-ending conversions, so it sticks in my mind
17:25:48 <alise> meh, it appears to not be on catseye any more
17:25:58 <ais523> what lang was it written in?
17:26:05 <alise> Perl, I think
17:26:18 <ais523> hmm...
17:27:03 <alise> ais523: hmm, do you know if the prelude.c has my algorithms or yours?
17:27:08 <alise> yours being the ones with better performance characteristics
17:27:10 <alise> I can't tell
17:27:18 <ais523> I don't know
17:28:29 <alise> woohoo underload.scm is ugly
17:28:38 -!- kar8nga has joined.
17:29:06 <alise> ;; kinda hacky
17:29:09 <alise> you don't say.
17:29:45 <ais523> ^bf ,[-------------[>+>[-]+<<-]>++++++++++++++>[<.>-],]!test1
17:29:45 <fungot> uftu2
17:29:51 <ais523> hmm, off-by-one error
17:30:00 <ais523> ^bf ,[-------------[>+>[-]+<<-]>+++++++++++++>[<.>-],]!test1
17:30:00 <fungot> test1
17:30:07 <ais523> pity that IRC doesn't let me embed literal character returns
17:30:15 <ais523> but I /think/ that's a working dtou script in Brainfuck
17:30:42 <ais523> (incidentally, this would be an awful anagolf puzzle, because anagolf ignores trailing whitespace differences)
17:30:55 <alise> heh
17:31:03 <alise> ais523: although anagolf doesn't do \r\n -> \n
17:31:08 <alise> and in the input form, a newline becomes \r\n
17:31:13 <alise> so if you need one, you should upload a file
17:31:16 <ais523> alise: I know
17:31:33 <ais523> I submitted a legit solution to puyo puyo btw; I'm not sure if legit or cheat is shorter
17:31:41 <ais523> it's likely to be quite close
17:31:44 <alise> hmm... a maze solver would be a nice problem
17:31:50 <ais523> that's been set already
17:32:02 <ais523> I know because I have a golfed maze solver in my anagolf directory
17:32:04 <alise> that is, you're given an ascii maze, a starting position, and an end position; you have to output hjkl according to the directions
17:32:21 <alise> with sufficiently huge mazes and sufficiently many that cheating doesn't help
17:32:32 <alise> http://golf.shinh.org/p.rb?maze+solving
17:32:34 <alise> output format sucks though
17:33:35 <Sgeo> cheating?
17:33:47 <Sgeo> Hmm, I guess for mazes, that would be hardcoding the solution
17:33:52 <ais523> Sgeo: solving the problem via hardcoding
17:33:58 <alise> pretty much, but with compression techniques
17:34:07 <ais523> or even worse, hardcoding the three possible outputs and picking one at random
17:34:14 <ais523> then running repeatedly until you get the right sequence of random numbers
17:34:17 <ais523> and just completely ignoring the input
17:34:22 <alise> yep
17:34:36 <alise> ais523: or using pid-setting and $$
17:34:38 <alise> to do it even more easily
17:34:42 <ais523> my solution to http://golf.shinh.org/p.rb?big+number+arithmetic ignores the input (it uses $$)
17:34:53 <Sgeo> $$ ?
17:34:53 <ais523> but it's labeled as (cheat)
17:35:02 <ais523> and to be fair, I have no idea what a legit solution to that is /meant/ to look like
17:35:06 <ais523> Sgeo: current process PID
17:35:29 <ais523> alise: I found a nice Perl microgolf optimisation today, btw;
17:35:58 <ais523> it's using special punctuation mark variables like $. for random purposes, rather than $a, etc, simply to avoid having to put a space between two consecutive alphanumerics
17:36:45 <ais523> another nice one is to rely on the fact that $| can't be increased above 1, but instead trying to set it to a higher positive integer silently sets it to 1
17:37:04 <alise> what's $|?
17:37:13 -!- tombom has quit (Quit: Leaving).
17:37:31 <ais523> it fflushes output whenever it's produced, if set to true
17:38:06 <ais523> so the value has no effect on the eventual output, just on its timing
17:38:22 <alise> hmm
17:38:26 <alise> (()(*))(~:^:S*a~^a~!~*~:(/)S^):^
17:38:32 <alise> should the time it takes to calculate the next one increase each time?
17:38:37 <alise> I suppose yes, with the number format it uses
17:39:13 <ais523> well, yes if you aren't using RLE or something like that
17:39:28 <alise> is it even practical for a compiler to do that?
17:40:37 <ais523> derlo's an interp, and it uses a sort of logarithmic encoding
17:40:53 <alise> right, but interps have more freedom
17:40:53 <ais523> but it hardly matters if you have to execute each individual character in the number to see what it is
17:41:07 <alise> hmm, I bet derlo is faster than my compiler
17:41:10 <ais523> you'd need to do some sort of static optimisation to get better than that
17:41:29 <ais523> and it's pretty fast, I was aiming for speed (as in fast algorithm, rather than as in cfunge)
17:41:38 <alise> oh snap :)
17:41:54 <alise> ais523: ok, seriously, how would you zero out a drive?
17:41:57 <alise> even with a large bs
17:42:01 <alise> dd takes 70 years, and i have no idea why
17:42:02 <ais523> why would you zero out a drive?
17:42:06 <alise> i know usb sticks are slow, but
17:42:30 <alise> ais523: to put new stuff on it without the previous partition headers and the like
17:42:33 <alise> hey, it may have been zeroed out
17:42:41 <alise> merely by not having any data after the first N bytes already zeroed
17:42:56 <alise> *it may have already been zeroed out
17:43:00 <alise> yep
17:43:15 <ais523> what's wrong with having the old headers; surely they should be in uninited data and thus never read
17:43:25 <ais523> just like you don't have to zero out the heap in a C program before mallocing from it
17:43:27 <alise> well, unetbootin was complaining. >_>
17:43:48 <alise> heh, if i zero out a drive, should i just rm the /dev/sdXN files?
17:44:42 <ais523> hmm, it seems that on fibo10, at least (a base 10 fibonacci program), underload.scm is about twice as fast as derlo
17:45:04 <ais523> a bit less than twice, actually
17:45:19 <ais523> umm, base10.ul
17:45:27 <ais523> is what I actually ran, I wasn't paying attention...
17:45:35 <fizzie> alise: You should make it rescan the partition table, but I forget exactly how. It's some ioctl, fdisk will do it for you.
17:45:47 <fizzie> (Then udev'll handle the devices.)
17:46:18 <ais523> hmm, although I'm using an old binary, and apparently it contains calls to invalid()
17:46:20 * ais523 boggle
17:46:20 <alise> I don't want to write a partition table.
17:46:32 <alise> I'm going to create the filesystem directly on the drive.
17:46:38 <alise> ais523: what gcc flags? and wtf!
17:46:47 <fizzie> Well, you can write an empty table.
17:46:55 <fizzie> Then dump a filesystem on top of that.
17:46:59 <ais523> alise: I don't know, I used the binary that was sitting around in the directory rather than recompiling
17:47:00 <alise> fizzie: true, then mkwhatever will overwrite it
17:47:06 <alise> ais523: oh, i see
17:47:17 <alise> -O3 is fun, although it usually never terminates
17:47:32 <ais523> but I'm guessing it was a pretty high optimisation level
17:47:48 <alise> ais523: the problem with the compiler is its function data structure
17:48:04 <alise> ais523: ideally, it'd be written in assembly, and concatenating would actually copy the second function's machine code on to the end of the first
17:48:07 <alise> and the like
17:48:26 <ais523> hmm, what about using Forth/FORTH?
17:48:27 <alise> hmm, with invalid(the_char) in assembly you could avoid storing strings
17:48:29 <ais523> (is it an acronym?)
17:48:35 <alise> just convert the code back to characters
17:48:50 <alise> ais523: probably pointless, as far as I can tell, although not entirely
17:48:51 <alise> it's not an acronym
17:48:55 <alise> Forth is the non-irritating way to say it
17:48:58 <alise> FORTH is just the filename relic
17:49:11 <ais523> along the lines of me insisting that the computer game is called ADVENT?
17:49:18 <alise> and is about as annoying as someone saying LISP
17:49:23 <alise> ais523: in a way, yes
17:49:37 <alise> technically, the name would be Fourth, but.
17:49:42 <alise> (limited filename lengths)
17:50:01 <cpressey> LisP
17:50:37 <ais523> in Scheme, it would be Lis?
17:50:49 <ais523> because ending questions with a p is an oldfashioned relic
17:51:06 <alise> ais523: it's case-insensitive, so it'd be lIs? too
17:51:09 <alise> and LIS?
17:51:36 <ais523> lIs? is good for confusing people whose fonts don't distinguish the character
17:51:41 <alise> grr, I'm not certain what I need to install to get mkfs.(msdos|vat)
17:51:43 <ais523> it's as bad as the Ill status change in NetHack
17:51:44 <alise> *vfat
17:51:46 <ais523> which looks like III in some fonts
17:51:51 <alise> xD
17:51:54 <alise> *lll
17:51:56 <alise> I use a serifed font
17:52:08 <ais523> alise: it's installed on my system
17:52:12 <alise> it would be quite an odd l that looked like a capital serifed I
17:52:30 <ais523> but what I normally do is, I run which first to make sure the command isn't installed
17:52:34 <ais523> and if it isn't, I try to run it
17:52:41 <ais523> then command-not-found kicks in and tells me which package it's in
17:52:45 <alise> not on Arch it doesn't
17:52:57 <Sgeo> alise, you don't use Dejavu Sans Mono?
17:53:08 <ais523> Sgeo: monospace for /IRC/?
17:53:17 <alise> ais523: *hi5*
17:53:22 <alise> Sgeo: Bitstream Charter
17:53:23 <ais523> I know it's common, but I can't see any reason why you'd do that except to make myndzi's /o/ thing work properly
17:53:27 * Sgeo was referring to NetHack
17:53:38 <Sgeo> But I'm using the same font for IRC too >.>
17:53:41 <alise> I meant on IRC, "III" misrepresents what I'd see.
17:53:41 <ais523> *I know it's common, but I can't see any reason why you'd do that except to make myndzi's \o/ thing work properly
17:53:57 <ais523> I use DVSM for NetHack, definitely
17:54:00 <alise> Charter is wonderful on low-dpi displays (it was invented for 300 dpi laser printers), but the / is a bit wide.
17:54:20 <fizzie> ais523: A lot of people have their IRCs in a terminal, which is a good reason to do monospace.
17:54:20 <alise> I like Luxi Mono quite a bit for code, although haven't got it set up.
17:54:24 <ais523> interestingly, DejaVu Sans Mono and Menlo are even more similar than Arial and Helvetica
17:54:30 <alise> it's like a nice legible serif, except monospaced
17:54:38 <alise> ais523: because the latter is openly based on the former
17:54:45 <alise> and is basically a minor tweak of the former
17:54:46 <ais523> common ancestor, I thought
17:54:48 <alise> no
17:55:06 <alise> literally, Menlo is just DVSM with one or two tiny lines moved
17:55:10 <alise> *two lines moved tinily
17:55:22 <alise> ais523: http://static.arstechnica.net/apple/menlo_v_dejavu_sans_mono_300.png
17:55:28 <alise> the exact differences, as rendered by OS X
17:55:29 <alise> oh
17:55:29 <alise> ok
17:55:32 <alise> slight common ancestor
17:55:36 <alise> Bitstream Vera Sans Mono
17:55:52 <alise> but DejaVu is identical to Bitstream if Bitstream already had the character, I think
17:55:58 <alise> so it shouldn't matter for ascii
17:56:30 <alise> http://www.leancrew.com/all-this/images/dejavu-menlo-colors.png bigger version
17:56:37 -!- lament has joined.
17:57:27 <alise> mkfs.vfat: Device partition expected, not making filesystem on entire device '/dev/sdb' (use -I to override)
17:57:30 <alise> You're so boring, mkfs.vfat.
17:57:43 <ais523> there is an override option
17:57:56 <ais523> but mkfs generally likes a partition to reformat, rather than bare metal
17:58:42 <alise> i overrode it
17:58:49 <alise> ais523: yes, but on USB drives there's little point to partitioning, really
17:58:50 <fizzie> Or bare metalloid.
17:59:17 <alise> there we go, Debian testing installer jibbering on to the drive
17:59:22 <ais523> alise: I've seen USB drives with multiple partitions before now
17:59:22 <pikhq> ais523: Yes, but that's mere preference is all.
17:59:24 <alise> worth taking a look at, I figure
17:59:32 <pikhq> No technical reason for a partition table at all.
17:59:49 <ais523> pikhq: are there not OSes which won't try to mount the whole partition automatically?
17:59:59 <ais523> I'd be surprised if a zero-partition USB stick mounted in Windows
18:00:15 <pikhq> That's how preformatted USB sticks usually ship, isn't it?
18:00:19 <cpressey> < alise> i was thinking of some image-based magic that the search box does <-- there is a java(?) applet somewhere that lets you search for TeX codes by scrawling the output character
18:00:28 <alise> cpressey: javascript
18:00:35 <alise> it's called detexify
18:00:41 <alise> http://detexify.kirelabs.org/classify.html
18:02:33 <cpressey> < alise> in protest, I will attempt to use cpressey's tool to do it instead <-- yaeolc? it's in the catseye.tc archive.
18:02:58 <alise> didn't it use to be on the site?
18:03:04 <alise> *used, perhaps; such a strange idiom
18:04:26 <alise> [Richard Dawkins and David Attenborough interviewing each other]
18:04:27 <alise> Which living scientist do you most admire, and why?
18:04:28 <alise> RD: David Attenborough.
18:04:28 <alise> DA: I don't know.
18:04:30 <alise> OH SNAP
18:05:13 <cpressey> < ais523> then running repeatedly until you get the right sequence of random numbers < ais523> and just completely ignoring the input <-- some people live their entire lives this way, i reckon
18:05:33 <alise> deep. :p
18:05:50 <alise> time to wipe my entire system and put something new on yet again
18:05:51 <ais523> `addquote <cpressey> < ais523> then running repeatedly until you get the right sequence of random numbers < ais523> and just completely ignoring the input <-- some people live their entire lives this way, i reckon
18:05:59 <ais523> we need more philosophy to balance out the crudeness
18:06:14 <alise> psht, we aren't crude! we're really crude!
18:06:18 <HackEgo> 220|<cpressey> < ais523> then running repeatedly until you get the right sequence of random numbers < ais523> and just completely ignoring the input <-- some people live their entire lives this way, i reckon
18:06:22 <alise> MWAHAHA HackEgo WILL NOT COMPLY WI-- oh.
18:06:27 <alise> `quote
18:06:30 <HackEgo> 167|<alise> like, just like I'd mark "Bob knob hobs deathly poop violation EXCREMENT unto;" as English <ais523> alise: that's great filler <alise> ais523: well it contains all the important words in the english language...
18:06:37 <alise> `quote
18:06:39 <HackEgo> 148|<Keiya> Why are the cops in GTA always so obsessed with my asshole?
18:06:41 <alise> `quote
18:06:42 <ais523> I love 167
18:06:43 <HackEgo> 158|<Warrigal> Darn, now I can't acknowledge the reference you were making.
18:06:54 <alise> as a rule of thumb, all the quotes from Sine are rubbish
18:07:02 <alise> and all the ones from here are either incomprehensible or good
18:07:11 <ais523> how did Sine quotes end up in HackEgo's qdb?
18:07:24 <cpressey> < alise> ais523: to put new stuff on it without the previous partition headers and the like <-- then you only have to zero out the partition table i think. this would also be kinder on the lifespan of the flash memory...
18:07:41 <alise> ais523: hackego is also in sine
18:07:44 <alise> or at least, was
18:07:47 <ais523> ah
18:07:54 <ais523> `quote
18:07:55 <HackEgo> 12|<Madelon> Lil`Cube: you had cavity searches? <Lil`Cube> not yet <Lil`Cube> trying to thou, just so I can check it off on my list of things to expirence
18:08:00 <alise> cpressey: eh, flash memory has a great lifespan
18:08:06 <alise> and it only ends up read-only; you never lose data
18:08:20 <alise> <Lil`Cube> trying to thou, just so I can check it off on my list of things to expirence ;; this is just a ripoff of oklopol saying this about torture >:|
18:08:22 <alise> `quote
18:08:24 <HackEgo> 89|<Sgeo> What else is there to vim besides editing commands?
18:14:09 * Sgeo ponders what a syntax that wouldn't play nice with Factor's peg.ebnf vocab would look like
18:14:24 * Sgeo has trouble imagining it :/
18:14:34 <Sgeo> But I still want to make such an esolang
18:14:38 <ais523> Sgeo: how does it do on INTERCAL's?
18:14:53 <Sgeo> I don't really remember INTERCAL's syntax :/
18:14:54 <cpressey> alise: yaeolc is still on the site, it's just in the 'archive' section, along with all else I don't care about
18:15:20 <ais523> cpressey: I'm vaguely worried that I expanded that acronym right off
18:17:28 <alise> it's the most convoluted converter i've ever seen
18:18:05 <alise> :P
18:18:18 <cpressey> ais523: ? yet another...
18:18:29 <cpressey> alise: it handles CRCRLF, baby!
18:18:42 <ais523> cpressey: what does it convert it /into/?
18:18:44 <cpressey> i'll never know how those got IN those files, but they did
18:18:44 * Sgeo wonders if he should use peg.ebnd for Underload
18:18:56 <cpressey> ais523: whatever perl thinks the proper EOL sequence for the current OS is
18:18:56 <Sgeo> *enbf
18:18:59 <Sgeo> ebnf
18:19:00 <Sgeo> whatever
18:19:19 <alise> Sgeo: Uh, no.
18:19:30 <alise> Not unless it's really easy.
18:19:36 <cpressey> Sg "Overkill" eo
18:19:37 <ais523> INTERCAL's syntax doesn't work properly as EBNF for several reasons
18:19:44 <alise> Time to attempt a reboot.
18:19:51 <alise> cpressey: Sir Gay "Overkill" Oh
18:19:58 <alise> FTFY
18:19:59 <ais523> and even if you do some preprocessing so that it does, it fails to be LR(n) for any finite n
18:20:07 <Sgeo> I remember someone saying that this wasn't really limited to EBNF
18:20:11 <Sgeo> Not sure about that though
18:20:17 <alise> Sgeo: it's utterly trivial to parse
18:20:26 <ais523> alise: what is?
18:20:28 <alise> ais523: I now have a perverse wish to make that Underload->asm compiler.
18:20:30 <alise> ais523: Underload is.
18:20:37 <ais523> oh, Underload
18:20:39 <ais523> it is
18:20:47 <Sgeo> I'll make two versions
18:20:54 <alise> hmm
18:20:58 <ais523> a really good parser-generator, though, would be able to do Underload even more simply than a hand-rolled parser
18:20:59 <alise> a would be:
18:21:01 <Sgeo> I should learn how to deal with balanced parens someday
18:21:08 <alise> generate a prelude that pushes the stuff that comes after it
18:21:14 <alise> then cat the top element of the stack on to it
18:21:31 <alise> * would obviously just be either putting a jmp at the end of the first one, or copying the code from the second onto the end of the first
18:21:39 <alise> ^ is easy, just a jmp
18:22:06 <alise> S would traverse the instructions, converting the asm back into the relevant characters
18:22:11 <cpressey> ais523: hey, you're right. you could do it "right in" the parser generator, if the generator knew a few extra tricks. maybe Zz would be a good match for that.
18:22:20 <alise> (invalid instructions would be compiled to some sort of error call that includes the instruction character)
18:22:24 <alise> (so you could convert that back)
18:22:29 <alise> and... that's it, really
18:22:30 <alise> although
18:22:36 <alise> security features of processors would fuck with this
18:22:38 <alise> but eh
18:22:40 <ais523> cpressey: well, my OIL to C compiler is written entirely in yacc (or alternatively bison)
18:22:51 <Sgeo> cpressey, the EBNF parsing thign can execute code as it parses, but I plan on not doing anything interesting with that
18:22:57 <Sgeo> I want to do this "right" in some weird way
18:22:58 <ais523> no lex involved, no separate C files (although there's a lot of C embedded in the epilog)
18:23:39 <cpressey> ais523: I should clarify -- my thought was to write an Underload *interpreter* in a (slightly modified) parser generator.
18:23:54 <ais523> hmm; IIRC yacc can't do loops
18:23:56 <cpressey> slightly modified to be able to restart itself
18:24:18 <cpressey> most, yes, it would never occur to most parser generator authors to include this feature, but
18:24:18 <ais523> obvious solution: add continuations to C, use call/cc inside the yacc action code and generate loops that way
18:24:24 <cpressey> Zz can do it, I bet
18:24:54 <fizzie> yacc's action code is also pretty much just textually substituted in, I'm sure you could take an axe to the internals to make it "work".
18:26:52 <ais523> like the old trick of using unmatched brackets in triggers in the Age of Mythology map builder in order to inject code into the intermediate representation it uses to handle all the map logic?
18:27:13 <alise> a parser generator for Underload is worthwhile only if it's this easy from inside the language:
18:27:13 <alise> http://pastie.org/1152283.txt?key=wdchp9xjc6oqcpx4byptha
18:27:30 <alise> and with a few flags in the parse call can give "expected X but got Y" messages with line and column numbers
18:28:41 <alise> Now I will proceed to mess up my system. See you soon!
18:28:48 <alise> But, beforehand, quick!
18:29:04 <alise> ais523: Give me an opinion on KDE vs GNOME that is /not/ based in logic, fact, or any other kind of reasonability.
18:29:27 <cpressey> < cpressey> slightly modified to be able to restart itself <-- maybe one that handles #include <nextfile> ?
18:29:31 <fizzie> strlen("GNOME") > strlen("KDE").
18:29:42 <ais523> alise: I'm more used to Gnome and last time I tried to use KDE, it was broken loads of ways and couldn't even load a configuration screen
18:29:46 <alise> FireFly: You're not ais523! How can I trust you?
18:29:55 <alise> *fizzie:
18:29:56 <FireFly> You can't
18:29:59 <alise> ais523: That's based in logic and fact.
18:29:59 <FireFly> MUHAHA
18:30:04 <alise> I am disappointed.
18:30:12 <fizzie> alise: On the other hand, I didn't even tell you which was better, so you can take it both ways.
18:31:06 <ais523> alise: the joke is that my statement wasn't an opinion, but an actual fact
18:31:18 <alise> ais523: DRAT! Foiled again!
18:31:23 <ais523> although one designed to be very biased, to the extent that the fact almost becomes an opinion based on what's included in it
18:31:24 <alise> Maybe I'll just install twm.
18:31:30 <alise> SO LONG SUCKERS
18:31:35 -!- alise has quit (Remote host closed the connection).
18:35:10 <Sgeo> hmm
18:36:27 <Sgeo> Turning Underload commands into tokens might not be a great idea unless I could recursively parse..
18:36:30 <Sgeo> Which I can, I guess
18:37:04 -!- sebbu has quit (Read error: Connection reset by peer).
18:37:08 -!- sebbu has joined.
18:38:23 <Vorpal> hm how does valgrind actually work? I get the impression that it interprets the machine code. But why does it then mess with LD_PRELOAD and such? Hm...
18:38:24 <ais523> what sort of parser doesn't do recursion?
18:39:01 <Vorpal> ais523, um a HQ9+ one wouldn't need to
18:39:03 <ais523> you're lucky alise isn't here, or she'd be laughing at you for weeks
18:39:07 <Vorpal> it could be purely iterative
18:39:14 <ais523> Vorpal: you don't parse HQ9+, you lex it
18:39:18 <ais523> the parsing step is entirely redundant
18:39:24 <Vorpal> ais523, hm true
18:40:49 <Sgeo> Well, I mean, at interpretation time
18:40:51 <Sgeo> But I can
18:41:15 <Vorpal> ais523, btw I did HQ9+ in file(1) magic recently + a wrapper shell script to munch the source in advance. Not sure if you saw that
18:41:23 <Vorpal> well me and fizzie did rather
18:41:26 <cpressey> i feel like pedantically pointing out that the literally meanings of "parse" and "lexically analyze" are only linked to particular formal language concepts (like recursiveness) by convention.
18:41:32 <cpressey> *literal
18:41:45 <cpressey> a strong convention, i admit
18:41:51 * Sgeo should learn the difference between parsing and lexing
18:41:56 <ais523> cpressey: arguably, the distinction between parser and lexer is convention anyway
18:41:56 <Vorpal> file(1) is so limited that it can't even do the Q command without pre-processing the source
18:42:40 <ais523> e.g. in C-INTERCAL, the lexer is responsible for matching closing grouping marks (the parse handles the open grouping marks)
18:43:44 <cpressey> yes, and lexers traditionally handle comments (which sometimes nest) because they can appear anywhere in the source (and that would lead to a very messy grammar)
18:44:02 <Sgeo> What _is_ the distinction?
18:44:47 <Sgeo> At least, conventionally then
18:44:49 <cpressey> although it's actually quite rare to see a[i/*hi*/]=/*hey*/x+/*yo*/y;
18:45:10 <cpressey> Sgeo: parsers work on grammars. specified in BNF or EBNF, usually
18:45:40 <cpressey> lexers, on the other hand, just splits up the input into 'words' (tokens)
18:45:48 <cpressey> the parser consumes the tokens produced by the lexer
18:46:19 <Sgeo> Factor's peg.ebnf has definable tokenizer for some reason
18:46:21 <cpressey> Maybe to be clearer: a parser follows a grammar.
18:46:45 <cpressey> Sgeo: then it includes a lexer. many parsing frameworks do. (Parsec does, for instance)
18:47:03 <cpressey> tokenizer, lexer: same thing.
18:47:25 <cpressey> aka "scanner" -- I learned that term and tend to use it, but it's fallen out of fashion I think.
18:48:04 <fizzie> "Scanner" sounds an order of magnitude more sci-fi than "lexer".
18:49:21 <fizzie> Wikipedia's ridiculous parser generator comparison table -- http://en.wikipedia.org/wiki/Comparison_of_parser_generators -- has a "Lexer" column, a simple eyeball-uniq says the possible values are none/external/internal/generated/?.
18:49:38 <ais523> fizzie: isn't that an eyeball-sort-uniq?
18:49:52 <cpressey> I shall argue that "scanner" is a tribute to David Cronenberg. Because it's only proper that an esolang should make your head explode.
18:49:54 <fizzie> ais523: Right.
18:49:55 <ais523> uniq will repeat values if there's a different value in between
18:50:20 <fizzie> Or eyeball-cut-sort-uniq, but that's getting ridiculous.
18:53:19 -!- alise has joined.
18:54:18 <alise> ais523: do you have any idea how hard getting the squeeze installer onto a USB stick is?
18:54:20 <alise> :|
18:54:29 <ais523> no, I don't
18:54:37 <alise> *blargh*
18:55:07 <alise> 10:39:03 <ais523> you're lucky alise isn't here, or she'd be laughing at you for weeks
18:55:11 <alise> YOU CANNOT ESCAPE
18:55:23 <fizzie> It shouldn't be very hard.
18:56:18 <alise> fizzie: first, you have to download the daily CD image. then, you have to download the daily boot.img.gz, which is in a directory called hd-media, and not obviously marked as for USB images
18:56:27 <alise> then, you have to zcat boot.image.gz to the drive
18:56:29 <alise> then, you have to mount it
18:56:33 <alise> then, you have to copy the ISO there
18:56:48 <alise> then, if you did this on a partition on the stick, not the stick itself, you have to install a program to put a new MBR on the stick
18:57:02 <alise> that's not hugely difficult, but it's certainly not obvious at all
18:57:11 <fizzie> Oh, I thought it's usually just "zcat boot.img.gz > /dev/sdX" and "install from network".
18:57:17 <alise> and if you match, say, the squeeze alpha installer with the nightly boot.img.gz, it doesn't work
18:57:18 <alise> which is just nice
18:57:31 <alise> fizzie: well, I copied the netinstall ISO
18:57:38 <alise> i'm not sure /exactly/ what that provides, but it sure scans for one
18:57:44 <alise> so presumably there is a good reason for copying it there
18:58:16 <fizzie> It might be so. I thought they had at some point a single "stick this into stick and it has the netinst stuff in it" image, but based on current debian-installer image sizes, maybe not.
18:58:35 <alise> wrt lexer vs parser: for an awful lot of languages, I think there's no point writing them separately
18:58:55 <alise> complex languages with a lot of fancy multi-character tokens, maybe. but even then, there's little gained in writing TO rather than '=>'
18:59:08 <alise> it can sort out whitespace and comments for you, and you basically need one if you do indentation-based grouping
18:59:10 <alise> apart from that...
19:02:19 <alise> fizzie: Perhaps they do for stable.
19:02:22 <alise> But, you know, stable.
19:02:39 <alise> I don't even like Debian much, I'm just a bit sick of Arch not working nicely with GNOME in subtle ways.
19:05:31 <alise> Let's Try That Again.
19:05:36 -!- alise has quit (Remote host closed the connection).
19:05:59 -!- Mathnerd314 has quit (Ping timeout: 276 seconds).
19:11:38 -!- zzo38 has joined.
19:17:14 <Sgeo> Noncommands should only appear in parens, right?
19:17:55 <pikhq> ... Huh. The UI on my phone just crashed. Gah.
19:18:39 <ais523> Sgeo: if they appear outside, the program will necessarily crash unless there's an infinite loop before they're reached
19:18:47 <ais523> but I don't think that means they're banned, they're just a bad idea
19:19:07 <Sgeo> Hmm
19:19:17 <Sgeo> The way I'm writing it, it won't parse :/
19:20:39 <zzo38> What noncommands?
19:21:13 <Sgeo> In Underload
19:21:54 <zzo38> O, and then you can send to output or discard it from the stack
19:26:08 <cpressey> Sgeo: You can always execute it from the stack, though, so you'll still have to handle them somehow.
19:26:32 <cpressey> I guess, trying to execute a string containing noncommands, from the stack, could result in a parse error.
19:26:33 <Sgeo> In that case, the parse error will occur in the middle of running the program :/
19:26:41 <cpressey> If you parse strings as you pop them.
19:26:45 <zzo38> Sgeo: Are you trying to write a compiler? Or parser? Or...?
19:26:53 <Sgeo> Interpreter
19:27:06 <Sgeo> That uses Factor's EBNF parser vocab
19:27:20 <zzo38> Just interpret each character as reading, when using interpreting of Underload (and for some others)
19:27:42 <cpressey> Sgeo: Yes, you'd get a parse error in the middle of the program; nothing really wrong with that though, it's actually kind of cool. :)
19:28:18 <zzo38> Well, in QBASIC, it is possible to get a syntax error during runtime, if you use the ERROR command. But, this is different.
19:29:01 <cpressey> Hm, couldn't QBASIC load and parse external BASIC files at runtime? Possibly I'm thinking of AmigaBASIC.
19:29:34 <zzo38> cpressey: Yes, QBASIC can do that, using CHAIN command, that means it will then parse the loaded file
19:29:54 <zzo38> But you can also create syntax error at runtime using ERROR command, without loading another file
19:30:41 <zzo38> In GWBASIC you can do CHAIN MERGE which might be used if you prompt the user for entering a command (such as a graph equation)
19:33:23 <cpressey> Yes, I once used this technique for exactly that, a graphing program: saved the formula to a text file in the RAM disk, then included it as if it were a BASIC program...
19:33:43 <cpressey> AmigaBASIC and QBASIC were almost identical, both being from Microsoft.
19:35:07 <Sgeo> I'm.. not sure I see how to do recursive rules
19:36:31 -!- alise has joined.
19:36:37 <alise> debian installer hello
19:37:00 <alise> apparently it's going to take 67 years to download everything
19:37:32 <alise> (by 67 i of course mean 20 minutes)
19:37:46 <Sgeo> Wait, I don't need to
19:37:50 <alise> sorry, 40 minutesnow, apparently
19:37:57 <alise> Debian time is even worse than Microsoft time
19:38:06 <Sgeo> Since parens don't necessarily contain valid code
19:38:25 <alise> Sgeo -- usually, you don't even pre-parse Underload.
19:38:33 <Sgeo> alise, but I want to!
19:38:55 <alise> A highly pointless endeavour unless you are writing a compiler.
19:39:27 <Sgeo> Practice for writing more esolang interpreters!
19:39:35 <alise> I dearly hope not.
19:39:41 <Sgeo> What?
19:40:01 <alise> There are enough already, unless there is some novelty beyond being written in Factor.
19:40:15 <alise> Anyway, *most* esolangs aren't pre-parsed.
19:41:01 -!- Gracenotes has quit (Remote host closed the connection).
19:41:38 <wareya_> welcome to #tarpits
19:41:51 <alise> test
19:42:01 <alise> what does ^ look like for you guys?
19:42:05 <Sgeo> A caret?
19:42:08 <cpressey> alise: caret
19:42:08 <alise> wareya_: well, pretty much...
19:42:14 * Sgeo eats the caret
19:42:14 <wareya_> caret
19:42:15 <alise> the test line, Sgeo.
19:42:23 <Sgeo> It looks like test
19:42:29 <alise> not "testabc"?
19:42:34 <wareya_> ah
19:42:35 <Sgeo> Nope
19:42:36 <Sgeo> Just test
19:42:37 <wareya_> "test"
19:42:48 <alise> then either freenode's server disregards everything after a 0 byte, or your clients do (because of using C strings)
19:42:57 <Sgeo> What does clog say?
19:42:58 <alise> probably the former, but it would be fun if it was the latter
19:43:08 <alise> you could hide messages from certain people :P
19:43:11 <cpressey> almost certainly the former
19:43:12 <wareya_> Isn't that to deny format attacks?
19:43:15 <alise> Sgeo, all I have is busybox.
19:43:25 <alise> I'm surprised it even has nc built in.
19:43:48 -!- sebbu has quit (Read error: Connection reset by peer).
19:43:55 -!- sebbu has joined.
19:44:11 * Sgeo would find it funny if alise would only be able to use this to show messages to Vorpal
19:44:48 <alise> can you check clog?
19:44:50 <cpressey> alise: you're nc'ing in?
19:44:56 <alise> it's probably written in C though or something
19:45:01 <alise> cpressey: indeed.
19:45:18 <cpressey> alise: just 'test' in clog.
19:45:31 <alise> the only inconvenience is typing "PRIVMSG #esoteric :" a lot, and getting my lines interrupted when someone else sends a message :)
19:45:38 <alise> and, uh, everything else, but those are the major ones.
19:45:47 <alise> clearly I should use zzo38's client.
19:46:19 <alise> Not often you hear recent Radiohead coming out of a car on the street...
19:47:13 <alise> I wish debian-installer would decide how long it'll take to install already.
19:47:43 <cpressey> I am suffering from severe information overload.
19:47:54 <alise> I don't get that.
19:48:14 <cpressey> Yes... that's abundantly clear.
19:48:30 <alise> Wow, their car stereo sucks.
19:48:50 <alise> They appear to have made it so bassy that you can't actually hear the guitar.
19:49:31 <pikhq> Ouch.
19:50:03 <alise> It doesn't even sound bassy though. Just like they remixed it and took out the guitar track.
19:50:33 <alise> pikhq: Do you still use Gentoo?
19:50:44 <alise> If you didn't, I'd probably try out whatever distro you are using. :P
19:50:51 <alise> Didn't, don't, whatever.
19:51:32 <alise> They should include Tetris on the installer image so that you can entertain yourself while it installs.
19:52:07 <alise> "vi: not found"
19:52:25 <oklopol> Vorpal still has alise in notlistentotion?
19:52:56 <pikhq> alise: Yes, I do.
19:53:08 <Gregor> alise: http://codu.org/rawirc.c :P
19:53:12 <alise> oklopol: you mean /ignore?
19:53:33 <alise> Gregor: eagerly awaiting an nc-downloadable gcc binary
19:53:44 <alise> pikhq: Bah!
19:53:46 <oklopol> alise: yes
19:54:03 <oklopol> but i figured it's clearer that way
19:54:03 <alise> oklopol: not afaik, he just does it to seem like he's making a point and then takes it off within hours
19:54:13 <oklopol> sure
19:54:19 <fizzie> If freenode's doing the "standard" thing, messages can contain any sequence of octets not including 0, 10 or 13.
19:54:22 <oklopol> i don't know where i got the impression
19:54:27 <oklopol> something i read in the log
19:54:29 <alise> fizzie: I find that racist.
19:54:42 <alise> oklopol: that may just be dimwittedness >:)
19:55:10 <oklopol> alise: Sgeo said something like alise could do X to show messages to Vorpal, maybe it was about something completely and utterly else.
19:55:16 <oklopol> *something completely
19:55:41 <fizzie> "The NUL character is not special in message framing, and basically could end up inside a parameter, but as it would cause extra complexities in normal C string handling. Therefore NUL is not allowed within messages." Interesting grammar there.
19:55:42 <oklopol> it's funny how i'm so damn pedantic about writing correct english, but at the same time i use incorrect words for fun all the time
19:56:37 <oklopol> erm, who uses C
19:56:40 <oklopol> no one
19:56:48 <wareya_> hi
19:56:51 <fizzie> Everyone's IRC server is C.
19:56:59 <oklopol> no, mine was python
19:57:02 <wareya_> I use C to hack old video games
19:57:25 <Vorpal> back
19:57:31 <alise> oklopol: it was that if the NUL byte only ended a message because of clients using C strings, and the server passed it on, then a client that could handle it could see the part of a message after a NUL byte
19:57:31 <cpressey> C is fun times
19:57:33 <Vorpal> <oklopol> Vorpal still has alise in notlistentotion? <-- um no
19:57:58 <alise> oklopol: Sgeo or someone thought it would be hilarious if this only meant I could send messages to Vorpal, meaning his client would be the only one that wouldn't cut off after a NUL
19:58:03 <oklopol> Vorpal: yeah alise told me already, I GUESS YOU COULDN'T SEE THAT....
19:58:12 <alise> but, as the server cuts it off there, this is not the case.
19:58:15 <Vorpal> oklopol, I didn't bother reading all the scrollback :P
19:58:15 <wareya_> IT would be an exploit if the server didn't chop after the nul byte
19:58:18 <oklopol> oh.
19:58:19 <wareya_> It*
19:58:26 <oklopol> yeah i didn't exactly read the stuff around it
19:58:26 <alise> nor is it likely that Vorpal would be the only one using a certain client, and that Vorpal's client would be the only unbroken one.
19:58:31 <Vorpal> oklopol, I only read the highlights
19:58:43 <alise> so oklopol how has your day been? Vorpal
19:58:51 <alise> mine's been great! Vorpal
19:58:58 <Vorpal> alise, very funnt
19:58:59 <Vorpal> funny*
19:59:02 <oklopol> alise: it's been rather empty, but yesterday a 15yo chick told me i'm pretty sexy
19:59:06 <oklopol> out of nowhere
19:59:16 <alise> xD
19:59:24 <wareya_> lol
19:59:37 <alise> my mind hasn't fully adjusted to the reality of being 15 yet
19:59:50 <alise> because it auto-heuristically-categorises people who are 15 as older than me
19:59:51 <Vorpal> alise, hm? nul on irc?
19:59:58 <alise> RTFContext
19:59:59 <Vorpal> I'm not sure that the server will pass that on at all
20:00:18 <Sgeo> Vorpal, apparently it doesn't.
20:00:34 -!- MigoMipo has joined.
20:00:37 <oklopol> i've mostly been studying japanese, it's soooooo much easier than math
20:00:39 <Vorpal> Sgeo, why on earth would it do that at all?
20:00:55 <oklopol> math is too hard, i'm thinking maybe i should become a bartender
20:00:56 <cpressey> Who can be sure of anything in this wack-a-day modern world of ours?
20:01:03 <alise> so oklopol, I've been thinking, about that bet, how about we fix 50 pounds as whatever it was worth in GBP when the bet was made
20:01:11 <alise> so that the amount can't fluctuate
20:01:11 <oklopol> alise: no.
20:01:25 <alise> dammit, why couldn't the new world order have concealed the recession?
20:01:33 <alise> then you wouldn't have seen right through me :|
20:01:51 <alise> hey single digits installation time in minutes, that's progress
20:01:55 <oklopol> when do you turn 16?
20:02:04 <Vorpal> <oklopol> math is too hard, i'm thinking maybe i should become a bartender <-- I thought you loved math?
20:02:05 <alise> the bet is for 17 as far as I am aware.
20:02:09 <oklopol> oh
20:02:18 <alise> i turn 17 in slightly less than two years
20:02:31 <alise> oklopol: well otherwise all it'd signify is "I didn't break the law!"
20:02:38 <alise> not the best odds really
20:02:44 <oklopol> Vorpal: i also love being the evil dictator of a country
20:02:59 <alise> That country... is Canada.
20:03:00 <Vorpal> <alise> hey single digits installation time in minutes, that's progress <-- as opposed to it taking longer or it being expressed in some unsuitable unit?
20:03:04 <alise> (Finland sucks)
20:03:11 <cpressey> oklopol: I can immediately see how this new vocation combines your two loves.
20:03:14 <alise> Vorpal: take a guess
20:03:19 <Vorpal> alise, the former probably.
20:03:26 <alise> Vorpal: congratulations.
20:03:31 <Vorpal> alise, but I seem to remember the latter too. For some old software
20:03:42 <Vorpal> that didn't expect that the installation could take less than an hour
20:03:43 <alise> woo 6 minutes. is GNOME fucking huge or does Debian just install a whole load of crap anyway?
20:03:52 <alise> Ubuntu takes like .00001% of the time to install
20:04:00 <alise> and /it/ has GNOME...
20:04:22 <Vorpal> hm
20:04:23 <Vorpal> strange
20:04:30 <alise> sure, it's a netinstall, but I'm counting the Ubuntu download time too
20:04:40 <oklopol> tried to get my gf to have sex with you, but she wasn't particularly interested
20:04:41 <alise> also, the non-netinstall Debian is something like 12 CDs.
20:04:42 <Vorpal> alise, better mirror for ubuntu maybe?
20:05:09 <alise> Vorpal: mirrorservice.org; I also tried the Swedish mirror. basically same results
20:05:19 <alise> They get good speeds.
20:05:35 <alise> oklopol: i can't believe it and am going to commit suicide now
20:05:40 <alise> I blame airline food
20:05:47 <alise> and dogs
20:06:00 <oklopol> erm that's good news for you
20:06:02 <Vorpal> alise, hm, same mirror for ubuntu and debian?
20:06:30 <zzo38> How should I draw the control graphics for WEBMATH?
20:06:35 <oklopol> also it's illegal for ppl under 17 to have sex?`
20:06:42 <oklopol> that's fucking retarded
20:06:46 <alise> oklopol: yeah but I don't like having 50 pounds
20:06:52 <oklopol> oh
20:06:53 <alise> money is materialistic and makes me sad man
20:06:57 <alise> also it's 16
20:07:04 <oklopol> erm right
20:07:11 <zzo38> I have drawn a down arrow for '\n' but perhaps it can be improved and made differently, too, and then make the other control graphics, too, such as '\r' and so on
20:07:12 <oklopol> still fucking retarded
20:07:12 <alise> Vorpal: both get the same speeds (800 KiB/s)
20:07:18 <Vorpal> alise, weird then
20:07:39 <alise> Vorpal: maybe because the Ubuntu is one HTTP request, but Debian is thousands of them due to being netinstall
20:07:46 <alise> still, HTTP overhead isn't /that/ excessive
20:08:12 <Vorpal> alise, I don't think it uses persistent HTTP, if it is aptitude or similar.
20:08:13 <alise> oklopol: it's like 38 in America
20:08:20 <alise> Vorpal: it's debian-installer
20:08:29 <Vorpal> no clue how it downloads stuff
20:08:33 <alise> it has its own stuff.
20:08:33 <Vorpal> could be wget for all I know
20:08:40 <alise> it downloads everything first. no, no wget
20:08:43 <Vorpal> hm
20:08:52 <Vorpal> alise, well, yeah http overhead shouldn't be that large
20:08:57 <alise> it's probably some HTTP downloading library built in
20:09:06 <alise> to save on space. there are no HTTP clients in /bin or /usr/bin
20:09:14 <Vorpal> alise, not even fetch?
20:09:30 <alise> nope. it's a BusyBox thing, not even vi
20:09:41 <alise> although it does have nano, presumably since it's easier to use at first
20:09:44 <Vorpal> well busybox has a built in http client iirc
20:09:53 <alise> yes, but it's not built. just like BusyBox vi
20:09:55 <cpressey> no of course not wget. wget would be a known quantity
20:09:59 <Vorpal> compile time option of course
20:10:06 <alise> 269 KiB busybox
20:10:16 <alise> cpressey: wat.
20:10:46 <cpressey> alise: gotta be some weirdo http client lib, as you said.
20:10:57 <alise> cpressey: dude, this thing is meant to fit on tiny tiny disks :)
20:10:59 <zzo38> If it has netcat, just use headerless HTTP for simple download
20:11:05 <alise> well not THAT tiny, but
20:11:05 <cpressey> alise: it's probably fetching from Australia or something.
20:11:06 <Vorpal> alise, on floppies?
20:11:11 <Vorpal> alise, I thought it was still an ISO
20:11:13 <alise> cpressey: uh, you select the mirror
20:11:29 <cpressey> alise: you get the *impression* that you select the mirror...
20:11:31 <alise> Vorpal: well, yes, but it has to fit all the big stuff on. and it isn't CD-sized; it's 100 MiB or so
20:11:43 <Vorpal> alise, right
20:11:57 <alise> Vorpal: I had to download a bit more to make it work on a USB stick. cpressey: I'm pretty sure those download lines in the log are accurate.
20:12:11 <Vorpal> alise, does it report download speed while downloading?
20:12:30 <Vorpal> if not, maybe it is slower now. Like, network problems somewhere
20:12:44 <alise> Vorpal: it's done now. but no; however, I know my internet is fine. and I tried two mirrors, both of which always get good speeds on my connection
20:12:56 <zzo38> The gopher protocol is also simple. I think there is also TFTP, although I don't know much about TFTP. And then there are a lot of other protocols, it depends what you want to do
20:12:59 <cpressey> then it's lame. case closed!
20:13:00 <alise> it /was/ downloading over a thousand files. HTTP overhead is probably it.
20:13:08 <alise> zzo38: Completely true and... irrelevant.
20:13:23 <Vorpal> alise, right
20:14:10 <zzo38> If you omit the HTTP/1.1 from the HTTP request it will operate without headers, in case you need to do that
20:14:11 <alise> <CTCP>
20:14:34 <Vorpal> since when has google starting showing search results when you type!?
20:14:44 <alise> cool i fucked up my terminal
20:14:53 -!- Gracenotes has joined.
20:14:53 <zzo38> alise: <CTCP> <CTCP>
20:15:45 <Vorpal> alise, if it closes connection in between (non-persistent http) it might also include tcp handshake overhead
20:15:52 <Vorpal> alise, what is the RTT to the mirror?
20:15:53 <alise> Apkasdk-34k-0k===-rl
20:16:04 <alise> Ajajaj? OIdfjosdnfawerkjvflk. Masdofisjgoj.
20:16:13 <fizzie> Vorpal: It's called "Google Instant", apparently.
20:16:18 <alise> s is an underscore, t is >-!
20:16:54 <Vorpal> fizzie, any way to turn it off? It seems to make my browser pause handling input while it fetches stuff. Sometimes
20:16:56 <zzo38>
20:16:56 <alise> ALTHOUGH . IS A DOWNWARDS ARROW...
20:17:07 <alise> aaaaaaaaa
20:17:21 <fizzie> Vorpal: There should be a "Instant is on" next to the input field, above the "Safesearch is off/on" toggle.
20:17:45 <Vorpal> fizzie, ah indeed...
20:17:49 <alise> JUST LIKE THE 80S.
20:17:53 <zzo38> In my computer the instant search and stuff is off
20:17:54 <alise> 0 IS A SOLID BLOCK.
20:18:30 <zzo38> I don't usually use the search box anyways, I can use C-l :g (which is a shortcut)
20:18:32 <alise> 12345678900-
20:18:33 <Vorpal> alise, what is like the 80s?
20:18:37 <alise> AIEE.
20:18:40 <Vorpal> google without instant search?
20:18:50 <fizzie> I think it's about his terminal woes.
20:18:50 <alise> I CANNOT SEE A SINGLE THING alise
20:18:53 <Vorpal> ah
20:18:56 <alise> okay so my name looks like alise
20:19:00 <Vorpal> alise, try typing reset
20:19:03 <Vorpal> -_-
20:19:13 <alise> alise -- shaded block, >- box drawing (low), i, underscore, e
20:19:21 <alise> then , is a left arrow
20:19:29 <alise> "alise:" or "alise,"
20:19:34 <Vorpal> alise, are you on the computer with the problems?
20:19:35 <alise> but please, use upercase. then i can read it
20:19:37 <Vorpal> I mean
20:19:39 <Vorpal> on irc with it
20:19:42 <alise> otherwise i can't
20:19:42 <Vorpal> or with a different one
20:19:56 <alise> LIKE THIS
20:19:57 <Vorpal> alise, PLEASE TRY USING RESET (IN LOWER CASE)
20:20:04 <fizzie> Vorpal: If I've been following right, it's netcat-IRC from a Debian installer session.
20:20:09 <alise> VRPAL: (OKAY HOW DO I DO ) THAT
20:20:11 <Vorpal> fizzie, ah
20:20:14 <alise> WITHOUT QUITTING NC?
20:21:06 <alise> ANY OTHER IDEAS?
20:21:25 <alise> OR STTY
20:21:32 <alise> TODAY IS NOT A GOOD DAY
20:22:04 <alise> c
20:22:13 <alise> Thanks fizzie
20:22:17 <Vorpal> alise, that worked?
20:22:18 <Vorpal> heh
20:22:19 <alise> what did you say Vorpal?
20:22:20 -!- augur has joined.
20:22:25 <Vorpal> fizzie, where did you find that list?
20:22:38 <Vorpal> alise, hm? on which line?
20:22:44 <fizzie> Vorpal: 'twas from http://www.faqs.org/docs/Linux-HOWTO/Keyboard-and-Console-HOWTO.html via google.
20:22:47 <alise> Vorpal: last message before I said thanks fizzie
20:23:05 <Vorpal> alise, were the two last ones
20:23:14 <cpressey> < zzo38> If you omit the HTTP/1.1 from the HTTP request it will operate without headers, in case you need to do that <-- Weird! Is this widely supported? I don't remember anything about it in RFC 2616.
20:23:34 <alise> cpressey: that is /definitely/ not standard
20:23:38 <Vorpal> alise, I know I used top from inside a partial install to figure out what was going on
20:23:45 <alise> Vorpal: I couldn't find it, anyway, what with ls(1)'s output being unreadable
20:23:56 <fizzie> cpressey: I've used it, always assuming it is some sort of pre-standardization HTTP thing.
20:24:00 <Vorpal> alise, you would need to chroot, since reset reads termcap data
20:24:30 <alise> well, I have chroot. :P
20:24:37 <alise> wow, it's installing Gnash.
20:24:57 <alise> FWIW running NAMES without an argument is a bad idea.
20:25:07 <Vorpal> alise, yes I did chroot and top on when investigating that slow kernel install when doing the opengenera vm
20:25:35 <Vorpal> alise, presumably it returns all non-invisible users?
20:25:38 <alise> could have just done "chroot /foo top"
20:25:47 <alise> yes Vorpal, but also on channels too
20:25:52 <alise> one channel per line
20:25:57 <Vorpal> ouch
20:25:59 <Vorpal> hm
20:26:07 <alise> finishes quickly if you switch to another terminal
20:26:30 <Vorpal> alise, expected. linux VTs are not very fast at printing out a lot of data
20:26:38 <Vorpal> at least not when actively displayed
20:26:44 <fizzie> cpressey: From HTTP/1.0 spec: "If the protocol version is not specified, the recipient must assume that the message is in the simple HTTP/0.9 format."
20:26:54 <fizzie> cpressey: They seem to have removed that bit from the HTTP/1.1 spec, though.
20:26:57 <alise> huh
20:27:04 <alise> right
20:27:25 <Vorpal> alise, just do sleep 2 && time dmesg (and switch to another terminal during those 2 seconds, then wait a few seconds and switch back)
20:27:28 <alise> heh, that means that HTTP 1.0 specifies how to handle a non-HTTP 1.0 request
20:27:36 <Vorpal> then do the same without switching
20:27:40 <alise> as silly as the XML standard saying you must die on invalid data; you can't legislate non-XML! you're the XML spec!
20:28:19 <Vorpal> alise, actually it seems pretty reasonable for backward compat when it comes to the HTTP/0.9 stuff
20:28:29 <Vorpal> while the XML stuff is... not very reasonable
20:28:35 <alise> yes, but it's still nonsensical
20:28:55 <alise> you're defining how programs must handle a certain type of data X. therefore, how the programs behave when given some data that is not X is none of your business, and you can't specify it
20:29:12 <alise> if you do, you're effectively saying that everything is valid X, just that most of it is handled by saying "NO WRONG SYNTAX ERROR"
20:29:36 <alise> thus creating your "Octets Specification 1.0"
20:30:25 <fizzie> alise: They've also changed the BNF, in /1.0 it's "Request = Simple-Request | Full-Request" where Simple-Request is "GET", space, URI, CRLF, while "Full-Request" starts with a similar-looking Request-Line with the version field; in /1.1 it's just Request = Request-Line [more stuff].
20:30:37 <Vorpal> alise, actually it is. Since you define how it should handle data on the HTTP port.
20:30:45 <Vorpal> alise, not just how it should handle HTTP data on the HTTP port
20:31:17 <Vorpal> (I'm sure that argument holds up though)
20:31:22 <alise> Vorpal: err, not really, it's far more abstract than that
20:31:29 <alise> "not sure", I assume
20:31:34 <Vorpal> alise, err yeah
20:32:03 -!- sebbu has quit (Read error: Connection reset by peer).
20:32:18 <alise> install quicker!!
20:32:24 <alise> ?!
20:32:38 -!- sebbu has joined.
20:32:39 -!- sebbu has quit (Client Quit).
20:33:03 -!- sebbu has joined.
20:33:10 <alise> Why the hell is it installing Gnash?!
20:33:15 <Vorpal> alise, anyway my argument is reasonable I think: Here I define how to handle data sent to you on port 80. If the data is seemingly not valid, do this (for compatibility reasons).
20:33:21 <Vorpal> seems quite sane to me
20:33:38 <Vorpal> alise, sure you didn't select "install everything" by mistake?
20:34:21 <alise> I'm sure; that isn't even an option.
20:34:27 <alise> Vorpal: but that's /not what the HTTP spec says/
20:34:34 <alise> but whatever
20:34:47 <Vorpal> alise, hm. perhaps
20:35:21 <alise> but if what fizzie says about the BNF is true, then it's actually fine.
20:36:39 <Vorpal> hm
20:39:07 <Sgeo> Either the way I'm wearing these is VERY wrong, or this is junk
20:39:17 <alise> what
20:39:23 <Sgeo> This headset
20:40:31 -!- augur has quit (Ping timeout: 265 seconds).
20:41:10 <Sgeo> Ah, I think this is better
20:41:14 <Sgeo> Still painful, though
20:46:00 <cpressey> fizzie: that explains why I don'
20:46:05 <cpressey> *don't remember it.
20:46:23 <cpressey> alise: would it totally fuck you up if someone here started using unicode?
20:46:38 <alise> cpressey: not necessarily, no. but i wouldn't be able to see it properly. feel free
20:46:39 <cpressey> well, you know the trick to get back now, so i guess not.
20:47:25 <alise> even if i didn't, i could just restart the console :)
20:48:28 <alise> "Detected blah blah: Windows Vista (loader)" Actually, that's 7...
20:48:45 <cpressey> ♫ some WHERE OVer the RAINbow ♫
20:49:14 * cpressey startled to learn that the unicode spec attempts to define input methods for musical symbols.
20:49:45 <alise> I saw that properly.
20:50:02 -!- alise has quit (Remote host closed the connection).
20:50:18 <fizzie> Yes, but then you died soon afterwards.
20:50:20 <lament> what's the unicode symbol for the B-minor mass?
20:50:35 <cpressey> "There are no known bidirectional implications for Musical Symbols."
20:50:44 -!- relet1 has joined.
20:50:57 <lament> probably true
20:51:31 <cpressey> we have not yet found a culture that reads music right-to-left. we are still looking.
20:52:05 -!- alise has joined.
20:52:19 <alise> Sooomewheeeere oover the raiiinbooooooow / Deeebiaaaaan
20:52:27 <fizzie> Having a program output esc followed by "%%G" should make the Linux console output driver handle data in UTF-8 (if it doesn't already; it can be set to do that by default too), but of course the console font probably won't have that many characters.
20:52:32 <fizzie> I guess it's a bit late now.
20:52:38 <alise> Staaarts tooo a mediocre GNO-OME / deeeesktoooop
20:52:55 -!- relet has quit (Ping timeout: 252 seconds).
20:53:45 <alise> Wiiiith Cleaar-looks and a branded / baaaackgroooound
20:53:55 <cpressey> If it is the honest brutal VGA console font, ♫ could actually map to a character.
20:54:11 <alise> It's the Linux default.
20:54:25 <zzo38> Why are the blackboard bold letters too large, what is the correct size for a 10pt font?
20:54:30 -!- kar8nga has quit (Remote host closed the connection).
20:54:32 <alise> Ooh, Empathy! The worst IRC client ever! The only client that Pidgin is actually better than!
20:54:49 <alise> Ships with support for Facebook Chat but not MSN. Why?
20:55:03 <cpressey> Do they build Empathy for Windows then? I need to slum even further.
20:55:13 <zzo38> I don't know why
20:55:16 <alise> Who knows?
20:55:18 <alise> zzo38: They're fine for me.
20:55:23 <alise> zzo38: Try using LaTeX.
20:55:42 <zzo38> alise: I don't mean the LaTeX fonts, I am talking about the WEBMATH fonts
20:55:47 <alise> zzo38: I don't know ...
20:56:01 <alise> cpressey: Haha, they've just taken Ubuntu's Software Centre and taken the Ubuntu out of the name.
20:56:08 <zzo38> The typewriter symbols are the correct size
20:56:21 <alise> "Well, shit, we can't do better than that." "Just put it in the repositories..."
20:57:41 <alise> ehird is not in the sudoers file. This incident will be reported.
20:57:50 <alise> Oh yeah! We still use su and root passwords because this is the early 2000s!
20:58:22 <cpressey> Reported? To who?
20:58:32 <alise> Usually, root@localhost.
20:58:43 <cpressey> Yes.
20:58:58 <alise> What the hell is /etc/shadow-?
20:59:04 <alise> /etc/shadow- Backup file for /etc/shadow.
20:59:05 <cpressey> Naughty single user! I'm telling the single user about you!
20:59:06 <Vorpal> <cpressey> If it is the honest brutal VGA console font, ♫ could actually map to a character. <-- ?? A note symbol?
20:59:16 <Sgeo> I never tried Empathy
20:59:25 <Sgeo> Which is surprising if it's some sort of default client
20:59:27 <fizzie> I am pretty sure that debian-installer's expert mode asks if you want to put in a password for root; if you don't, it creates a sudoers-allowed user account instead.
20:59:44 <zzo38> alise: I have still used "su" on some Linux computers, but not for root account. There are a few terminals which are public use, each one with its own account. To access files that I have created with a different account, I can use "su guest02" and stuff like that
20:59:56 <alise> Wow, aptitudes interface changed.
20:59:57 <cpressey> Vorpal: http://beacon.chebucto.ca/Back/A9908/img/vga_norm.gif
20:59:59 <alise> *aptitude's
21:00:00 <cpressey> 0x0e
21:00:03 <alise> That ... is the first time that has ever happened.
21:00:13 <Vorpal> cpressey, heh
21:00:26 <alise> cpressey: That's what it displayed as, yes.
21:00:27 <Vorpal> cpressey, should be 0x07 for the note symbol
21:00:31 <Vorpal> what with that being ASCII bell
21:00:53 <cpressey> Vorpal: Maybe you can go back to the late 80's before this was set in stone and tell them that!
21:01:02 <Sgeo> Headsets don't make good headphones
21:01:05 <Vorpal> cpressey, do you have a time machine handy?
21:01:20 -!- MigoMipo has quit (Ping timeout: 258 seconds).
21:01:31 <cpressey> Vorpal: mu
21:01:40 <fizzie> On the other hand, the single-note character is at 0x0d, carriage return, and I've seen typewriters that ring a bell on carriage-return.
21:01:50 <Vorpal> if you had I would use it first to make them change ipv4 to use more than 32 bits.
21:01:51 <pikhq> Vorpal: 無 is what he meant to say.
21:02:05 <Vorpal> pikhq, eh?
21:02:23 <cpressey> I don't think they mapped THAT to the brutal vga font!
21:02:26 <zzo38> The CP437 character set was not designed so that the meaning of ASCII control codes would correspond to the graphics in those positions
21:02:37 <Vorpal> fizzie, hm
21:02:45 <Vorpal> fizzie, what is 0x0e?
21:03:00 <lament> muuuuuuuuuuuuuu :(
21:03:20 <fizzie> Vorpal: "Shift Out", the character-set swapping thing.
21:03:25 <Vorpal> fizzie, ah
21:03:53 <Sgeo> I might still have the time machine that I used to kill Elliott Hird somewhere
21:05:47 -!- MigoMipo has joined.
21:05:50 -!- Phantom_Hoover has joined.
21:06:01 <Vorpal> hm tricky to search for info on dwarf debugging info (a format used by linux for debug info, and *BSD too iirc). I tried adding ELF to the search but that didn't exactly help at all
21:06:02 <Vorpal> XD
21:06:11 <fizzie> Also, the good old broken bar instead of a |.
21:06:59 <fizzie> "specification" is often a very good word for searches like that. (Unless you want human-readable explanations, of course; but I tend to prefer the incomprehensible.)
21:07:16 <cpressey> "dwarf tutorial"
21:07:20 <cpressey> ...
21:07:35 * cpressey dares
21:07:42 <fizzie> Hey, it actually works.
21:07:51 <fizzie> "Introduction to the DWARF Debugging Format by Michael Eager (PDF)."
21:08:00 <Phantom_Hoover> Is it just me, or is Agda's standard library exactly what one would get if a bunch of 5-year-olds were asked to pick out Unicode symbols?
21:08:01 <cpressey> hey yeah! dwarfstd.org
21:08:02 <fizzie> Well, that was nice. I was expecting... other things.
21:08:06 <Vorpal> fizzie, I wasn't looking for the spec. I was looking for some history about it.
21:08:14 <alise> Phantom_Hoover: Yes.
21:08:23 <Phantom_Hoover> Thought so.
21:08:25 <alise> fizzie: Dwarf/Elf STDs!
21:08:27 <alise> It's very dangerous.
21:08:31 <Vorpal> XD
21:08:45 <Phantom_Hoover> And their coinduction seems utterly brain-dead.
21:08:47 <zzo38> I am trying to make the Enhanced CWEB can use the WEBMATH font, although I can include things for other Plain TeX documents as well, a little bit
21:09:01 <alise> Phantom_Hoover: I don't know of anything wrong with their coinduction apart from the syntax.
21:09:03 <alise> I may be wrong.
21:09:06 <zzo38> So that is I intend to have the typewriter control graphics and blackboard bold
21:09:06 <fizzie> Phantom_Hoover: Is the snowman in there?
21:09:17 <Phantom_Hoover> fizzie, god only knows.
21:09:55 <Vorpal> even trickier, which was my first search is the toolkit dwarves. Trying to find official website for it is hopeless. If it even has one. It works on DWARF debugging info btw.
21:10:00 <alise> anyone know how to make gnome use sudo, not su?
21:10:24 <alise> "Web browser: [ Debian Sensible Browser ]"
21:10:36 <alise> NAME sensible-editor, sensible-pager, sensible-browser - sensible editing, paging, and web browsing
21:10:38 <Vorpal> all I found is a seemingly outdated git branch at kernel.org
21:10:47 <alise> Sensible Software are gonna sue!
21:10:51 <cpressey> alise: ... how do I make a nauseous-looking emoticon.. ?
21:10:56 <Sgeo> Sensible Software?
21:10:57 <Vorpal> alise, that name sounds familiar...
21:10:59 <alise> cpressey: Why nauseous?
21:11:03 <Vorpal> Sensible Software I mean
21:11:08 <alise> cpressey: They're just programs that open a reasonable program for the task. :P
21:11:12 <alise> Like x-www-browser.
21:11:15 <alise> Vorpal: they did Cannon Fodder
21:11:26 <cpressey> alise: Oh, if it's a shell/dispatcher thingy, that's not too bad.
21:11:27 <Vorpal> alise, doesn't ring a bell
21:11:28 <alise> and Sensible Soccer
21:11:35 <alise> and, uhh, apparently Sensible Golf
21:11:42 <Vorpal> hm
21:11:58 <cpressey> It's just such a distasteful word in my lexicon.
21:12:08 <alise> "Sensible Train Spotting is the world's first ever computerized train spotting simulator." gahahaha
21:12:10 <Vorpal> alise, oh right, one of the darwinia loading screens makes a reference to Sensible Software. That is where I heard it I think.
21:12:17 -!- SgeoN1 has joined.
21:12:17 <cpressey> One could argue it's because I'm not at all sensible, I suppose...
21:12:49 <SgeoN1> Ms security essentials updates like locking up my computer
21:13:01 <cpressey> SgeoN1: It's for its own good
21:13:08 <Vorpal> security essentials?
21:13:10 <Vorpal> what is that
21:13:28 <SgeoN1> Microsoft's AV software
21:13:35 <Vorpal> huh
21:13:41 <Phantom_Hoover> SgeoN1, ask alise about that.
21:13:53 <alise> Phantom_Hoover: ?
21:14:13 <Phantom_Hoover> Locking up.
21:14:19 <alise> Why?
21:14:36 * SgeoN1 slaps Phantom_Hoover
21:15:06 <zzo38> In weather today, the clouds disappeared, the oceans turned black, and giant zebra arrows rained violently down from space.
21:15:24 -!- Sgeo has quit (Ping timeout: 265 seconds).
21:15:29 <Phantom_Hoover> alise, perhaps you could help SgeoN1's computer deal with locking up?
21:15:36 <Vorpal> zzo38, zebra arrows? Are they made out of zebras or zebra shaped or just zebra coloured?
21:15:38 <alise> Phantom_Hoover: Why?
21:15:46 <Vorpal> or a combination of those?
21:15:52 <Phantom_Hoover> Forget it.
21:16:03 <zzo38> Vorpal: I don't know
21:16:10 -!- Sgeo has joined.
21:16:11 <SgeoN1> I thought PH was referring to your life situation until recently
21:16:17 <zzo38> But I think it means stripe black and white arrows
21:16:21 <Vorpal> zzo38, random text generator?
21:16:33 <zzo38> Vorpal: No. I found it in FORTUNE file
21:16:38 <Vorpal> ah
21:16:46 * cpressey shoots a zebra arrow at Phantom_Hoover
21:16:53 <cpressey> Hey, these things are pretty cool.
21:17:00 <fizzie> They could be just stripey.
21:17:03 * Phantom_Hoover fires up the god-reactor.
21:17:46 * Phantom_Hoover shoots a concentrated ray of high-velocity deions at cpressey.
21:18:18 <cpressey> Apparently they are black-and-white striped arrows. And Ted Nugent has lent his name to a brand of them.
21:18:28 <cpressey> http://cgi.ebay.com/Ted-Nugent-Gold-Tip-5575-Carbon-Arrows-Raw-Shafts-1-Dz_W0QQitemZ400127495981QQcategoryZ20844QQcmdZViewItemQQ_trksidZp4340.m263QQ_trkparmsZalgo%3DSIC%26its%3DI%252BC%26itu%3DUCI%252BIA%252BUA%252BFICS%252BUFI%252BDDSIC%26otn%3D10%26pmod%3D300393787162%26ps%3D63%26clkid%3D5753594848568064443
21:18:33 <fizzie> Yes, but that ebay auction has ended!
21:18:45 <fizzie> You can still buy a "DIVA SPARKLE ZEBRA ARROW SIGN HANGING WALL ART PINK" though.
21:19:01 <fizzie> That's just a zebra-patterned arrow sign with "DIVA" in pink text on top.
21:19:03 <Vorpal> hahah
21:19:04 <zzo38> Another thing from FORTUNE file: Circular logic is good because it is.
21:19:16 <Phantom_Hoover> Hmm. cpressey should be thoroughly blessed by now.
21:19:33 <Phantom_Hoover> Obviously something is in the path of the ray.
21:19:50 <cpressey> Phantom_Hoover: How do you know I'm not?
21:20:01 <fizzie> You're not glowing.
21:20:05 <cpressey> Oh
21:20:47 <Phantom_Hoover> cpressey, one of the noted effects of high-energy deions is severe brain damage, leading to an extreme case of fundamentalism.
21:20:58 <zzo38> Arrrrrr!!! sin theta. Polar coordinates are a pirate's best friend.
21:21:09 <lament> fun da mental
21:21:41 * Phantom_Hoover tries firing the deion beam at a hamster.
21:21:53 <zzo38> Fundamentalism is often illogical too. Jack Chick is Illogical Christianity.
21:21:56 * Phantom_Hoover fails due to lack of hamsters.
21:22:16 <zzo38> Someone who follows Illogical Christianity, shall therefore be called Chicken.
21:23:12 <Vorpal> <zzo38> Arrrrrr!!! sin theta. Polar coordinates are a pirate's best friend. <-- is this the horrible pun I think it is....?
21:23:18 <Phantom_Hoover> Indeed.
21:23:20 <Vorpal> no it can't possibly be that bad can it?
21:23:33 <Phantom_Hoover> Although a little nonsensical from a mathematical standpoint...
21:23:44 <Vorpal> well yes
21:23:56 <cpressey> Does the "sin theta" part pun to something?
21:24:01 <Sgeo> r sin theta
21:24:05 <Sgeo> Seems clear to me
21:24:09 <cpressey> I mean in pirate.
21:24:30 <fizzie> It's the conversion from polar (r, theta) to cartesian y; I wouldn't call it "nonsensical", just a bit arbitrary.
21:24:49 <Phantom_Hoover> fizzie, not without cos, it isn't.
21:24:52 <cpressey> Like if it was "avast ye" instead of "sin theta", I wouldn't be asking.
21:25:07 <Sgeo> Phantom_Hoover, that's why he said "cartesian _y_"
21:25:16 <Phantom_Hoover> Ahh.
21:25:22 <alise> the adm group means admin, right?
21:25:25 -!- oerjan has joined.
21:25:33 <Phantom_Hoover> oerjan!
21:25:41 <oerjan> 'evening
21:25:47 <cpressey> All this mucking about with pirate puns has summoned oerjan.
21:25:51 <oerjan> RIP hagbart.nvg.ntnu.no
21:25:53 <Vorpal> alise, why are you asking? I think it is there mostly for compat reasons and not really used any more
21:25:56 <Vorpal> unless I misremember
21:26:00 <Phantom_Hoover> oerjan, NOOOO
21:26:02 <Vorpal> oerjan, hm? what happened?
21:26:08 <Vorpal> what was hagbart.nvg.ntnu.no?
21:26:18 <cpressey> oerjan: your server?
21:26:23 <alise> Vorpal: ok; I'll use the sudo group then
21:26:25 <oerjan> the nvg server i've been using for irc for years died
21:26:30 <alise> oerjan: :(
21:26:37 <Vorpal> alise, hm...
21:26:42 <Phantom_Hoover> oerjan, wait!
21:26:43 <fizzie> It probably does have "adm"inistrationary connotations, but it's anyone's guess if your system uses it for anything.
21:26:54 <Vorpal> oerjan, you didn't use a bouncer?
21:26:55 * Phantom_Hoover aims the deion beam at Norway
21:26:56 <Vorpal> afaik
21:26:56 <oerjan> also, long live sprocket.nvg.ntnu.no
21:27:02 <Vorpal> or any sort of persistent connection
21:27:07 <oerjan> Vorpal: nope
21:27:12 <Vorpal> oerjan, so...?
21:27:16 <oerjan> you didn't notice me being absent?
21:27:17 <fizzie> I don't think Debian's /etc/sudoers by default even does the "sudo" group, but it's there commented-out.
21:27:29 <Vorpal> oerjan, I noticed you not staying connected while sleeping before
21:27:30 <Phantom_Hoover> oerjan, do you feel at all blesséd?
21:27:30 <oerjan> (when not present)
21:27:33 <Vorpal> if that is what you mean
21:27:47 <Vorpal> oerjan, so why are you using a server for the irc client then
21:27:49 <alise> fizzie: it does
21:27:50 <Vorpal> it makes no sense
21:27:53 <alise> fizzie: without uncommenting
21:28:59 <oerjan> Vorpal: old habits, also my laptop is windows while the server is linux and has irssi
21:29:20 <Vorpal> Fix buffer expansion bug, detected thanks to boost that provided things like:
21:29:20 <Vorpal> virtual int undefine(class grammar_helper<boost::spirit::grammar<boost::detail::graph::dot_skipper, boost::spirit::parser_context<boost::spirit::nil, class grammar<boost::detail::graph::dot_skipper, boost::spirit::parser_context<boost::spirit::nil_t> > *); /* linkage=_ZN5boost6spirit4impl14grammar_helperINS0_7grammarINS_6detail5graph11dot_skipperENS0_14parser_contextINS0_5nil_tEEEEES6_NS0_7scann
21:29:20 <Vorpal> erINS0_10multi_passISt16istream_i */
21:29:21 <Vorpal> XS
21:29:23 <Vorpal> XD*
21:29:25 <oklopol> why do i have this crazy recollection that fizzie said he puts a space after his messages
21:29:26 <oerjan> also the server has my email
21:29:37 <Vorpal> thats from a changelog for dwarves
21:29:40 <fizzie> oklopol: Only after messages that end with a ? mark.
21:29:46 <oklopol> :D
21:29:47 <oklopol> oh
21:29:49 <oklopol> cool
21:29:51 <Phantom_Hoover> oerjan, what are its coördinates?
21:30:08 <alise> you know, unicode shows as a . to oerjan.
21:30:20 <oklopol>
21:30:38 <oklopol>
21:31:20 <pikhq> alise: ô_ô
21:31:20 <Phantom_Hoover> alise, aww
21:31:34 <fizzie> oklopol: For the record, the space was to avoid the "answers all lines that end in a ?" babble-bot.
21:32:12 <fizzie> fungot: Here's a tip if you ever want to be really annoying: try to answer something nonsensical whenever someone asks any question whatsoever, even if you have no idea what it means.
21:32:14 <fungot> fizzie: table 2? 16. this affection,/ organ, in exactly/ same manner, and quite believe you that you are so inclined, i should think at least 2000 feet thick, :) brown argillaceous limestone, in parts :)/ world, by/ heaping up :)/ amount :) work that he accomplished was gigantic and :)/ foul smell which came from them.
21:32:24 <oerjan> Phantom_Hoover: also, occasionally, and occasionally cursed
21:32:26 <Phantom_Hoover> ^style
21:32:26 <fungot> Available: agora alice c64 ct darwin* discworld europarl ff7 fisher ic irc jargon lovecraft nethack pa speeches ss wp youtube
21:32:33 <Sgeo> fungot, I want to have your babies
21:32:34 <fungot> Sgeo: it would appear that there was much greenish-brown pulpy matter. this must be associated with some purplish claystone porphyry, greenstone porphyry, attains a great thickness :) red sandstone; and above this a coarser fnord a total thickness :) these three archipelagoes, all/ forms :)/ same division :)/ system, rather than betray his comrades, would be much aided.
21:32:35 <cpressey> Vorpal: W. T. F.
21:32:40 <fizzie> Darwin just keeps on smiling.
21:32:56 <Phantom_Hoover> oerjan, how blessed to you feel right now?
21:33:43 -!- Jonty has joined.
21:35:20 <oerjan> Phantom_Hoover: not much
21:35:40 <fizzie> oerjan: If somebody told you to sit on an altar, would there be an amber flash?
21:35:52 <Phantom_Hoover> oerjan, damn, I must be aiming at the wrong bit of Norway.
21:35:57 <oerjan> i'm not sure of the exact placement of the server, but i assume it's on NTNU's Gløshaugen campus
21:36:16 -!- MigoMipo has quit (Quit: Quit).
21:36:22 <oerjan> also i'm only in the same city
21:36:36 <oerjan> fizzie: how the heck should i know
21:36:43 <fizzie> http://www.mic-journal.no/ifac/pics/gloshaugen.jpg -- impressive-looking thing.
21:36:59 <Phantom_Hoover> oerjan, damn, ran out of god-flesh.
21:36:59 -!- Gracenotes has quit (Quit: ...).
21:37:37 <oerjan> Phantom_Hoover: i'm not particularly christian so that may not work much
21:37:59 <Phantom_Hoover> oerjan, pah! This is SCIENCE!
21:38:36 <oerjan> fizzie: also why are you giving fungot advice on what he's already a world expert on...
21:38:37 <fungot> oerjan: many carnivorous animals, can doubt that/ sterility is usually much reduced in length, on/ employment :) a man, as good fnord, and evergreen. " 10? 169. ( gardener's chronicle' 1842 page fnord 1855 page 646. in/ autumn my whole time was devoted to shooting chiefly at mr. farrer's notes.
21:38:56 <fizzie> A man, as good fnord, and evergreen.
21:39:04 -!- alise has quit (Ping timeout: 252 seconds).
21:39:08 <cpressey> Darwin was apparently psychotic a good deal of the time.
21:39:20 <fizzie> Yeah, spending a whole autumn just shooting at someone's notes.
21:39:23 <Sgeo> fungot, make love with me!
21:39:24 <fungot> Sgeo: charles darwin to j.d. hooker. down, october 25th, 1881.) nothing can be inferred with certainty from/ following peculiarities :) structure. but as for showing your satisfaction in confounding my experiments, as well as/ so-called haematin used by me, a plausible explanation is afforded :)/ leading phenomena connected with/ act :) display, by/ conditions, and if so what flowers ' :( entomological weekly intelligencer", 18
21:39:42 <Sgeo> fungot is a BORING thing
21:39:42 <fungot> Sgeo: bloom-experiments on. -sleep-movements :) cotyledons. -p. gracilis, dispersal :) seeds.
21:39:54 <oerjan> cpressey: i've read that about Jung, not so much Darwin...
21:39:56 <Phantom_Hoover> It's like a laser, except with Eucharist instead of a flash tube and pictures of Dawkins instead of mirrors.
21:40:19 <cpressey> oerjan: we tried feeding Jung to fungot, but he couldn't keep him down.
21:40:20 <fungot> cpressey: on an egyptian monument. -crosses :). fnord :) fnord would be very good guides as to what to get; but fnord :) moscow, who travelled over europe to see all this.
21:41:51 * Phantom_Hoover returns with the god-flesh.
21:42:15 <oerjan> fizzie: that's the "Hovedbygget" ("Main building"), it's only a small part of the campus though, on the front towards the city. there is also Sentralbygget behind it, with two twin tower skyscrapers.
21:42:16 * Phantom_Hoover fires at Gløshaugen.
21:42:26 <oerjan> and many other buildings.
21:42:42 <oerjan> Phantom_Hoover: as i pointed out, i'm not actually there, just in the same city
21:44:16 <Phantom_Hoover> oerjan, I'm aiming at the server, silly.
21:45:01 <oerjan> cpressey: i saw in the logs you asked about > binary operations, i know at least one called "median algebras", me and Rustad tried to publish an article connected to them but iirc it was rejected twice so we stopped. presumably it seemed too trivial.
21:45:12 <Phantom_Hoover> And in any case, deions repel each other, so the beam spreads out over long distances.
21:45:37 <Phantom_Hoover> Although this could end up fundamentalising all of Gløshaugen.
21:46:08 -!- alise has joined.
21:46:12 <alise> I HATE POLICYKIT
21:46:35 <lament> i hate Elliot Hird
21:46:37 <cpressey> oerjan: I never liked that "trivial" things are rejected by academia :(
21:46:49 <cpressey> MATH NEEDS TO BE HARD!!
21:46:51 <alise> lament: that's okay; as far as I'm aware, he doesn't exist.
21:47:05 <Phantom_Hoover> I hate Eliott Hird!
21:47:24 <oerjan> median algebras have one ternary operation. it's inspired by the usual median operation of 3 numbers (and in a certain technical sense all the algebras are generated by just the {0,1} version, which is similar to how it is with boolean algebras)
21:48:03 <alise> none of us can ever be happy without salt
21:48:06 <alise> discuss
21:48:11 <oerjan> cpressey: i guess we could have got it accepted by aiming lower with the journal, if we'd bothered
21:48:20 <cpressey> alise: eat you this rock
21:48:26 <Phantom_Hoover> alise, depends.
21:48:32 <alise> cpressey: eat this rock I?
21:48:34 <Phantom_Hoover> If you're happy being dead, it's fine.
21:49:14 <zzo38> There is no eat rocks in here
21:49:16 <alise> cpressey: What do you think of BeOS?
21:49:30 <cpressey> oerjan: the only reason i was even going there is because passing a named argument to a function is (in the sense i'm interested in) ternary: function x name x value.
21:49:32 <Phantom_Hoover> It's DISGUSTING
21:50:02 <cpressey> alise: Almost nothing
21:50:16 <oerjan> cpressey: incidentally if you are familiar with the 2-SAT problem (analogous to 3-SAT and higher, but in P), the solutions to a 2-SAT problem form a median algebra
21:50:46 <alise> cpressey: said like a true cardigan
21:50:55 <Phantom_Hoover> Cardigans!
21:51:00 <alise> but remember
21:51:04 <alise> I have eyes ... everywhere.
21:51:28 <cpressey> sounds inconvenient
21:52:03 <Phantom_Hoover> alise, how many fingers am I holding up?
21:52:32 <alise> Phantom_Hoover: one more than you should be.
21:52:46 <Phantom_Hoover> MY GOD
21:53:05 * Phantom_Hoover fires DASER at alise.
21:54:03 <alise> Portcullis of EVIL
21:54:57 <oerjan> cpressey: there are of course heaps of obscure kinds of algebras if one wants to look for them
21:55:08 <cpressey> oerjan: yes, heaps :/
21:55:18 <cpressey> "is it an algebra?" is an uninteresting question
21:55:29 <cpressey> "does it look like an algebra other people care about?" is closer
21:55:46 <cpressey> still might not be interesting, since other people are just other people
21:56:34 <alise> PolicyKit is an obviously great idea done in a way that makes me want to cry.
21:57:28 <Phantom_Hoover> alise, explain the sucking?
21:58:35 <alise> Phantom_Hoover: getting it to ask you for your own password, assuming you're in a given group, to authenticate (like sudo), rather than asking for root's password, is a difficult task.
21:58:54 <alise> for one, they seem to have an XML configuration file that does exactly the same thing as a non-XML directory of configuration files, but they may have removed the former as of very recently
21:58:58 <alise> and it's not clear what you have to do
21:59:00 <alise> at all
22:02:10 <alise> i may just install ubuntu
22:02:38 <cpressey> http://en.wikipedia.org/wiki/Median_algebra ah, majority functions, yes...
22:02:55 <Sgeo> There used to be a time that I'd save every dilbert strip on the site to disk
22:03:42 * oerjan also recalls an operation with the property m(x,x,y) = y = m(y,x,x) for all x,y was important in the theory of algebras (a variety of algebras has commuting congruences iff it has a (possibly derived) operation with that property)
22:04:15 <oerjan> for groups m(x,y,z) = x y^-1 z has that property
22:04:32 -!- lament has quit (Ping timeout: 276 seconds).
22:04:40 <alise> http://www.youtube.com/watch?v=dhh8Ao4yweQ Don Knuth, student mathematician, used an electronic computer to evaluate each player's performance. He was 20. From 1958.
22:05:56 <Sgeo> I love the Torley music!
22:07:48 <alise> i wonder what binary boolean function makes (a&b)|(a&c)|(b&c) simpler
22:08:49 <Gregor> An electronic computer! WOWSA
22:08:54 <Gregor> WELCOME - TO - THE - FUTURE
22:09:01 <Sgeo> Any two out of 3
22:09:08 <Sgeo> How would that be a binary function?
22:09:18 <Sgeo> !a | !b | !c
22:09:24 <Sgeo> Wait, no
22:09:37 <pikhq> Sgeo: I think you want bitwise not.
22:09:50 <alise> I mean, how can you add binary functions to make that trinary function simpler to express?
22:09:59 <alise> (the function being, "are the majority of arguments true?")
22:10:14 <oerjan> a&(b|c)|(b&c)
22:10:27 <pikhq> oerjan wins.
22:10:33 <Sgeo> http://dilbert.com/strips/comic/1996-01-23/
22:11:05 <pikhq> And my eye hurts.
22:11:09 <pikhq> Eth.
22:11:14 <alise> oerjan: cool. that isn't adding a new function, though :-)
22:11:19 <cpressey> distributivity ftw
22:11:23 <alise> also, is that (a&...)|(...) or a&(...|...)?
22:11:32 <Sgeo> pikhq, s/^/S/ ?
22:12:14 <oerjan> & has higher precedence than | in my intuition
22:12:14 <alise> Sgeo: Okay, /why/ has he got his tie-erection?
22:12:32 <alise> oerjan: i always forget which way around higher/lower precedence goes
22:12:34 <Sgeo> There was a strip where his tie was down
22:12:36 -!- Gracenotes has joined.
22:12:44 <oerjan> alise: it's just collecting the first two terms in your expression
22:12:53 * Phantom_Hoover watches alise's video.
22:12:57 <alise> Phantom_Hoover: ?
22:13:00 <alise> oh the knuth one
22:13:05 <alise> *oh, the knuth one
22:13:07 <Sgeo> http://dilbert.com/strips/comic/1991-05-10/ (not the strip with the tie down)
22:13:09 <alise> Sgeo: Scott Adams does it on purpose
22:13:16 <Phantom_Hoover> 50,000 instructions per *minute*
22:13:21 <alise> for the Freudian meaning
22:13:30 <alise> perhaps only as of late, though
22:13:44 <Sgeo> Only as of late for the Fruedian meaning?
22:13:50 <alise> yes, quite possibly
22:13:55 <Sgeo> Dilbert's tie has been like that since um
22:13:56 <alise> since that strip seems to imply it's always up in older strips
22:14:29 <alise> hmm
22:14:30 <alise> In nearly every strip, Dilbert's tie is curved upward. While Scott Adams, the creator of the Dilbert comic strip, has offered no definitive explanation for this, he has explained the tie at least as a further example of Dilbert's lack of power over his environment. A second explanation given by Adams in the Dilbert FAQ is that "he is just glad to see you". Adams has also hinted that the tie may be displaying an aversion to him. Additionally, in Seven Years
22:14:30 <alise> of Highly Defective People, Adams wrote: "Many readers asked me to allow Dilbert to lose his innocence with Liz, so to speak. But I didn't see any way I could do that in a comic strip and get it past the editors. So I developed a secret sign. I told the people who receive the Dilbert newsletter that if Dilbert ever got lucky with Liz, I would draw his normally upturned necktie flat one day." The flat-necktie strip was printed on August 9, 1994, in which Dog
22:14:32 <alise> bert suspected that Dilbert had gotten lucky; ironically, the tie was shown flattened after Liz stated she didn't believe in fornication (Dogbert wondered if Dilbert, who was acting oddly serene, had discovered religion; Dilbert said he "thought he was Unitarian").[4] In another strip, Dilbert met Antina, an overly masculine female coworker who caused his tie to flatten and point downward, strengthening the idea of the tie being a phallic symbol[citation ne
22:14:37 <alise> eded] (Adams himself has said that he does not know what it means). Sometimes when Dilbert is surprised, scared, or has been beaten up, his tie goes straight. A series once went on about his tie, during which Dogbert attempts to find out. He tries having Ratbert eat one of the ties, theorizes that it has an aversion to him, and eventually gave up after a discussion with the garbageman.
22:14:45 <Sgeo> http://dilbert.com/strips/comic/1994-08-09/
22:14:50 -!- hiato has joined.
22:15:24 -!- hiato has quit (Client Quit).
22:15:41 -!- alise has quit (Remote host closed the connection).
22:20:02 -!- alise has joined.
22:20:56 <alise> Is it just me, or does Debian always seem like a pre-alpha version of Ubuntu with all the branding removed?
22:22:06 <cpressey> snazzy red spiral
22:22:07 <fizzie> Depends on what your "always" means, perhaps. Certainly it wasn't like that earlier.
22:22:25 -!- zzo38 has quit (Remote host closed the connection).
22:22:58 <alise> fizzie: well, certainly at least for a year or so
22:23:23 <fizzie> Possibly, maybe. I haven't really been following Debian on Desktop lately.
22:23:32 <alise> I thought you used it.
22:23:35 <Vorpal> since always refers to an infinite period of time
22:23:41 <Vorpal> and alise now defined always as one year
22:23:59 <Vorpal> that means, the following year will last forever
22:24:16 <Vorpal> hm
22:25:06 -!- FireFly has quit (Quit: swatted to death).
22:25:32 -!- FireFly has joined.
22:25:45 <alise> Or maybe fizzie uses Debian on desktop with his eyes closed, so he doesn't inadvertently see changes.
22:26:02 -!- ais523 has quit (Remote host closed the connection).
22:26:21 <alise> I wouldn't mind Ubuntu at all, really; just the audio thing.
22:26:40 <fizzie> alise: I *think* I've been an Ubuntist on this workstation-box for at least a year now, but I might be wrong. Still Debian everywhere else. Can't say I noticed any heavy "Ubuntu -> Debian" borrowing going on, but I might just be unobservant.
22:27:00 <alise> fizzie: Oh, I'm not saying they literally borrow things; just that nothing seems to stick together properly.
22:27:20 <alise> It's ... unpolished, which makes you wonder what the hell their patches do.
22:27:50 <alise> fizzie: Oh, and they've taken Ubuntu Software Centre wholesale, renamed it Software Centre, and stuck it in System → Administration.
22:28:06 <alise> Conclusion: Debian on the desktop - not compelling.
22:28:18 <fizzie> Can't say I noticed that especially well either, but then again I might not be quite using anything that should "stick together". I mean, I had X, and distinct programs in there, and did most of the stuff in a terminal. It's hard to screw *that* up.
22:28:19 <alise> Haha! It still says Ubuntu Software Centre in the manual.
22:28:23 <alise> Oh testing, how little you try.
22:28:41 <alise> fizzie: Well, the administration programs with their authentication and whatnot.
22:29:06 <fizzie> Don't know, I haven't seen any authorization prompts anywhere.
22:29:39 <alise> I just wish Ubuntu/Flash worked properly with AV sync.
22:29:49 <alise> Ubuntu/Flash/OSSv4 works, but Ubuntu has zero OSS support.
22:30:08 <alise> Gregor: Here, you use sidux. Is the integration any better?
22:30:15 <cpressey> Rebranding open-source software, now there's a vocation.
22:30:30 <Gregor> alise: With OSS? Screw OSS :P
22:31:06 * Sgeo leaves gmail open so he can receive calls
22:31:09 <alise> Gregor: Not OSS, no.
22:31:16 <alise> Gregor: Although OSSv4 is fucking awesome.
22:31:34 <cpressey> anyone here know autoconf and friends?
22:31:40 <alise> It's like ALSA except without all the crap, lots of fancy stuff, and excellent latency.
22:31:59 <alise> Gregor: I mean with the desktop environment. For instance: PolicyKit. Can I make everything just work sudo-style?
22:32:17 <cpressey> alise: Oh, I wasn't asking for *that* reason.
22:32:27 <Gregor> alise: It's Debian. You go console. For everything. That's how I roll.
22:32:35 <cpressey> I was seeing who here was just that mental.
22:32:41 <alise> Gregor: So, are you running X11 right now?
22:33:09 <Gregor> alise: Yes, yes I am :P
22:33:20 <alise> Gregor: And are you running KDE?
22:33:23 <Gregor> Hell no
22:33:30 <alise> Gregor: You sure as hell used to.
22:33:35 <Gregor> KDE4 sucks arse.
22:33:37 <Gregor> KDE3 was good.
22:33:47 <alise> I wonder how one actually *sucks* arse.
22:33:57 <Gregor> Very carefully.
22:34:25 <fizzie> A straw may be involved.
22:34:34 <alise> It doesn't sound particularly erotic.
22:34:55 <Gregor> KDE4 is not an erotic desktop environment.
22:34:58 <Gregor> Just a terrible one.
22:35:02 <fizzie> Well, you know, to each his/her/its own.
22:35:06 <alise> SexDE
22:36:37 <fizzie> There used to be man pages for "sex" and "lsd" and some third thing like that on some system, I forget which.
22:37:03 <alise> man sex
22:37:33 <fizzie> Examples of both seem to still be in the interwebs. Also, man 1 lsd has a non sequitur "The output device is assumed to be 80 columns wide." at the end.
22:39:14 <alise> xD
22:39:23 -!- nooga has joined.
22:39:24 <oerjan> non sequitur? i hardly know her!
22:39:26 <oklopol> erm you suck arse by applying suction to it with your mouth
22:39:53 <Sgeo> http://dilbert.com/strips/comic/2008-04-02/
22:40:00 <oklopol> only a weirdo would think that's not erotic
22:40:01 * Sgeo vaguely wonders what pre-Dust Puppy UF was like
22:40:19 <fizzie> Sgeo: Why not link to the more human-friendly http://dilbert.com/fast/2008-04-02/ instead?
22:40:30 <Sgeo> fizzie, laziness?
22:40:34 <Sgeo> Forgetfullness?
22:41:07 <fizzie> But it's just a string substitution. You must really be the lazy.
22:41:46 <alise> Sgeo: exactly like it is now
22:41:51 <Sgeo> I forgot that some people might prefer it
22:41:54 <alise> "/etc/trips is a log of system-wide use of lsd since booting." ;; that's non-FHS, sheesh!
22:41:59 <cpressey> the 'fast' url seems to go to *today*'s strip
22:42:04 <alise> cpressey: does not
22:42:19 <cpressey> no... my browser is insane, is all
22:42:22 <alise> Sgeo: every human prefers it.
22:42:22 <oerjan> alise: FHS?
22:42:30 <alise> oerjan: file hierarchy standard
22:42:34 <alise> in the lsd(1) manpage
22:42:39 * Sgeo likes reading the comments
22:42:42 <cpressey> no... i got the url wrong and it seems to assume i want today's strip
22:42:59 <cpressey> see, that is why you be lazy for strin substitutions. easy to fail.
22:43:12 <fizzie> Isn't it file*system* hierarchy whatevers? (Pick, pick, pick the nit.)
22:43:22 <alise> fizzie: er right
22:44:11 -!- SgeoN1 has quit (Quit: Bye).
22:44:43 <cpressey> http://dilbert.com/strips/sojdohehisnbond/
22:46:13 <fizzie> The non-fast versions seems to have gotten more sensible, though. Wasn't it completely flash-driven at some point?
22:46:29 <alise> Yes.
22:47:00 <fizzie> Now it seems to work without scripts and everything, it's just a bit more graphically intensive and so on.
22:48:54 <cpressey> If there's anything sweeter than recursive make it's gotta be recursive configure.
22:48:58 <nooga> i always imagine alise as dogbert
22:49:41 <fizzie> Recursive autogen.
22:50:25 <fizzie> (I must've meant autoconf or autoreconf or something; I can't even recall what autogen exactly does.)
22:51:57 <cpressey> Maybe autogen could be the busybox of the auto* tools. It's a single script that does everything depending on what it's called
22:52:04 <cpressey> script, program, whatever
22:52:10 <alise> autogen regenerates configure, iirc
22:52:14 <alise> from configure.ac
22:52:17 <cpressey> thought that was autoconf
22:52:24 -!- augur has joined.
22:53:05 <cpressey> well it's done now at least, but ff is still greyed out
22:53:17 <nooga> cpressey would be someone like Moss from IT Crowd
22:53:38 <cpressey> nooga: I've never seen it
22:53:58 <nooga> cpressey: http://cutr.pl/0f72992d5f
22:54:15 * Phantom_Hoover finally realises it's 9/11
22:54:25 <Sgeo> http://dilbert.com/fast/2004-01-29/ angry Asok is awesome
22:55:22 <nooga> fizzie -> http://www.eaea.org/uploadkuvat/eaea/johanni08.JPG
22:55:39 <nooga> Gregor is Gregor
22:55:40 <cpressey> nooga: i'm not sure what to think of that
22:56:04 <nooga> please do not be offended
22:56:12 <cpressey> no, not at all
22:56:28 <alise> REDNECK BEETLE!
22:56:44 <alise> <nooga> cpressey would be someone like Moss from IT Crowd ;; naw
22:56:51 <alise> cpressey's too chilled
22:57:11 <Gregor> I apparently don't have a picture :P
22:57:17 <alise> <nooga> fizzie -> http://www.eaea.org/uploadkuvat/eaea/johanni08.JPG ;; I don't see the beard
22:57:21 <alise> Gregor: You look like Gregor
22:57:25 <alise> haha
22:57:28 <alise> i didn't even read nooga's line
22:57:34 <nooga> Gregor: https://codu.org/hats.php
22:57:39 <alise> Gregor is the only self-representing person in here
22:57:42 <Gregor> nooga: :P
22:57:52 <nooga> and me... hmmm
22:58:03 <Gregor> Yup. I'm me. And cpressey is actually named Bob Farber and ais is actually Chuck Melontoast.
22:58:27 <alise> oh, ais is ais too
22:58:57 <alise> nooga i basically imagine as a polish window-cleaner except with his hand on his chin, pondering
22:59:16 * oerjan is probably Ratbert
22:59:47 <alise> oerjan looks like this: http://www.knowledgerush.com/wiki_image/thumb/c/c1/200px-Edsger_Dijkstra_large.jpg
22:59:53 <alise> except younger
22:59:58 <alise> and with a less-jutting-out chin
23:00:12 <alise> and he speaks with his mouth always slightly wider than most people would
23:00:13 <nooga> alise: well
23:00:13 * Phantom_Hoover doesn't know who he should be
23:00:28 <nooga> 23:59 < alise> oerjan looks like this: ...
23:00:31 <nooga> that's it!
23:00:50 <alise> our personification algorithms are incredibly similar.
23:00:53 <Gregor> Argh uploading so slow.
23:01:03 <oerjan> alise: i think that's about as far from me you can get and still have a white male
23:01:06 <fizzie> alise: I do am a bit beardy. There was a recent-ish photo somewhere, but I seem to have misplaced it. (Maybe that's a good thing.)
23:01:23 <alise> A lot of people do am a bit beardy.
23:01:30 <nooga> alise: hmmm, well, i guess all englishmen have quite simmilar image of polish ppl :F
23:01:43 <alise> nooga: i was joking
23:01:43 <fizzie> oerjan: You must be confused: the picture looks somehow oerjany. Are you sure you know what you look like?
23:01:53 <Sgeo> http://dilbert.com/fast/2002-09-23/
23:01:56 <nooga> then CTO http://cutr.pl/bbdb2f7187
23:01:57 <nooga> :D
23:02:07 <alise> See, we all match oerjan's personality with that picture of Dijkstra!
23:02:07 * Phantom_Hoover imagines nooga to be a lump of white confectionery.
23:02:23 <alise> nooga: is that you?
23:02:24 <oerjan> fizzie: well i'm blond, don't have glasses, am always clean shaven, and haven't worn a tie in years.
23:02:29 <nooga> alise: yeah
23:02:30 <alise> that doesn't look like how you look at all.
23:02:32 <alise> stop lying
23:02:39 <nooga> i'm not lying ;f
23:02:55 <alise> LIAR
23:03:01 <alise> "64-bit - Not recommended for daily desktop usage"
23:03:04 <alise> why does Ubuntu say that, I wonder...
23:03:05 <nooga> the photo was taken in a museum, in Edinburgh
23:03:38 <Gregor> I'm blond, don't have glasses, am rarely clean shaven but still have no facial hair, and wear a tie frequently!
23:03:38 <Phantom_Hoover> nooga, when were you in Edinburgh?
23:03:57 <alise> fuck ubuntu's download page
23:03:59 <nooga> in April, AFAIR
23:04:01 <alise> it doesn't let you copy a link
23:04:10 * Phantom_Hoover has brown hair and no glasses
23:04:12 <cpressey> alise: first guess: not too stable. (But then -- continual *server* usage would be a better fit? uh...)
23:04:18 <alise> cpressey: ?
23:04:32 <cpressey> < alise> "64-bit - Not recommended for daily desktop usage"
23:04:35 * Phantom_Hoover imagines #esoteric Guess who.
23:04:38 <alise> ah
23:04:40 <alise> it's very stable
23:04:49 <cpressey> then i have no idea either
23:04:51 <alise> it just doesn't support flash without a sucky wrapper, but flash sucks on linux anyway
23:04:59 <nooga> true
23:05:01 <alise> and the wrapper is auto-installed
23:05:40 <alise> ubuntu-10.04.1-desktop-amd64.metalink
23:05:41 <alise> awesome
23:05:45 <alise> time to go beyond my maximum connection speed
23:06:23 <nooga> oerjan -> http://cutr.pl/6960e3c6aa
23:06:25 <fizzie> There used to be Skype issues on 64-bit linux, but I guess that might be outdated information too.
23:06:36 <nooga> aww, no glasses, right
23:08:02 <alise> http://cutr.pl/6960e3c6aa ;; not oerjan :P
23:08:23 <alise> 900 KiB/s, oh yeah.
23:08:30 <alise> On an 800-and-a-bit KiB/s connection.
23:08:45 <Phantom_Hoover> alise, explain...?
23:09:02 <nooga> pfft
23:09:08 <alise> aria2 downloads from five bajillion HTTP servers simultaneously as well as bittorrent with DHT
23:09:10 <nooga> i've got 1.6MiB atm
23:09:21 <alise> with an appropriate metalink file to specify them all
23:09:24 <Vorpal> <cpressey> < alise> "64-bit - Not recommended for daily desktop usage" <-- where does it say that
23:09:27 <nooga> /s
23:09:32 <alise> result: your connection gets faster than your top speed with e.g. HTTP
23:09:34 <alise> Vorpal: on the download page
23:09:42 <Vorpal> alise, download page for debian?
23:09:44 <Vorpal> 64-bit linux works very well for desktops these days
23:09:46 <alise> ubuntu.
23:09:49 <alise> no shit sherlock.
23:09:50 <Vorpal> ah
23:09:53 <alise> i just said that
23:09:54 <oerjan> Gregor: i think my hair is somewhat lighter than yours
23:10:02 <Gregor> Almost certainly.
23:10:09 <Vorpal> alise, there is of course every now and then the flash issue. But that's all.
23:10:13 <Gregor> My hair is about as dark as it gets while still being pseudo-reasonable to call it "blond"
23:10:56 <Vorpal> hm comparing hair colours?
23:11:08 <Vorpal> I beat you both: my hair is dark brown
23:11:18 <nooga> i've got read beard!
23:11:19 <alise> dark enough brown that most people think it's black.
23:11:21 <Gregor> Vorpal: Hair LIGHTNESS is the winning condition :P
23:11:21 <nooga> red****
23:11:22 <nooga> \fffff
23:11:23 <alise> i win
23:11:25 <alise> READ BEARD
23:11:26 <Gregor> nooga: I'll read your beard.
23:11:26 <Vorpal> Gregor, nah
23:11:30 <alise> ok brb
23:11:31 <nooga> read it!
23:11:38 <Vorpal> nooga, red natural?
23:11:41 <Vorpal> or coloured?
23:11:44 <Vorpal> if natural, you wil
23:11:46 <Vorpal> win*
23:11:51 <nooga> natural
23:11:55 <Vorpal> then you win
23:11:59 <fizzie> Is this the "have a bucket of red paint, then ask 'do you want your beard read?'" joke?
23:12:05 <Gregor> nooga: #FF0000?
23:12:16 <nooga> not exactly ;f
23:12:17 <fizzie> #F00 is shorter!
23:12:21 <nooga> f00
23:12:25 <Vorpal> Gregor, for some reason my beard is a lighter brown than the hair on the top of my head
23:12:45 <Gregor> Vorpal: I have a friend with brown hair on his head and red/orange facial hair.
23:13:05 <Vorpal> Gregor, #f00 isn't enough to describe it. It is so red it lies outside sRGB
23:13:18 <Gregor> Vorpal: WOW!
23:13:26 <Vorpal> :D
23:13:43 <Gregor> Vorpal: It's so red that the surrounding environment looks grey due to the cones in your eyes burning out.
23:13:46 <Vorpal> Gregor, I believe Adobe Wide Gamut covers it
23:13:58 <fizzie> Monochromatic hair.
23:14:37 <Vorpal> http://en.wikipedia.org/wiki/Wide_Gamut_RGB_color_space
23:16:18 <Vorpal> fizzie, hm?
23:16:21 <Vorpal> what do you mean by that
23:17:30 <fizzie> Single wavelength (let's say 700 nm, that's stereotypically red) reflected, won't get very much redder than that.
23:17:44 <Vorpal> fizzie, lies outside of sRGB I presume?
23:18:01 <cpressey> it's a beard-laser
23:18:23 <Vorpal> cpressey, so the light reflected from it is coherent?
23:18:26 <Vorpal> how does that work
23:19:06 <fizzie> It's seems that the wide gamut RGB red primary is pretty much that.
23:19:13 <nooga> uhhhhhhhhhhh
23:19:17 <Vorpal> fizzie, ah
23:19:23 <Vorpal> nooga, ?
23:19:59 <Vorpal> fizzie, I want a wide gamut display. With 16-bit per channel or better of course
23:20:03 <Vorpal> and a GPU that supports that
23:20:06 <Vorpal> would be awesome
23:20:12 <nooga> i can't drive to the gas station to buy some cola to drink vodka with that cola
23:20:21 * oerjan would generally expect the primary colors of RGB to be pure spectral...
23:20:25 <Vorpal> nooga, oh?
23:20:35 <Vorpal> and why would anyone mix cola with vodka?
23:20:43 <nooga> not mix ;F
23:20:52 <nooga> vodka first and then cola
23:20:55 <Vorpal> well, why would anyone drink vodka at all
23:21:10 <nooga> i feel completely sober, but who knows
23:21:20 <Vorpal> oerjan, um RGB is not a precise word in this context. Do you mean sRGB?
23:21:23 <Vorpal> or some other RGB?
23:21:51 <Vorpal> nooga, solution: don't drink alcohol. Then you can drive whenever you want. :P
23:21:56 -!- augur has quit (Ping timeout: 276 seconds).
23:21:58 <oerjan> Vorpal: i'm making an argument from ignorance here, so obviously i don't have a clue about that
23:22:06 <nooga> i can walk to that station, it's just 300m
23:22:07 <Vorpal> oerjan, ah
23:22:17 <Vorpal> nooga, OR avoid alcohol :P
23:22:26 <nooga> but i'm thirsty
23:22:31 <Vorpal> nooga water?
23:22:38 <fizzie> On the other hand, possibly (with advanced enough fake-science) you could have some sort of hair that does *very* accurate eye-tracking, and reflects photons aimed at the three (or four, for some people) different types of cone cells in the proper proportion to get the color that (according to subjective tests) is perceived the most "red" by a large sample of viewers.
23:22:45 <nooga> Vorpal: boring
23:23:09 <Vorpal> fizzie, what? Really?
23:23:29 <Vorpal> fizzie, oh is this one of those "imaginary" colours?
23:23:34 <fizzie> Vorpal: With fake-science, anything's possible!
23:23:52 <fizzie> Nothing imaginary about this one, though.
23:23:57 <Vorpal> fizzie, hm
23:24:09 <Vorpal> fizzie, couldn't you just paint it in such a colour
23:24:19 <Vorpal> avoiding the need for eye tracking
23:25:07 <oklopol> Vorpal: have you been drunk?
23:25:08 <fizzie> It's not so easy; even with a single-wavelength color, you still get responses from all three types of cone cells, just at different levels. But if you direct your photons directly at them, you can put out any sort of distribution you want.
23:25:16 <Vorpal> oklopol, no
23:25:27 <oklopol> and you wonder why people do it?
23:25:35 <cpressey> fizzie: lol
23:25:41 <oklopol> that's like asking people why they've ever opened their eyes when they have a perfectly good hearing
23:25:47 <Vorpal> fizzie, likely not practically possible?
23:25:52 <Phantom_Hoover> nooga, wait, which Edinburgh museum were you in?
23:25:59 <oklopol> and that's fucking stupid
23:26:24 <nooga> Phantom_Hoover: National Museum of Scotland
23:26:25 <fizzie> Vorpal: Well, not practically possible now. Might be easier to just hook into the optic nerve anyway, instead of trying to aim at the cones.
23:26:54 * cpressey summons Qualia: Redness
23:27:06 <Phantom_Hoover> nooga, when?
23:27:50 <fizzie> Incidentally, it *would* be interesting to see what it would look like if you'd somehow get something that causes only a single cone cell type to respond.
23:27:50 <nooga> Phantom_Hoover: April
23:28:20 <Phantom_Hoover> nooga, so after they closed all the cool bits for renovation?
23:29:08 <Phantom_Hoover> fizzie, that's kind of possible with those weird little afterimages you get.
23:29:10 <Vorpal> fizzie, hah
23:29:36 <nooga> Phantom_Hoover: yep, I can remember that there was a renovation then
23:29:56 <fizzie> "Photobleaching can be used to determine cone arrangement. This is done by exposing dark-adapted retina to a certain wavelength of light that paralyzes the particular type of cone sensitive to that wavelength for up to thirty minutes from being able to dark-adapt making it appear white in contrast to the grey dark-adapted cones when a picture of the retina is taken." Heh, they do the strangest stuff.
23:30:31 <Phantom_Hoover> I suspect the cool bits will not be cool once they finish with it.
23:30:36 <Phantom_Hoover> *them
23:31:08 <nooga> i used all of the interactive contraptions for kids
23:31:43 <nooga> priceless
23:32:57 <Vorpal> fizzie, how does it look like for the person in question
23:33:07 <Vorpal> fizzie, that was subjected to it
23:33:50 <fizzie> Vorpal: The abstract doesn't say, and they might even not have asked.
23:34:07 <fizzie> "To read this story in full you will need to login or make a payment (see right)."
23:34:20 <Vorpal> hm
23:34:47 <fizzie> Heh, adding the university proxy worked again. Still, I doubt they asked for subjective things there.
23:34:51 <Vorpal> fizzie, this looks extremely different: http://en.wikipedia.org/wiki/Photobleaching
23:37:57 <fizzie> The article talks about "bleaching"; I don't know enough on how the cells in the eye work to be able to guess if it's the same process or not.
23:40:41 * Phantom_Hoover ponders on the practical applications of god-flesh manipulation
23:41:03 <fizzie> "What are the implications of this arrangement for vision? The coarse grain of the cone submosaics causes fluctuations in the colour appearance of tiny, monochromatic light flashes because the relative excitation of different cone classes depends on the location of the flash. A related illusion is Brewster's colours, the perception of irregular patches of pastel colour while viewing periodic black and white patterns of high spatial frequency. Similarly, red-gre
23:41:04 <fizzie> en isoluminant gratings with spatial frequencies above the resolution limit look like chromatic and luminant spatial noise."
23:41:13 <fizzie> Heh, the eye's just a badly designed digital camera.
23:41:52 <Phantom_Hoover> Tell us something we don't know.
23:42:44 <Phantom_Hoover> "Hey Jesus, where'd you put those nice plans for the eye we used for squids?" "Damn, I lost them. Ah, just throw in any old crap."
23:46:50 <fizzie> Their main point seems to be that the two longer-wavelength cells aren't randomly splattered here and there, but instead occur in contiguous-ish clumps; "Although the existence of these patches indicates that the trichromat may sometimes misjudge the colour appearance of tiny objects, the patches will be beneficial in recovering high-frequency luminance patterns, because cortical neurons tuned to high spatial frequency are more likely to be fed by contiguous co
23:46:50 <fizzie> nes of the same class."
23:47:47 <fizzie> Sooner or later I'm sure we'll be replacing the boring old eyes with all sorts of augmentations.
23:47:59 <Phantom_Hoover> Hmm, maybe I could make a deion transfer network and give everyone a constant supply of holiness!
23:53:53 <Sgeo> http://dilbert.com/blog/entry/shape_shifters/
←2010-09-10 2010-09-11 2010-09-12→ ↑2010 ↑all