00:00:07 hmm it would be nice to have a word like 00:00:09 Gregor: Avoiding the FUCKING CRAZINESS that is EITHER COAST. 00:00:11 "not- X" -> "X not" 00:00:12 e.g. 00:00:14 not- empty? 00:00:17 for obvious reasons 00:00:24 cpressey: The west coast is AWESOMESAUCE 00:00:58 Gregor: I disagree strongly 00:01:08 I might not be that great at recognizing bad fiction, but this movie's horrible 00:01:16 cpressey: Exclude California! 00:01:18 also basic stack words like swap should be something like ~ 00:01:25 cpressey: The pacific northwest is where the awesomesauce is! 00:01:26 to avoid cluttering code up 00:02:12 Factor has stuff like keep 00:02:18 [ somepoppyword ] keep 00:02:26 And bi and tri 00:02:31 But yeah, I think I agree 00:02:32 Sgeo: [ x ] keep is just dup x though 00:02:41 unless it keeps all dropped 00:02:44 -!- Phantom_Hoover has joined. 00:02:47 in which case it's a bit more i guess 00:02:55 I don't think it keeps all dropped 00:03:02 Gregor: Suck it up if you like, but I left Seattle, and am never, ever going back. 00:03:08 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 : loop [read-packet empty? not] [handle-packet] while ; 00:03:11 (it = the "awesomesauce") 00:03:13 which is lovely 00:03:25 oklopol, a hatheist is a concerted attempt to steal a hat, much like a bank heist. 00:03:40 ~ as swap is definitely nice though 00:03:43 : handle-packet "Received: " ~ cat print ; 00:03:47 cat for concatenate, ofc 00:04:09 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 : ~ ( x y -- y x ) swap ; 00:04:37 Sgeo: i'm talking about language design 00:04:42 that's like saying "oh, I can make Lisp do that" 00:04:45 Gregor: http://www.sciencedaily.com/releases/2010/04/100422184040.htm 00:05:01 cpressey: [hi5] 00:05:17 : connect ... ; 00:05:17 : read-packet 4096 bytes read ; 00:05:17 : handle-packet "Received: " ~ cat print ; 00:05:17 : loop [read-packet empty? not] [handle-packet] while ; 00:05:17 : run connect loop ; 00:05:44 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 (yes, so [...] is syntax there; i don't give a shit) 00:06:23 (it's not like it's stopping you reading word-by-word) 00:07:03 ("..." too) 00:07:20 ... is syntax? 00:07:25 And not just pseudoness? 00:07:37 Oh, the quote marks 00:07:39 >.> 00:08:31 Factor: 00:08:39 : until [ [ not ] compose ] dip while ; 00:08:40 -!- Phantom_Hoover_ has joined. 00:08:41 Gregor: You think Chicago is a cultural wasteland? 00:08:43 AliseCat: 00:08:46 : until [: not o] dip while ; 00:08:49 I WIN HAHAHA 00:08:56 cpressey: Oh, Chicago. Well, OK, that's borderline tolerable. 00:08:59 I don't really need : 00:08:59 : until [[not] o] dip while ; 00:09:00 I just knew "midwest" :P 00:09:48 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 But not "negate"; that's too ambiguous. 00:10:12 Yeah, God forbid I was in Minneapolis or Madison or Cleveland or Indianapolis. 00:10:19 later. 00:10:21 -!- cpressey has quit (Quit: Leaving.). 00:11:18 hmm, maybe -not is nice 00:11:21 e.g. [empty?] -not 00:11:28 Even reminiscent of "Yeah, it's empty. NOT." 00:11:44 -!- Phantom_Hoover has quit (Ping timeout: 276 seconds). 00:11:52 hmm, is there a name for the relationship between if/unless, while/until, etc.? 00:12:14 Useless? 00:12:16 >.> 00:12:23 I mean in the English language. 00:12:27 And no, they are not. 00:12:34 -!- Wamanuz4 has joined. 00:12:43 I would have thought someone enamoured with Factor would have appreciated the readability of code in a relatively natural style. 00:13:18 I still have yet to get any practice with Factor >.> 00:13:35 Also, it's only really readable sometimes 00:13:45 Things life if are annoying 00:15:36 [ whendoesthishappen ] [ whendoesthisotherthinghappen ] if ! OH!!! 00:16:30 ...? 00:16:38 -!- Wamanuz3 has quit (Ping timeout: 272 seconds). 00:16:53 Sgeo: what does Factor call w? [x] w -> swap x swap 00:17:17 mixing natural languages with programming ones != natural, but instead ugly and impure 00:17:43 I _think_ dip, hold on 00:17:53 that's not dip 00:17:54 dip is a fucking stupid command 00:17:59 [x] dip -> drop x undrop 00:18:00 keep? 00:18:05 -!- olsner has joined. 00:18:06 i don't see how it's keep 00:18:06 Wait 00:18:10 hold on 00:18:12 [x] keep -> dup x afaik 00:18:16 oklopol: dip is awesome 00:18:26 awesomeness is a retarded concept 00:19:01 I don't know if it has a combinator like that 00:19:16 don't even get me started on combinators...... 00:20:30 wait what was dip again? 00:20:40 i didn't read the word until now 00:20:54 oklopol: basically you have your stack A B C D 00:20:56 D on top that is 00:20:58 [x] dip 00:21:01 x see sthe stack as 00:21:03 A B C 00:21:06 *sees 00:21:08 and say replaces C with C' 00:21:10 right 00:21:10 and it ends with 00:21:12 A B C' D 00:21:18 i.e. drop x undrop 00:21:21 or in more sane terms 00:21:27 send-to-other-stack x bring-from-other-stack 00:21:28 IDEA FOR MOON SERVER: 00:21:43 There's a word "with" that I don't understand 00:21:48 Power things with Stirling engines from the cooling! 00:22:15 apparently [ A ] with B === swap [ swap A ] curry B 00:22:21 that's not very helpful though. 00:22:27 ah hmm 00:22:35 2 { 1 2 3 } [ - ] with map . 00:22:44 a bit ... strange ... 00:22:50 curry? 00:23:11 erm applies multi-arg func to one arg i guess? 00:23:21 oklopol: yes 00:23:21 curry takes an object and a quot and makes a quot(-like) that includes the object 00:23:31 5 [ . ] curry ---> [ 5 . ] 00:23:38 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 Sgeo: you forgot map 00:26:06 so oklopol! clearly you know lots about language 00:26:17 what is the name for the relationship between if/unless, while/until, and so forth? 00:26:19 That bit's confusing, trying to take it one step at a time 00:27:44 alise, I suspect those relations are at least partly a construct of CS. 00:28:26 Phantom_Hoover_: No... 00:28:28 They're clearly opposites. 00:29:00 Hmm 00:29:57 But "opposite" is not very specific. 00:31:01 Phantom_Hoover_: Instead, figure out a good name for the word that composes not onto a word! 00:31:08 Call them inversions, it's a nice-sounding word. 00:31:15 Also very overloaded already. 00:31:19 That is, "[empty?] -not" === "[empty? not]". 00:31:23 alise, antonyms, perhaps? 00:31:30 Phantom_Hoover_: No, I mean, rename "-not". 00:31:58 "ant", short for "antonym"; then no-one can understand it. "[empty?] ant". 00:34:34 Perhaps "anti", but ehh. 00:35:07 Why not: "[empty?] oh-no". 00:35:07 : until [-not] dip while ; 00:35:11 : until [anti] dip while ; 00:35:14 I'm not sure which is better. 00:35:23 : until [oh-no] dip while ; 00:35:42 no :P 00:35:53 : until [oh-no-you-don't] dip while ; 00:36:06 : unless [not] dip if ; 00:36:06 : until [anti] dip while ; 00:36:12 "Are you saying no just to be negative?" 00:36:12 I guess I don't like how not and anti are so different-looking. 00:37:42 combinator languages are "lexically rich" 00:37:48 negate is the obvious choice, but... 00:37:50 it's so LONG! 00:37:56 and also 00:37:59 3 negate ==> ERROR 00:38:03 which is a bit confusing 00:38:11 cpressey_: in what sense? 00:38:23 "nada". 00:38:36 alise: you have umpteen words to juggle the arguments the way you need 00:38:46 cpressey_: like Lojban! 00:39:07 ~ is definitely a nicer name than swap though imo 00:39:09 fizzie: Come come elucidate your thoughts. 00:39:18 : handle-packet "Received: " ~ cat print ; 00:39:57 * Phantom_Hoover_ ← sleep 00:40:18 alise: Is that Factor? 00:40:44 I should check it out but I have so many languages of my own to design 00:41:16 cpressey_: No, it's "alise's cat"! 00:41:23 Which is UNRELATED TO THE "CAT" CONCATENATIVE LANGUAGE 00:41:56 omg cnfused 00:43:40 : handle-packet "Received: " swap append print ; 00:43:41 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 is the Factor 00:43:42 or something 00:43:59 Define 1. 00:44:06 1 is the quoted hole. 00:44:17 -!- Phantom_Hoover_ has quit (Ping timeout: 245 seconds). 00:44:25 so e.g. a symbol or what? 00:44:27 1*x = x because putting anything in the hole is that thing. 00:44:43 Or, it's like the identity function. f(x)=x 00:45:52 -!- cpressey_ has changed nick to cpressey. 00:46:45 Wat. 00:47:23 well, nothing important; it will probably only make sense in context, which I'm trying to write up 00:49:19 (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 holes within holes and things 00:50:06 named holes (actually i've been there before) 00:50:18 no more groups plz :-p 00:50:21 ternary operators (don't know how to even begin abstract algebra on those) 00:50:22 etc 00:50:25 slaep -> 00:50:45 oklopol: killjoy! goodnight 00:50:56 there aren't really any algebras with > binary ops afaik 00:51:11 yeah, didn't think so 00:51:13 i mean ones that have been named 00:51:24 or rsrchd 00:51:26 -> 00:51:33 pizza -> 00:54:14 named holes (actually i've been there before) ;; DOESN'T EVERYONE NAME THEIR HOLES 00:55:43 Irritator is a genus of dinosaur :-D 00:55:56 [[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 [[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 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:16 cpressey: HELP ME DESIGN MY LANGUAGE BY MAKING MY HYPOTHETICAL CODE BETTER 00:59:18 ...Or perish. 00:59:32 http://pastie.org/1151189.txt?key=rwbueifvabdyjmxseyiuua 00:59:45 alise: hyperthetiwhat? 00:59:52 http://pastie.org/1151189.txt?key=rwbueifvabdyjmxseyiuua 00:59:53 That 01:00:19 well i certainly wouldn't want to perish 01:00:50 alise: ... OR DIE! 01:00:55 Perish ... OR DIE! 01:01:04 How is it bad? 01:01:26 alise: it looks like forth 01:01:32 exactly like forth 01:01:38 olsner: no it doesn't 01:01:39 forth 01:01:41 I assumed it was Factor, but not for any good reason 01:01:47 Forth uses [...] for a completely different thing 01:01:52 and Joy, Factor etc. use it for the same meaning that I do 01:01:55 cpressey: no, it's my hypothetical language 01:02:05 rewrite it in whatever you think is a cleaner style and the language design gets changed accordingly 01:02:12 alise: isn't [ and ] completely user-defined in forth? 01:02:40 or at least dynamic enough that any definition can be implemented by a forth interpreter/system? 01:02:55 olsner: i'm referring to what it's defined as by default 01:02:55 alise: what's your goal for this language? 01:03:00 just like overriding :, you'd have to be fucking stupid 01:03:03 as it's rather vital 01:03:12 (incidentally, I have no idea what [ and ] do) 01:03:19 olsner: compile mode/interpret mode switches 01:03:38 * cpressey shudders 01:03:42 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 (thus the renaming of swap to ~) 01:04:18 what is the meaning of ... in connect anyway? 01:04:45 hmm, so '[' makes the code get re-interpreted each time instead of being compiled at the time of definition? 01:04:53 or something? :) 01:05:14 read-packet needs to take... a stream or something... as an argument 01:05:26 cpressey: ... is a placeholder 01:05:27 I should just re-read that forth implementation that was passed around the other week 01:05:29 obviously read-packet does 01:05:33 as connect pushes the connection 01:05:45 and read-packet takes it off the top of the stack (not dropping it, of course) 01:05:46 alise: that was not obvious from the code, you see 01:05:54 cpressey: it sure is 01:05:59 you're just not used to concatenative style 01:06:03 there's no way to indicate passing an argument :) 01:06:08 olsner: nothing even remotely like what you said 01:06:10 yeah, read it 01:06:14 alise: ok, cool 01:06:18 http://www.annexia.org/_file/jonesforth.s.txt 01:06:23 http://www.annexia.org/_file/jonesforth.f.txt 01:06:24 see, some way to indicate that might help "code read very literatelu=y" 01:06:27 (you read the second file after the first) 01:06:28 just sayin' 01:06:38 cpressey: so basically you dislike concatenative style. ok. that's not very helpful 01:06:45 s/u=// 01:06:48 I have already read both files :) 01:06:57 i think reading a packet is a very obvious action to take, the rest is just context 01:07:01 alise: I have no idea what ... returns 01:07:16 i feel somewhat unfairly blamed, here 01:07:28 : connect make-socket-and-connect-it ; 01:07:32 ... is not actual code 01:07:43 although maybe I'll use it for the body of unimplemented abstract methods or something 01:07:46 since it's amusing 01:09:06 cpressey: i /could/ sprinkle stack effect declarations everywhere, but they're so irritating 01:09:13 i like my stack effects simple enough that it doesn't matter! 01:09:39 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 anyway, i never did get to the pizza, so re --> 01:10:49 : connect socket "some-server.net" (host) 1234 (port) connect ; 01:10:51 or something 01:10:51 er 01:10:57 with a less-clashy last word 01:11:36 -!- wareya has joined. 01:12:19 Crawl apparently has a ring of Atheism 01:13:35 you have acquired the Ring of Atheism (+1 resistance against religion) 01:17:37 Does it also work against things that work like religions but do not have gods? :-> 01:18:30 I can't find any evidence that I didn't hallucinate it 01:20:48 Ahhhh, music. 01:21:00 "molto rubato": Meaningless Italian, meaningful musical Italian! 01:23:30 mucho molto, molto rubato 01:33:47 http://www.youtube.com/watch?v=XFGrQMD6Uqc 01:33:51 http://www.youtube.com/watch?v=1BxFlmb6S6E 01:35:59 Sgeo discovers Britain 01:43:01 [ "Received: " ~ cat print ; 01:43:07 no 01:43:15 try again cpressey 01:44:18 [ "Received: " ~ cat print ] 'handle-packet = 01:44:18 cpressey: what 01:44:25 cpressey: that is not easier to read. 01:44:31 nor is it significantly purer 01:44:36 you rely on 'foo being syntax there, for instance 01:44:41 and [...] 01:45:06 you didn;t mention purity 01:45:33 it discards : as syntax 01:45:38 syntax is user-defined obvs 01:46:31 i can't handle [ ] being mode switches, anyway 01:47:19 it's not in this :P 01:47:21 'foo syntax? 01:47:47 cpressey: Have you ever made an OISC? 01:47:56 alise: no 01:48:02 cpressey: Get crackin' 01:48:08 alise: screw you 01:48:12 Lambda the Ultimate One-Instruction-Set Computer 01:48:18 It has to be done 01:48:25 Also, noted in log: cpressey + pizza = lowercase. 01:48:26 blog reference? why? 01:48:42 * cpressey cnfysed 01:49:05 not a blog reference 01:49:17 the blog title is a reference to the "Lambda the Ultimate ..." series of papers detailing Scheme 01:49:26 the Lambda Papers 01:49:32 the ones of that form are 01:49:37 Lambda: The Ultimate Imperative 01:49:39 Lambda: The Ultimate Declarative 01:49:46 http://en.wikipedia.org/wiki/History_of_the_Scheme_programming_language#The_Lambda_Papers 01:49:48 oh 01:49:51 oh 01:49:52 and also 01:49:55 1977: Debunking the 'Expensive Procedure Call' Myth, or, Procedure Call Implementations Considered Harmful, or, Lambda: The Ultimate GOTO 01:49:55 1979: Design of LISP-based Processors, or SCHEME: A Dielectric LISP, or Finite Memories Considered Harmful, or LAMBDA: The Ultimate Opcode 01:50:05 thus firmly establishing it as a meme 01:50:18 yes i missed it 01:50:22 because i'm a loser 01:50:44 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 then stores it somewhere 01:54:14 Ugh 01:54:22 The answer to prefix v. postfix is obvious: 01:54:41 It depends. 01:54:53 if is good as prefix, tests are good as postfix 01:55:12 die if not $good; 01:55:38 Infix is never good 01:55:48 * Sgeo ducks 01:57:28 * cpressey is an existing lambda 01:57:30 axioms 01:57:39 axioms ftw 01:57:42 Sgeo: you know, you've already admitted you have no idea about Factor or whatever 01:57:51 so making sweeping statements is incredibly inadvisable :P 01:58:06 even Python has postfix if now. I don't approve of this 01:58:13 Py "no tail call optimization" thon 01:58:19 Unless Guido has gone back on that 01:58:32 that's ancient 01:58:36 "x if y else z" 01:58:36 I think my statement is less sweeping than "Always use postfix!" or "Always use prefix!" 01:58:42 --> if y then x else z endif 01:58:54 Sgeo: no, but it does state that you have solved the problem and it is obvious 01:59:03 alise: well, 2.x -- not Ancient-ancient 01:59:11 x being something 01:59:16 2.mumble, I meant 01:59:25 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 It's obvious that the answer is not obvious. 02:00:04 Sgeo is going all Zen on our sorry asses. 02:01:03 meanwhile, topology 02:01:08 oh, no 02:01:26 no topology, because the mathematician types are asleep now. 02:01:30 because they live in europe. 02:01:32 huh. 02:01:45 what a coincidence. 02:03:25 I think it was the way alise described Factor that made me really interested in Factor 02:03:47 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 But it's meant to 02:07:27 * cpressey sighs and looks up Factor 02:08:09 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 and I tried to explain that I was more interested in esolangs 02:08:41 and that didn't seem to go through 02:09:33 uh... first example code it posted looks absolutely horrible. Reloading to give it a fighting chance 02:10:17 i've never seen a factor zealot, interesting. 02:10:52 alise: As you said once, "forth does seem to attract the crazies"... this was possibly an Advanced Specimen. 02:10:52 Are there languages that don't have zealots? 02:11:11 Yes. 02:11:14 Sgeo: INTERCAL. 02:11:23 I was about to say Plof, but oops Gregor and pikhq. 02:11:33 alise: Oh you don't even know man. 02:11:35 ILLGOL. I dearly hope. 02:11:35 alise: YOU DON'T EVEN KNOW 02:11:41 alise: Muahahahaha 02:12:29 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 And "Shovel" sounded a little awkward 02:13:27 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 cpressey, new example any better? 02:15:23 And what was the old example? 02:15:46 Sgeo: a bit, but not much. The better example was gen'ing XML. The "so what" example was sending email. 02:16:24 why didn't they just call Corin Nemec's SG-1 character Corin Nemec? 02:16:47 i can't even manage to remember his other, normal alien name; Gregor is right again 02:16:57 Jonas Quinn 02:17:16 I don't care 02:17:19 Corin Nemelex Xobeh 02:18:23 And he's a SCIENTOLOGIST. 02:18:46 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 How many pages of Scheme does it take to make a Scheme interpreter? Not counting eval-like stuff 02:19:46 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 dynamic-wind set! call-with-current-continuation 02:20:02 you now have a headache 02:20:09 a-yup 02:20:14 How many pages of Scheme does it take to make a Scheme interpreter? Not counting eval-like stuff 02:20:26 you can do a decent subset in a page or two 02:20:37 utilising eval for library functions like display :P 02:20:44 dynamic-wind? 02:21:02 Sgeo: you DON'T want to know. 02:21:09 Yes! I! Do! 02:21:31 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 Fine, second. 02:21:48 Sgeo: http://www.schemers.org/Documents/Standards/R5RS/HTML/r5rs-Z-H-9.html#%_sec_6.4 02:21:51 alise: I ACTUALLY feel like the current next-gen rewrite of Plof being discussed, btw, is something you'll like. 02:21:59 Grep for "(dynamic-wind". 02:22:20 Also, "(call-with-current-continuation", for a more detailed look at how they interact. 02:22:26 No, I will not help explain; you got yourself into this. 02:22:30 Gregor: Shoot. 02:22:45 /* You are not expected to understand this. */ 02:22:47 alise: Nuh uh, it's not ready for public consumption yet, I'm just TANTALIZING YOU X-P 02:22:50 Gregor: If I make a completely new design that's awesome and unrecognisable but somehow Plof inside will you accep tit? 02:23:19 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 Gregor: What were my Forth-related suggestions? >__> 02:23:55 alise: Well, your original Forth-related suggestion was basically "replace your bytecode with Forth" :P 02:24:36 Gregor: That was a good suggestion. :P 02:24:40 so that it fails at parallelizing and goes slower 02:24:53 cpressey sure is in grumpy old bastard mood 02:24:58 it failed at that anyway 02:25:05 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 I can't even begin to imagine how inefficient Plof is. 02:25:18 Gregor: Bah, but the compiler architecture is what would hel pyou. 02:25:31 http://plof.codu.org/wiki/Plof4 HAHA I HAVE STOLEN YOUR IDEA WORDS 02:25:37 AND WILL READ THEM UNCONSENSUALLY 02:25:41 That's junk. 02:25:52 IT'S STUPID 02:25:58 I've totally changed it again since I wrote that. Well, not totally changed it, but everything below that is different too. 02:26:01 YOU'RE STUPID AND YOU SHOULD FEEL STUPID 02:26:11 alise: Fine, I'll PM you to describe the current work-in-progress design :P 02:26:13 WHAT DO IF STATEMENTS LOOK LIKE IN THIS YEAR? 02:26:19 THEY KEEP CHANGING AND SUCH 02:26:23 alise: Same as they have for two years now. 02:26:26 WHICH IS 02:26:32 (I HAVEN'T CARED FOR TWO YEARS) 02:26:33 if (condition) (body) 02:27:05 * Sgeo can agree with that 02:27:16 alise: grumpy old DRUNK bastard, you mean! 02:27:20 (no, not yet) 02:27:45 cpressey: DRUNK ON PIZZA 02:28:26 >.> 02:28:41 SGEO IS OFTEN DRUNK ON PIZZA 02:31:05 * Sgeo finds some PSOX-related logs 02:31:21 And yes, there is a logical train of thought from alise's last statement to that 02:33:41 Ooh mono. I forgot! haha 02:33:53 (no logial train there, just remembering) 02:35:07 btw, http://catseye.tc/lab/madison/doc/madison.html 02:35:35 That is my HTMLification of some notes I scrawled down on a strictly-typed term-rewriting language. 02:35:38 It is not esoteric. 02:35:47 on the contrary :) 02:36:21 * Sgeo switches his love to Madison 02:36:24 It's even less esoteric than most term-rewriting languages 02:36:34 oh, bad craziness 02:36:48 "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 make it covalent! 02:36:54 then you can use = 02:36:59 and give it timeless semantics 02:36:59 no thanks 02:37:20 maybe later 02:37:25 "timeless semantics"? Would Haskell be considered to have timeless semantics? 02:37:33 Sgeo: well i'm not sure 02:37:37 the objective of this (not stated) is to see if you can do the typing also with the rewrite engine 02:37:39 *gasp* 02:37:40 in a covalent system it doesn't matter which direction you go in 02:37:55 Prolog would be closer? 02:38:09 Prolog you can backwards in 02:38:20 You nondetermine, but, you can 02:38:49 Is Prolog even TC? 02:39:06 ... 02:39:19 "Both a and b may contain types." 02:39:24 i dislike how this isn't fit into the other machinery 02:39:37 Sgeo: Yes, Prolog is TC. 02:39:51 alise: I think types are terms 02:39:58 just, you know, specially decorated ones 02:40:05 but i'm not sure 02:40:09 would need to build it to know. 02:40:17 well 02:40:21 how is *List A a term? 02:40:21 (and type variables are like pattern variables) 02:40:22 what's A 02:40:31 A is a (type) variable 02:40:44 nil => *List A is problematic, I admit 02:40:45 hmm i think you need a which-has-a-type operator 02:40:55 cons x:A xs:(*List A) => *List A 02:41:04 that way it makes more sense 02:41:09 Types *should* be inferrable for simple programs, but in general, yes 02:41:09 since the thing on the left is the actual fully-specified call 02:41:14 you know what i mean 02:41:15 to declare types 02:41:19 rather than just putting the types in there 02:41:28 this way the left hand side is always a valid term for calling just that 02:41:38 because x:A == x but it only works if x is of type A 02:41:38 so 02:41:41 cons x:A xs:(*List A) => *List A 02:41:50 is only applicable if you give cons an A and a *List A 02:41:58 of course you need some sort of rule to exclude everything not explicitly allowed 02:42:01 but you're not using x and xs, so why mention them? 02:42:03 i.e. have no default rule 02:42:11 cpressey: consistency; right now, your left-hand side terms are nonsensical 02:42:11 the => already tells you "I only care about types here" 02:42:15 cons A *List A isn't a well-typed expression 02:42:21 since A is not of type A, and *List A is not of type *List A 02:42:31 so you have expressions on the LHS that aren't valid or meaningful at all 02:42:35 A *is* type A 02:42:42 what? 02:42:44 no, A is a type 02:42:49 right 02:42:51 N isn't a natural 02:42:56 and A in that expression means "the type A" 02:42:58 "*List A" isn't a list of As, it's a type 02:43:04 cpressey: yes. which you can't pass to cons 02:43:08 obviously. 02:43:14 alise: You're not "passing" anything -- it's a type rule 02:43:18 => 02:43:20 yes. which is inconsistent 02:43:21 is not -> 02:43:29 because A => B should mean 02:43:34 "the *expression* A types as B" 02:43:46 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 so 02:43:55 cons (x:A) (xs:*List A) => *List A 02:43:56 means 02:44:01 anything that satisfies the pattern on the left 02:44:02 is typed as right 02:44:03 whereas 02:44:08 cons x xs -> ... 02:44:09 means 02:44:11 anything that satisfies the pattern on the left 02:44:13 is rewritten as right 02:44:15 you see the symmetry? 02:44:26 so basically you just introduce a simple rule 02:44:38 (x:A) matches a given y iff y matches x and y is of type A 02:44:39 done. 02:44:45 we can also do polymorphic things like 02:44:47 id (x:a) => a 02:44:55 assuming lowercase means a variable, but whatever, you get the idea there 02:45:11 I can't see any advantage your notation has 02:45:44 cpressey: semantics 02:45:46 x and xs are never used, thus redundant. When *would* you use them? 02:45:53 it makes the semantics of A=>B closer to the rewriting language 02:45:54 alise: that's glib 02:45:56 well you could even do something like 02:46:02 cons(:foo, :bar) => Int 02:46:04 if you like, pretend x and xs are there 02:46:06 saying that if you pass cons the symbols foo and bar 02:46:09 it's of type Int 02:46:10 when you do 02:46:11 foo -> bar 02:46:12 you say 02:46:16 if you ever see a foo 02:46:17 rewrite it to bar 02:46:20 foo => bar 02:46:20 is saying 02:46:22 if you ever see a foo 02:46:24 it has type bar 02:46:29 so the foo on the left should have the full pattern-matching capability 02:46:38 rather than being restricted to a types-on-left-only non-expression facility 02:46:40 if I wanted to do dependent types, maybe 02:46:43 this runs deeper. 02:46:44 cpressey: no 02:46:46 but ... I certainly don't 02:46:49 alise: screw you 02:46:51 nothing to do with dependent types at all 02:46:59 well i don't have to justify it to you 02:47:03 i'm right, after all :) 02:47:07 sorry, i misunderstood what you said 02:47:18 the "screw you" was uncalled for. 02:47:22 still, I don't agree 02:47:30 i've been ruder to plenty. 02:48:10 i'll just develop my own language with this :-P 02:48:43 i mean i guess it does easily lead to dependent types but i don't /think/ that's strictly necessary 02:49:11 i can't see why else you'd care about the *values* x and xs in a *type* rule 02:50:00 cpressey: my version is the more purist, term-rewriting form i guess 02:50:03 whereas yours is the more practical 02:50:43 cpressey: btw, I'm not sure I like the `Foo thing 02:50:48 perhaps... i really don't know. this design was largely to isolate a space that i was playing with in rho 02:50:55 `Foo? 02:50:56 I don't see any reason not to just have a "type Foo" declaration to let you say just Foo 02:50:58 erm 02:50:59 *Foo 02:50:59 sorry 02:51:03 injected my own better syntax :-D 02:51:07 No output. 02:51:07 yeah, either would work 02:51:26 * cpressey gives HackEgo a Scooby snack 02:51:42 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 since e.g. if you had nonfix n 02:51:46 fact n = ... 02:51:50 would match literally n 02:51:54 otherwise n would be a variable 02:51:56 this is similar 02:52:19 heh, and with this instead of nonfix you could just do 02:52:22 foo : whateverthetype 02:52:24 and provide no rules 02:52:25 er => 02:52:29 keep injecting my own syntax 02:52:30 I agree there maybe need to be some decls. Also the lack of parens on constructors -- could lead to ambiguity 02:52:59 ADTs are nice with this 02:53:04 zero => *Nat 02:53:08 succ *Nat => *Nat 02:53:49 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 but i'm lazy 02:54:04 oooh mono 02:54:08 (and easily distracted) 02:54:17 mono is meh 02:54:19 :P 02:54:57 mono-2.0-devel? probably 02:55:21 .NET is to satisfy that "sick" urge, like coding in Falcon would 02:55:22 cpressey: i think you should maybe make stuff the more boring a(b,c,d,...) 02:55:30 since your types right now are near-incomprehensible 02:55:31 alise: yeah, i may succumb 02:55:56 even(nil) -> true. even(cons(H,T)) -> not(even(T)). 02:56:10 even (cons H T) -> not (even T). ;; doesn't really buy you much 02:56:39 cpressey: the => rules look quite similar to -> rules 02:56:42 a bit confusing when reading a function 02:57:04 cpressey: ofc you do get an x vs x() confusion 02:57:15 (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 alise: could do like: types true -> Bool; false -> Bool; end types. rules not(true) -> false; not(false) -> true; end rules. 02:57:59 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 also, ew @ that 02:58:19 capital letter rule is already in effect 02:58:27 a la Prolog 02:58:35 ok 02:58:41 then you don't need *List 02:58:42 just write list 02:58:43 list(A) 02:58:45 it's boring and doesn't scale to other character systems, but hey 02:58:47 it's unambiguous 02:59:01 alise: maybe. 02:59:15 alise: probably. 03:00:06 so mono-2.0-devel does not come with ilasm, but mono-1.0-devel does? ripoff! 03:00:50 I've been meaning to write a compiler from PL-{GOTO} to .NET for a long time. 03:01:06 The stupidity of the goal apparently does not phase me. 03:01:13 Er, *faze 03:02:06 alise: Also: Underload interpreter in C. 03:02:15 Should be easy. Not been done. 03:02:20 there's an anagolf for that 03:02:22 so yes, yes it has been done 03:02:26 also, I wrote a compiler to C 03:02:28 in Scheme 03:02:32 ilasm is an anagram of islam! 03:02:33 so if you bundled a scheme interpreter and gcc... 03:02:35 anagolf for an underload interpreter? 03:02:40 yes 03:02:43 Sgeo: *gasp* 03:02:51 http://golf.shinh.org/p.rb?Underload+interpreter 03:03:05 cpressey: 03:03:06 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 there you go 03:03:22 it even has error messages 03:03:30 all in 325 dubiously-legal characters 03:03:32 Would kind of prefer a lot a *reasonable* C implementation, but beggars can't be choosers. 03:03:41 cpressey: you can easily expand that 03:03:46 anyway it's not difficult to write one 03:04:16 cpressey: Name it and I'll write one in a few lines. 03:05:02 Wait, what? 03:05:10 Name the interpreter. :P 03:05:32 ... Un... derload?? 03:05:40 * cpressey CNFSUED 03:06:30 Write it in Factor! 03:07:03 cpressey: Interpreters need names! 03:07:04 Sgeo: C. 03:07:19 Oh, it's a golf thing 03:07:27 No, it isn't. 03:07:32 alise: OH 03:08:16 alise: elephant 03:08:20 there 03:09:10 yay! even under Linux, ilasm takes command line options that are introduced with "/". 03:10:02 Well, the anagolf version will not compile under DICE C (surprise!) and I totally do not understand how it works (surprise!). 03:10:31 it uses argv as the stack 03:10:32 :-D 03:10:46 DICE C? 03:10:48 that helps explain some, but how does it concatenate strings? 03:10:55 sprintf 03:10:58 that's how 03:11:09 Sgeo: a compiler for AmigaOS 1.3 03:11:29 a C compiler, even 03:13:45 OK there's something I don't get about Underload 03:13:57 No wait 03:14:46 I like how it's so very nearly a push-down automaton 03:14:55 Except for the ()'ing and the eval'ing 03:19:35 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 cpressey: Psht, my OS doesn't like a 2^20 x 2^20 array. 03:21:01 No wait. 03:21:04 It's broken for other reasons! 03:21:34 scowendrel! 03:21:44 [ehird@dinky ulc]$ ./ulc 03:21:44 (:aSS):aSS 03:21:44 Segmentation fault 03:21:51 It's broken for that reason, but others too! 03:22:18 cpressey: There is only one reasonable solution: Use the C stack as a stack! Oh yes! 03:22:59 cpressey: My compiler is more impressive, anyway. 03:23:12 I shall have to try this 03:23:31 cpressey: Get a stack pointer, make sure you can make calls with foo(); without that trashing the stack, have fun. 03:23:47 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 Call and it should take the first thing on the stack -- the first Underload stack element -- as the code. 03:24:04 Good f'n luck. 03:26:14 hahahaha 03:26:44 * cpressey plays Temple of Apshai instead 03:27:51 no, I am going to implement it. in C. but pedantically. 03:29:44 and it's going to have horrible memory performance because it's going to call malloc/free all over 03:30:31 data NestedList t = NLNil 03:30:31 | NLCons (t (Nested t)) (NestedList t) 03:30:31 | NLNest (Nested t) (NestedList t) 03:30:31 data Blimped t = X (t (Blimped t)) 03:30:31 | Blimp Integer 03:30:31 blimp :: NestedList t -> [Blimped t] 03:30:33 cpressey: write it for me. 03:33:40 whats all this about blimps then 03:34:08 cpressey: the flattening procedure essential to my Underload compiler architecture 03:34:15 basically, it turns a nested structure into a bunch of pointers 03:34:25 this but in scheme? 03:35:05 I was just going to ask, ^ doesn't have to be the last instruction in an Underload program, DOES IT. 03:35:18 no 03:35:19 of course not 03:35:23 it would be sub-TC then 03:35:25 i think 03:35:43 (()(*))(~:^:S*a~^a~!~*~:(/)S^):^ 03:35:53 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 ^ is just a function call 03:36:34 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 my compiler had tail calls. 03:37:07 hey zzo38 03:37:15 What's up? 03:37:16 (and yes, it was some gnarly scheme) 03:37:18 although only a page or so 03:37:23 because i'm just that awesome 03:38:16 cpressey: The ceiling is up, fortunately, it did not fall down yet 03:38:57 08:02:23 n,A,C,E,s[1<<20],*r;main(c,X){char*p=s,*q=p-~read(0,p, 03:38:57 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 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 ++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 ",X?*r--:n?40:c),X:*r++:--r;);} 03:38:57 08:02:35 now, /that's/ an impressive Underload interp 03:39:00 Endorsed by the creator! 03:39:06 cpressey is up against some pretty stiff competition. 03:39:47 cpressey: I even went out of my way to make the generated function identifier numbers nicely ordered. 03:39:50 zzo38, what are your thoughts on Factor? 03:39:51 :P 03:39:56 If I haven't asked already? 03:39:56 alise: isn't that the same one you posted earlier? 03:40:16 cpressey: yes 03:40:18 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 Therefore, I will tear my ceiling down. 03:41:13 alise: The challenge for me right now is just to get it *working*. 03:41:29 I really... I really don't do the obfsctd thing or the golf thing, on some level. 03:41:36 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 My ability to enter into it is limited. Sad, but there you have it. 03:41:57 *"enter into it" 03:42:06 cpressey: anagolf is a great way to practice and hone programming skills 03:42:24 On a "for embedded/limited environment programming" sense, or soe other sense? 03:42:34 17:31:14 FUCK YEAH!!! 03:42:34 17:31:15 % ./out 03:42:34 17:31:15 (:aSS):aSS 03:42:34 17:31:21 I COMPILED FUCKING >UNDERLOAD< 03:42:39 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 -- 2008-01-07 03:42:49 cpressey: it's fun though. 03:42:50 Oh hey 03:43:03 17:26:49 http://rafb.net/p/XEGp7F68.html 03:43:05 Oh you're joking. 03:43:28 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 I'm joking? 03:44:20 Or are you talking to your past-self-ehird? 03:44:25 latter 03:44:32 rafb.net's pastebin got taken down 03:44:36 and it never persisted things more than like 24 hours 03:44:44 i'm trying to find my original compiler 03:44:44 >:( 03:44:45 of glory 03:44:48 * cpressey does not approve 03:45:01 ./08.01.08:10:53:11 I saw you were discussing Underload from the logs. How could I not join? 03:45:41 ah, a pastebin.ca version of ... not my interpreter 03:45:44 erm 03:45:45 not my compiler 03:48:45 mercy me. python has destroyed my ability to ACTUALLY code. 03:48:54 no no -- it's not THAT bad 03:48:58 gimme a minute 03:49:19 (but it IS weird. I pass this on as a cautionary tale!) 03:52:34 almost done! 03:52:56 zzo38: (I'm writing an Underload interpreter in C -- one that I can *read*) 03:53:05 (and can compile under AmigaOS 1.3) 03:53:14 (THAT PART IS VERY IMPORTANT) 03:53:39 cpressey: (Does it work on other computers as well?) 03:53:51 (Yes) 03:54:01 zzo38: hopefully. going to try it with gcc and pcc under Ubuntu 03:55:00 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 stringie is a great name keep it 03:55:58 ... 03:56:07 i may be contractually obliged to, now 03:56:20 string Internet Explorer? 03:56:51 now... to appease the volcano-gods of gcc error messages 03:56:55 ./08.01.14:14:20:06 * ehird` is rewriting his underload compiler in Haskell 03:57:00 NOT BEFORE YOU LINK IT ON THE PASTEBIN YOU DON'T 03:57:04 Spidermonkey Tracemonkey Internet Netscape Gecko Internet Explorer? 03:57:21 Gregor: Needs an R. 03:57:23 Realplayer! 03:57:33 ./08.01.15:11:25:26 ais523: by the way, my underload to C compiler is broken. i've started a rewrite, but eh 03:57:36 WHY DID YOU BREAK IT 03:57:37 WHY 03:57:44 Whoops, missed the 'R', durp :P 03:57:46 ./08.01.16:09:06:05 who wants to try out the current version of the underload compiler 03:57:48 Yes! 03:57:49 ./08.01.16:09:07:01 svn co svn://elliotthird.org/underload 03:57:51 Fuck you! 03:58:05 alise, you don't have any of your old files? 03:58:17 Yes, on another machine. Somewhere in the eternal depths of its fiery harddrives. 03:58:26 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 alise, sleepninighty 03:58:55 Sgeo: Oh, shut the hell up. 03:59:00 It's Friday/Saturday. 04:00:05 Hm, so when you execute ^, you do not start with a fresh stack? OK 04:00:53 alise: elliotthird.org isnt a valid website. :| 04:00:57 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 augur: but it was 04:01:02 it is not now 04:01:04 for shame 04:02:09 10:49:56 Woot! 04:02:09 10:49:59 The underload->C compiler works. 04:02:09 10:50:07 It does tail-call optimization and all that jazz. 04:02:09 10:50:13 svn co svn://elliotthird.org/underload 04:02:11 I HATE YOU SO MUCH 04:02:30 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 http://web.archive.org/web/20070922130719/http://elliotthird.org/ useless? 04:02:34 Underlad! 04:02:41 Useless. 04:02:43 Underlad to the rescue! 04:02:45 Sgeo: for an svn server, yes 04:02:53 and for everything else 04:03:07 cpressey: you're underlad only if he's on top 04:03:08 8D 04:03:27 once upon a time that domain got to the top of digg 04:03:36 /nick underlady 04:03:36 alise: wow, what 04:03:37 how 04:03:38 in a move that would probably put Sgeo in a blissful, heroin-esque state for several days 04:03:44 alise, hm? 04:03:48 Sgeo: ALL THE ATTENTION 04:03:54 Ah, lol 04:03:55 augur: well, technically the domain was w.elliotthird.org 04:03:56 now 04:03:57 Yes, yes, it would 04:04:02 envision a site where there is a big number 04:04:03 and a button 04:04:10 if you press this button the number goes up for everyone, in realtime 04:04:14 alise: envisioning 04:04:15 now imagine you have a name and password 04:04:19 ok 04:04:20 it keeps track of how many times you click it 04:04:23 there is a high score of 30 or so 04:04:27 of the people who have clicked most 04:04:35 ok 04:04:41 augur: now imagine this gets popular in a social circle, and then some of them post it on places 04:04:48 imagine it gets hundreds of diggs 04:04:50 imagine it gets on /b/ 04:04:54 ok 04:04:59 imagine digg and /b/ both get one account each and hammer away at it 04:05:06 imagine that somehow oklopol is still near the top 04:05:06 oic 04:05:11 hahaha 04:05:11 now imagine it gets to #1 on digg 04:05:12 well 04:05:14 and then 04:05:14 -!- lament has joined. 04:05:15 AND THEN 04:05:15 ofcourse he would be 04:05:17 i wake up one day 04:05:21 and ssh to my server 04:05:24 and it's all broken 04:05:25 why? 04:05:31 alise: well, oklopol and all 04:05:32 the mysql logs filled up the whole filesystem 04:05:33 that's like 4 gigabytes 04:05:36 :-D 04:05:40 XD 04:05:50 http://digg.com/news/gaming/The_Most_Pointless_Website_Ever 04:05:58 lists as 0 diggs and 0 comments, heh, they sure broke digg 04:06:04 and uhh 04:06:07 all the comments are gone 04:06:09 or, well, most of them 04:06:24 augur: oh yeah and i put a little realtime-shoutbox-chat thing on it just to see what would happen 04:06:29 the answer is a lot of niggers and faggots happened 04:06:35 ofcourse 04:06:57 http://www.bugmenot.com/view/w.elliotthird.org 04:07:00 you know you're famous when... 04:07:10 ahahaha 04:07:14 * Sgeo ponders stealing alise's idea 04:07:26 Sgeo: it's dead now. complete luck that it got popular. 04:07:35 and you have serious attention issues. 04:07:39 alise: you got a picture of what this looked like 04:07:41 ? 04:07:42 augur: ...then everyone forgot about me and i earned not a penny from the whole endeavour 04:07:44 it sounds familiar 04:07:47 augur: not personally but i could look for one 04:07:52 it was just all set in verdana, very little decoration 04:07:56 just a few-file PHP hackup 04:08:00 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 when it was getting hit hundreds of times a second 04:08:06 oh yeah 04:08:09 every single person connected 04:08:13 made at least 3 or so ajax requests 04:08:14 every 500ms 04:08:20 hahaha 04:08:22 slicehost must have loooved that 04:09:17 Segmentation fault 04:09:34 * Sgeo writes on cpressey's memory 04:10:14 alise: do you have archives of the source? 04:10:22 augur: yes ... on some machine 04:10:27 :| 04:10:30 augur: it's php, so frankly a bit embarassing 04:10:38 i think i even used someone else's ajax library, although i don't recall 04:10:43 Rewriting in Factor would be an interesting project! 04:10:51 augur: this was circa 2008 btw 04:10:58 true 04:11:02 Then again, finding hosting for Factor stuff sounds like a pita 04:11:07 so just when we were getting to know each other :D 04:11:14 it was sajax i think 04:11:21 yeah 04:11:28 man wait 04:11:30 either sajax or i did it myself 04:11:34 it went through like 3 versions 04:11:36 so how old are you now 04:11:37 the third one being the one that got popular 04:11:38 cause 04:11:42 augur: 15 as of august 22 04:11:47 we've known each other like, what, 3 years 04:11:49 hm. 04:11:56 happy 15th! 04:11:56 idea? /b/?? /cpressey CFNUSDE 04:12:06 cpressey: I presume you know what /b/ is... 04:12:12 augur: yeah well i've been in and out of contact with someone on the interwebnets since i was 8 04:12:12 so ha 04:12:14 alise: when are you legal in the uk? 8D 04:12:16 ColdFusion porn? 04:12:19 * Sgeo runs in horror 04:12:20 (or, in human terms, 2004) 04:12:23 alise: Why do you presume that? 04:12:34 cpressey: Is the rock you live under comfortable? 04:12:49 alise: YES! Hello? 04:13:25 augur: Uh, when I turn 16. 04:13:27 So ... in a year. 04:13:41 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 IM BUYIN MY TICKET <3 <3 <3 04:14:11 augur: But then I won't get £50 from oklopol... 04:14:24 ok now to febug a duckin' semegnation flaut 04:14:31 oh dont worry, i'll take car of him for you ;o ;o 04:14:43 Assassination. Well, interesting, if a little extreme. 04:14:52 Unless you're planning to steal his automotive vehicle. 04:15:00 alise: well, not assassination 04:15:05 but certainly a little death 04:15:08 ass-to-assination 04:15:12 <3 04:15:24 ./08.01.16:10:50:13 svn co svn://elliotthird.org/underload 04:15:26 I HATE YOU PAST SELF 04:15:28 DIE IN A FIRE 04:15:51 why wha 04:16:01 Which model of time-travel do you want me to use to help fulfill this desire? 04:16:02 it's no longer there 04:16:05 and i want my fucking code 04:16:13 Sgeo: the hilarious one 04:16:14 alise: o wut 04:16:20 well why isnt it there anymore 04:16:31 augur: because i wiped the vps like 29385473495435 times and the domain expired and-- 04:16:35 --it's ancient code. 04:16:38 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 Ok 04:16:39 2008, even! 04:16:39 ! 04:16:49 Sgeo: death of the main character isn't good comedy! 04:17:08 Ok, then one where you turn out to not be Elliott Hird? 04:17:16 dun dun DUN 04:17:26 BRB 04:18:30 just an interdimensional electromagnetic life form "borrowing" Elliott Hird's body. 04:18:55 wait 04:18:57 n/m 04:19:01 SOON I WILL SHED THIS BODY WITH RITUALISED SUICIDE 04:19:59 aww 04:20:06 ship me the corpse? 04:21:08 wanna find out just how stiff it is? 04:21:21 lament: UNWANTED INTERPRETATION DETECTED. PLEASE DISAMBIGUATE. 04:21:25 bodies dont stay stiff after rigor passes, you realize 04:21:46 you best be quick 04:22:56 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 hahahaha i had a function char *pop(void) and it wasn't returning nothing thanks gcc for pointing that out 04:24:02 I also wondering if you have heard of the new virtual machine that Nintendo attempt to invent? 04:24:12 zzo38: ... you play D&D in a big room! I only remember playing it in basements and cramped apartments 04:24:13 Apparently it has at least three address spaces? 04:24:41 sigh, everyone and their aunt has their own virtual machine these days 04:24:57 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 cpressey, I guess I need to make a VM too 04:26:00 In Factor! 04:27:38 * cpressey shakes head 04:27:48 Sgeo: have you programmed much in Forth? 04:28:35 or Maentwrog? 04:29:09 cpressey, almost nothing! 04:29:16 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 Sgeo: it... no. 04:30:39 They're close, but. 04:30:45 they're not 04:31:16 One groks functions. The other only sort of doesn't. 04:31:49 how easy it would be to take a given C and turn it into Java 04:31:58 and even then, that doesn't capture it 04:32:20 Bubut.. the Forth aparser would onyl need to be slightly modified 04:32:22 parser 04:32:42 And that could be done in Forth for some Forths, iiuc 04:33:05 Hmm, maybe slightly's the wrong word 04:33:19 And what do you mean by "only sort of doesn't", and which language? 04:35:21 catseye@catseye-laptop:/cygdrive/e/checkout/lab/elephant$ ./stringie '(:aSS):aSS' 04:35:24 (:aSS):aSScatseye@catseye-laptop:/cygdrive/e/checkout/lab/elephant$ 04:35:29 it works 04:35:35 the canonical ass-quine works 04:36:21 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 I don't know the details, I admit. 04:36:45 But concatenative programming is not the same thing as... stack-based programming. 04:37:08 Hmm, what's the difference? 04:37:18 Sgeo: Do you know Haskell? 04:37:25 Yes 04:37:30 To some extent 04:37:59 Well, Haskell has combinators, right? "point-free programming". 04:38:09 Factor's words aren't really pure. There is such a thing as modifiable state, global variables, and ... oh, sorry 04:38:24 Factor is kind of the same approach. 04:38:34 Naw, I'm in no state to explain this. Sorry. 04:39:36 http://www.latrobe.edu.au/philosophy/phimvt/joy/j02maf.html 04:39:43 but that uses too many fancy words 04:41:01 (I'm also assuming Factor is actually following concatenative principles, and not just fudging along somehow) 04:42:03 cpressey, I find that page fully readable so far 04:42:17 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 Sgeo: I thought the stuff about monoids was a bit gratuitous, but what do I know 04:42:59 I didn't get up to that part yet 04:43:46 * Sgeo stops reading 04:45:16 ./stringie '(12)S(*a(~:)~*^~):((1)S)~*~((2)S:*)~*:(~:()~)~*^(a(:^)*~a(*()~)~*^~^):^' ... 1221121221221121122121121221121121221221121221Aborted 04:45:28 I believe I have written a functioning Underload interpreter 04:46:00 That can generate, let's see, about 40 whole terms in the Kolakoski sequence, before its head explodes 04:46:03 but wait! 04:46:12 I did have an idea for how to make it tail recursive 04:50:12 cpressey: Meanwhile, I have written the blimper and the parser. 04:50:18 But I still long for my original horrible thing. 04:50:43 *Main> let Just x = parse "(:aSS):aSS" 04:50:43 *Main> x 04:50:43 Nest (Cons Duplicate (Cons Enclose (Cons Output (Cons Output Nil)))) (Cons Duplicate (Cons Enclose (Cons Output (Cons Output Nil)))) 04:50:43 *Main> blimp x 04:50:43 [[Ref 1,Val Duplicate,Val Enclose,Val Output,Val Output],[Val Duplicate,Val Enclose,Val Output,Val Output]] 04:51:01 *Main> parse "(()(*))(~:^:S*a~^a~!~*~:(/)S^):^" 04:51:01 Nothing 04:51:02 whut 04:51:42 oh 04:52:03 marf 04:52:49 *Main Data.Maybe> blimp . fromJust . parse $ "(()(*))(~:^:S*a~^a~!~*~:(/)):^" 04:52:49 [[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 ./08.01.23:10:06:31 darcs get http://elliotthird.org/underload/ 04:53:19 you're kidding me. 04:54:16 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 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 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 Quadrescence, I can't even reach that channel 05:02:32 Sgeo: ... 05:03:32 Sgeo: There's someone else with your exact nick in it, then. I don't know how that's possible. 05:03:44 No, that's #concatenative 05:04:33 Sgeo: Are you going all Zen on my sorry ass again??? 05:04:53 I'm not in #concatenative, I'm in #concatenative! OM 05:05:19 * Sgeo is now in #concatenative! 05:05:33 I think I'm driving cpressey crazu 05:05:36 crazy even 05:06:34 alise: what's up with your chicken shit bull shit too 05:06:57 Sgeo: Well, you're forcing me to read carefully despite the wine goggles. That's almost as bad. 05:07:02 con cat e nat ive 05:07:11 Quadrescence: I suppose it's a hybrid of both brands of shit. 05:07:13 /join #concatnative 05:07:26 /join #concatentive 05:07:55 How many characters are in what Quadrescence wants me to join, and how many characters in the actual channel? 05:08:01 Also, why might I be unable to reach it? 05:08:34 Sgeo: 13. 13. 05:09:09 Unless you think Quadrescence's comma *following* #concatenative is supposed to be part of the channel name, 05:09:24 =P 05:09:27 Sgeo is just being a dumbfuck 05:09:44 XChat certainly thinks it is 05:09:58 XChat is garbage, it would seem. 05:10:34 No offense, but... "X" in front anything does not exactly scream "quality implementation". 05:10:38 *front of 05:10:55 X itself being a case in point? 05:11:04 Quadrescence sure is in a fucking bad mood. 05:11:07 Well it's not in FRONT of anything there, but, sort of 05:11:15 alise: No I'm not, but Sgeo is annoying 05:11:15 xterm is a better example 05:11:18 xclock 05:11:20 xman 05:11:32 I assume those are older than GTK+ and Qt 05:11:35 Quadrescence: presumably me too. 05:11:38 holy cow yes. 05:11:45 alise: no just teasin bro 05:11:54 alise: he joined #TUNES and said to do it in Factor which is the worst idea I've ever heard 05:12:00 saying bro --> colon punch 05:12:02 what WHAT? 05:12:15 wait WAIT what? 05:12:19 alise: i colon punched sgeo 05:13:29 Quadrescence, the only person active at that time was Phantom_Hoover 05:13:42 And I sort of treated that channel as long dead, anyway 05:13:47 so 05:14:06 Sgeo: go learn C 05:14:29 WHat more of C do you want me to learn? 05:14:37 all of it 05:14:43 since you don't know any 05:15:11 #include 05:15:17 /Bleh, forgot the header exactly 05:15:19 //Bleh, forgot the header exactly 05:15:30 sorry asshole // is not standard C89 05:15:33 try again 05:15:46 http://pastie.org/1151532 05:15:52 /* Bleh, C commentness */ 05:16:01 int main() { 05:16:06 that's 'stringie the underload interpreter', in case anyone cares 05:16:30 int showoff = 5; // Variables must come before everything else in a function 05:16:35 one of the only underload interpreters known to be written while under the influence! 05:16:43 cpressey: apart from all of them 05:16:52 cpressey: good work 05:17:09 Sgeo: thanks for telling me two lines which are parsable in about 100 languages 05:17:14 printf("%d\n", showoff); 05:17:19 return 0; 05:17:21 } 05:17:27 showoff isn't defined you lose 05:17:40 * Sgeo blinks 05:18:13 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 (the line with alleged "showoff" contains an invalid token) 05:18:27 int showoff; 05:18:29 showoff = 5; 05:18:34 Happy? 05:18:37 Quadrescence: so basically this has turned into 05:18:57 "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 Oh, right, the // 05:19:03 alise: in this case I can name the specific wine 05:19:05 after all, Sgeo's code is perfectly valid C99. 05:19:09 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 cpressey: "This wine is called LSD!" 05:19:27 You want me to do pointer stuff? 05:19:28 HAHAHAHAHA no 05:19:31 Quadrescence: oh right because you can write complex C programs over IRC 05:19:33 and will on command 05:19:39 alise: sure why not 05:19:42 Which is ridiculously simple but everyone thinks is confusing? 05:19:49 programming while actually on LSD would... oh god 05:19:57 Sgeo: maybe not make any errors next time around 05:20:37 cpressey: new life goal recorded. 05:20:42 Quadrescence: he made no errors. 05:20:47 Quadrescence: the only errors he made derive from your zealotry. 05:21:06 alise: well standards are pretty tight on those things 05:21:16 Quadrescence: C99 has //. 05:21:25 you said "learn C", not "learn C89 then forget C99" 05:21:26 Well, I did try to emphasize that I was being strict :/ 05:21:36 alise: no shit sherlock 05:22:00 Quadrescence: yet your only complaints were nitpicks about using //. 05:22:02 alise: i said "c89" and he continued to make the error 05:22:13 alise: there's not much to fuck up on a program like that 05:22:20 Quadrescence: presumably he didn't think you'd be anal enough. 05:22:27 I forgot :/ 05:22:28 anyway, just shut the fuck up; this is worse than Factor talk. 05:22:29 I'm not not being anal 05:22:38 I'm just following the standard 05:22:42 alise, you're the reason I'm obsessed with Factor 05:22:59 yeah, and the reason AnMaster is here too. 05:23:03 we all have mistakes that we have to live with 05:24:18 AnMaster rocks my socks off 05:24:41 Sgeo: oh and int main() { is not legit 05:24:42 i only hope you're layering on the sarcasm 05:24:43 just sayin 05:24:44 alise, now I'm curious about that story 05:24:46 yes it is, Quadrescence 05:24:49 Quadrescence, the arguments? 05:24:50 No it isn't 05:24:52 (void) is only required in a declaration 05:24:57 ...Oh, right 05:25:00 The (void) junk 05:25:03 which is irrelevant her 05:25:04 e 05:25:07 as it isn't a declaration 05:25:08 Quadrescence is wrong 05:25:25 int main(int argc, char **argv) { ... } 05:25:31 cpressey: is but one valid signature 05:25:31 burnt into my brain like a mantra 05:25:41 char *argv[] is what some prefer 05:25:43 cpressey: good man 05:25:46 you can also have int main(void). which is the same type as that produced by saying "int main() { ..." 05:25:49 cpressey is also a cool dood 05:25:50 although in a declaration it would have to be (Void). 05:25:54 *void 05:26:02 Quadrescence: are you going to accept the correction or just ignore it? 05:26:07 and void main() sometimes works, although compilers vary in the hard time they'll give ya 05:26:40 main() has unspecified arguments, the standard recommends using int main(void) or int main(int argc, char* argv[]) 05:26:48 Quadrescence: no 05:26:49 always 05:26:52 main() has unspecified arguments IN A DECLARATION 05:27:14 I love C 05:27:23 for someone being anal about the standard it is quite surprising that you do not know this. 05:27:29 alise: btw aren't you 14 or something 05:27:41 FIFTEEN NOW 05:27:54 alise: answering yer questions for ya 05:28:00 thx cpressey 05:28:00 cpressey: THANKS PAL 05:28:08 -- 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 so i won't answer. although cpressey already has. 05:28:28 that wasn't a followup as indicated by "btw" 05:28:31 "by the way" 05:28:40 "let's fork the convo temporarily" 05:29:15 to what end? my age isn't a terribly exciting subject, and i'm very, very tired. 05:29:22 i should sleep. 05:29:28 well you're 15, kids are usually tired early 05:29:42 Quadrescence: -_- 05:30:02 btw I genuinely think AnMaster is badass like cpressey is 05:30:05 it's 5:29 am 05:30:06 I wasn't sarcastic about that 05:30:08 I don't feel like an adult when I'm in here :/ 05:30:11 i've been awake since 8:30 or so 05:30:13 alise: sounds early to me 05:30:14 I'm badass now? 05:30:21 cpressey: Yeah, your C was top notch 05:30:22 -!- cheater99 has joined. 05:30:28 hahahaha 05:30:34 Quadrescence rates badassery on how well someone can adhere to C89. 05:30:34 Which C was this, then? 05:30:42 cpressey: that one time 05:30:53 alise: I didn't rate AnMaster that way 05:31:01 AnMaster is just cool all by himself 05:31:06 Quadrescence: so basically i've been awake 21 hours. i've had a rather busy day. 05:31:10 and i haven't eaten in a while 05:31:16 i wouldn't exactly call that early 05:31:24 anyone who thinks AnMaster is badass is just retarded. 05:31:26 alise: Oh so you're being a dumbass (another kid quality) by malnourishing yourself, kool 05:31:37 Oh man 05:31:52 oh shut up, it's been less than a handful of hours 05:32:04 what 05:32:07 alise: for whom the bell tolls? 05:32:10 cpressey: in future, don't answer my questions for me. and i won't answer yours. kthx 05:32:15 alise, don't turn into me 05:32:19 cheater99: good author nice one 05:32:23 cheater99: you're a cool dood too 05:32:24 alise: will do 05:32:30 cheater99: did you use freebasic at any point? 05:32:50 alise: take a look to the sky, just before your eyes, is the last tiny will 05:32:56 alise: about 2 weeks ago you said you were 13 or something so I knew the vicinity of your age 05:33:10 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 and then go to bed. 05:33:32 Quadrescence: am i a badass 05:33:35 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 Quadrescence: am i a badass 05:33:49 cheater99: damn straight you are 05:33:54 fuck YEA 05:33:56 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 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 Do you think some features in Enhanced CWEB is a closest way to make 'pataprogramming in C? 05:34:22 oh dear Quadrescence 05:34:27 which then leads to another qualification which leads to university which leads to academia. 05:34:31 The work itself, busy, yes. 05:34:34 alise: Sorry but you can't measure an infinitesimal amount of something in this day 05:34:37 so no you didn't 05:34:41 But not busywork, as it had an end, however small. 05:34:58 Quadrescence: shh 05:35:42 alise: To measure infinitesimal amounts of things, you need infinitesimal numbers that are measurable 05:35:47 alise: it's ok baby, you've been very brave today 05:35:51 * cheater99 gives alise a hug 05:35:58 nobody has ever used the word "infinitesimal" in anything other than a hyperliteral sense! 05:36:05 i'm so ~witty~ for pointing it out 05:36:24 alise: Are you sure? OK.....,,,, 05:36:31 dx is infinitesimal 05:36:40 I AM THE FIRST PERSON TO USE THAT LITERALLY. 05:36:44 cheater99: nice cheater99 knows more math than alise 05:36:51 zzo38: sarcasm. 05:36:54 Quadrescence: no, shh 05:37:00 Quadrescence: stop being silly. 05:37:09 not silly it's tru 05:37:12 Quadrescence: of course i do, but that's not the point 05:37:19 Quadrescence: i assume you're operating on the assumption that this is going to irritate or otherwise annoy me eventually 05:37:22 the point is, alise's tired, and wants a foot rub 05:37:28 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 you're thinking of \Deltax 05:38:05 alise: what did you say i didn't understand 05:38:18 * Sgeo differentiates Quadrescence 05:38:26 Sgeo: you just got me back 05:38:31 alise: so how did this thing start 05:38:34 Quadrescence: the only reason you're bugging me is to make me irritated. 05:38:37 obviously quad is a bit pissy 05:38:39 and you're pissy 05:38:42 i'm not pissy 05:38:43 you kids need to chillax 05:38:44 just tired 05:38:48 tiredpissy 05:38:48 alise: oh no, I don't want to get you irritated at all! 05:38:54 I just want you to get your act together 05:39:01 same with sgeo 05:39:04 is quaddie here just to piss you off 05:39:05 cheater99: not pissy at all. 05:39:09 My "act"? 05:39:15 cpressey has his act together most surely 05:39:15 cheater99: well, he started talking to piss Sgeo off 05:39:17 Yes you two, you need to become upstanding citizens like Quadrescence here. 05:39:17 so does anmaster 05:39:20 then switched to me when Sgeo stopped responding 05:39:22 so roughly that. 05:39:24 No, Delta x is the change in "x", what I mean by "how x changes" is something else 05:39:35 alise: so why r u responding 05:39:35 My act together in what sense? 05:39:37 i guess all Quadrescence really wants is to be a father figure. 05:39:42 maybe he could try reproducing. 05:39:48 alise: just start talking about something he won't understand anyways 05:39:48 alise: i was earlier 05:39:55 cheater99: i'm going to sleep in a few seconds, so might as well 05:39:57 alise: like cayley numbers 05:40:02 my dick smells like the wetness of a woman right now 05:40:07 but that's TMI 05:40:27 Did you win a big spider, yet? On the other side, did you win $4594.492 yet? 05:40:31 the fact that you have a dick is truly surprising 05:40:44 i thought i was the only Man on the internet 05:40:45 cheater99: octonion algebra is easy 05:40:49 And on the other other side, did you win lose yet? 05:40:53 Quadrescence: google is slow today 05:41:05 cheater99: i'm writing a book with a large section on algebra 05:41:21 which trivializes octonions from such a standpoint 05:41:31 if you publish it with 'octonion', i'll request a copy and ritually burn it 05:41:43 it's cayley octave 05:41:54 octonion is just silly 05:41:55 It won't talk about octonions explicitly 05:42:21 alise: nighty night little moonray 05:42:25 * cheater99 tucks alise in 05:42:38 * cheater99 sings alise a bedtime song 05:42:39 Quadrescence: What is this book, please? 05:42:58 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 Quadrescence: it's 'octave' though. 05:43:35 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 an octonion is a salad out of onions and octopuses. 05:44:15 zzo38: "Computer Algebra and Algebraic Programming" 05:44:48 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 alise: I don't believe what Vorpal said about j not being well defined for negative numbers 05:44:56 I think it is 05:45:03 cpressey: i think it might depend on the semantics of k 05:45:10 oh right,k 05:45:12 i mean 05:45:19 when you put a j on a negative number after a k 05:45:24 what's the effect of the control flow there? 05:45:29 it could hit the k again 05:45:38 right 05:45:42 and then wtf 05:45:44 but since k says to repeat n times, it'd stack up 05:46:01 hmm 05:46:51 http://www.archive.org/details/Torley_Wong_-_The_Final_Selection 05:47:13 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 What software (and other things) are you using to write a book? 05:47:30 * Sgeo likes "Lovers' Dance" 05:47:31 Sgeo: oh yes, the second life guy who went deaf 05:47:33 unless i'm mistaken 05:47:36 alise, yes 05:47:43 my memory disturbs even me 05:47:47 zzo38: LaTeX, PGF/TikZ for diagrams 05:47:55 http://music.torley.com/ ;; what how is he releasing new things 05:48:01 Lisp and C for actual implementation languages 05:48:16 What Lisp? 05:48:34 Sgeo: AUTOLISP 05:48:34 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 LaTeX as an actual implementation language. It's the only way 05:48:47 Quadrescence: either you're joking or just stupid 05:49:03 alise, hm? Why is Autolisp bad? 05:49:05 alise: true 05:49:08 cpressey: ??? 05:49:49 Do you know about Enhanced CWEB? 05:49:59 zzo38: If it can be done, someone here needs to do it! 05:50:05 zzo38: Well, Enhanced CWEB produces pure TeX iirc, and that is easy to incorporate 05:50:08 zzo38: Only the examples you've posted 05:50:26 For some reason, I remember reading that Torley went undeaf, but I may have hallucinated that 05:50:49 Beethoven was deaf (from what I understand) when he wrote his very late stuff 05:50:55 He was also a genius, though 05:51:04 those torley wong tracks are so bad 05:51:08 i bet his ears went long before he noticed 05:51:12 cpressey: If what can be done, someone here needs to do what? 05:51:40 zzo38: Write real, computational programs in LaTeX. Maybe by feeding the output of LaTeX back into LaTeX. 05:51:45 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 zzo38: Yeah, it'd be easy 05:52:28 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 Quadrescence: so are all algebraic programming experts pussy magnets, or is it just you? 05:52:44 alise, what's wrong with Autolisp? 05:52:50 Quadrescence: And if you need help with Enhanced CWEB, you can ask me, I might be able to help 05:53:08 Also, alise, I might need your help with parts again 05:53:09 zzo38: That's pretty coo. 05:53:10 cpressey: I don't really know; I am quite a magnet 05:53:11 *cool. 05:53:27 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 parts? 05:54:18 for what? 05:54:20 what r u building? 05:54:21 cpressey: http://i.imgur.com/J8yh3.jpg 05:54:22 Gaming computer 05:54:27 nice 05:54:30 i cud help u 05:54:34 Quadrescence: surely your raw, irresistable animal sexuality can be attributed to *something*, and if not algebraic programming, then what? 05:54:41 i m good with computerz 05:55:02 cpressey: to the instinctive nature of humans to reproduce? 05:55:09 cpressey: i wouldn't know, it seems like Quadrescence only has that one thing. 05:55:28 i love how cpressey totally asked for a picture. 05:55:39 me too 05:55:44 Quadrescence: naw, every living creature has that. but you, you're special. 05:56:01 alise: i am so totally not looking at any pictures wrt this k 05:56:12 cpressey: that photo is of me 05:56:16 sfw 05:56:28 It is, in fact, sfw 05:56:29 it's actually a photo of a mountain of raging bees 05:56:34 descending on a pack of solid lies 05:56:41 meeting at the mountain's top 05:56:44 Quadrescence: why are you all wet in that pic 05:56:50 augur: you don't want to know 05:56:57 yes i do 05:57:01 augur: I was sitting in a hot car for a while 05:57:05 so it's pretty Gross Sweat 05:57:18 Thanks for asking though you are quite observant 05:57:23 OH REALLY 05:57:31 yeah 05:57:33 Sgeo: wait what parts? for what? 05:57:40 cpressey, gaming computer 05:57:41 i like a sweaty grimey man 05:57:46 Sgeo: OK 05:58:06 augur: nice ;) 05:58:29 Quadrescence: got any more pics? 8D 05:58:33 omg 05:58:34 augur: yeah 05:58:39 wonderful 05:58:42 link away! 06:00:30 http://i.imgur.com/tAVTM.jpg 06:00:30 http://i.imgur.com/BySSK.jpg 06:00:30 http://i.imgur.com/hrSR7.jpg 06:00:30 http://i.imgur.com/MJDtg.jpg 06:00:30 http://i.imgur.com/sqKOd.jpg 06:00:32 http://i.imgur.com/u5z7p.jpg 06:00:39 how's that 06:01:23 wait the myspace-esque one http://i.imgur.com/iPy0d.jpg 06:01:24 fuckable 06:01:47 how bout you two move this to pm 06:02:00 maybe later cpressey 06:02:02 cpressey: but that would defeat the point 06:02:15 Funge-98 Final Specification 06:02:15 Chris Pressey, Sept 11, 1998 06:02:15 revised for clarity: Sept 30 1998 06:02:15 Table of Contents 06:02:15 Introduction 06:02:15 What is a Funge? 06:02:17 About this Document 06:02:19 The Funge Virtual Machine 06:02:21 Code and Data 06:02:23 Funge-Space 06:02:25 Stack Stack 06:02:27 Funge Source File Format 06:02:29 Code: Program Flow 06:02:31 Instruction Pointer 06:02:33 Instructions 06:02:35 Direction Changing 06:02:37 Wrapping 06:02:39 Flow Control 06:02:41 Decision Making 06:02:43 Data: Cell Crunching 06:02:45 Integers 06:02:47 Strings 06:02:49 Stack Manipulation 06:02:51 Stack Stack Manipulation 06:02:53 Media: Communications and Storage 06:02:55 Funge-Space Storage 06:02:57 * augur manipulates alise's stack 06:02:57 Standard Input/Output 06:02:59 File Input/Output 06:03:01 System Execution 06:03:03 System Information Retrieval 06:03:05 Scale: Extension and Customization 06:03:07 Handprints 06:03:09 Fingerprints 06:03:11 Funge Central Registry 06:03:13 Appendix 06:03:15 Instruction Quick Reference 06:03:17 Concurrent Funge-98 06:03:19 Lahey-Space 06:03:21 Other Topologies 06:03:23 Introduction 06:03:25 What is a Funge? 06:03:27 Funges are programming languages whose programs are typically expressed in a given topological pattern and number of dimensions. 06:03:30 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 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 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 About this Document 06:03:45 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 This document is suitable 06:03:49 ALISE I WILL FUCK YOU UP 06:03:50 Introduction 06:03:52 What is a Funge? 06:03:54 Funges are programming languages whose programs are typically expressed in a given topological pattern and number of dimensions. 06:03:56 alise, you're spamming 06:03:57 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 /flushq or similar? 06:04:01 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 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 Sgeo: i suspect he accidentally send the whole thing 06:04:10 spamming is preferable 06:04:10 About this Document 06:04:12 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 This document is suitable for an audience not already familiar with any Funge of any kind or year. 06:04:17 The Funge Virtual Machine 06:04:18 and it wont stop till it sends it all 06:04:19 Code and Data 06:04:21 Any given piece of code or data in a Funge can be stored in one of two places (called a cell): 06:04:23 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 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 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 the rate its going seems like that 06:04:32 What size exactly is left up to the impl 06:04:32 Flushq on XChat stops sending 06:04:36 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 Funge-Space 06:04:41 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 Don't know what the equiv is for alise's client 06:04:46 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 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 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 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 of the usual Cartesian co-ordinate system, it is upside-down. 06:05:03 alise, Alt-F4? 06:05:04 Befunge-93 32-bit Befunge-98 06:05:06 ========== ================= 06:05:08 0 x 79 |-2,147,483,648 06:05:09 Sgeo: THIS IS PREFERABLE 06:05:10 0+-------------+ | 06:05:12 | | x 06:05:14 | -----+----- 06:05:16 y| -2,147,483,648 | 2,147,483,647 06:05:18 | | 06:05:20 | y|2,147,483,647 06:05:22 24+ 06:05:24 Stack Stack 06:05:25 cpressey, wha? 06:05:26 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 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 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 alise is stuck 06:05:36 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 he cant respond at all i think 06:05:39 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 Funge Source File Format 06:05:45 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 Befunge-93 source files are plain text files containing only printable ASCII characters and the end-of-line controls described below. 06:05:53 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 ning is always the same to Funge, 'character #417', regardless of what it looks like. 06:06:00 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 E can still Alt-F4 or worst-comes-to-worst, hard-reset 06:06:04 0..31 : "ASCII controls" (only 10 is currently defined to mean EOL) 06:06:06 32..126 : "ASCII printable characters" (all are input/output and fixed-width) 06:06:08 (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 127 : "delete control" (undefined) 06:06:10 128..2bil: "extended printable characters" (machine and font specific) 06:06:10 Assuming e sees any of this 06:06:12 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 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 Line Feed (10) 06:06:20 Carriage Return (13) 06:06:22 Carriage Return, Line Feed (13, 10) 06:06:24 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 End-of-line markers do not appear in Funge-Space once the program is loaded. 06:06:29 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 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 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 In Trefunge-98, the Form Feed (12) character increments the z coordinate and resets the x and y coordinates to zero. 06:06:46 Code: Program Flow 06:06:48 Instruction Pointer 06:06:50 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 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 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 In two dimensions, we have the following terminology. 06:07:06 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 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 Instructions 06:07:15 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 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 Quadrescence: I'm surprised how little you understand 06:07:21 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 However, a Funge-98 interpreter may also expose any number of proprietary instructions above ASCII 127 or below ASCII 0. 06:07:25 cpressey: true 06:07:26 can someone please kick alise 06:07:28 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 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 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 Is oerjan an op? 06:07:40 ute. To test if they are actually supported, execute 1y and examine the cell it produces. 06:07:42 Direction Changing 06:07:44 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 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 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 Quadrescence: actually no, I guess I'm not that surprised 06:07:54 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 The following instructions are not in Befunge-93, but they are in Funge-98. 06:07:59 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 cpressey: yeah :/ 06:08:02 To remember which is which, visualize yourself on the seat of a bicycle, looking down at the handlebars: 06:08:04 +- 06:08:06 |  06:08:08 +-+-+ 06:08:10 | |-+ 06:08:12  | 06:08:14 -+ 06:08:16 [ ] 06:08:18 Turn LeftGo ForwardTurn Right 06:08:20 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 Quadrescence: would you ever say anything to contradict me? 06:08:23 The x "Absolute Vector" instruction pops a vector off the stack, and sets the IP delta to that vector. 06:08:25 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 Might alise be vulnerable to some exploit? 06:08:28 Wrapping 06:08:30 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 cpressey: yes 06:08:34 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 Sgeo: a funge exploit? 06:08:38 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 Hehe 06:08:40 Quadrescence: I see 06:08:42 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 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 Some exploit that tends to kick people off IRC 06:08:50 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 normally - the wrap is complete. 06:08:59 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 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 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 cpressey: One day you'll be on good terms with me I hope! 06:09:08 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 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 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 Flow Control 06:09:18 cpressey: did you write this spec 06:09:19 ? 06:09:20 The # "Trampoline" instruction moves the IP one position beyond the next Funge-Space cell in its path. 06:09:22 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 The following instructions and markers are not in Befunge-93, but they are in Funge-98. 06:09:27 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 ; 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 Quadrescence: you don't even know *that* 06:09:34 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 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 cpressey: true 06:09:42 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 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 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 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 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 stupid limechat has no /ignore :| 06:10:02 Also, note k will never, ever actually execute instruction #32, space, or ;. 06:10:04 Decision Making 06:10:06 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 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 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 WHY ARE THERE NOT OPS?! 06:10:15 The | "North-South If" instruction pops a value off the stack; if it is zero it acts 06:10:16 alise was able to successfully contact me. 06:10:17 like v, and if non-zero it acts like ^. | is not available in Unefunge. 06:10:19 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 And implied that this is deliberate. 06:10:22 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 Sorry, alise. 06:10:25 cpressey: I wanted to offer typesetting it for you 06:10:27 Data: Cell Crunching 06:10:29 Integers 06:10:31 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 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 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 For example, to push the value 123 onto the stack, one might write 06:10:42 99*76*+ 06:10:44 or 06:10:44 I hope never to have to violate your trust again. 06:10:46 555**2- 06:10:48 Funge also offers the following arithmetic instructions: 06:10:50 the - "Subtract" instruction, which pops two values, subtracts the first from the second using integer subtraction, and pushes the result; 06:10:53 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 Quadrescence: hm, typesetting.... hm. no 06:10:57 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 Strings 06:11:03 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 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:11 THIS IS THE BEST TYPESETTING OF THIS SPEC, EVER 06:11:13 Befunge-93Befunge-98 06:11:15 "hello world" "hello world" 06:11:17 "hello world" "hello "::"world" 06:11:18 Or, maybe e messaged me at a different time 06:11:19 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 "Q", 06:11:24 In the middle somewhere 06:11:25 'Q, 06:11:27 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 And thus can't actually respond 06:11:29 cpressey: well I am not offering it, I just was going to if you answered my question earlier with "yes" 06:11:30 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 Stack Manipulation 06:11:38 The $ "Pop" instruction pops a cell off the stack and discards it. 06:11:40 The : "Duplicate" instruction pops a cell off the stack, then pushes it back onto the stack twice, duplicating it. 06:11:43 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 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 Stack Stack Manipulation 06:11:51 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 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 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 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 If n is zero, no elements are transferred. 06:12:09 If n is negative, |n| zeroes are pushed onto the SOSS. 06:12:11 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 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 If n is zero, no elements are transferred. 06:12:21 If n is negative, |n| cells are popped off of the (original) SOSS. 06:12:23 { makes the current TOSS the new SOSS. } makes the current SOSS the new TOSS. 06:12:25 { 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 The practical use of these instructions is to "insulate" and "localize" procedures or other blocks of Funge code. 06:12:31 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 If there is no SOSS (the TOSS is the only stack), u should act like r. 06:12:37 If count is negative, |count| cells are transferred (similarly in a pop-push loop) from the TOSS to the SOSS. 06:12:40 If count is zero, nothing happens. 06:12:42 Media: Communications and Storage 06:12:44 Funge-Space Storage 06:12:46 The g "Get" and p "Put" instructions are used to store and retrieve data and code in Funge-Space. 06:12:48 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 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 Standard Input/Output 06:12:58 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 Outputting character number 10 will result in a new line being displayed on the standard output. 06:13:04 Numeric output is formatted as a decimal integer followed by a space. 06:13:06 These instructions will act as r does, should the standard output fail for any reason. 06:13:08 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 Quadrescence: Ever read McLuhan? 06:13:12 An input of character number 10 indicates that the user pressed the 'Enter' key, or the equivalent key on their keyboard. 06:13:15 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 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 File Input/Output 06:13:25 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 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 , Va and Vb, suitable arguments to a corresponding o instruction. If the file open failed, the instruction acts like r. 06:13:35 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 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 cpressey: no 06:13:41 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 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 This was all a ploy of alise to get Quadrescence to be quiet. 06:13:49 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 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 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 Sgeo: true 06:13:58 Sgeo: it worked 06:13:59 System Execution 06:14:00 Again, alise, I'm really sorry. 06:14:01 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 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 System Information Retrieval 06:14:12 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 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 After an execution of y with a non-positive argument, the stack contains many more cells (listed from top to bottom:) 06:14:25 1 cell containing flags (env). 06:14:27 Least Significant Bit 0 (0x01): high if t is implemented. (is this Concurrent Funge-98?) 06:14:29 Bit 1 (0x02): high if i is implemented. 06:14:31 Bit 2 (0x04): high if o is implemented. 06:14:33 Bit 3 (0x08): high if = is implemented. 06:14:35 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 Further more significant bits: undefined, should all be low in Funge-98 06:14:40 1 cell containing the number of bytes per cell (global env). 06:14:42 aka cell size. Typically 4, could also be 2, 8, really really large, infinity, etc. 06:14:44 1 cell containing the implementation's handprint (env). 06:14:46 1 cell containing the implementation's version number (env). 06:14:48 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 1 cell containing an ID code for the Operating Paradigm (global env) 06:14:53 0 = Unavailable 06:14:55 1 = Equivalent to C-language system() call behaviour 06:14:59 2 = Equivalent to interpretation by a specific shell or program 06:15:01 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 3 = Equivalent to interpretation by the same shell as started this Funge interpreter, if applicable 06:15:07 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 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 1 cell containing a path seperator character (global env) 06:15:16 This is what path seperators for i and o filenames should look like. 06:15:18 1 cell containing the number of scalars per vector (global env) 06:15:20 aka number of dimensions. 2 for Befunge, 1 for Unefunge, 3 for Trefunge. 06:15:22 1 cell containing a unique ID for the current IP (ip) 06:15:24 Only significant for Concurrent Funge. This ID differentiates this IP from all others currently in the IP list. 06:15:27 1 cell containing a unique team number for the current IP (ip) 06:15:27 < alise> aka cell size. Typically 4, could also be 2, 8, really really large, infinity, etc. <-- LOVE THAT PART 06:15:29 Only significant for NetFunge, BeGlad, and the like. 06:15:31 1 vector containing the Funge-Space position of the current IP (ip) 06:15:33 1 vector containing the Funge-Space delta of the current IP (ip) 06:15:35 1 vector containing the Funge-Space storage offset of the current IP (ip) 06:15:37 1 vector containing the least point which contains a non-space cell, relative to the origin (env) 06:15:39 1 vector containing the greatest point which contains a non-space cell, relative to the least point (env) 06:15:41 These two vectors are useful to give to the o instruction to output the entire program source as a text file. 06:15:44 1 cell containing current ((year - 1900) * 256 * 256) + (month * 256) + (day of month) (env) 06:15:46 1 cell containing current (hour * 256 * 256) + (minute * 256) + (second) (env) 06:15:48 1 cell containing the total number of stacks currently in use by the IP (size of stack stack) (ip) 06:15:50 size-of-stack-stack cells containing size of each stack, listed from TOSS to BOSS (ip) 06:15:52 Stack sizes are pushed as if they were measured before y began pushing elements onto the stack. 06:15:54 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 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 The first string is the name of the Funge source program being run. 06:16:02 a series of strings, each terminated by a null, the series terminated by an additional null, containing the environment variables. (env) 06:16:05 The format for each variable setting is NAME=VALUE. 06:16:07 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 cpressey: how far through are we 06:16:09 10%? 06:16:12 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 Scale: Extension and Customization 06:16:21 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 cheater99: more than that I think, but the whole appendix is yet to come 06:16:26 Handprints 06:16:28 A handprint is a bitstring which uniquely identifies a particular implementation (interpreter, compiler, etc.) of Funge-98. 06:16:31 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 deal case.) 06:16:38 Handprints generally stay they same between revisions of an interpreter. They are accompanied by a version number when retrieved from y. 06:16:41 alise asked me a question, I wonder if I should repeat it. 06:16:41 Fingerprints 06:16:43 Extension and customization of Funge-98 are accomplished through the so-called "fingerprint mechanism". No such mechanism exists for Befunge-93. 06:16:45 I know my answer. 06:16:46 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 Maybe if everyone else agreed... 06:16:50 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 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 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 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 Although I doubt it 06:17:06 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 Sgeo: I'm not sure alise's client is in any position to respond at this point 06:17:11 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 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 ( 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 cpressey, e is responding via PM 06:17:24 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 () in Funge are kind of like "use x ... no x" in Perl. The interpreter-writer or interpreter-customiz 06:17:30 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 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 When loaded, a fingerprint which implements A and B semantics should act something like: 06:17:38 save(A); bind(A, myAsemantic()); save(B); bind(B, myBsemantic()); 06:17:40 When unloaded, the same fingerprint should act something like 06:17:42 restore(B); restore(A); 06:17:44 In this sense, 'bind' means to change what the execution of an instruction does in the current Funge-98 program. 06:17:47 'save' means to save (push onto a stack) the semantics of an instruction for later use. 06:17:49 'restore' means to recall (pop from a stack) the semantics of an instruction from the last saved version. 06:17:51 This allows 'overloading' fingerprints. Say three fingerprints are implemented on your interpreter, 06:17:53 E.G. which implements D as 'Destroy' and R as 'Restore' 06:17:55 TEST which implements S as 'Send', R as 'Receive', and E as 'Encrypt' 06:17:57 WORK which implements S as 'Slice', D as 'Dice', P as 'Puree' 06:17:59 With these, the Funge programmer ought to be able to make code like: 06:18:01 ".G.E"4( ... "TSET"4( ... "KROW"4( ... S ... ) ... ) ... ) 06:18:03 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 "KROW"4( ... "TSET"4( ... ".G.E"4( ... S ... ) ... ) ... ) 06:18:08 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 Funge Central Registry 06:18:14 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 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 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 Appendix 06:18:28 Instruction Quick Reference 06:18:28 cheater99: we're about 75% or 80% through 06:18:30 98 Funge-98 only, not in Befunge-93. 06:18:32 2D Minimum 2 dimensions (not in Unefunge). 06:18:34 3D Minimum 3 dimensions (not in Unefunge or Befunge). 06:18:36 c Concurrent Funge. Check y to see if these instructions are implemented. 06:18:38 f Filesystem Funge. Check y to see if these instructions are implemented. 06:18:40 DecimalASCIIInstructionStack BeforeStack AfterOther Effects 06:18:42 (bottom ... top) 06:18:44 32spaceSpace  not normally executed 06:18:45 love the tabs 06:18:46 33!Logical NotbNOT b  06:18:48 34"Toggle Stringmode  stringmode <- NOT stringmode 06:18:50 35#Trampoline  pos <- pos + delta 06:18:52 36$Popn   06:18:54 37%Remaindera ba REM b  06:18:56 38&Input Integer aa = readint() 06:18:58 39'Fetch Character/98 cpos <- pos + delta 06:19:00 40(Load Semantics/98en..e1 nf 1overloads A-Z 06:19:02 41)Unload Semantics/98en..e1 n unloads last A-Z 06:19:04 42*Multiplya ba * b  06:19:06 43+Adda ba + b  06:19:08 44,Output Characterc writechar(c) 06:19:10 45-Subtracta ba - b  06:19:12 46.Output Integera writeint(a) 06:19:14 47/Dividea ba / b  06:19:16 480Push Zero 0  06:19:18 491Push One 1  06:19:20 502Push Two 2  06:19:22 513Push Three 3  06:19:24 524Push Four 4  06:19:26 535Push Five 5  06:19:28 546Push Six 6  06:19:30 557Push Seven 7  06:19:32 568Push Eight 8  06:19:34 579Push Niner 9  06:19:36 58:Duplicatevv v  06:19:38 59;Jump Over/98  nothing executed until next semicolon 06:19:40 60 61=Execute/98/fSTRrr = system-execute(STR) 06:19:44 62>Go East  delta <- (1,0) 06:19:46 63?Go Away  delta <- (1,0)?(-1,0)?(0,1)?(0,-1) 06:19:48 64@Stop  halt IP 06:19:50 65-90A-Z   Fingerprint-Defined/98 06:19:52 91[Turn Left/98/2D  delta <- rot(-90, delta) 06:19:54 92\Swapa bb a  06:19:56 93]Turn Right/98/2D  delta <- rot(90, delta) 06:19:58 94^Go North/2D  delta <- (0,-1) 06:20:00 95_East-West If b delta <- if (b) (-1,0) else (1,0) 06:20:02 96`Greater Than a ba > beither 1 or 0 06:20:04 97aPush Ten/98 10  06:20:06 98bPush Eleven/98 11  06:20:08 99cPush Twelve/98 12  06:20:10 100dPush Thirteen/98 13  06:20:12 101ePush Fourteen/98 14  06:20:14 102fPush Fifteen/98 15  06:20:16 103gGetVavv = fetch-funge-space(offset+Va) 06:20:18 104hGo High/98/3D  delta <- (0,0,-1) 06:20:20 105iInput File/98/fVa f STRVa Vbinputs file 06:20:22 106jJump Forward/98s pos <- pos + delta * s 06:20:24 107kIterate/98n execute next instruction now, n times 06:20:26 108lGo Low/98/3D  delta <- (0,0,1) 06:20:28 109mHigh-Low If/98/3Db delta <- if (b) (0,0,-1) else (0,0,1) 06:20:30 110nClear Stack/98en..e1   06:20:32 111oOutput File/98/fVa Vb f STR outputs file 06:20:34 112pPutv Va store-funge-space(offset+Va,v) 06:20:36 113qQuit/98r immediate exit, returncode = r 06:20:38 114rReflect/98  delta <- delta * -1 06:20:40 115sStore Character/98c store-funge-space(position+delta,v) 06:20:42 116tSplit/98/c  Split IP 06:20:44 117uStack Under Stack/98n(en..e1)  06:20:46 118vGo South/2D  delta <- (0,1) 06:20:48 119wCompare/98/2Da b if (a>b) ']' elsif (a 120xAbsolute Delta/98Va delta <- Va 06:20:52 121yGet SysInfo/98cen(..e1)  06:20:54 122zNo Operation/98    06:20:56 123{Begin Block/98en..e1 n(en..e1) offset <- pos + delta, etc 06:20:58 124|North-South If/2Db delta <- if (b) (0,-1) else (0,1) 06:21:00 125}End Block/98en..e1 n(en..e1) offset <- SOSS Va, etc 06:21:02 126~Input Character cc = readchar() 06:21:04 Concurrent Funge-98 06:21:06 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 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 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 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 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 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 Lahey-Space 06:21:30 Lahey-Space is a mathematical model of the space used in Funge-98. 06:21:32 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 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 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 YES, DON'T FORGET LAHEY-SPACE! 06:21:43 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 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 Other Topologies 06:21:53 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 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 We can define an a wrapping function W() along the lines of: 06:22:02 W(x,y) = (x<0 -> x:=79, x>79 -> x:=0, y<0 -> y:=24, y>24 -> y:=0) 06:22:04 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 Copyunder (u)1998 Cat's-Eye Technologies. See http://www.cats-eye.com/license/ for license information. 06:22:33 no shit sherlock 06:22:38 no shit sherlock 06:23:01 lol 06:23:03 haha 06:23:05 My trust is so broken that my heart will never be whole again. 06:23:09 rofl 06:24:07 Thank you for participating in the group reading and commentary session of Chris Pressey's "Funge-98 Final Specification". 06:24:10 Join us again next week, when we will be reciting the entire INTERCAL-72 manual. 06:24:14 Cool, messages arriving out of order. 06:24:30 Best. Reading. EVER. 06:24:39 Some messages from alise arrived during the reading 06:24:48 I still can't figure it out 06:26:13 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 To get some practice 06:33:07 oh hey alise 06:33:15 lol 06:33:24 Goodnight. 06:33:29 night 06:33:32 night alise 06:33:35 Night alise 06:34:07 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 Bye. 06:34:13 -!- alise has quit (Quit: Leaving). 06:34:27 Sgeo: it would be a good idea. i can say from experience that underload is pretty easy. 06:35:02 Factor comes with some parsing vocabulary 06:37:18 hmmm 06:43:32 -!- Mathnerd314 has quit (Quit: ChatZilla 0.9.86-rdmsoft [XULRunner 1.9.2.8/20100722155716]). 06:44:33 alise should do that more often 06:46:45 -!- zzo38 has quit (Remote host closed the connection). 06:47:18 cheater99: you are a distinctly creepy individual 06:58:32 -!- ais523 has joined. 07:01:39 morning, ais523. in case you care, i just wrote an Underload interpreter in C, and compiled it under AmigaOS 1.3. 07:01:53 heh 07:02:05 I do care; writing it in C is not the interesting part, compiling it under AmigaOS is 07:05:01 meanwhile, Esolang now has two FALSE fans called Ian 07:05:05 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 which is confusing when trying to review recent changes 07:05:17 hmph 07:05:27 cpressey: the anagolf impl crashes on the vast majority of Underload programs 07:05:35 because it doesn't actually allocate memory, it just uses it and hopes it's free 07:05:44 presumably, that's OK for golfing, but not for regular programming 07:05:46 yes. i noticed that. 07:05:59 boggling at how it could possibly work correctly, rather. 07:06:07 well, there's always a chance... 07:06:50 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 cpressey: why am i creepy? 07:31:57 cpressey cpressey cpressey 07:33:17 That's why. 07:33:58 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 btw I genuinely think AnMaster is badass like cpressey is <-- um... thanks I guess 11:41:43 -!- Phantom_Hoover has joined. 11:42:26 ais523, was it Birmingham or Manchester you lived in? 11:42:46 well, perhaps you should write it down, you seem to keep forgetting 11:42:57 why do you care anyway? 11:43:47 Because I need a backup for Operation Hatheist! 11:47:05 If I can't get the hat in Edinburgh, you can get it when it goes through England! 11:52:34 DAMMIT AIS I NEED YOU 11:53:13 I don't really see what I have to do with hat theft... 11:59:33 You're ideally placed for it! 12:01:19 -_- 12:09:49 ais523, do you have a ready supply of depleted Eucharist? 12:10:07 I doubt it, although I don't understand the question 12:11:10 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 ooh, SCO just appealed. Again. 13:01:23 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 it doesn't seem obviously impossible 13:45:11 -!- sftp has joined. 13:46:13 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 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 fizzie, awww 14:12:51 Incidentally, does anyone know why LyX refuses to work with noweb for me? 14:13:18 It says something about literate-article.layout being missing, but I have no idea what that is. 14:14:58 And nor does Google, annoyingly. 14:28:19 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 fizzie, should work for R+ or similar though? 14:47:33 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 oh and: 14:47:49 $ locate literate-article.layout 14:47:49 /usr/share/lyx/layouts/literate-article.layout 14:47:50 hm 14:48:03 exists on both arch and ubuntu for me 14:48:20 Yes, same. 14:48:30 Why does it mock me like this, then? 14:48:47 no clue. How are you using it? 14:49:49 Hmm, it actually says that literate-article is not usable. 14:50:27 well, maybe you are missing some package it needs? 14:50:49 The only package it uses is noweb... 14:50:56 And I have noweb installed. 14:51:56 hm 14:52:57 Phantom_Hoover, rerun the system check thingy? 14:53:25 System check thingy? 14:53:37 -!- ais523 has quit (Remote host closed the connection). 14:53:45 Tools → Reconfigure 14:53:48 then restart lyx 14:54:08 Disturbingly, though I have the noweb package installed, locate noweb only shows one of LyX's files. 14:54:31 Phantom_Hoover, lyx caches what packages are available on the system. 14:54:41 Thus if you change that set you need to run that option 14:55:08 Well, it didn't complain this time. 14:55:51 then you probably forgot to run the reconfigure option after you installed noweb (assuming you installed lyx before noweb) 14:55:52 But it doesn't generate DVIs or PDFs. 14:56:11 hm why does noweb depend on iconx? 14:56:15 No idea. 14:58:54 Well, it seems to be working all right now. 14:58:55 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 gah, ais523 was here but left 15:17:43 -!- augur has quit (Remote host closed the connection). 15:18:00 06:54:08 Disturbingly, though I have the noweb package installed, locate noweb only shows one of LyX's files. 15:18:06 that's just locate's cached db 15:18:13 it should appear shortly 15:35:26 Gregor: sidux totally sucks. 15:44:44 It sucks SO MUCH and you should totally defend it by listing everything good about it. 15:44:51 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 hrrmph 16:37:07 "Native ZFS for Linux" 16:37:10 http://github.com/behlendorf/zfs/wiki 16:37:23 AWESOME OR AWESOME 16:38:12 http://github.com/behlendorf/zfs/wiki/faq 16:41:50 -!- ais523 has joined. 16:47:54 [ehird@dinky Downloads]$ sudo dd if=/dev/zero of=/dev/sdb 16:47:59 a scary command to run 16:48:00 hi ais523 16:48:15 hi alise 16:48:45 also, I'd make sure I was certain I knew what sdb was connected to before I ran that! 16:48:56 a USB stick! Unless I'm horribly wrong! 16:49:04 In which case, something else! 16:49:07 Possibly important! 16:49:13 Exclamation mark. 16:49:32 you could try dmesg immediately after plugging it in 16:49:37 hmm, a good way to check would be to reformat it 16:49:51 mke2fs goes completely crazy if you try to reformat a mounted filesystem 16:50:17 hmm, it's actually mounted 16:50:19 sdb1 that is 16:50:24 this will be fun, then 16:50:25 arguably a bad sign 16:50:30 the dd is... not doing anything 16:50:39 hmm, use "mount" to check what filesystems are mounted where 16:50:40 ais523: oh, I know it's the USB stick; unetbootin just told me that it has files already on it 16:50:46 and named it ARCH(date) 16:50:50 meaning it's the USB stick with Arch Linux on it 16:50:56 ah, OK 16:51:00 850240000 bytes (850 MB) copied, 225.212 s, 3.8 MB/s 16:51:01 wow, dd is slow 16:51:04 surely that dd should have a bs= set? 16:51:13 indeed... 16:51:14 if you don't, it tries to copy a byte at a time IIRC 16:51:24 is there any downside to doing bs=sizeofstick count=1? 16:51:29 i guess maybe it should be a power of two 16:51:46 it should be the natural block size of the device for best performance 16:51:52 i have no idea what that is 16:51:56 but I don't know what it is for a typical USB controller 16:52:16 [ehird@dinky Downloads]$ sudo dd bs=16384 if=/dev/zero of=/dev/sdb 16:52:18 That should be fine. 16:53:16 It's just 4 gigs, sheesh. 16:53:33 checking online suggests that for USB drives, it's memory management that's the dd bottleneck rather than the USB controller 16:53:52 apparently Linux handles all block sizes equally, but Cygwin dd screws up some sizes quite badly (like 4k) 16:54:33 Wikipedia says that the actual physical block size tends to be 64, 128, or 256 KiB 16:55:00 or maybe as much as 512 KiB on newer NAND flashes 16:56:46 [ehird@dinky Downloads]$ sudo kill -9 7067 16:56:46 [ehird@dinky Downloads]$ sudo kill -9 7067 16:56:49 [ehird@dinky Downloads]$ 16:56:55 I am... scared. 16:57:17 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 fizzie: <3 16:57:52 fizzie: Totally kissing DMM's ass, though. How could he /not/ publish it? 16:58:11 in piet, the size of a colored area was somehow meaningful right? 16:58:18 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 like that it's not just a colored 2d brainfuck 16:58:23 Piet is presumably quite easy to steganographically embed in other languages 16:58:26 oklopol: Yes, for the "push" command. 16:58:28 oklopol: yes, sometimes 16:58:53 but are two colors that differ just a bit completely different 16:58:55 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 oh wait 16:59:07 It's on another machine here but I have no idea where and the machine is in a box. 16:59:07 was it so that just a few colors are meaningful 16:59:18 i should just open the page 16:59:25 http://esoteric.voxelperfect.net/wiki/Piet 16:59:25 :P 16:59:31 *http://esolangs.org/wiki/Piet 16:59:31 alise: I think so, let me check 16:59:34 oklopol: It has a palette of 18 colors, and the spec doesn't define what other colors should do. 17:00:04 (I don't know what implementations tend to do, maybe to map to nearest Piet color or something.) 17:00:38 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 fizzie: most likely just cry 17:00:51 heh, do you have a piet compiler? 17:01:08 to Piet, that is 17:01:18 No, that was just for illustrative purposes. (At least I *think* I didn't write one.) 17:01:35 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 ais523: hmm, if you could upload both that would be appreciated 17:02:31 perhaps one is the older one before your improvements to the prelude 17:02:37 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 fizzie: Awesome. 17:03:10 alise: checked the last-modified dates, they're a day apart 17:03:18 ais523: well, a lot can change in a day. 17:03:21 Maybe I should've made it print out "Stupid in Green" though. Oh well. 17:03:34 fizzie: nah, "Garfield" is better 17:03:44 "Stupid in Green" feels like repeating yourself 17:04:19 can dd output a status report every so often? 17:04:21 without me manually triggering it 17:05:06 fizzie: erm, do you just have the program between two panels? :P 17:05:09 No, but maybe you can put a bash "kill; sleep;" loop somewhere to trigger it every so often. 17:05:32 oklopol: The loopy part is there; the push(n) data is mostly in panels, though. 17:05:40 okay 17:05:42 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 ais523: hmm 17:06:06 ais523: which one contains it? 17:06:09 the old one or the new one? 17:06:11 i thought you made a new strip so that it'd be a piet program already. 17:06:19 the old one 17:06:29 (i thought maybe garfield painted the program :P) 17:06:41 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 "look jon, this here is me" 17:07:11 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 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 ais523: odd 17:11:29 ais523: is there no difference in any other file? 17:11:40 i wonder what the compiler spits out for a non-instruction 17:11:44 no, in the three files that exist in common to the three directories 17:11:54 hmm 17:12:02 can I have a tar of the new one, then? :) 17:12:37 hmm, the new one doesn't contain things like the Makefile 17:12:38 fizzie: so how then did you get the constants? 17:12:42 oh well, I'm sure it's trivial to reconstruct 17:12:58 does it calculate the size of a connected area and mod 256 17:13:00 ais523: hmm, can you tar up the other one too? I can probably reconstruct it into one directory 17:13:03 because i guess it's easy then 17:13:14 alise: the other one's got mixed with some of my own files 17:13:15 because the areas are huge 17:13:26 ais523: ah; just the Makefile, then? 17:13:54 thanks for this; it sure beats disk archaeology 17:13:58 hmm, neither of them have a makefile it seems 17:14:18 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 well, it /is/ a Scheme program. 17:14:30 *intermediate files 17:14:33 also, filebin.ca seems to be down atm 17:14:36 hmm, are you sure the compiler in the new one doesn't spit out invalid()? 17:14:44 if it does, then it won't function correctly on... invalid programs 17:14:45 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 yes, the word isn't anywere in the source 17:14:51 alright then 17:14:53 strange 17:14:59 must be a relic of a previous version 17:15:08 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 I've forgotten how ugly the compiler is, so this should be fun :P 17:15:14 strangely, the case statement that compiles commands doesn't have a default case at all 17:15:38 oklopol: It will print "Grfild" if you run it in an interpreter that outputs Unicode values. 17:15:38 ais523: then it simply ignores invalid commands 17:15:41 an acceptable approach, I suppose 17:15:45 presumably, you're relying on executing invalid commands being undefined behavior 17:16:06 Past me, the author is past me, I have no idea what the hell he was thinking. 17:16:25 alise: filebin isn't loading; how else should I send it to you? 17:16:43 given that it's three files and they're all ASCII text, I could just pastebin a shar or something 17:16:51 actually, I like that method, it's nostalgic, I'll do that 17:16:54 a shar would be fine. 17:17:00 you could use another file upload service, but most of them are awful 17:17:11 agreed 17:17:19 and a significant portion of them probably require javascript 17:17:57 oklopol: If you have the fonts, that's "Gౡrfiⵥld". 17:18:32 Ah, Code2000. 17:18:44 I see the latter, but the former is [0C61]. 17:19:55 http://pastebin.ca/raw/1938322 17:20:06 incidentally, pastebin.ca seems to highlight parens inside comments, in shellscript 17:20:21 hmm, TELEGU LETTER VOCALIC LL is quite pretty 17:20:22 alise: http://zem.fi/~fis/telegu-ll.png if you just *must* get to see it. 17:20:39 you can copy-and-paste unicode characters into Wikipedia's search box to see what they are 17:20:49 ais523: how does THAT work? 17:21:01 alise: even systems that can't render them can normally copy-and-paste them correctly 17:21:08 and they all have redirects to the appropriate article 17:21:09 well, yes 17:21:21 i was thinking of some image-based magic that the search box does 17:21:34 or perhaps an embedded full-Unicode font with @font-face used as a search box font 17:21:46 that's like... assuming that Google does OCR on your search query to figure out what you're searching for 17:21:59 ais523: it's a sharbomb, right? 17:22:07 yes 17:22:15 ais523: oh, I knew it was crazy; I just couldn't think what you meant 17:22:18 it even says so in the header, IIRC 17:22:19 that's a great idea, though! 17:22:28 ais523: well, it lists the files, but... 17:22:39 ...but doesn't list a directory to contain them 17:22:48 : command not foundd5sum 17:22:48 Note: not verifying md5sums. Consider installing GNU coreutils. 17:22:48 '938322: line 30: syntax error near unexpected token `do 17:22:48 '938322: line 30: `do 17:22:52 I guess by "sh" it means "bash". 17:23:00 Wait, my sh /is/ bash. 17:23:02 ooh, naughty GNU 17:23:09 And even bash doesn't work. 17:23:13 Doubleyouteeeff? 17:23:25 let me try extracting it 17:23:36 dunno why it says '938322; that ' should be a 1 17:23:41 ais523: dos line endings 17:23:50 ah, aha 17:23:51 ais523: probably pastebin's fault 17:23:52 works fine here 17:23:55 and yes, agree 17:23:57 *agreed 17:24:01 run it through dtou, then try again 17:24:09 dtou? is that /another/ tool for that? 17:24:31 There's so many tools I can never remember what's installed where; then I just "tr -d '\r'" everywhere. 17:24:37 in protest, I will attempt to use cpressey's tool to do it instead 17:25:06 Uhh, if I can find it. 17:25:24 alise: it's the one DJGPP uses 17:25:42 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 meh, it appears to not be on catseye any more 17:25:58 what lang was it written in? 17:26:05 Perl, I think 17:26:18 hmm... 17:27:03 ais523: hmm, do you know if the prelude.c has my algorithms or yours? 17:27:08 yours being the ones with better performance characteristics 17:27:10 I can't tell 17:27:18 I don't know 17:28:29 woohoo underload.scm is ugly 17:28:38 -!- kar8nga has joined. 17:29:06 ;; kinda hacky 17:29:09 you don't say. 17:29:45 ^bf ,[-------------[>+>[-]+<<-]>++++++++++++++>[<.>-],]!test1 17:29:45 uftu2 17:29:51 hmm, off-by-one error 17:30:00 ^bf ,[-------------[>+>[-]+<<-]>+++++++++++++>[<.>-],]!test1 17:30:00 test1 17:30:07 pity that IRC doesn't let me embed literal character returns 17:30:15 but I /think/ that's a working dtou script in Brainfuck 17:30:42 (incidentally, this would be an awful anagolf puzzle, because anagolf ignores trailing whitespace differences) 17:30:55 heh 17:31:03 ais523: although anagolf doesn't do \r\n -> \n 17:31:08 and in the input form, a newline becomes \r\n 17:31:13 so if you need one, you should upload a file 17:31:16 alise: I know 17:31:33 I submitted a legit solution to puyo puyo btw; I'm not sure if legit or cheat is shorter 17:31:41 it's likely to be quite close 17:31:44 hmm... a maze solver would be a nice problem 17:31:50 that's been set already 17:32:02 I know because I have a golfed maze solver in my anagolf directory 17:32:04 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 with sufficiently huge mazes and sufficiently many that cheating doesn't help 17:32:32 http://golf.shinh.org/p.rb?maze+solving 17:32:34 output format sucks though 17:33:35 cheating? 17:33:47 Hmm, I guess for mazes, that would be hardcoding the solution 17:33:52 Sgeo: solving the problem via hardcoding 17:33:58 pretty much, but with compression techniques 17:34:07 or even worse, hardcoding the three possible outputs and picking one at random 17:34:14 then running repeatedly until you get the right sequence of random numbers 17:34:17 and just completely ignoring the input 17:34:22 yep 17:34:36 ais523: or using pid-setting and $$ 17:34:38 to do it even more easily 17:34:42 my solution to http://golf.shinh.org/p.rb?big+number+arithmetic ignores the input (it uses $$) 17:34:53 $$ ? 17:34:53 but it's labeled as (cheat) 17:35:02 and to be fair, I have no idea what a legit solution to that is /meant/ to look like 17:35:06 Sgeo: current process PID 17:35:29 alise: I found a nice Perl microgolf optimisation today, btw; 17:35:58 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 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 what's $|? 17:37:13 -!- tombom has quit (Quit: Leaving). 17:37:31 it fflushes output whenever it's produced, if set to true 17:38:06 so the value has no effect on the eventual output, just on its timing 17:38:22 hmm 17:38:26 (()(*))(~:^:S*a~^a~!~*~:(/)S^):^ 17:38:32 should the time it takes to calculate the next one increase each time? 17:38:37 I suppose yes, with the number format it uses 17:39:13 well, yes if you aren't using RLE or something like that 17:39:28 is it even practical for a compiler to do that? 17:40:37 derlo's an interp, and it uses a sort of logarithmic encoding 17:40:53 right, but interps have more freedom 17:40:53 but it hardly matters if you have to execute each individual character in the number to see what it is 17:41:07 hmm, I bet derlo is faster than my compiler 17:41:10 you'd need to do some sort of static optimisation to get better than that 17:41:29 and it's pretty fast, I was aiming for speed (as in fast algorithm, rather than as in cfunge) 17:41:38 oh snap :) 17:41:54 ais523: ok, seriously, how would you zero out a drive? 17:41:57 even with a large bs 17:42:01 dd takes 70 years, and i have no idea why 17:42:02 why would you zero out a drive? 17:42:06 i know usb sticks are slow, but 17:42:30 ais523: to put new stuff on it without the previous partition headers and the like 17:42:33 hey, it may have been zeroed out 17:42:41 merely by not having any data after the first N bytes already zeroed 17:42:56 *it may have already been zeroed out 17:43:00 yep 17:43:15 what's wrong with having the old headers; surely they should be in uninited data and thus never read 17:43:25 just like you don't have to zero out the heap in a C program before mallocing from it 17:43:27 well, unetbootin was complaining. >_> 17:43:48 heh, if i zero out a drive, should i just rm the /dev/sdXN files? 17:44:42 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 a bit less than twice, actually 17:45:19 umm, base10.ul 17:45:27 is what I actually ran, I wasn't paying attention... 17:45:35 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 (Then udev'll handle the devices.) 17:46:18 hmm, although I'm using an old binary, and apparently it contains calls to invalid() 17:46:20 * ais523 boggle 17:46:20 I don't want to write a partition table. 17:46:32 I'm going to create the filesystem directly on the drive. 17:46:38 ais523: what gcc flags? and wtf! 17:46:47 Well, you can write an empty table. 17:46:55 Then dump a filesystem on top of that. 17:46:59 alise: I don't know, I used the binary that was sitting around in the directory rather than recompiling 17:47:00 fizzie: true, then mkwhatever will overwrite it 17:47:06 ais523: oh, i see 17:47:17 -O3 is fun, although it usually never terminates 17:47:32 but I'm guessing it was a pretty high optimisation level 17:47:48 ais523: the problem with the compiler is its function data structure 17:48:04 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 and the like 17:48:26 hmm, what about using Forth/FORTH? 17:48:27 hmm, with invalid(the_char) in assembly you could avoid storing strings 17:48:29 (is it an acronym?) 17:48:35 just convert the code back to characters 17:48:50 ais523: probably pointless, as far as I can tell, although not entirely 17:48:51 it's not an acronym 17:48:55 Forth is the non-irritating way to say it 17:48:58 FORTH is just the filename relic 17:49:11 along the lines of me insisting that the computer game is called ADVENT? 17:49:18 and is about as annoying as someone saying LISP 17:49:23 ais523: in a way, yes 17:49:37 technically, the name would be Fourth, but. 17:49:42 (limited filename lengths) 17:50:01 LisP 17:50:37 in Scheme, it would be Lis? 17:50:49 because ending questions with a p is an oldfashioned relic 17:51:06 ais523: it's case-insensitive, so it'd be lIs? too 17:51:09 and LIS? 17:51:36 lIs? is good for confusing people whose fonts don't distinguish the character 17:51:41 grr, I'm not certain what I need to install to get mkfs.(msdos|vat) 17:51:43 it's as bad as the Ill status change in NetHack 17:51:44 *vfat 17:51:46 which looks like III in some fonts 17:51:51 xD 17:51:54 *lll 17:51:56 I use a serifed font 17:52:08 alise: it's installed on my system 17:52:12 it would be quite an odd l that looked like a capital serifed I 17:52:30 but what I normally do is, I run which first to make sure the command isn't installed 17:52:34 and if it isn't, I try to run it 17:52:41 then command-not-found kicks in and tells me which package it's in 17:52:45 not on Arch it doesn't 17:52:57 alise, you don't use Dejavu Sans Mono? 17:53:08 Sgeo: monospace for /IRC/? 17:53:17 ais523: *hi5* 17:53:22 Sgeo: Bitstream Charter 17:53:23 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 But I'm using the same font for IRC too >.> 17:53:41 I meant on IRC, "III" misrepresents what I'd see. 17:53:41 *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 I use DVSM for NetHack, definitely 17:54:00 Charter is wonderful on low-dpi displays (it was invented for 300 dpi laser printers), but the / is a bit wide. 17:54:20 ais523: A lot of people have their IRCs in a terminal, which is a good reason to do monospace. 17:54:20 I like Luxi Mono quite a bit for code, although haven't got it set up. 17:54:24 interestingly, DejaVu Sans Mono and Menlo are even more similar than Arial and Helvetica 17:54:30 it's like a nice legible serif, except monospaced 17:54:38 ais523: because the latter is openly based on the former 17:54:45 and is basically a minor tweak of the former 17:54:46 common ancestor, I thought 17:54:48 no 17:55:06 literally, Menlo is just DVSM with one or two tiny lines moved 17:55:10 *two lines moved tinily 17:55:22 ais523: http://static.arstechnica.net/apple/menlo_v_dejavu_sans_mono_300.png 17:55:28 the exact differences, as rendered by OS X 17:55:29 oh 17:55:29 ok 17:55:32 slight common ancestor 17:55:36 Bitstream Vera Sans Mono 17:55:52 but DejaVu is identical to Bitstream if Bitstream already had the character, I think 17:55:58 so it shouldn't matter for ascii 17:56:30 http://www.leancrew.com/all-this/images/dejavu-menlo-colors.png bigger version 17:56:37 -!- lament has joined. 17:57:27 mkfs.vfat: Device partition expected, not making filesystem on entire device '/dev/sdb' (use -I to override) 17:57:30 You're so boring, mkfs.vfat. 17:57:43 there is an override option 17:57:56 but mkfs generally likes a partition to reformat, rather than bare metal 17:58:42 i overrode it 17:58:49 ais523: yes, but on USB drives there's little point to partitioning, really 17:58:50 Or bare metalloid. 17:59:17 there we go, Debian testing installer jibbering on to the drive 17:59:22 alise: I've seen USB drives with multiple partitions before now 17:59:22 ais523: Yes, but that's mere preference is all. 17:59:24 worth taking a look at, I figure 17:59:32 No technical reason for a partition table at all. 17:59:49 pikhq: are there not OSes which won't try to mount the whole partition automatically? 17:59:59 I'd be surprised if a zero-partition USB stick mounted in Windows 18:00:15 That's how preformatted USB sticks usually ship, isn't it? 18:00:19 < 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 cpressey: javascript 18:00:35 it's called detexify 18:00:41 http://detexify.kirelabs.org/classify.html 18:02:33 < 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 didn't it use to be on the site? 18:03:04 *used, perhaps; such a strange idiom 18:04:26 [Richard Dawkins and David Attenborough interviewing each other] 18:04:27 Which living scientist do you most admire, and why? 18:04:28 RD: David Attenborough. 18:04:28 DA: I don't know. 18:04:30 OH SNAP 18:05:13 < 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 deep. :p 18:05:50 time to wipe my entire system and put something new on yet again 18:05:51 `addquote < 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 we need more philosophy to balance out the crudeness 18:06:14 psht, we aren't crude! we're really crude! 18:06:18 220| < 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 MWAHAHA HackEgo WILL NOT COMPLY WI-- oh. 18:06:27 `quote 18:06:30 167| like, just like I'd mark "Bob knob hobs deathly poop violation EXCREMENT unto;" as English alise: that's great filler ais523: well it contains all the important words in the english language... 18:06:37 `quote 18:06:39 148| Why are the cops in GTA always so obsessed with my asshole? 18:06:41 `quote 18:06:42 I love 167 18:06:43 158| Darn, now I can't acknowledge the reference you were making. 18:06:54 as a rule of thumb, all the quotes from Sine are rubbish 18:07:02 and all the ones from here are either incomprehensible or good 18:07:11 how did Sine quotes end up in HackEgo's qdb? 18:07:24 < 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 ais523: hackego is also in sine 18:07:44 or at least, was 18:07:47 ah 18:07:54 `quote 18:07:55 12| Lil`Cube: you had cavity searches? not yet trying to thou, just so I can check it off on my list of things to expirence 18:08:00 cpressey: eh, flash memory has a great lifespan 18:08:06 and it only ends up read-only; you never lose data 18:08:20 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 `quote 18:08:24 89| 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 But I still want to make such an esolang 18:14:38 Sgeo: how does it do on INTERCAL's? 18:14:53 I don't really remember INTERCAL's syntax :/ 18:14:54 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 cpressey: I'm vaguely worried that I expanded that acronym right off 18:17:28 it's the most convoluted converter i've ever seen 18:18:05 :P 18:18:18 ais523: ? yet another... 18:18:29 alise: it handles CRCRLF, baby! 18:18:42 cpressey: what does it convert it /into/? 18:18:44 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 ais523: whatever perl thinks the proper EOL sequence for the current OS is 18:18:56 *enbf 18:18:59 ebnf 18:19:00 whatever 18:19:19 Sgeo: Uh, no. 18:19:30 Not unless it's really easy. 18:19:36 Sg "Overkill" eo 18:19:37 INTERCAL's syntax doesn't work properly as EBNF for several reasons 18:19:44 Time to attempt a reboot. 18:19:51 cpressey: Sir Gay "Overkill" Oh 18:19:58 FTFY 18:19:59 and even if you do some preprocessing so that it does, it fails to be LR(n) for any finite n 18:20:07 I remember someone saying that this wasn't really limited to EBNF 18:20:11 Not sure about that though 18:20:17 Sgeo: it's utterly trivial to parse 18:20:26 alise: what is? 18:20:28 ais523: I now have a perverse wish to make that Underload->asm compiler. 18:20:30 ais523: Underload is. 18:20:37 oh, Underload 18:20:39 it is 18:20:47 I'll make two versions 18:20:54 hmm 18:20:58 a really good parser-generator, though, would be able to do Underload even more simply than a hand-rolled parser 18:20:59 a would be: 18:21:01 I should learn how to deal with balanced parens someday 18:21:08 generate a prelude that pushes the stuff that comes after it 18:21:14 then cat the top element of the stack on to it 18:21:31 * 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 ^ is easy, just a jmp 18:22:06 S would traverse the instructions, converting the asm back into the relevant characters 18:22:11 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 (invalid instructions would be compiled to some sort of error call that includes the instruction character) 18:22:24 (so you could convert that back) 18:22:29 and... that's it, really 18:22:30 although 18:22:36 security features of processors would fuck with this 18:22:38 but eh 18:22:40 cpressey: well, my OIL to C compiler is written entirely in yacc (or alternatively bison) 18:22:51 cpressey, the EBNF parsing thign can execute code as it parses, but I plan on not doing anything interesting with that 18:22:57 I want to do this "right" in some weird way 18:22:58 no lex involved, no separate C files (although there's a lot of C embedded in the epilog) 18:23:39 ais523: I should clarify -- my thought was to write an Underload *interpreter* in a (slightly modified) parser generator. 18:23:54 hmm; IIRC yacc can't do loops 18:23:56 slightly modified to be able to restart itself 18:24:18 most, yes, it would never occur to most parser generator authors to include this feature, but 18:24:18 obvious solution: add continuations to C, use call/cc inside the yacc action code and generate loops that way 18:24:24 Zz can do it, I bet 18:24:54 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 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 a parser generator for Underload is worthwhile only if it's this easy from inside the language: 18:27:13 http://pastie.org/1152283.txt?key=wdchp9xjc6oqcpx4byptha 18:27:30 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 Now I will proceed to mess up my system. See you soon! 18:28:48 But, beforehand, quick! 18:29:04 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> slightly modified to be able to restart itself <-- maybe one that handles #include ? 18:29:31 strlen("GNOME") > strlen("KDE"). 18:29:42 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 FireFly: You're not ais523! How can I trust you? 18:29:55 *fizzie: 18:29:56 You can't 18:29:59 ais523: That's based in logic and fact. 18:29:59 MUHAHA 18:30:04 I am disappointed. 18:30:12 alise: On the other hand, I didn't even tell you which was better, so you can take it both ways. 18:31:06 alise: the joke is that my statement wasn't an opinion, but an actual fact 18:31:18 ais523: DRAT! Foiled again! 18:31:23 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 Maybe I'll just install twm. 18:31:30 SO LONG SUCKERS 18:31:35 -!- alise has quit (Remote host closed the connection). 18:35:10 hmm 18:36:27 Turning Underload commands into tokens might not be a great idea unless I could recursively parse.. 18:36:30 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 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 what sort of parser doesn't do recursion? 18:39:01 ais523, um a HQ9+ one wouldn't need to 18:39:03 you're lucky alise isn't here, or she'd be laughing at you for weeks 18:39:07 it could be purely iterative 18:39:14 Vorpal: you don't parse HQ9+, you lex it 18:39:18 the parsing step is entirely redundant 18:39:24 ais523, hm true 18:40:49 Well, I mean, at interpretation time 18:40:51 But I can 18:41:15 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 well me and fizzie did rather 18:41:26 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 *literal 18:41:45 a strong convention, i admit 18:41:51 * Sgeo should learn the difference between parsing and lexing 18:41:56 cpressey: arguably, the distinction between parser and lexer is convention anyway 18:41:56 file(1) is so limited that it can't even do the Q command without pre-processing the source 18:42:40 e.g. in C-INTERCAL, the lexer is responsible for matching closing grouping marks (the parse handles the open grouping marks) 18:43:44 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 What _is_ the distinction? 18:44:47 At least, conventionally then 18:44:49 although it's actually quite rare to see a[i/*hi*/]=/*hey*/x+/*yo*/y; 18:45:10 Sgeo: parsers work on grammars. specified in BNF or EBNF, usually 18:45:40 lexers, on the other hand, just splits up the input into 'words' (tokens) 18:45:48 the parser consumes the tokens produced by the lexer 18:46:19 Factor's peg.ebnf has definable tokenizer for some reason 18:46:21 Maybe to be clearer: a parser follows a grammar. 18:46:45 Sgeo: then it includes a lexer. many parsing frameworks do. (Parsec does, for instance) 18:47:03 tokenizer, lexer: same thing. 18:47:25 aka "scanner" -- I learned that term and tend to use it, but it's fallen out of fashion I think. 18:48:04 "Scanner" sounds an order of magnitude more sci-fi than "lexer". 18:49:21 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 fizzie: isn't that an eyeball-sort-uniq? 18:49:52 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 ais523: Right. 18:49:55 uniq will repeat values if there's a different value in between 18:50:20 Or eyeball-cut-sort-uniq, but that's getting ridiculous. 18:53:19 -!- alise has joined. 18:54:18 ais523: do you have any idea how hard getting the squeeze installer onto a USB stick is? 18:54:20 :| 18:54:29 no, I don't 18:54:37 *blargh* 18:55:07 10:39:03 you're lucky alise isn't here, or she'd be laughing at you for weeks 18:55:11 YOU CANNOT ESCAPE 18:55:23 It shouldn't be very hard. 18:56:18 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 then, you have to zcat boot.image.gz to the drive 18:56:29 then, you have to mount it 18:56:33 then, you have to copy the ISO there 18:56:48 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 that's not hugely difficult, but it's certainly not obvious at all 18:57:11 Oh, I thought it's usually just "zcat boot.img.gz > /dev/sdX" and "install from network". 18:57:17 and if you match, say, the squeeze alpha installer with the nightly boot.img.gz, it doesn't work 18:57:18 which is just nice 18:57:31 fizzie: well, I copied the netinstall ISO 18:57:38 i'm not sure /exactly/ what that provides, but it sure scans for one 18:57:44 so presumably there is a good reason for copying it there 18:58:16 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 wrt lexer vs parser: for an awful lot of languages, I think there's no point writing them separately 18:58:55 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 it can sort out whitespace and comments for you, and you basically need one if you do indentation-based grouping 18:59:10 apart from that... 19:02:19 fizzie: Perhaps they do for stable. 19:02:22 But, you know, stable. 19:02:39 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 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 Noncommands should only appear in parens, right? 19:17:55 ... Huh. The UI on my phone just crashed. Gah. 19:18:39 Sgeo: if they appear outside, the program will necessarily crash unless there's an infinite loop before they're reached 19:18:47 but I don't think that means they're banned, they're just a bad idea 19:19:07 Hmm 19:19:17 The way I'm writing it, it won't parse :/ 19:20:39 What noncommands? 19:21:13 In Underload 19:21:54 O, and then you can send to output or discard it from the stack 19:26:08 Sgeo: You can always execute it from the stack, though, so you'll still have to handle them somehow. 19:26:32 I guess, trying to execute a string containing noncommands, from the stack, could result in a parse error. 19:26:33 In that case, the parse error will occur in the middle of running the program :/ 19:26:41 If you parse strings as you pop them. 19:26:45 Sgeo: Are you trying to write a compiler? Or parser? Or...? 19:26:53 Interpreter 19:27:06 That uses Factor's EBNF parser vocab 19:27:20 Just interpret each character as reading, when using interpreting of Underload (and for some others) 19:27:42 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 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 Hm, couldn't QBASIC load and parse external BASIC files at runtime? Possibly I'm thinking of AmigaBASIC. 19:29:34 cpressey: Yes, QBASIC can do that, using CHAIN command, that means it will then parse the loaded file 19:29:54 But you can also create syntax error at runtime using ERROR command, without loading another file 19:30:41 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 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 AmigaBASIC and QBASIC were almost identical, both being from Microsoft. 19:35:07 I'm.. not sure I see how to do recursive rules 19:36:31 -!- alise has joined. 19:36:37 debian installer hello 19:37:00 apparently it's going to take 67 years to download everything 19:37:32 (by 67 i of course mean 20 minutes) 19:37:46 Wait, I don't need to 19:37:50 sorry, 40 minutesnow, apparently 19:37:57 Debian time is even worse than Microsoft time 19:38:06 Since parens don't necessarily contain valid code 19:38:25 Sgeo -- usually, you don't even pre-parse Underload. 19:38:33 alise, but I want to! 19:38:55 A highly pointless endeavour unless you are writing a compiler. 19:39:27 Practice for writing more esolang interpreters! 19:39:35 I dearly hope not. 19:39:41 What? 19:40:01 There are enough already, unless there is some novelty beyond being written in Factor. 19:40:15 Anyway, *most* esolangs aren't pre-parsed. 19:41:01 -!- Gracenotes has quit (Remote host closed the connection). 19:41:38 welcome to #tarpits 19:41:51 test 19:42:01 what does ^ look like for you guys? 19:42:05 A caret? 19:42:08 alise: caret 19:42:08 wareya_: well, pretty much... 19:42:14 * Sgeo eats the caret 19:42:14 caret 19:42:15 the test line, Sgeo. 19:42:23 It looks like test 19:42:29 not "testabc"? 19:42:34 ah 19:42:35 Nope 19:42:36 Just test 19:42:37 "test" 19:42:48 then either freenode's server disregards everything after a 0 byte, or your clients do (because of using C strings) 19:42:57 What does clog say? 19:42:58 probably the former, but it would be fun if it was the latter 19:43:08 you could hide messages from certain people :P 19:43:11 almost certainly the former 19:43:12 Isn't that to deny format attacks? 19:43:15 Sgeo, all I have is busybox. 19:43:25 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 can you check clog? 19:44:50 alise: you're nc'ing in? 19:44:56 it's probably written in C though or something 19:45:01 cpressey: indeed. 19:45:18 alise: just 'test' in clog. 19:45:31 the only inconvenience is typing "PRIVMSG #esoteric :" a lot, and getting my lines interrupted when someone else sends a message :) 19:45:38 and, uh, everything else, but those are the major ones. 19:45:47 clearly I should use zzo38's client. 19:46:19 Not often you hear recent Radiohead coming out of a car on the street... 19:47:13 I wish debian-installer would decide how long it'll take to install already. 19:47:43 I am suffering from severe information overload. 19:47:54 I don't get that. 19:48:14 Yes... that's abundantly clear. 19:48:30 Wow, their car stereo sucks. 19:48:50 They appear to have made it so bassy that you can't actually hear the guitar. 19:49:31 Ouch. 19:50:03 It doesn't even sound bassy though. Just like they remixed it and took out the guitar track. 19:50:33 pikhq: Do you still use Gentoo? 19:50:44 If you didn't, I'd probably try out whatever distro you are using. :P 19:50:51 Didn't, don't, whatever. 19:51:32 They should include Tetris on the installer image so that you can entertain yourself while it installs. 19:52:07 "vi: not found" 19:52:25 Vorpal still has alise in notlistentotion? 19:52:56 alise: Yes, I do. 19:53:08 alise: http://codu.org/rawirc.c :P 19:53:12 oklopol: you mean /ignore? 19:53:33 Gregor: eagerly awaiting an nc-downloadable gcc binary 19:53:44 pikhq: Bah! 19:53:46 alise: yes 19:54:03 but i figured it's clearer that way 19:54:03 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 sure 19:54:19 If freenode's doing the "standard" thing, messages can contain any sequence of octets not including 0, 10 or 13. 19:54:22 i don't know where i got the impression 19:54:27 something i read in the log 19:54:29 fizzie: I find that racist. 19:54:42 oklopol: that may just be dimwittedness >:) 19:55:10 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 *something completely 19:55:41 "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 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 erm, who uses C 19:56:40 no one 19:56:48 hi 19:56:51 Everyone's IRC server is C. 19:56:59 no, mine was python 19:57:02 I use C to hack old video games 19:57:25 back 19:57:31 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 C is fun times 19:57:33 Vorpal still has alise in notlistentotion? <-- um no 19:57:58 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 Vorpal: yeah alise told me already, I GUESS YOU COULDN'T SEE THAT.... 19:58:12 but, as the server cuts it off there, this is not the case. 19:58:15 oklopol, I didn't bother reading all the scrollback :P 19:58:15 IT would be an exploit if the server didn't chop after the nul byte 19:58:18 oh. 19:58:19 It* 19:58:26 yeah i didn't exactly read the stuff around it 19:58:26 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 oklopol, I only read the highlights 19:58:43 so oklopol how has your day been? Vorpal 19:58:51 mine's been great! Vorpal 19:58:58 alise, very funnt 19:58:59 funny* 19:59:02 alise: it's been rather empty, but yesterday a 15yo chick told me i'm pretty sexy 19:59:06 out of nowhere 19:59:16 xD 19:59:24 lol 19:59:37 my mind hasn't fully adjusted to the reality of being 15 yet 19:59:50 because it auto-heuristically-categorises people who are 15 as older than me 19:59:51 alise, hm? nul on irc? 19:59:58 RTFContext 19:59:59 I'm not sure that the server will pass that on at all 20:00:18 Vorpal, apparently it doesn't. 20:00:34 -!- MigoMipo has joined. 20:00:37 i've mostly been studying japanese, it's soooooo much easier than math 20:00:39 Sgeo, why on earth would it do that at all? 20:00:55 math is too hard, i'm thinking maybe i should become a bartender 20:00:56 Who can be sure of anything in this wack-a-day modern world of ours? 20:01:03 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 so that the amount can't fluctuate 20:01:11 alise: no. 20:01:25 dammit, why couldn't the new world order have concealed the recession? 20:01:33 then you wouldn't have seen right through me :| 20:01:51 hey single digits installation time in minutes, that's progress 20:01:55 when do you turn 16? 20:02:04 math is too hard, i'm thinking maybe i should become a bartender <-- I thought you loved math? 20:02:05 the bet is for 17 as far as I am aware. 20:02:09 oh 20:02:18 i turn 17 in slightly less than two years 20:02:31 oklopol: well otherwise all it'd signify is "I didn't break the law!" 20:02:38 not the best odds really 20:02:44 Vorpal: i also love being the evil dictator of a country 20:02:59 That country... is Canada. 20:03:00 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 (Finland sucks) 20:03:11 oklopol: I can immediately see how this new vocation combines your two loves. 20:03:14 Vorpal: take a guess 20:03:19 alise, the former probably. 20:03:26 Vorpal: congratulations. 20:03:31 alise, but I seem to remember the latter too. For some old software 20:03:42 that didn't expect that the installation could take less than an hour 20:03:43 woo 6 minutes. is GNOME fucking huge or does Debian just install a whole load of crap anyway? 20:03:52 Ubuntu takes like .00001% of the time to install 20:04:00 and /it/ has GNOME... 20:04:22 hm 20:04:23 strange 20:04:30 sure, it's a netinstall, but I'm counting the Ubuntu download time too 20:04:40 tried to get my gf to have sex with you, but she wasn't particularly interested 20:04:41 also, the non-netinstall Debian is something like 12 CDs. 20:04:42 alise, better mirror for ubuntu maybe? 20:05:09 Vorpal: mirrorservice.org; I also tried the Swedish mirror. basically same results 20:05:19 They get good speeds. 20:05:35 oklopol: i can't believe it and am going to commit suicide now 20:05:40 I blame airline food 20:05:47 and dogs 20:06:00 erm that's good news for you 20:06:02 alise, hm, same mirror for ubuntu and debian? 20:06:30 How should I draw the control graphics for WEBMATH? 20:06:35 also it's illegal for ppl under 17 to have sex?` 20:06:42 that's fucking retarded 20:06:46 oklopol: yeah but I don't like having 50 pounds 20:06:52 oh 20:06:53 money is materialistic and makes me sad man 20:06:57 also it's 16 20:07:04 erm right 20:07:11 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 still fucking retarded 20:07:12 Vorpal: both get the same speeds (800 KiB/s) 20:07:18 alise, weird then 20:07:39 Vorpal: maybe because the Ubuntu is one HTTP request, but Debian is thousands of them due to being netinstall 20:07:46 still, HTTP overhead isn't /that/ excessive 20:08:12 alise, I don't think it uses persistent HTTP, if it is aptitude or similar. 20:08:13 oklopol: it's like 38 in America 20:08:20 Vorpal: it's debian-installer 20:08:29 no clue how it downloads stuff 20:08:33 it has its own stuff. 20:08:33 could be wget for all I know 20:08:40 it downloads everything first. no, no wget 20:08:43 hm 20:08:52 alise, well, yeah http overhead shouldn't be that large 20:08:57 it's probably some HTTP downloading library built in 20:09:06 to save on space. there are no HTTP clients in /bin or /usr/bin 20:09:14 alise, not even fetch? 20:09:30 nope. it's a BusyBox thing, not even vi 20:09:41 although it does have nano, presumably since it's easier to use at first 20:09:44 well busybox has a built in http client iirc 20:09:53 yes, but it's not built. just like BusyBox vi 20:09:55 no of course not wget. wget would be a known quantity 20:09:59 compile time option of course 20:10:06 269 KiB busybox 20:10:16 cpressey: wat. 20:10:46 alise: gotta be some weirdo http client lib, as you said. 20:10:57 cpressey: dude, this thing is meant to fit on tiny tiny disks :) 20:10:59 If it has netcat, just use headerless HTTP for simple download 20:11:05 well not THAT tiny, but 20:11:05 alise: it's probably fetching from Australia or something. 20:11:06 alise, on floppies? 20:11:11 alise, I thought it was still an ISO 20:11:13 cpressey: uh, you select the mirror 20:11:29 alise: you get the *impression* that you select the mirror... 20:11:31 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 alise, right 20:11:57 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 alise, does it report download speed while downloading? 20:12:30 if not, maybe it is slower now. Like, network problems somewhere 20:12:44 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 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 then it's lame. case closed! 20:13:00 it /was/ downloading over a thousand files. HTTP overhead is probably it. 20:13:08 zzo38: Completely true and... irrelevant. 20:13:23 alise, right 20:14:10 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 20:14:34 since when has google starting showing search results when you type!? 20:14:44 cool i fucked up my terminal 20:14:53 -!- Gracenotes has joined. 20:14:53 alise: 20:15:45 alise, if it closes connection in between (non-persistent http) it might also include tcp handshake overhead 20:15:52 alise, what is the RTT to the mirror? 20:15:53 Apkasdk-34k-0k===-rl 20:16:04 Ajajaj? OIdfjosdnfawerkjvflk. Masdofisjgoj. 20:16:13 Vorpal: It's called "Google Instant", apparently. 20:16:18 s is an underscore, t is >-! 20:16:27 OH WHAT FUN DERIVES FROM BROKEN TERMINALS. 20:16:36 IF YOU TALK IN UPPERCASE I CAN READ IT. 20:16:54 fizzie, any way to turn it off? It seems to make my browser pause handling input while it fetches stuff. Sometimes 20:16:56 20:16:56 ALTHOUGH . IS A DOWNWARDS ARROW... 20:17:07 aaaaaaaaa 20:17:21 Vorpal: There should be a "Instant is on" next to the input field, above the "Safesearch is off/on" toggle. 20:17:45 fizzie, ah indeed... 20:17:49 JUST LIKE THE 80S. 20:17:53 In my computer the instant search and stuff is off 20:17:54 0 IS A SOLID BLOCK. 20:18:30 I don't usually use the search box anyways, I can use C-l :g (which is a shortcut) 20:18:32 12345678900- 20:18:33 alise, what is like the 80s? 20:18:37 AIEE. 20:18:40 google without instant search? 20:18:50 I think it's about his terminal woes. 20:18:50 I CANNOT SEE A SINGLE THING alise 20:18:53 ah 20:18:56 okay so my name looks like alise 20:19:00 alise, try typing reset 20:19:03 -_- 20:19:13 alise -- shaded block, >- box drawing (low), i, underscore, e 20:19:21 then , is a left arrow 20:19:29 "alise:" or "alise," 20:19:34 alise, are you on the computer with the problems? 20:19:35 but please, use upercase. then i can read it 20:19:37 I mean 20:19:39 on irc with it 20:19:42 otherwise i can't 20:19:42 or with a different one 20:19:56 LIKE THIS 20:19:57 alise, PLEASE TRY USING RESET (IN LOWER CASE) 20:20:04 Vorpal: If I've been following right, it's netcat-IRC from a Debian installer session. 20:20:09 VRPAL: (OKAY HOW DO I DO ) THAT 20:20:11 fizzie, ah 20:20:14 WITHOUT QUITTING NC? 20:20:22 I DID IT BY ENTERING A LOT OF CONTROL CODES AND THE SERVER ECHOED THEM BACK 20:20:38 SPECIFICALLY, ^ FOLLOWED BY EACH OF QWERTYUIOPASDFGHJKLZXCVBNM 20:20:38 alise, TRICKY WITHOUT EXITING NC THOUGHT YOU HAD SHELL 20:20:50 I DO BUT THIS IS TOO FUN TO QUIT. ^^ THOSE ARE THE CHARACTERS THAT DID IT 20:20:51 alise: BACKGROUND IT WITH CTRL-Z IF IT HAPPENS TO WORK? 20:21:01 ALISE: YOUR OWN FAULT I WOULD SAY 20:21:01 OKAY I HAVE NO RESET PROGRAM 20:21:06 ANY OTHER IDEAS? 20:21:25 OR STTY 20:21:32 TODAY IS NOT A GOOD DAY 20:21:36 alise, CHROOT INTO THE INSTALL AND USE IT'S RESET 20:21:47 VORPAL: IT HASN'T EVEN FINISHED INSTALLING YET! 20:21:52 alise: LINUX CONSOLE FAQ CLAIMS THAT ESC FOLLOWED BY LOWERCASE C CAUSES A TERMINAL RESET. 20:22:00 alise: TO QUOTE: "THIS IS WHAT YOU WANT IF YOUR SCREEN IS ALL GARBLED". 20:22:04 c 20:22:06 alise, WELL MAYBE IT HAS RESET ALREADY EVEN IF NOTHING ELSE 20:22:13 Thanks fizzie 20:22:17 alise, that worked? 20:22:18 heh 20:22:19 what did you say Vorpal? 20:22:20 -!- augur has joined. 20:22:25 fizzie, where did you find that list? 20:22:38 alise, hm? on which line? 20:22:44 Vorpal: 'twas from http://www.faqs.org/docs/Linux-HOWTO/Keyboard-and-Console-HOWTO.html via google. 20:22:47 Vorpal: last message before I said thanks fizzie 20:23:01 alise, CHROOT INTO THE INSTALL AND USE IT'S RESET alise, WELL MAYBE IT HAS RESET ALREADY EVEN IF NOTHING ELSE 20:23:05 alise, were the two last ones 20:23:14 < 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 cpressey: that is /definitely/ not standard 20:23:38 alise, I know I used top from inside a partial install to figure out what was going on 20:23:45 Vorpal: I couldn't find it, anyway, what with ls(1)'s output being unreadable 20:23:56 cpressey: I've used it, always assuming it is some sort of pre-standardization HTTP thing. 20:24:00 alise, you would need to chroot, since reset reads termcap data 20:24:30 well, I have chroot. :P 20:24:37 wow, it's installing Gnash. 20:24:57 FWIW running NAMES without an argument is a bad idea. 20:25:07 alise, yes I did chroot and top on when investigating that slow kernel install when doing the opengenera vm 20:25:35 alise, presumably it returns all non-invisible users? 20:25:38 could have just done "chroot /foo top" 20:25:47 yes Vorpal, but also on channels too 20:25:52 one channel per line 20:25:57 ouch 20:25:59 hm 20:26:07 finishes quickly if you switch to another terminal 20:26:30 alise, expected. linux VTs are not very fast at printing out a lot of data 20:26:38 at least not when actively displayed 20:26:44 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 cpressey: They seem to have removed that bit from the HTTP/1.1 spec, though. 20:26:57 huh 20:27:04 right 20:27:25 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 heh, that means that HTTP 1.0 specifies how to handle a non-HTTP 1.0 request 20:27:36 then do the same without switching 20:27:40 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 alise, actually it seems pretty reasonable for backward compat when it comes to the HTTP/0.9 stuff 20:28:29 while the XML stuff is... not very reasonable 20:28:35 yes, but it's still nonsensical 20:28:55 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 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 thus creating your "Octets Specification 1.0" 20:30:25 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 alise, actually it is. Since you define how it should handle data on the HTTP port. 20:30:45 alise, not just how it should handle HTTP data on the HTTP port 20:31:17 (I'm sure that argument holds up though) 20:31:22 Vorpal: err, not really, it's far more abstract than that 20:31:29 "not sure", I assume 20:31:34 alise, err yeah 20:32:03 -!- sebbu has quit (Read error: Connection reset by peer). 20:32:18 install quicker!! 20:32:24 ?! 20:32:38 -!- sebbu has joined. 20:32:39 -!- sebbu has quit (Client Quit). 20:33:03 -!- sebbu has joined. 20:33:10 Why the hell is it installing Gnash?! 20:33:15 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 seems quite sane to me 20:33:38 alise, sure you didn't select "install everything" by mistake? 20:34:21 I'm sure; that isn't even an option. 20:34:27 Vorpal: but that's /not what the HTTP spec says/ 20:34:34 but whatever 20:34:47 alise, hm. perhaps 20:35:21 but if what fizzie says about the BNF is true, then it's actually fine. 20:36:39 hm 20:39:07 Either the way I'm wearing these is VERY wrong, or this is junk 20:39:17 what 20:39:23 This headset 20:40:31 -!- augur has quit (Ping timeout: 265 seconds). 20:41:10 Ah, I think this is better 20:41:14 Still painful, though 20:46:00 fizzie: that explains why I don' 20:46:05 *don't remember it. 20:46:23 alise: would it totally fuck you up if someone here started using unicode? 20:46:38 cpressey: not necessarily, no. but i wouldn't be able to see it properly. feel free 20:46:39 well, you know the trick to get back now, so i guess not. 20:47:25 even if i didn't, i could just restart the console :) 20:48:28 "Detected blah blah: Windows Vista (loader)" Actually, that's 7... 20:48:45 ♫ 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 I saw that properly. 20:50:02 -!- alise has quit (Remote host closed the connection). 20:50:18 Yes, but then you died soon afterwards. 20:50:20 what's the unicode symbol for the B-minor mass? 20:50:35 "There are no known bidirectional implications for Musical Symbols." 20:50:44 -!- relet1 has joined. 20:50:57 probably true 20:51:31 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 Sooomewheeeere oover the raiiinbooooooow / Deeebiaaaaan 20:52:27 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 I guess it's a bit late now. 20:52:38 Staaarts tooo a mediocre GNO-OME / deeeesktoooop 20:52:55 -!- relet has quit (Ping timeout: 252 seconds). 20:53:45 Wiiiith Cleaar-looks and a branded / baaaackgroooound 20:53:55 If it is the honest brutal VGA console font, ♫ could actually map to a character. 20:54:11 It's the Linux default. 20:54:25 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 Ooh, Empathy! The worst IRC client ever! The only client that Pidgin is actually better than! 20:54:49 Ships with support for Facebook Chat but not MSN. Why? 20:55:03 Do they build Empathy for Windows then? I need to slum even further. 20:55:13 I don't know why 20:55:16 Who knows? 20:55:18 zzo38: They're fine for me. 20:55:23 zzo38: Try using LaTeX. 20:55:42 alise: I don't mean the LaTeX fonts, I am talking about the WEBMATH fonts 20:55:47 zzo38: I don't know ... 20:56:01 cpressey: Haha, they've just taken Ubuntu's Software Centre and taken the Ubuntu out of the name. 20:56:08 The typewriter symbols are the correct size 20:56:21 "Well, shit, we can't do better than that." "Just put it in the repositories..." 20:57:41 ehird is not in the sudoers file. This incident will be reported. 20:57:50 Oh yeah! We still use su and root passwords because this is the early 2000s! 20:58:22 Reported? To who? 20:58:32 Usually, root@localhost. 20:58:43 Yes. 20:58:58 What the hell is /etc/shadow-? 20:59:04 /etc/shadow- Backup file for /etc/shadow. 20:59:05 Naughty single user! I'm telling the single user about you! 20:59:06 If it is the honest brutal VGA console font, ♫ could actually map to a character. <-- ?? A note symbol? 20:59:16 I never tried Empathy 20:59:25 Which is surprising if it's some sort of default client 20:59:27 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 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 Wow, aptitudes interface changed. 20:59:57 Vorpal: http://beacon.chebucto.ca/Back/A9908/img/vga_norm.gif 20:59:59 *aptitude's 21:00:00 0x0e 21:00:03 That ... is the first time that has ever happened. 21:00:13 cpressey, heh 21:00:26 cpressey: That's what it displayed as, yes. 21:00:27 cpressey, should be 0x07 for the note symbol 21:00:31 what with that being ASCII bell 21:00:53 Vorpal: Maybe you can go back to the late 80's before this was set in stone and tell them that! 21:01:02 Headsets don't make good headphones 21:01:05 cpressey, do you have a time machine handy? 21:01:20 -!- MigoMipo has quit (Ping timeout: 258 seconds). 21:01:31 Vorpal: mu 21:01:40 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 if you had I would use it first to make them change ipv4 to use more than 32 bits. 21:01:51 Vorpal: 無 is what he meant to say. 21:02:05 pikhq, eh? 21:02:23 I don't think they mapped THAT to the brutal vga font! 21:02:26 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 fizzie, hm 21:02:45 fizzie, what is 0x0e? 21:03:00 muuuuuuuuuuuuuu :( 21:03:20 Vorpal: "Shift Out", the character-set swapping thing. 21:03:25 fizzie, ah 21:03:53 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 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 XD 21:06:11 Also, the good old broken bar instead of a |. 21:06:59 "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 "dwarf tutorial" 21:07:20 ... 21:07:35 * cpressey dares 21:07:42 Hey, it actually works. 21:07:51 "Introduction to the DWARF Debugging Format by Michael Eager (PDF)." 21:08:00 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 hey yeah! dwarfstd.org 21:08:02 Well, that was nice. I was expecting... other things. 21:08:06 fizzie, I wasn't looking for the spec. I was looking for some history about it. 21:08:14 Phantom_Hoover: Yes. 21:08:23 Thought so. 21:08:25 fizzie: Dwarf/Elf STDs! 21:08:27 It's very dangerous. 21:08:31 XD 21:08:45 And their coinduction seems utterly brain-dead. 21:08:47 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 Phantom_Hoover: I don't know of anything wrong with their coinduction apart from the syntax. 21:09:03 I may be wrong. 21:09:06 So that is I intend to have the typewriter control graphics and blackboard bold 21:09:06 Phantom_Hoover: Is the snowman in there? 21:09:17 fizzie, god only knows. 21:09:55 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 anyone know how to make gnome use sudo, not su? 21:10:24 "Web browser: [ Debian Sensible Browser ]" 21:10:36 NAME sensible-editor, sensible-pager, sensible-browser - sensible editing, paging, and web browsing 21:10:38 all I found is a seemingly outdated git branch at kernel.org 21:10:47 Sensible Software are gonna sue! 21:10:51 alise: ... how do I make a nauseous-looking emoticon.. ? 21:10:56 Sensible Software? 21:10:57 alise, that name sounds familiar... 21:10:59 cpressey: Why nauseous? 21:11:03 Sensible Software I mean 21:11:08 cpressey: They're just programs that open a reasonable program for the task. :P 21:11:12 Like x-www-browser. 21:11:15 Vorpal: they did Cannon Fodder 21:11:26 alise: Oh, if it's a shell/dispatcher thingy, that's not too bad. 21:11:27 alise, doesn't ring a bell 21:11:28 and Sensible Soccer 21:11:35 and, uhh, apparently Sensible Golf 21:11:42 hm 21:11:58 It's just such a distasteful word in my lexicon. 21:12:08 "Sensible Train Spotting is the world's first ever computerized train spotting simulator." gahahaha 21:12:10 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 One could argue it's because I'm not at all sensible, I suppose... 21:12:49 Ms security essentials updates like locking up my computer 21:13:01 SgeoN1: It's for its own good 21:13:08 security essentials? 21:13:10 what is that 21:13:28 Microsoft's AV software 21:13:35 huh 21:13:41 SgeoN1, ask alise about that. 21:13:53 Phantom_Hoover: ? 21:14:13 Locking up. 21:14:19 Why? 21:14:36 * SgeoN1 slaps Phantom_Hoover 21:15:06 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 alise, perhaps you could help SgeoN1's computer deal with locking up? 21:15:36 zzo38, zebra arrows? Are they made out of zebras or zebra shaped or just zebra coloured? 21:15:38 Phantom_Hoover: Why? 21:15:46 or a combination of those? 21:15:52 Forget it. 21:16:03 Vorpal: I don't know 21:16:10 -!- Sgeo has joined. 21:16:11 I thought PH was referring to your life situation until recently 21:16:17 But I think it means stripe black and white arrows 21:16:21 zzo38, random text generator? 21:16:33 Vorpal: No. I found it in FORTUNE file 21:16:38 ah 21:16:46 * cpressey shoots a zebra arrow at Phantom_Hoover 21:16:53 Hey, these things are pretty cool. 21:17:00 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 Apparently they are black-and-white striped arrows. And Ted Nugent has lent his name to a brand of them. 21:18:28 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 Yes, but that ebay auction has ended! 21:18:45 You can still buy a "DIVA SPARKLE ZEBRA ARROW SIGN HANGING WALL ART PINK" though. 21:19:01 That's just a zebra-patterned arrow sign with "DIVA" in pink text on top. 21:19:03 hahah 21:19:04 Another thing from FORTUNE file: Circular logic is good because it is. 21:19:16 Hmm. cpressey should be thoroughly blessed by now. 21:19:33 Obviously something is in the path of the ray. 21:19:50 Phantom_Hoover: How do you know I'm not? 21:20:01 You're not glowing. 21:20:05 Oh 21:20:47 cpressey, one of the noted effects of high-energy deions is severe brain damage, leading to an extreme case of fundamentalism. 21:20:58 Arrrrrr!!! sin theta. Polar coordinates are a pirate's best friend. 21:21:09 fun da mental 21:21:41 * Phantom_Hoover tries firing the deion beam at a hamster. 21:21:53 Fundamentalism is often illogical too. Jack Chick is Illogical Christianity. 21:21:56 * Phantom_Hoover fails due to lack of hamsters. 21:22:16 Someone who follows Illogical Christianity, shall therefore be called Chicken. 21:23:12 Arrrrrr!!! sin theta. Polar coordinates are a pirate's best friend. <-- is this the horrible pun I think it is....? 21:23:18 Indeed. 21:23:20 no it can't possibly be that bad can it? 21:23:33 Although a little nonsensical from a mathematical standpoint... 21:23:44 well yes 21:23:56 Does the "sin theta" part pun to something? 21:24:01 r sin theta 21:24:05 Seems clear to me 21:24:09 I mean in pirate. 21:24:30 It's the conversion from polar (r, theta) to cartesian y; I wouldn't call it "nonsensical", just a bit arbitrary. 21:24:49 fizzie, not without cos, it isn't. 21:24:52 Like if it was "avast ye" instead of "sin theta", I wouldn't be asking. 21:25:07 Phantom_Hoover, that's why he said "cartesian _y_" 21:25:16 Ahh. 21:25:22 the adm group means admin, right? 21:25:25 -!- oerjan has joined. 21:25:33 oerjan! 21:25:41 'evening 21:25:47 All this mucking about with pirate puns has summoned oerjan. 21:25:51 RIP hagbart.nvg.ntnu.no 21:25:53 alise, why are you asking? I think it is there mostly for compat reasons and not really used any more 21:25:56 unless I misremember 21:26:00 oerjan, NOOOO 21:26:02 oerjan, hm? what happened? 21:26:08 what was hagbart.nvg.ntnu.no? 21:26:18 oerjan: your server? 21:26:23 Vorpal: ok; I'll use the sudo group then 21:26:25 the nvg server i've been using for irc for years died 21:26:30 oerjan: :( 21:26:37 alise, hm... 21:26:42 oerjan, wait! 21:26:43 It probably does have "adm"inistrationary connotations, but it's anyone's guess if your system uses it for anything. 21:26:54 oerjan, you didn't use a bouncer? 21:26:55 * Phantom_Hoover aims the deion beam at Norway 21:26:56 afaik 21:26:56 also, long live sprocket.nvg.ntnu.no 21:27:02 or any sort of persistent connection 21:27:07 Vorpal: nope 21:27:12 oerjan, so...? 21:27:16 you didn't notice me being absent? 21:27:17 I don't think Debian's /etc/sudoers by default even does the "sudo" group, but it's there commented-out. 21:27:29 oerjan, I noticed you not staying connected while sleeping before 21:27:30 oerjan, do you feel at all blesséd? 21:27:30 (when not present) 21:27:33 if that is what you mean 21:27:47 oerjan, so why are you using a server for the irc client then 21:27:49 fizzie: it does 21:27:50 it makes no sense 21:27:53 fizzie: without uncommenting 21:28:59 Vorpal: old habits, also my laptop is windows while the server is linux and has irssi 21:29:20 Fix buffer expansion bug, detected thanks to boost that provided things like: 21:29:20 virtual int undefine(class grammar_helper > *); /* linkage=_ZN5boost6spirit4impl14grammar_helperINS0_7grammarINS_6detail5graph11dot_skipperENS0_14parser_contextINS0_5nil_tEEEEES6_NS0_7scann 21:29:20 erINS0_10multi_passISt16istream_i */ 21:29:21 XS 21:29:23 XD* 21:29:25 why do i have this crazy recollection that fizzie said he puts a space after his messages 21:29:26 also the server has my email 21:29:37 thats from a changelog for dwarves 21:29:40 oklopol: Only after messages that end with a ? mark. 21:29:46 :D 21:29:47 oh 21:29:49 cool 21:29:51 oerjan, what are its coördinates? 21:30:08 you know, unicode shows as a . to oerjan. 21:30:20 21:30:38 21:31:20 alise: ô_ô 21:31:20 alise, aww 21:31:34 oklopol: For the record, the space was to avoid the "answers all lines that end in a ?" babble-bot. 21:32:12 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 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 Phantom_Hoover: also, occasionally, and occasionally cursed 21:32:26 ^style 21:32:26 Available: agora alice c64 ct darwin* discworld europarl ff7 fisher ic irc jargon lovecraft nethack pa speeches ss wp youtube 21:32:33 fungot, I want to have your babies 21:32:34 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 Vorpal: W. T. F. 21:32:40 Darwin just keeps on smiling. 21:32:56 oerjan, how blessed to you feel right now? 21:33:43 -!- Jonty has joined. 21:35:20 Phantom_Hoover: not much 21:35:40 oerjan: If somebody told you to sit on an altar, would there be an amber flash? 21:35:52 oerjan, damn, I must be aiming at the wrong bit of Norway. 21:35:57 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 also i'm only in the same city 21:36:36 fizzie: how the heck should i know 21:36:43 http://www.mic-journal.no/ifac/pics/gloshaugen.jpg -- impressive-looking thing. 21:36:59 oerjan, damn, ran out of god-flesh. 21:36:59 -!- Gracenotes has quit (Quit: ...). 21:37:37 Phantom_Hoover: i'm not particularly christian so that may not work much 21:37:59 oerjan, pah! This is SCIENCE! 21:38:36 fizzie: also why are you giving fungot advice on what he's already a world expert on... 21:38:37 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 A man, as good fnord, and evergreen. 21:39:04 -!- alise has quit (Ping timeout: 252 seconds). 21:39:08 Darwin was apparently psychotic a good deal of the time. 21:39:20 Yeah, spending a whole autumn just shooting at someone's notes. 21:39:23 fungot, make love with me! 21:39:24 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 fungot is a BORING thing 21:39:42 Sgeo: bloom-experiments on. -sleep-movements :) cotyledons. -p. gracilis, dispersal :) seeds. 21:39:54 cpressey: i've read that about Jung, not so much Darwin... 21:39:56 It's like a laser, except with Eucharist instead of a flash tube and pictures of Dawkins instead of mirrors. 21:40:19 oerjan: we tried feeding Jung to fungot, but he couldn't keep him down. 21:40:20 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 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 and many other buildings. 21:42:42 Phantom_Hoover: as i pointed out, i'm not actually there, just in the same city 21:44:16 oerjan, I'm aiming at the server, silly. 21:45:01 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 And in any case, deions repel each other, so the beam spreads out over long distances. 21:45:37 Although this could end up fundamentalising all of Gløshaugen. 21:46:08 -!- alise has joined. 21:46:12 I HATE POLICYKIT 21:46:35 i hate Elliot Hird 21:46:37 oerjan: I never liked that "trivial" things are rejected by academia :( 21:46:49 MATH NEEDS TO BE HARD!! 21:46:51 lament: that's okay; as far as I'm aware, he doesn't exist. 21:47:05 I hate Eliott Hird! 21:47:24 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 none of us can ever be happy without salt 21:48:06 discuss 21:48:11 cpressey: i guess we could have got it accepted by aiming lower with the journal, if we'd bothered 21:48:20 alise: eat you this rock 21:48:26 alise, depends. 21:48:32 cpressey: eat this rock I? 21:48:34 If you're happy being dead, it's fine. 21:49:07 DON'T COME CRYING TO ME WHEN IRRIGATION IS ILLEGAL 21:49:14 There is no eat rocks in here 21:49:16 cpressey: What do you think of BeOS? 21:49:30 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 It's DISGUSTING 21:50:02 alise: Almost nothing 21:50:16 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 cpressey: said like a true cardigan 21:50:55 Cardigans! 21:51:00 but remember 21:51:04 I have eyes ... everywhere. 21:51:28 sounds inconvenient 21:52:03 alise, how many fingers am I holding up? 21:52:32 Phantom_Hoover: one more than you should be. 21:52:46 MY GOD 21:53:05 * Phantom_Hoover fires DASER at alise. 21:54:03 Portcullis of EVIL 21:54:57 cpressey: there are of course heaps of obscure kinds of algebras if one wants to look for them 21:55:08 oerjan: yes, heaps :/ 21:55:18 "is it an algebra?" is an uninteresting question 21:55:29 "does it look like an algebra other people care about?" is closer 21:55:46 still might not be interesting, since other people are just other people 21:56:34 PolicyKit is an obviously great idea done in a way that makes me want to cry. 21:57:28 alise, explain the sucking? 21:58:35 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 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 and it's not clear what you have to do 21:59:00 at all 22:02:10 i may just install ubuntu 22:02:38 http://en.wikipedia.org/wiki/Median_algebra ah, majority functions, yes... 22:02:55 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 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 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 I love the Torley music! 22:07:48 i wonder what binary boolean function makes (a&b)|(a&c)|(b&c) simpler 22:08:49 An electronic computer! WOWSA 22:08:54 WELCOME - TO - THE - FUTURE 22:09:01 Any two out of 3 22:09:08 How would that be a binary function? 22:09:18 !a | !b | !c 22:09:24 Wait, no 22:09:37 Sgeo: I think you want bitwise not. 22:09:50 I mean, how can you add binary functions to make that trinary function simpler to express? 22:09:59 (the function being, "are the majority of arguments true?") 22:10:14 a&(b|c)|(b&c) 22:10:27 oerjan wins. 22:10:33 http://dilbert.com/strips/comic/1996-01-23/ 22:11:05 And my eye hurts. 22:11:09 Eth. 22:11:14 oerjan: cool. that isn't adding a new function, though :-) 22:11:19 distributivity ftw 22:11:23 also, is that (a&...)|(...) or a&(...|...)? 22:11:32 pikhq, s/^/S/ ? 22:12:14 & has higher precedence than | in my intuition 22:12:14 Sgeo: Okay, /why/ has he got his tie-erection? 22:12:32 oerjan: i always forget which way around higher/lower precedence goes 22:12:34 There was a strip where his tie was down 22:12:36 -!- Gracenotes has joined. 22:12:44 alise: it's just collecting the first two terms in your expression 22:12:53 * Phantom_Hoover watches alise's video. 22:12:57 Phantom_Hoover: ? 22:13:00 oh the knuth one 22:13:05 *oh, the knuth one 22:13:07 http://dilbert.com/strips/comic/1991-05-10/ (not the strip with the tie down) 22:13:09 Sgeo: Scott Adams does it on purpose 22:13:16 50,000 instructions per *minute* 22:13:21 for the Freudian meaning 22:13:30 perhaps only as of late, though 22:13:44 Only as of late for the Fruedian meaning? 22:13:50 yes, quite possibly 22:13:55 Dilbert's tie has been like that since um 22:13:56 since that strip seems to imply it's always up in older strips 22:14:29 hmm 22:14:30 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 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 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 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 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 Is it just me, or does Debian always seem like a pre-alpha version of Ubuntu with all the branding removed? 22:22:06 snazzy red spiral 22:22:07 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 fizzie: well, certainly at least for a year or so 22:23:23 Possibly, maybe. I haven't really been following Debian on Desktop lately. 22:23:32 I thought you used it. 22:23:35 since always refers to an infinite period of time 22:23:41 and alise now defined always as one year 22:23:59 that means, the following year will last forever 22:24:16 hm 22:25:06 -!- FireFly has quit (Quit: swatted to death). 22:25:32 -!- FireFly has joined. 22:25:45 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 I wouldn't mind Ubuntu at all, really; just the audio thing. 22:26:40 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 fizzie: Oh, I'm not saying they literally borrow things; just that nothing seems to stick together properly. 22:27:20 It's ... unpolished, which makes you wonder what the hell their patches do. 22:27:50 fizzie: Oh, and they've taken Ubuntu Software Centre wholesale, renamed it Software Centre, and stuck it in System → Administration. 22:28:06 Conclusion: Debian on the desktop - not compelling. 22:28:18 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 Haha! It still says Ubuntu Software Centre in the manual. 22:28:23 Oh testing, how little you try. 22:28:41 fizzie: Well, the administration programs with their authentication and whatnot. 22:29:06 Don't know, I haven't seen any authorization prompts anywhere. 22:29:39 I just wish Ubuntu/Flash worked properly with AV sync. 22:29:49 Ubuntu/Flash/OSSv4 works, but Ubuntu has zero OSS support. 22:30:08 Gregor: Here, you use sidux. Is the integration any better? 22:30:15 Rebranding open-source software, now there's a vocation. 22:30:30 alise: With OSS? Screw OSS :P 22:31:06 * Sgeo leaves gmail open so he can receive calls 22:31:09 Gregor: Not OSS, no. 22:31:16 Gregor: Although OSSv4 is fucking awesome. 22:31:34 anyone here know autoconf and friends? 22:31:40 It's like ALSA except without all the crap, lots of fancy stuff, and excellent latency. 22:31:49 cpressey: TURN BACK! TURN BACK! DARKNESS WILL ENVELOP YOU! 22:31:59 Gregor: I mean with the desktop environment. For instance: PolicyKit. Can I make everything just work sudo-style? 22:32:17 alise: Oh, I wasn't asking for *that* reason. 22:32:27 alise: It's Debian. You go console. For everything. That's how I roll. 22:32:35 I was seeing who here was just that mental. 22:32:41 Gregor: So, are you running X11 right now? 22:33:09 alise: Yes, yes I am :P 22:33:20 Gregor: And are you running KDE? 22:33:23 Hell no 22:33:30 Gregor: You sure as hell used to. 22:33:35 KDE4 sucks arse. 22:33:37 KDE3 was good. 22:33:47 I wonder how one actually *sucks* arse. 22:33:57 Very carefully. 22:34:25 A straw may be involved. 22:34:34 It doesn't sound particularly erotic. 22:34:55 KDE4 is not an erotic desktop environment. 22:34:58 Just a terrible one. 22:35:02 Well, you know, to each his/her/its own. 22:35:06 SexDE 22:36:37 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 man sex 22:37:33 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 xD 22:39:23 -!- nooga has joined. 22:39:24 non sequitur? i hardly know her! 22:39:26 erm you suck arse by applying suction to it with your mouth 22:39:53 http://dilbert.com/strips/comic/2008-04-02/ 22:40:00 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 Sgeo: Why not link to the more human-friendly http://dilbert.com/fast/2008-04-02/ instead? 22:40:30 fizzie, laziness? 22:40:34 Forgetfullness? 22:41:07 But it's just a string substitution. You must really be the lazy. 22:41:46 Sgeo: exactly like it is now 22:41:51 I forgot that some people might prefer it 22:41:54 "/etc/trips is a log of system-wide use of lsd since booting." ;; that's non-FHS, sheesh! 22:41:59 the 'fast' url seems to go to *today*'s strip 22:42:04 cpressey: does not 22:42:19 no... my browser is insane, is all 22:42:22 Sgeo: every human prefers it. 22:42:22 alise: FHS? 22:42:30 oerjan: file hierarchy standard 22:42:34 in the lsd(1) manpage 22:42:39 * Sgeo likes reading the comments 22:42:42 no... i got the url wrong and it seems to assume i want today's strip 22:42:59 see, that is why you be lazy for strin substitutions. easy to fail. 22:43:12 Isn't it file*system* hierarchy whatevers? (Pick, pick, pick the nit.) 22:43:22 fizzie: er right 22:44:11 -!- SgeoN1 has quit (Quit: Bye). 22:44:43 http://dilbert.com/strips/sojdohehisnbond/ 22:46:13 The non-fast versions seems to have gotten more sensible, though. Wasn't it completely flash-driven at some point? 22:46:29 Yes. 22:47:00 Now it seems to work without scripts and everything, it's just a bit more graphically intensive and so on. 22:48:54 If there's anything sweeter than recursive make it's gotta be recursive configure. 22:48:58 i always imagine alise as dogbert 22:49:41 Recursive autogen. 22:50:25 (I must've meant autoconf or autoreconf or something; I can't even recall what autogen exactly does.) 22:51:57 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 script, program, whatever 22:52:10 autogen regenerates configure, iirc 22:52:14 from configure.ac 22:52:17 thought that was autoconf 22:52:24 -!- augur has joined. 22:53:05 well it's done now at least, but ff is still greyed out 22:53:17 cpressey would be someone like Moss from IT Crowd 22:53:38 nooga: I've never seen it 22:53:58 cpressey: http://cutr.pl/0f72992d5f 22:54:15 * Phantom_Hoover finally realises it's 9/11 22:54:25 http://dilbert.com/fast/2004-01-29/ angry Asok is awesome 22:55:22 fizzie -> http://www.eaea.org/uploadkuvat/eaea/johanni08.JPG 22:55:39 Gregor is Gregor 22:55:40 nooga: i'm not sure what to think of that 22:56:04 please do not be offended 22:56:12 no, not at all 22:56:28 REDNECK BEETLE! 22:56:44 cpressey would be someone like Moss from IT Crowd ;; naw 22:56:51 cpressey's too chilled 22:57:11 I apparently don't have a picture :P 22:57:17 fizzie -> http://www.eaea.org/uploadkuvat/eaea/johanni08.JPG ;; I don't see the beard 22:57:21 Gregor: You look like Gregor 22:57:25 haha 22:57:28 i didn't even read nooga's line 22:57:34 Gregor: https://codu.org/hats.php 22:57:39 Gregor is the only self-representing person in here 22:57:42 nooga: :P 22:57:52 and me... hmmm 22:58:03 Yup. I'm me. And cpressey is actually named Bob Farber and ais is actually Chuck Melontoast. 22:58:27 oh, ais is ais too 22:58:57 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 oerjan looks like this: http://www.knowledgerush.com/wiki_image/thumb/c/c1/200px-Edsger_Dijkstra_large.jpg 22:59:53 except younger 22:59:58 and with a less-jutting-out chin 23:00:12 and he speaks with his mouth always slightly wider than most people would 23:00:13 alise: well 23:00:13 * Phantom_Hoover doesn't know who he should be 23:00:28 23:59 < alise> oerjan looks like this: ... 23:00:31 that's it! 23:00:50 our personification algorithms are incredibly similar. 23:00:53 Argh uploading so slow. 23:01:03 alise: i think that's about as far from me you can get and still have a white male 23:01:06 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 A lot of people do am a bit beardy. 23:01:30 alise: hmmm, well, i guess all englishmen have quite simmilar image of polish ppl :F 23:01:43 nooga: i was joking 23:01:43 oerjan: You must be confused: the picture looks somehow oerjany. Are you sure you know what you look like? 23:01:53 http://dilbert.com/fast/2002-09-23/ 23:01:56 then CTO http://cutr.pl/bbdb2f7187 23:01:57 :D 23:02:07 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 nooga: is that you? 23:02:24 fizzie: well i'm blond, don't have glasses, am always clean shaven, and haven't worn a tie in years. 23:02:29 alise: yeah 23:02:30 that doesn't look like how you look at all. 23:02:32 stop lying 23:02:39 i'm not lying ;f 23:02:55 LIAR 23:03:01 "64-bit - Not recommended for daily desktop usage" 23:03:04 why does Ubuntu say that, I wonder... 23:03:05 the photo was taken in a museum, in Edinburgh 23:03:38 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 nooga, when were you in Edinburgh? 23:03:57 fuck ubuntu's download page 23:03:59 in April, AFAIR 23:04:01 it doesn't let you copy a link 23:04:10 * Phantom_Hoover has brown hair and no glasses 23:04:12 alise: first guess: not too stable. (But then -- continual *server* usage would be a better fit? uh...) 23:04:18 cpressey: ? 23:04:32 < alise> "64-bit - Not recommended for daily desktop usage" 23:04:35 * Phantom_Hoover imagines #esoteric Guess who. 23:04:38 ah 23:04:40 it's very stable 23:04:49 then i have no idea either 23:04:51 it just doesn't support flash without a sucky wrapper, but flash sucks on linux anyway 23:04:59 true 23:05:01 and the wrapper is auto-installed 23:05:40 ubuntu-10.04.1-desktop-amd64.metalink 23:05:41 awesome 23:05:45 time to go beyond my maximum connection speed 23:06:23 oerjan -> http://cutr.pl/6960e3c6aa 23:06:25 There used to be Skype issues on 64-bit linux, but I guess that might be outdated information too. 23:06:36 aww, no glasses, right 23:08:02 http://cutr.pl/6960e3c6aa ;; not oerjan :P 23:08:23 900 KiB/s, oh yeah. 23:08:30 On an 800-and-a-bit KiB/s connection. 23:08:45 alise, explain...? 23:09:02 pfft 23:09:08 aria2 downloads from five bajillion HTTP servers simultaneously as well as bittorrent with DHT 23:09:10 i've got 1.6MiB atm 23:09:21 with an appropriate metalink file to specify them all 23:09:24 < alise> "64-bit - Not recommended for daily desktop usage" <-- where does it say that 23:09:27 /s 23:09:32 result: your connection gets faster than your top speed with e.g. HTTP 23:09:34 Vorpal: on the download page 23:09:42 alise, download page for debian? 23:09:44 64-bit linux works very well for desktops these days 23:09:46 ubuntu. 23:09:49 no shit sherlock. 23:09:50 ah 23:09:53 i just said that 23:09:54 Gregor: i think my hair is somewhat lighter than yours 23:10:02 Almost certainly. 23:10:09 alise, there is of course every now and then the flash issue. But that's all. 23:10:13 My hair is about as dark as it gets while still being pseudo-reasonable to call it "blond" 23:10:56 hm comparing hair colours? 23:11:08 I beat you both: my hair is dark brown 23:11:18 i've got read beard! 23:11:19 dark enough brown that most people think it's black. 23:11:21 Vorpal: Hair LIGHTNESS is the winning condition :P 23:11:21 red**** 23:11:22 \fffff 23:11:23 i win 23:11:25 READ BEARD 23:11:26 nooga: I'll read your beard. 23:11:26 Gregor, nah 23:11:30 ok brb 23:11:31 read it! 23:11:38 nooga, red natural? 23:11:41 or coloured? 23:11:44 if natural, you wil 23:11:46 win* 23:11:51 natural 23:11:55 then you win 23:11:59 Is this the "have a bucket of red paint, then ask 'do you want your beard read?'" joke? 23:12:05 nooga: #FF0000? 23:12:16 not exactly ;f 23:12:17 #F00 is shorter! 23:12:21 f00 23:12:25 Gregor, for some reason my beard is a lighter brown than the hair on the top of my head 23:12:45 Vorpal: I have a friend with brown hair on his head and red/orange facial hair. 23:13:05 Gregor, #f00 isn't enough to describe it. It is so red it lies outside sRGB 23:13:18 Vorpal: WOW! 23:13:26 :D 23:13:43 Vorpal: It's so red that the surrounding environment looks grey due to the cones in your eyes burning out. 23:13:46 Gregor, I believe Adobe Wide Gamut covers it 23:13:58 Monochromatic hair. 23:14:37 http://en.wikipedia.org/wiki/Wide_Gamut_RGB_color_space 23:16:18 fizzie, hm? 23:16:21 what do you mean by that 23:17:30 Single wavelength (let's say 700 nm, that's stereotypically red) reflected, won't get very much redder than that. 23:17:44 fizzie, lies outside of sRGB I presume? 23:18:01 it's a beard-laser 23:18:23 cpressey, so the light reflected from it is coherent? 23:18:26 how does that work 23:19:06 It's seems that the wide gamut RGB red primary is pretty much that. 23:19:13 uhhhhhhhhhhh 23:19:17 fizzie, ah 23:19:23 nooga, ? 23:19:59 fizzie, I want a wide gamut display. With 16-bit per channel or better of course 23:20:03 and a GPU that supports that 23:20:06 would be awesome 23:20:12 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 nooga, oh? 23:20:35 and why would anyone mix cola with vodka? 23:20:43 not mix ;F 23:20:52 vodka first and then cola 23:20:55 well, why would anyone drink vodka at all 23:21:10 i feel completely sober, but who knows 23:21:20 oerjan, um RGB is not a precise word in this context. Do you mean sRGB? 23:21:23 or some other RGB? 23:21:51 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 Vorpal: i'm making an argument from ignorance here, so obviously i don't have a clue about that 23:22:06 i can walk to that station, it's just 300m 23:22:07 oerjan, ah 23:22:17 nooga, OR avoid alcohol :P 23:22:26 but i'm thirsty 23:22:31 nooga water? 23:22:38 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 Vorpal: boring 23:23:09 fizzie, what? Really? 23:23:29 fizzie, oh is this one of those "imaginary" colours? 23:23:34 Vorpal: With fake-science, anything's possible! 23:23:52 Nothing imaginary about this one, though. 23:23:57 fizzie, hm 23:24:09 fizzie, couldn't you just paint it in such a colour 23:24:19 avoiding the need for eye tracking 23:25:07 Vorpal: have you been drunk? 23:25:08 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 oklopol, no 23:25:27 and you wonder why people do it? 23:25:35 fizzie: lol 23:25:41 that's like asking people why they've ever opened their eyes when they have a perfectly good hearing 23:25:47 fizzie, likely not practically possible? 23:25:52 nooga, wait, which Edinburgh museum were you in? 23:25:59 and that's fucking stupid 23:26:24 Phantom_Hoover: National Museum of Scotland 23:26:25 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 nooga, when? 23:27:50 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 Phantom_Hoover: April 23:28:20 nooga, so after they closed all the cool bits for renovation? 23:29:08 fizzie, that's kind of possible with those weird little afterimages you get. 23:29:10 fizzie, hah 23:29:36 Phantom_Hoover: yep, I can remember that there was a renovation then 23:29:56 "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 I suspect the cool bits will not be cool once they finish with it. 23:30:36 *them 23:31:08 i used all of the interactive contraptions for kids 23:31:43 priceless 23:32:57 fizzie, how does it look like for the person in question 23:33:07 fizzie, that was subjected to it 23:33:50 Vorpal: The abstract doesn't say, and they might even not have asked. 23:34:07 "To read this story in full you will need to login or make a payment (see right)." 23:34:20 hm 23:34:47 Heh, adding the university proxy worked again. Still, I doubt they asked for subjective things there. 23:34:51 fizzie, this looks extremely different: http://en.wikipedia.org/wiki/Photobleaching 23:37:57 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 "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 en isoluminant gratings with spatial frequencies above the resolution limit look like chromatic and luminant spatial noise." 23:41:13 Heh, the eye's just a badly designed digital camera. 23:41:52 Tell us something we don't know. 23:42:44 "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 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 nes of the same class." 23:47:47 Sooner or later I'm sure we'll be replacing the boring old eyes with all sorts of augmentations. 23:47:59 Hmm, maybe I could make a deion transfer network and give everyone a constant supply of holiness! 23:53:53 http://dilbert.com/blog/entry/shape_shifters/