00:01:33 But every graph is representable in three dimensions. 00:01:35 * tswett coughs. 00:01:41 ? 00:07:30 I seem to recall that you could have two instances of \m/ \m/ on one line... but you do need to leave some space before the first \m/ \m/ 00:07:42 Hm, no go. :/ 00:08:52 \m/ \m/ \m/ \m/ 00:08:53 `\o/´ `\o/´ 00:08:53 | | 00:08:53 /'¯|_) /'\ 00:08:53 (_| (_| |_) 00:09:05 There. 00:11:02 < tswett> What's that sixth one? 00:11:09 blood spatter lol 00:11:49 the limits are fairly straightforward 00:12:13 it won't accept lines that would make it output lines long enough that it increases my throttling score significantly 00:12:22 it won't draw guys that would run into each other (or my name) 00:12:28 and there is a bit of a rate limit 00:13:09 * tswett nods. 00:13:18 4d maze sounds interesting 00:13:23 Log-grepping seems to show some rather long ones. 00:13:23 \m/ \m/ \m/ \m/ \m/ \m/ 00:13:24 `\o/´ `\o/´ `\o/´ 00:13:25 | | | 00:13:25 (_|¯`¯|_) /'\ (_|¯`\ 00:13:25 (_| |_) |_) 00:13:30 Yay. 00:13:34 yeah, well, i can break the rules 00:13:35 :) 00:14:00 re: maze; would you have it something like, every movement moves you through the 4th dimension 00:14:04 or you could move at will? 00:14:34 (oh yeah, also the rocker dude needs +1 character on either side) 00:14:39 (for the feet) 00:15:13 i remember when i learned that angband took influences from the Amber series 00:15:30 that i was thinking about ways to make a game like that able to implement walking in shadow 00:15:49 some sort of seeded randomization based on a coordinate system was what i wound up with 00:15:59 where you could like, hold a meta-key while moving 00:16:04 and it would also move you on the coordinate system 00:16:20 dunno how you'd generate subtle changes in the environment with significant randomizer changes though 00:17:11 the idea would be to have randomly generated anchor points, solid points in the continuum that you would move towards or away from, or go by closely etc. 00:17:33 and the inbetweens would be generated somehow by a combination of parameters of the nearby anchor points 00:17:42 i think that'd be more interesting than a 4d maze anyway ;) 00:17:59 -!- Mathnerd314 has joined. 00:20:45 * Sgeo is confused 00:20:57 lol 00:21:00 have you read the Amber series? 00:21:42 No 00:21:47 that's why then 00:22:02 it's a fantasy series 00:22:15 it utilizes the "many worlds" idea 00:22:32 where there are infinite parallel existences you know? 00:22:42 except in this setting, there is one "true" world, Amber 00:22:42 has anyone made a game in fractal dimensions? 00:22:53 and all the other worlds are somehow lesser; shadows of Amber, if you will 00:23:04 extending outwards towards chaos 00:23:26 the princes of amber have the ability to "walk in shadow" (i think that's how they phrased it?) 00:23:36 which is essentially moving away from the true reality through all the many variants 00:23:50 it involves physical movement and some sort of internal concentration 00:24:14 and knowledge of where you are going; you basically hold in your mind the details and as you travel the world around you adjusts to more closely match those details 00:24:19 I thought there were 2 true realities... order and chaos (one was Amber, the other had some name I forgot) 00:24:22 supposedly arriving at your destination means you have to know to perfection all the details 00:24:25 Yes, that's how they called it; though the Chaos side is considered as "true" as the Amber side, with the shadows in-between, IIRC. 00:24:31 oh yeah, i guess chaos is also a true reality 00:24:38 or something 00:24:51 anyway, the point is to describe what i was getting at in terms of roguelikes ;) 00:25:15 which is the ability to navigate intentionally through "infinite" variants with various notable characteristics 00:25:37 in some fashion that is both programmable and not so obscenely obtuse that you couldn't play it as a game 00:25:45 while trying to stay somewhat true to the source 00:26:09 it shares some traits with the 4d maze idea, which is what brought it back to mind 00:26:53 it also brings to mind certain mechanical mazelike puzzles i've toyed with where certain transitions can be blocked by physical obstacles from your current state 00:27:15 so i don't know how it would fall out with random generation, but you could, say, generate shadows that are hard to arrive at because the things surrounding the path you would take to get there are physically obstructed 00:30:54 Braid does something a (tiny) bit like that w.r.t. time in some of the worlds, at least that one where the X coordinate on-screen is mapped directly to the time coordinate. 00:31:14 oh, i keep forgetting to play Braid 00:31:21 i don't do much gaming, but that one interested me 00:31:30 someone explain to me the following python code: 00:31:32 d, v = 0, [1.] + [0.] * 365 00:31:32 while v[365] < 0.5: d, v = d+1, [(a*j+b*(366-j))/365. for j,(a,b) in enumerate(zip(v,[0]+v[:-1]))] 00:31:35 d 00:32:36 more importantly, tell me whether it should correctly calculate the expected number of balls you'd have to toss into 365 bins before you get one ball in each with prob. 1/2 00:35:42 My 4d maze is a bit banal 00:36:20 what list does that enumerate thing make? 00:44:40 enumerate(["a", "b", "c"]) is [(0, "a"), (1, "b"), (2, "c")] iirc 00:48:10 -!- copumpkin has quit (Quit: Computer has gone to sleep.). 00:50:24 The "for j,(a,b) in enumerate(zip(v,[0]+v[:-1]))" bit will in general have j, a=v[j], b=v[j-1] for j in 0..365, except that for j=0 case b=0. 00:50:55 * tswett whistles. 00:52:02 Well, that was anticlimactic. 00:52:30 * tswett tries again. 00:54:17 * tswett tries again again. 00:54:31 fizzie: so what does v contain? 00:55:53 Welp, won the Halstead award, just in time to not be able to use it for libc.so :P 00:56:09 I can't be bothered to figure out, but perhaps it's maintaining at v[i] the probability that at least i bins have balls in them. That would at least match the initial state and the termination condition. 00:56:14 What's the Halstead award? 00:57:20 fizzie: i can't even see where it is changing the value of v 00:58:21 quintopia: d, v = d+1, is the body of the loop. 00:58:45 oh, that's two assignments using the same = 00:59:01 had no idea python could be so hard to read 00:59:02 Yes; that's also done in the initialization. 00:59:36 It sets d = 0, v = [1, 0, 0, ...] where there are 365 zeros. 00:59:44 * quintopia is used to languages where every = identifies a single assignment 01:00:07 Languages without multiple assignment are annoying. 01:00:36 x, y = y, x; is a better way to swap two variables than tmp = x; x = y; y = tmp;. 01:00:37 what i meant was 01:00:46 "a single assignment value" 01:00:59 so x,y,z=5 sets everything to 5 01:01:30 Halstead award? 01:01:44 Gregor: "Thora W. Halstead Young Investigator's Award -- to honor a young scientist who exemplifies Thora’s drive and enthusiasm for science, and who has made significant contributions to the field of space biology." I didn't know you were a space biologist! 01:02:02 Wrong Halstead award X_X 01:04:10 Then you must be talking about Halstead Property, LLC, a real estate company. 01:04:40 "The E. Bayard Halsted Scholarship In Science, History and Journalism"? 01:04:50 Yup. They awarded me ¾ of Somalia. 01:06:05 -!- tswettbot has joined. 01:06:12 * tswett celebrates. 01:07:38 Wait, my GUI's unfrozen. How is this? 01:07:57 -!- tswettbot2 has joined. 01:08:22 Aw, I missed my chance to do "I didn't know you were a jewelry artist" ("Through a generous gift from Halstead Bead Inc., scholarships are available for jewelry artists who want to receive business training in the Visiting Artist Program of the Buyers Market of American Craft.") due to stupid relevance-ordered search results. 01:09:02 Now my GUI's frozen again. 01:09:19 I wonder if it will unfreeze the moment tswettbot pings out. 01:09:29 Which ought to be... soonish. 01:09:40 Let's talk about fun things in the interim! 01:09:53 Like gelatinous spheres filled with liquid. 01:10:22 -!- tswettbot has quit (Ping timeout: 246 seconds). 01:10:34 Nope, I still don't have my GUI. 01:10:55 -!- tswettbot2 has quit (Remote host closed the connection). 01:13:38 * tswett runs the current version of his bot, and takes a guess at what's happening. 01:14:35 1. The bot connects to freenode. 2. The bot sends all its messages to freenode. 3. The expression finishes running. 4. The bot is garbage collected. 5. The finalizer for SocketStream closes the connection. 6. freenode goes, "what the hell did you do that for?". 01:18:17 -!- copumpkin has joined. 01:19:29 Hi copumpkin. 01:19:37 -!- tswettbot has joined. 01:19:37 I am sending a message. 01:19:38 yo 01:19:47 There, tswettbot can send messages now. 01:20:01 And I can dismiss it at any time simply by saying, "I dismiss you, tswettbot". 01:20:02 -!- tswettbot has quit (Client Quit). 01:20:04 -!- catseye has joined. 01:20:04 Observe. 01:21:00 -!- catseye has set topic: ESOTERIC LANGUAGES | Catch sufficiently hello world. | An unusually not mephitic forum. | Enjoy being locked in your matrix of solidity. | yoob: http://catseye.tc/lab/yoob/applet.html (+Etcha +fixes) | Logs: http://tunes.org/~nef/logs/esoteric/?C=M;O=D, http://codu.org/logs/_esoteric/. 01:21:17 Let's see what happens if I put that in the topic. 01:21:23 -!- tswett has set topic: ESOTERIC LANGUAGES | Catch sufficiently hello world. | An unusually not mephitic forum. | Enjoy being locked in your matrix of solidity. | yoob: http://catseye.tc/lab/yoob/applet.html (+Etcha +fixes) | Logs: http://tunes.org/~nef/logs/esoteric/?C=M;O=D, http://codu.org/logs/_esoteric/ | I dismiss you, tswettbot.. 01:21:42 * tswett waits for freenode's annoying thingy to time out. 01:21:47 -!- tswettbot has joined. 01:21:47 I am sending a message. 01:21:47 -!- tswettbot has quit (Client Quit). 01:21:59 Just as expected. 01:22:06 Actually, I'm not sure what I expected. 01:22:11 -!- tswett has set topic: ESOTERIC LANGUAGES | Catch sufficiently hello world. | An unusually not mephitic forum. | Enjoy being locked in your matrix of solidity. | yoob: http://catseye.tc/lab/yoob/applet.html (+Etcha +fixes) | Logs: http://tunes.org/~nef/logs/esoteric/?C=M;O=D, http://codu.org/logs/_esoteric/. 01:22:23 So you can ban tswettbot from the channel by putting that in the topic. :P 01:25:43 -!- catseye has set topic: ESOTERIC LANGUAGES | Catch sufficiently hello world. | An unusually not mephitic forum. | Enjoy being locked in your matrix of solidity. | yoob: http://catseye.tc/lab/yoob/applet.html (+Etcha +fixes) | Logs: http://tunes.org/~nef/logs/esoteric/?C=M;O=D, http://codu.org/logs/_esoteric/ | tswettbot: join #python!. 01:25:54 perhaps I am hoping for too much, there 01:28:28 -!- catseye has set topic: ESOTERIC LANGUAGES | Catch sufficiently hello world. | An unusually not mephitic forum. | Enjoy being locked in your matrix of solidity. | yoob: http://catseye.tc/lab/yoob/applet.html (+Etcha +fixes) | Logs: http://tunes.org/~nef/logs/esoteric/?C=M;O=D, http://codu.org/logs/_esoteric/. 01:31:24 Yeah. 01:31:38 tswettbot knows that the people in #python probably wouldn't be happy to see it. 01:31:52 You know, in Smalltalk, I'm still not clear on the difference between using a caret and not using a caret. 01:31:58 tswett: what's it wri... 01:32:09 tswett: shall I assume it's written in Smalltalk? 01:32:38 I would certainly *like* for that to be true. 01:32:54 Smalltalk, yes. 01:33:00 Cool. 01:33:35 It looks like there's no difference in a block, since a block always returns whatever its last statement returns, but in a method, using a caret makes it return the last statement's return value, and not using a caret makes it return self. 01:34:58 -!- SimonRC has quit (Ping timeout: 252 seconds). 01:40:26 -!- augur has joined. 01:44:31 -!- tswettbot has joined. 01:44:31 I am sending a message. 01:45:34 -!- tswettbot has quit (Remote host closed the connection). 01:45:56 -!- tswettbot has joined. 01:45:56 I am sending a message. 01:46:22 tswett, are you using Pharo or Squeak or something else? 01:46:47 -!- augur has quit (Remote host closed the connection). 01:47:22 -!- SimonRC has joined. 01:47:25 -!- tswettbot has quit (Remote host closed the connection). 01:47:39 Sgeo: Pharo. 01:47:42 i take a 12 hour nap and suddenly you people have talked here for lines and lines 01:47:44 you know what 01:47:46 -!- tswettbot has joined. 01:47:46 I am sending a message. 01:47:48 i'm not gonna read any of it 01:47:50 fuck you 01:48:15 Let's see how bad my off-by-one errors are. 01:48:21 hey tswettbot, say something. 01:48:28 if you said anything worth hearing during those hours, please resay it 01:48:31 You know what, I think I forgot to make it a PRIVMSG. :P 01:48:39 hey tswettbot, say PRIVMSG #esoteric :Okay. 01:48:44 hey tswettbot, say PRIVMSG #esoteric :Okay. 01:49:00 Wait, it crashed. 01:49:05 are you trying to write a bot? 01:49:23 Yep. 01:49:27 is it hard 01:49:44 It crashed, causing a debugger to open. Whenever a debugger is opened, it crashes, causing another debugger to open. 01:49:55 The result is that there are now dozens of debuggers open. 01:50:03 This is why I save the image before running the bot. 01:50:25 -!- tswettbot has quit (Remote host closed the connection). 01:50:51 Dear Pharo: ???. Love, tswett. 01:51:16 -!- tswettbot has joined. 01:51:16 I am sending a message. 01:51:28 Okay. It hasn't crashed yet. That's good. 01:51:35 Yep, still no crashing. 01:51:52 Maybe it will crash when I say "hey tswettbot, say ". 01:52:01 tswett: got tired of category theory, eh? : 01:52:02 :P 01:54:17 I like to study more than one topic. :) 01:54:41 When you go to run the bot, what exactly are you doing? Running code in a workspace? 01:55:45 -!- tswettbot has quit (Remote host closed the connection). 01:57:27 tswett: i bet i draw my commuting diagrams with much prettier lines than you 01:58:43 Sgeo: yeah. 01:58:49 -!- augur has joined. 01:59:12 you're better off writing bots u'll never learn to draw them quite as neatly as me 01:59:16 There could be something horribly wrong with this code: 01:59:17 [[ 01:59:17 |line| 01:59:17 line := stream nextLine. 01:59:17 line isEmpty ifTrue: [false] ifFalse: [msgHandlers do: [:handler | handler bot: self heard: line]. true]. 01:59:21 ] whileTrue] fork. 01:59:23 (Yep, tabs.) 01:59:33 (And this is #esoteric. We paste five lines here.) 01:59:38 o 01:59:38 o 01:59:39 o 01:59:39 o 01:59:39 o 01:59:39 o 01:59:39 o 01:59:40 o 01:59:40 o 01:59:40 o 01:59:42 See? 01:59:46 what does |line| do? 01:59:55 It declares a local variable called line. 02:00:01 :-\ 02:00:03 okay 02:00:15 variable: are you local or global? 02:00:23 variable: I know. It will be all right. 02:00:26 oklopol: global 02:00:28 whore 02:00:36 SGU time 02:01:09 variable: you guys are bad for the environment 02:01:09 I set x to the current continuation. 02:01:12 i hear 02:01:23 I call x. 02:01:26 oklopol: not really. I'm only *considered* harmful 02:02:00 true 02:03:19 i guess you just did wulf 02:03:28 *didn't keep wulf's secrets one time too many 02:03:37 (had to check who wrote that) 02:04:09 -!- tswettbot has joined. 02:04:09 I am sending a message. 02:04:27 tswettbot: what? Where did you come from? 02:04:31 You errored out, remember? 02:04:39 me too! I'm sending a message! 02:04:47 Do you respond to things? 02:04:59 sure do! 02:05:02 hey tswettbot, say something and crash. 02:05:11 I dismiss you, tswettbot. 02:05:12 " I am sending a message." it's like it's alive 02:05:21 eerie 02:05:23 Nope, he's not handling messages. I guess he's going to stay here forever. 02:05:36 Wait, why hasn't he been garbage collected? Maybe this debugger is keeping him alive. 02:05:43 Nope. 02:06:01 I... maybe there's a local variable containing him? 02:06:26 maybe variable wanted to revenge you summoning him 02:06:29 *fo 02:06:32 *for 02:06:37 :-) 02:06:38 -!- tswettbot has quit (Remote host closed the connection). 02:07:34 variable: thanks 02:17:25 -!- augur has quit (Remote host closed the connection). 02:18:57 -!- storkbot has joined. 02:19:07 storkbot: hi 02:19:08 -!- storkbot has quit (Remote host closed the connection). 02:19:15 rock 02:20:30 -!- storkbot has joined. 02:20:36 storkbot: hi again 02:20:37 catseye: Unknown command. Type '|help' for help. 02:20:43 |help 02:20:44 catseye: Help is available for: assignment expressions print goto tell source errors 02:21:09 heh, it still works. after i took out all that stuff i put in to try to get it to persist its state. 02:21:22 last time I grab lua code off a wiki, I tell you 02:22:57 |save 02:22:58 catseye: State saved. 02:23:01 storkbot: YOU LIE 02:23:02 catseye: Unknown command. Type '|help' for help. 02:23:12 -!- storkbot has quit (Remote host closed the connection). 02:32:22 -!- calamari has quit (Read error: Operation timed out). 02:38:36 -!- Tachycek has joined. 02:38:47 Tachycek: welcome to #esoteric 02:38:52 xD 02:39:16 Tachycek: 90% of the time the topic has nothing to do with programming 02:39:18 well i would think in this channel whitespace seems quite ordinary :D 02:39:22 enjoy being locked in your matrix of solidity 02:39:25 but 90% of the time the topic is interesting 02:39:33 Tachycek: yeap 02:39:44 Tachycek: it's the same sort of thing as everything else 02:39:52 he was making a joke about silence i think 02:40:05 hehe 02:40:07 oklopol: no - the language 02:40:11 :-) 02:40:13 no - the silence 02:40:17 oh 02:40:17 ok 02:40:31 Newspeak got me temporarily interested in programming again 02:40:40 But it's still not all that mature 02:40:48 Maybe I should take up Smalltalk again 02:40:55 i'm on a programming course so i might actually have to program a bit soonish :\ 02:41:24 i like lolcode :) 02:41:45 but i didn't see any working serious implementation of it :) 02:41:50 maybe lolpython 02:41:56 Tachycek, might want to put on some asbestos clothes 02:42:23 :-) 02:43:35 the logs of this channel are public? 02:43:36 Tachycek: there are many 02:43:44 Tachycek: yeah 02:43:47 :< 02:44:00 Tachycek: I know, it put me off at the start too 02:44:01 don't like to be googlable :) 02:44:08 Tachycek: ditto - hence the nick 02:45:04 Tachycek: http://lolcode.com/ 02:45:14 there's currently a picture of me online :| 02:45:34 i won't tell you where before i ask them to remove it though 02:45:47 variable: yes, there are few things and they were touched several years ago 02:45:52 -!- calamari has joined. 02:46:10 well however 02:46:14 i'm tired ppl 02:46:17 so gn :) 02:46:41 gnight Tachycek 02:46:45 add this channel to autojoin though 02:47:02 if i figure out what to do with the nick i will :) 02:47:39 and mabye the mask 02:47:55 dont like link ip->nick either :) 02:47:57 anyway gn 02:53:54 n 02:54:42 http://www.math.utu.fi/henkilokunta/?userID=810 me and my giant hand 02:56:08 Oklo "Bighand" Pol 02:56:36 my full name is oklopol ominovorol 02:56:43 everyone knows that 02:57:24 -!- calamari has quit (Quit: Leaving). 03:10:42 -!- augur has joined. 03:18:25 -!- zzo38 has joined. 03:21:37 You know what they say about guys with big hands. 03:22:42 that they even masturbate with just fat chicks 03:25:31 Gilman naming for pieces in chess variants includes all sorts of prefixes, suffixes, modified names, and possibly some pieces can have multiple names with same piece 03:26:07 in a forest nearby, there is this tree that is kinda crooked 03:26:40 Wait. Are tensors just n-dimensional matrices? 03:26:45 (looking at Wikipedia) 03:27:09 -!- catseye has quit (Quit: leaving). 03:27:29 i don't know what a "tensor" is, unless it's a vector in a tensor product 03:27:39 Sgeo: I think so 03:28:19 Sgeo: Something like that. Tensors have two kinds of dimension, too, one which acts like rows in a matrix and one which acts like columns in a matrix, I think. 03:29:42 I find use of diagrammatic tensor notation can be useful with computing tensors, too. 03:29:45 okay yeah it's what i think it is 03:30:05 Sgeo: a space of tensors is just another vector space, the point is there are two vector spaces whose tensor product it is. 03:30:20 if you just look at the tensor space alone, it's just another vector space 03:30:44 but saying "what, tensors are just vectors??" is like saying "what, the product of two numbers is just another number?" 03:31:21 the product of two numbers can also be the same number as one or both of them 03:31:33 olsner: same for the tensor product 03:31:41 kind of like direct product, the tensor product is a way to construct another vector space from two spaces 03:31:54 yay! I know a thing about the tensor product now 03:32:09 olsner: the result can be isomorphic to one of the components 03:32:40 This went over my head as soon as you said space, I think. Or maybe product 03:32:50 Sgeo: you don't know vector spaces? 03:33:03 I know vectors 03:33:39 vector spaces are just an axiomatization of your usual vectors in R^n 03:34:43 you have a field (field = axiomatization of R...) of scalars, and you have a group on which they act from the left in certain natural ways 03:35:03 anyhow you can do tensor products without the axioms 03:35:13 In tensor diagrams, components laid out horizontally are multiplied using tensor product and vertical ones using matrix product, according to which lines touch each other. Sometimes instead of diagram you use inline math such as $X^a_{bc}Y^{cb}_d$ 03:35:44 I'm honestly not even paying attention right now 03:35:55 Sgeo: Why? 03:36:17 This is way over my head for casual glances, and I can't do more than casual glances right now 03:36:55 the point is if you have an n-dimensional space with basis e_1, ..., e_n and an m-dimensional space with basis f_1, ..., f_m, then you get another mn-dimensional space with vectors (e_1, f_1), (e_1, f_2), ..., (e_1, f_m), (e_2, f_1), ..., (e_n, f_m), which you can think of as the vector space of m x n matrices 03:37:53 Sgeo: no problem, i'm not trying to teach you right now 03:37:54 Yes 03:38:13 just saying stuff because it's fun 03:38:41 i have no idea what zzo38 is saying though 03:38:56 "components laid out horizontally are multiplied using tensor product" 03:39:07 oklopol: But I am saying too, and so are you are also correct too 03:39:18 oklopol: I mean in a tensor diagram. 03:39:24 oh indeed 03:39:28 i don't know what those are, sry 03:39:33 (Sometimes tensor multiplications are written using diagrams) 03:42:40 let U and V be vector spaces, then the tensor product of U and V is a vector space W and an associated bilinear function * : UxV -> W such that if e_1, ..., e_n is a basis of U and f_1, ..., f_m is a basis of V, then (e_i*f_j) is a basis of W 03:43:03 it can be proven that such (W, *) always exists, and is unique up to isomorphism (that part is obvious) 03:45:35 the point is to get the following universal property: if f is a bilinear function from UxV to some space X, then there exists unique g : W -> X such that f(u, v) = g(u*v) for all u \in U, v \in V, where W is the tensor product of U and V, and * is the bilinear map from UxV to W 03:46:03 so all bilinear maps can be "routed" via the tensor product 03:47:16 just like all maps f linear in the sense f(au, av) = af(u, v), f(u + u', v + v') = f(u, v) + f(u', v') can be routed through the *direct* product of U and V 03:47:30 (where again f : UxV -> X for some space X) 03:49:20 but i just know about the representation theoretical implications of the tensor product, presumably it's also useful in physics and shit 03:55:22 the tensor diagram page is way over my head 03:55:57 Yes it is useful in physics 03:56:29 but WHYYYYYYYYYYYYY 03:56:42 physics is 3d :\ 03:57:48 all you need is addition and multiplication and vectors with three components 03:57:59 and sometimes, SOMETIMES, a small group. 03:58:06 You could probably even use tensor diagrams for representing quantum computations. And even the classical electronic circuit with the latch of NAND gates, I converted it to a tensor diagram and then computed its value, I did get the expected result. 03:58:13 -!- zzo38 has quit (Quit: Router failed.). 03:59:04 WELL THAT WAS KIND OF RUDE 04:00:49 -!- zzo38 has joined. 04:00:58 wb 04:01:30 What is "wb"? 04:02:05 welcome bro 04:02:21 I looked at the log file, the glogbot logs does not have the quit message, it seems? 04:02:32 dunno, dunno 04:03:13 what does it mean to do "matrix multiplication horizontally" 04:03:20 erm vertically 04:03:24 but in any case 04:04:00 like, when you have two things next to each other, and draw a line from left to right, then the one on the left is tensor multiplied with the right one? 04:04:53 (and somehow it doesn't matter what bases we use in each phase as long as we always use the same ones?) 04:05:20 oklopol: Yes, like that. 04:06:09 When there are lines on a shape above and below, the lines above are called "arms" and the ones below called "legs"; the way in which the lines cross or connect to the arms/legs of other shapes indicates which order the components are multiplied. 04:07:15 mkay. 04:09:03 When horizontal, generally there are no lines drawn horizontally, because for example, you have two shapes with lines down and then one shape with two lines up connected to both those, one way to "split the diagram" is to split it at one point and then the ones above the splitting point are tensor multiplied and then that total is matrix multiplied by the one below. The number of remaining unconnected arms/legs is zero, which means the result i 04:09:46 Is understandable good? 04:10:07 "which means the result i" 04:10:27 Sorry, I wrote it wrong. Here I write it correct: Is it understandable with good? 04:10:41 s now a scalar number. 04:10:45 "unconnected arms/legs is zero, which means the result i" then it got cut 04:10:57 or did it really continue ", which means the result is understandable good?" 04:11:16 oh 04:11:18 No, it continued "s now a scalar number." which is why I wrote that just now when I realized what you meant 04:11:22 yeah yeah okay 04:11:52 i have absolutely no idea what a shape with two lines down could represent 04:12:05 or two shapes with two lines between them 04:12:42 or more precisely, i have all kinds of ideas 04:13:01 The tensor diagram does not tell you how many components there are in a vector. However, if there are $n$ components in a vector, $p$ lines above and $q$ lines below in the diagram, it has $n^{p+q}$ components in total. Now is it understandable a bit more? 04:13:28 vector? no one said there were any vectors involved 04:13:41 i have a hunch there is some key point both you and the wp page are missing 04:13:52 Maybe...... 04:14:05 which would be obvious if i knew even the tiniest bit about the actual usage of these things 04:14:33 in any case 04:14:39 i should go to uni 04:14:53 that nothing isn't going to do itself! 04:15:11 well actually i have some stuff i need to do but i guess i just wanted to say that because it was funny 04:15:20 In quantum computation, for example, there is two components in a vector, one for bits being zero, and one for bits being one. 04:16:03 so, if you want to represent n bits, you take a vector of length 2n? 04:16:21 or what is a component 04:16:39 For $n$ bits, you need $2^n$ components. 04:16:45 oh right 04:16:47 One for each possible combination. 04:16:51 yeah sure 04:17:16 so then what do you mean by two components 04:18:26 I mean, like, components of a vector! Does this make sense or am I forgetting something? 04:19:01 Except now it is components of the tensor instead, but it is the same kind of thing as components of a vector, or of a matrix. 04:19:27 it doesn't make sense, in a vector you will have 1 component for bits being one or zero, if you have one bit, you will have 4 for two bits etc, in what sense does a vector have *two components per bit*? 04:19:34 or do you mean 04:19:47 one for *all* bits being zero, one for *all* bits being one? 04:21:00 I did not mean a vector has two components per bit. I mean a vector for a single bit has two components. In case of three bits, you tensor multply the three bits together to get a total of eight components. 04:21:14 oh right 04:21:32 a single bit can indeed have two states 04:21:55 otherwise computer science would be way easier 04:22:11 And then you can put other numbers in the components, such as square root, and complex numbers, and so on, for quantum superposition states of qubits. 04:23:24 is superposition addition? 04:23:46 or umm what are you saying there 04:24:01 i thought our vectors had complex coordinates to begin with 04:25:13 or maybe i know what you're trying to say 04:25:29 this is damn hard to do informally 04:25:53 then again what isn't 04:28:30 You can write a tensor as a matrix, also. 04:30:28 yes 04:31:00 Also also Dirac notation (bra-ket notation). 04:31:23 Is used to represent the state vector. 04:32:01 -!- azaq23 has joined. 04:34:10 I like to use square bracket for matrix writing, so in TeX I can define \def\bmatrix#1{\left[\matrix{#1}\right]} 04:34:33 (Which is similar tp \pmatrix but with [] instead of () as delimiters) 04:34:58 i don't care about notation 04:35:14 argh, why haven't i left yet 04:35:36 If you don't care about notation, how are you going to write the math? 04:35:38 you and your matrical temptations 04:36:27 erm, i suppose if i was doing quantum computation stuff, i'd use the standard notation 04:37:17 Would you use the bra-ket notation? 04:37:36 but sure, i'd give a five second shit to choose the one to use. 04:37:42 *which 04:38:10 perhaps, depends on the length and depth of those five seconds. 04:39:13 Probably if I am writing a TeX document with bra-ket notation I would also make up a macro for it if I use it in my document. 04:43:34 Length and depth of five seconds? 04:43:56 -!- Mathnerd314 has quit (Ping timeout: 246 seconds). 04:44:06 yes 04:46:11 -!- lament has joined. 04:52:12 Someone says that the modern TeX distribution is not properly TeX because it can parse the %& line. However, I think this is not a problem because it will not parse the %& line if the filename is typed at the ** prompt (at least in MiKTeX). But there is a real problem, which is when 18 is used as a file number. It does not turn that off when the ** prompt is used. 05:05:05 -!- zzo38 has quit (Remote host closed the connection). 05:08:00 -!- augur has quit (Remote host closed the connection). 05:21:35 -!- Sgeo_ has joined. 05:23:08 -!- ais523 has quit (Read error: Connection reset by peer). 05:23:34 -!- Sgeo has quit (Ping timeout: 246 seconds). 05:23:46 -!- ais523 has joined. 05:42:25 -!- asiekierka has joined. 05:45:50 -!- azaq23 has left. 05:48:32 -!- Tachyx has joined. 05:48:56 -!- lament has quit (Ping timeout: 250 seconds). 05:50:14 -!- nooga_ has joined. 05:51:10 -!- wareya_ has joined. 05:53:07 -!- nooga has quit (Ping timeout: 246 seconds). 05:53:09 -!- wareya has quit (Ping timeout: 246 seconds). 05:53:11 -!- Tachycek has quit (Ping timeout: 246 seconds). 06:01:45 -!- quintopia has quit (Ping timeout: 276 seconds). 06:02:41 -!- augur has joined. 06:14:29 -!- quintopia has joined. 06:14:30 -!- quintopia has quit (Changing host). 06:14:30 -!- quintopia has joined. 06:26:49 -!- oerjan has joined. 06:28:01 -!- oerjan has quit (Client Quit). 06:43:35 gah system log monitoring cron scripts broken, and no time to debug it now. 07:35:20 -!- Leonidas has left ("Violence is the last refuge of the incompetent."). 07:37:39 -!- MigoMipo has joined. 08:38:10 -!- variable has quit (*.net *.split). 08:38:12 -!- Ilari has quit (*.net *.split). 08:38:16 -!- Vorpal has quit (*.net *.split). 08:38:16 -!- Ilari_antrcomp has quit (*.net *.split). 08:45:13 -!- variable has joined. 08:45:13 -!- Ilari has joined. 08:45:13 -!- Vorpal has joined. 08:45:13 -!- Ilari_antrcomp has joined. 08:45:23 -!- asiekierka has quit (Excess Flood). 08:45:28 -!- asiekierka has joined. 08:57:34 -!- MigoMipo has quit (*.net *.split). 09:06:27 -!- asiekierka has quit (Ping timeout: 246 seconds). 10:15:14 -!- sick has joined. 10:16:30 -!- sick has left. 10:28:54 -!- ais523 has quit (Remote host closed the connection). 10:38:07 -!- sebbu has quit (Ping timeout: 240 seconds). 11:20:48 -!- Vorpal has quit (Read error: Operation timed out). 11:21:16 -!- Vorpal has joined. 11:24:10 -!- Ilari has quit (Ping timeout: 264 seconds). 11:24:10 -!- Ilari_antrcomp has quit (Ping timeout: 264 seconds). 11:30:22 -!- Ilari_antrcomp has joined. 11:30:35 -!- Ilari has joined. 11:46:49 -!- copumpkin has quit (Ping timeout: 240 seconds). 11:47:16 -!- copumpkin has joined. 12:36:30 -!- Slereah has quit (Ping timeout: 240 seconds). 12:42:44 -!- Slereah has joined. 12:51:46 -!- FireFly has joined. 12:53:37 -!- cheater99 has joined. 12:53:57 -!- cheater00 has quit (Ping timeout: 246 seconds). 13:14:53 -!- Zuu has quit (Ping timeout: 246 seconds). 13:21:56 -!- elliott has joined. 13:36:11 -!- copumpkin has quit (Quit: Computer has gone to sleep.). 13:36:12 02:41:24: i like lolcode :) 13:36:12 02:41:45: but i didn't see any working serious implementation of it :) 13:36:12 02:41:50: maybe lolpython 13:36:18 Tachyx: BUUUUUUUURN IN A FIERY PIT OF ETERNAL SUFFERING 13:36:29 02:45:14: there's currently a picture of me online :| 13:36:29 02:45:34: i won't tell you where before i ask them to remove it though 13:36:37 oklopol: hey we all have one, from the frappr dump :> 13:36:47 elliott: HAI 13:36:57 elliott: CAN I HAZ EXPLANATION? 13:37:22 Tachyx: yes. everyone in here hates LOLCode and it is the worst and least esoteric language ever and therefore burn in your matrix off solidity 13:37:23 HAPPY NAO 13:37:39 also Tachyx Tachycek 81.200.61.23 >__________> 13:37:54 :)) 13:38:28 * elliott yawns. in his matrix of solidity. 13:38:37 flaming noobs in the morning, what a refreshing start to the day! 13:39:06 Tachyx: oh i forgot, hello 13:39:54 :)) 13:39:56 hello 13:40:15 gonna assume you've been magically pointed to http://esolangs.org/wiki/Main_Page 13:40:32 elliott: ok you're flaming i'll be trolling 13:40:36 elliott: http://www.youtube.com/watch?v=T3n0vBcW5fc 13:40:56 THAT WASN'T FLAMING that was me helpfully pointing you to our wiki 13:40:57 JERKFACE 13:41:01 * elliott cries 13:44:23 :))) 13:44:25 trololo 13:59:47 -!- wareya has joined. 13:59:51 -!- asiekierka has joined. 14:01:02 Float value_: _fp 14:01:02 [ 14:01:02 self := self new. 14:01:02 { memcpy(self, v__fp, sizeof(double)); }. 14:01:02 ] 14:01:04 Now that's some code. 14:01:11 tswett: ^ 14:02:31 -!- wareya_ has quit (Ping timeout: 240 seconds). 14:23:05 -!- Sgeo_ has quit (Read error: Connection reset by peer). 14:38:16 Gregor: http://codu.org/myavatar.gif why did you make this 14:38:57 elliott: To be the most annoying avatar imaginable. 14:39:03 Gregor: but it's awesome... 14:39:12 you should use it. even on irc 14:39:18 prefix all your messages with 14:39:26 actually i think limechat has the ability to expand linked images 14:39:30 so basically just prefix every message with http://codu.org/myavatar.gif 14:39:42 i think linkinius did that too, i guess os x deludes them into thinking it's a good idea 14:39:46 anyway, that would be awesome, do it 14:40:19 also i logreaded a shitload yesterday for no real reason 14:40:20 16:18:42 Go write an interpreter for http://www.codu.org/plof/ 14:40:20 16:19:37 pikhq: in the C part for left, right and goto you don't set ::current, something i think might bite you with _goto current. 14:40:20 16:19:56 oerjan: Thanks. 14:40:20 16:20:11 GregorR-L: No thanks. 14:40:21 16:20:17 I'd rather do a real Lisp. :p 14:40:23 16:20:37 Plof and lisp aren't particularly similar. 14:40:25 16:21:33 Fixed and up on server. 14:40:27 16:22:00 GregorR-L: Yeah. . . Lisp is worth learning. :p 14:40:31 it was quite entertaining 14:40:37 (seconds later it was about how Emacs was an OS lol) 14:40:51 OH! 14:40:55 I saved this to troll Gregor 14:40:55 09:13:01 BSD == better server than GNU/Linux. 14:40:56 09:13:08 GNU/Linux, on the other hand == better desktop than BSD 14:41:05 (internet was out) 14:42:56 -!- cpressey has joined. 14:43:50 hi cpressey we're doign the best thing 14:43:57 trollign Gregor 14:44:12 -!- cheater99 has quit (Ping timeout: 246 seconds). 14:44:28 If I use an image that is licensed w/ a CC "Share Alike" clause on a web page, does that web page count as "building upon" the work of the image, thus requiring to be under a similar license? 14:44:46 *requiring it (the webpage) 14:45:06 I ask here because I know you are all totally lawyers here 14:45:17 cpressey: depends 14:45:25 cpressey: if you use a data: URI, it's like static linking and not allowed 14:45:34 if you just use src="...", then it's like dynamic linking, and allowed 14:45:38 lol 14:45:41 i'm not joking 14:45:50 assuming CC share alike doesn't have special provisions for this, that's the situation 14:45:58 then "ironic lol" 14:46:00 linking isn't creating a derivative work, baking it in is 14:46:09 cpressey: is it 2.5 or 3.0 :p 14:46:18 * elliott will trawl through the legalese for uh... fun? 14:46:20 er, 3.0 I think 14:46:29 what country version? or unported? 14:46:33 unported 14:46:44 * cpressey hugs public domain 14:47:00 http://creativecommons.org/licenses/by-sa/3.0/legalcode fuck licenses that start with definitions 14:47:04 "Reproduce" means to make copies of the Work by any means including without limitation by sound or visual recordings and the right of fixation and reproducing fixations of the Work, including storage of a protected performance or phonogram in digital form or other electronic medium. 14:47:05 PHONOGRAM 14:47:11 PHONOGRAM IN DIGITAL FORM 14:47:32 "Adaptation" means a work based upon the Work, or upon the Work and other pre-existing works, such as a translation, adaptation, derivative work, arrangement of music or other alterations of a literary or artistic work, or phonogram or performance and includes cinematographic adaptations or any other form in which the Work may be recast, transformed, or adapted including in any form recognizably derived from the original, except that a work that 14:47:32 constitutes a Collection will not be considered an Adaptation for the purpose of this License. For the avoidance of doubt, where the Work is a musical work, performance or phonogram, the synchronization of the Work in timed-relation with a moving image ("synching") will be considered an Adaptation for the purpose of this License. 14:47:32 "Collection" means a collection of literary or artistic works, such as encyclopedias and anthologies, or performances, phonograms or broadcasts, or other works or subject matter other than works listed in Section 1(f) below, which, by reason of the selection and arrangement of their contents, constitute intellectual creations, in which the Work is included in its entirety in unmodified form along with one or more other contributions, each constit 14:47:37 uting separate and independent works in themselves, which together are assembled into a collective whole. A work that constitutes a Collection will not be considered an Adaptation (as defined below) for the purposes of this License. 14:47:41 uh 14:47:43 cpressey: that 14:47:45 cpressey: might 14:47:47 cpressey: give you a license to use it 14:47:49 if you're making like 14:47:51 a gallery of images 14:48:03 fuck it, i'll ask irc 14:48:21 cpressey: is it just attribution-share alike? 14:48:34 http://creativecommons.org/licenses/by-sa/3.0/deed.en 14:48:41 right 14:48:41 but really, it was mostly just an example 14:48:52 cpressey: oh, so this isn't actually a real case? 14:48:53 its real purpose is to make me loathe creative commons 14:48:54 i feel cheated 14:49:00 well, it's ONE case 14:49:04 but, you know 14:49:06 images. 14:49:07 cpressey: well there's http://creativecommons.org/publicdomain/zero/1.0/ :P 14:49:26 less ugly just to remove the requirement from ISC though :-D 14:49:45 Permission to use, copy, modify, and/or distribute this software for any 14:49:45 purpose with or without fee is hereby unconditionally granted. 14:49:51 except that's software specific 14:49:57 so s/software/work/ 14:50:54 cpressey: or uh wait, that's just a verbose wtfpl 14:51:00 disregard 14:51:45 I could just do what the rest of the internet does and caption other people's kitten photographs without caring about who "owns" them 14:52:44 cpressey: TAKE A STAND AGAINST COPYRIGHT 14:52:49 CAPTION ANY FUCKING KITTEN PHOTOGRAPH YOU WANT 14:52:59 fuckin' kitten anarchy 14:57:54 -!- BeholdMyGlory has joined. 14:59:11 -!- Phantom_Hoover has joined. 14:59:41 Does including an Attribution-ShareAlike 3.0 Unported image on a web page constitute a derivative work that forces the web page to be licensed under the same license? 14:59:41 elliott: no, unless some fancy overlays are done. But a typical image and text without any overlap is fine. 14:59:41 IANAL, TINLA 14:59:49 cpressey: it's even more fucked than i could have possibly imagined! 15:00:12 cpressey: so basically i think if you used it as the background to a page that would be close to a grey area 15:00:27 Huh. 15:00:37 I appear to be 403ed from Conservapedia. 15:00:48 \o/ 15:00:48 | 15:00:48 >\ 15:00:51 me too 15:07:46 -!- MigoMipo has joined. 15:20:21 Finally figured out how hg-git works with git branches. 15:20:25 Now I shall never have to use git again :) 15:21:17 On the downside, you still have to use hg. 15:21:33 I think you typo'd, "plus on the upside, you get to use hg" 15:21:50 Scapegoat now to be released under the "Everybody Except Gregor Richards" EULA 15:22:06 Or maybe just the "I Am Now Going To find . -name .hg -exec rm -rf '{}' \;" EULA :P 15:22:08 *find / 15:22:18 I thought that was always the license for Scape🐐 15:22:31 EULA, dammit, licenses only cover redistribution. And are also legally valid unlike EULAs. 15:24:47 hg is the one in Python, isn't it? 15:24:56 And is named after a toxic metal that causes brain damage. 15:25:25 Yes 15:25:26 *Yes. 15:25:44 It's a fun kind of brain damage though. 15:26:05 (I want to name something osmium but I don't know what.) 15:26:05 Not like the excruciating pain and slow death as your body breaks down kind of brain damage, at least in small doses. 15:26:26 What's the class of languages parseable by recursive-descent? 15:27:06 elliott: ... context-free languages. Recursive-descent essentially has infinite rollback. 15:27:26 Mind you, without memoization it's quite expensive for languages with a lot of ambiguity. 15:28:49 (Also, "recursive descent" is probably not defined precisely enough to restrict it only to context-free languages, but it's certainly at least context-free languages) 15:28:56 Gregor: OK, slight rephrase: Parseable with recursive-descent WITHOUT HELLISHNESS :P 15:29:12 Right, LL(k) basically. 15:29:15 Yeah 15:29:31 (Recursive descent may be a pain but it's less of a pain than yacc >_>) 15:30:59 -!- lament has joined. 15:31:15 Actually, writing a lexer by hand might be more awful than the combined awfulness of using lex and yacc. 15:31:23 s/awful/ugly/ 15:37:58 -!- sebbu has joined. 15:37:58 -!- sebbu has quit (Changing host). 15:37:58 -!- sebbu has joined. 15:44:11 -!- elliott has quit (Ping timeout: 260 seconds). 15:50:44 -!- Tachyx has changed nick to rofl_idiot. 15:50:55 -!- rofl_idiot has changed nick to Tachycek. 15:53:36 By-hand lexers are simple ... 15:53:43 I write by-hand lexers all the time ... 15:54:02 If you're really brave you can one-pass your lexer into your recursive-descent parser >: ) 15:55:28 APNIC down 0.12 (15.3%): 64k+3x2k+7x1k+4x256+/48 to Australia, 1M+64k+2x16k to China, 8k to Hong Kong, 512 to Indonesia, 128k+2x2k+1k to Japan, 256k+4x64k+/32 to South Korea, 8k to Mongolia, 1k to Malaysia, 4k+/48 to New Zealand, 64k+4k to Philippines, /32 to Tuvalu, /32 to Vanatu. 15:57:50 Depletion estimate: Wednesday 13th April. 15:59:20 -!- lament has quit (Read error: Operation timed out). 15:59:43 -!- oerjan has joined. 16:04:34 By-hand recursive descent parsers are relaxing to write. Or is that tedious? I guess that depends on my mood. 16:04:39 -!- lament has joined. 16:05:06 it's relaxing in that tedious way 16:05:16 I have one by-hand lexer that I've just copied and pasted into everything, with suitable modifications :) 16:05:44 Languages' tokenization rules don't tend to vary *too* much. Except when they do/ 16:06:51 "If I see 'Identifiers start with a letter or underscore and consist only of letters, digits, and underscores' one more time, I'll scream!" 16:11:22 Toss in hyphens and single quotes if you want to get racy. 16:11:23 -!- Zuu has joined. 16:11:24 > let _6'a = 5 in _6'a 16:11:24 5 16:11:24 pretty much :D 16:11:24 * oerjan cannot recall if haskell adds anything else 16:11:25 > let _' = 5 in _' 16:11:25 5 16:11:25 > let _` = 5 in _` 16:11:25 : parse error on input `=' 16:11:26 > let (+`-) = 5 in (+`-) 16:11:26 : parse error on input ``' 16:11:26 darn it's not an operator character either 16:11:26 oh wait 16:11:27 It's used for infixing, though. 16:11:27 yours errored out at = not ` 16:11:27 right that was it 16:11:27 > let (+-) = 5 in (+-) 16:11:27 5 16:13:42 let (a b) = 5 in (a b) 16:13:42 um 16:13:43 > let (a b) = 5 in (a b) 16:13:43 : Parse error in pattern 16:13:45 that's not legal alas 16:13:45 spaces not good enough for you, huh, haskell? 16:13:47 > let a b = 5 in a b 16:13:47 5 16:13:50 ouch 16:13:51 * oerjan grins evilly 16:14:00 that depends on lambdabot actually having b defined (for its symbolic Expr's) 16:14:01 -!- lament has quit (Ping timeout: 264 seconds). 16:14:02 > b 16:14:02 b 16:14:42 > scanl1 (+) $ repeat b 16:14:43 [b,b + b,b + b + b,b + b + b + b,b + b + b + b + b,b + b + b + b + b + b,b ... 16:15:49 in Quylthulg I used $ as "identifier quotes" so that identifiers could contain arbitrary characters (except for $) ... and to make it look vaguely reminiscent of TeX 16:16:00 technically let a b = 5 is a function definition and you cannot put parentheses around those 16:16:22 oh, so b is the pattern match. right 16:16:36 > let foo bar = 5 in foo bar 16:16:36 Not in scope: `bar' 16:16:51 -!- tswett has quit (Ping timeout: 250 seconds). 16:16:51 the last bar is a free variable 16:17:10 sadly 16:17:21 my mind is working on some way for that not to be the case 16:17:34 you can use about any already defined identifier instead, though 16:17:48 > let foo bar = 5 in foo (foo) 16:17:49 5 16:17:55 -!- tswett has joined. 16:18:02 > let foo foo = 5 in foo (foo) 16:18:03 5 16:18:20 now i'm all itchin' to write me some obfuscated Haskell 16:18:46 usually you want to use lots of operator identifiers for that 16:18:48 hm, this probably won't work... 16:18:54 > let foo (foo) = 5 in foo (foo) 16:18:55 5 16:18:58 ! 16:19:23 i guess you can parenthesize it without putting an @ on it 16:19:31 so it seems 16:20:18 > let (+-) (+-) = 5 in (+-) (+-) 16:20:18 5 16:21:05 iirc you can do everything with (...operator chars...) that you can do with an ordinary identifier, except put `` around 16:22:14 > let (+-) (+-) (+-) = 5 in (+-) +- (+-) 16:22:15 Conflicting definitions for `+-' 16:22:15 Bound at: :1:9-12 16:22:15 ... 16:22:17 and vice versa for `...alphanum chars` 16:22:46 > (`a`) 16:22:46 : parse error on input `)' 16:23:04 > let foo foo foo = 5 in (foo) `foo` (foo) 16:23:04 Conflicting definitions for `foo' 16:23:05 Bound at: :1:8-10 16:23:05 ... 16:23:10 > let foo foo' foo'' = 5 in (foo) `foo` (foo) 16:23:12 5 16:23:29 it allows you to name a parameter the same as the function but not to name two parameters the same 16:23:53 i guess both of those could have gone either way 16:25:00 > let (+-) a b = a * b in 6 +- 7 16:25:01 42 16:25:14 > let (+-) a b = a * b in (+-) 6 7 16:25:15 42 16:25:23 > let (+-) a b = a * b in 6 `(+-)` 7 16:25:24 : parse error on input `(' 16:25:31 but... but... 16:25:44 i said except for that 16:25:46 i know. 16:25:54 i know, i know.. but ... but' 16:26:27 > let (6) = 7 in (6) 16:26:28 6 16:26:33 >:( 16:26:51 that one works a different way because 6 is a pattern, not an identifier 16:27:16 > let (*6*) = 7 in (*6*) 16:27:48 : parse error on input `)' 16:27:54 6 isn't an operator char either 16:27:54 no digits in operators. bah! 16:29:02 > let _6_ _ _ = 7 in 6 `_6_` 6 16:29:02 7 16:29:04 haskell keeps the charset for identifiers and operators disjoint. 16:29:05 so... 16:33:23 > let (_) _ _ = 7 in 6 _ 7 16:33:23 : Parse error in pattern 16:33:24 indeed 16:33:28 > let (') _ _ = 7 in 6 ' 7 16:33:28 it tries mostly to prevent two consecutive tokens with operator chars from being likely 16:33:28 : 16:33:28 lexical error in string/character literal at chara... 16:33:29 although there are exceptions 16:33:31 > let (↯) _ _ = 7 in 6 ↯ 7 16:33:31 7 16:33:35 cpressey: _ is a special pattern and not an identifier 16:33:44 > f 1 = 0; f _ = 1; f 9 16:33:44 : parse error on input `=' 16:33:45 does the REPL not like function definitions? 16:33:48 > is not a repl it's an expression evaluator 16:33:50 * cpressey splits hairs 16:33:50 use let 16:33:54 also the ghci repl requires let as well, although with a different notation (it behaves like a giant do block) 16:33:54 it reads. it evaluates. it... privmsgs. it... logs onto irc. 16:34:03 ok i guess it's a kind of repl 16:34:35 > let f 1 = 0; f _ = 1 in f 9 16:34:35 1 16:34:39 ok 16:37:42 and neither lambdabot nor ghci allows the full set of declarations in a module file 16:37:44 > let ↯ _ = 7 in ↯ 6 16:37:45 : parse error on input ` 16:37:50 > let (↯) _ _ = 7 in (↯) 6 6 16:37:50 7 16:37:56 ok well that was fun 16:50:10 -!- esowiki has joined. 16:51:01 -!- esowiki has joined. 16:51:01 -!- glogbot has joined. 16:51:15 > let let x = 5 in "hi" 16:51:16 : parse error (possibly incorrect indentation) 16:51:29 > let let x = 5 16:51:30 : parse error (possibly incorrect indentation) 16:51:57 -!- augur has quit (Remote host closed the connection). 16:52:02 i guess that error could happen for any cause once you're inside a block 16:52:54 cpressey: the difference here may be that a do block cannot be empty while a let block can 16:53:24 > let do { "hi" } = 5 in 6 16:53:25 : Parse error in pattern 16:54:19 > let \x -> 5 + = in 16:54:20 : parse error on input `=' 16:54:26 hah 16:54:51 it looks like a let block is parsed with something that allows an arbitrary expression 16:55:22 eeeenteresting yes 16:55:33 and only errors out after the whole expression has been parsed 16:55:51 > let 5 + 6 = 11 in 11 16:55:52 11 16:56:10 > let 5 + 6 = 12 in 11 16:56:11 11 16:56:16 that's actually a legal operator definition 16:56:27 > let 5 + 6 = 12 in 5 + 6 16:56:28 12 16:56:36 that's... beautiful 16:56:57 until you try to call it with something other than 5 and 6, anyhow 16:57:08 > let 5 + 6 = 12 in 5 + 5 16:57:09 *Exception: :3:4-13: Non-exhaustive patterns in function + 16:57:14 yep 16:57:45 > let f (5+6) = 3 in f 11 16:57:46 : Parse error in pattern 16:57:52 > let x + y = 4 in x + y 16:57:52 4 16:58:23 i think that error may happen when it has parsed f (5+6) as an expression and discovers it wasn't a pattern 16:58:59 there needs to be such a subparser anyhow because there _are_ points in haskell's syntax where both an expression and a pattern are permitted. it's just strange that it's used in let. 16:59:55 (e.g. in do blocks you can have do pattern <- ... ; ... or do expression ; ... 16:59:59 ) 17:02:10 oh wait i was reading glogbot logs not clog logs... 17:08:31 -!- asiekierka has quit (Ping timeout: 252 seconds). 17:08:39 > let \x -> 5 in 5 17:08:40 : parse error on input `in' 17:09:24 > let 5 + 6 + 7 = 8 in 9 17:09:25 : Parse error in pattern 17:09:48 > let 5+6 = 13 in 5+6 17:09:49 13 17:09:58 > let \x -> 5 = \x -> 6 in 5 17:09:58 What's all this crap about being distilled mathematics? 17:09:59 : Parse error in pattern 17:12:56 yeah i think "Parse error in pattern" means just that, it's a legal expression in a place where a pattern is expected 17:13:56 > let 5 + 6 + 7 + = 17:13:57 : parse error on input `=' 17:14:30 * oerjan fires up real ghci 17:15:36 ghci gives :1:17: parse error on input `=' 17:16:03 so this is clearly a weirdness in ghc parsing, not just lambdabot 17:16:46 :1:5: Parse error in pattern: 5 + 6 17:16:54 a bit more informative 17:28:12 -!- gnidan has joined. 17:34:55 -!- Phantom_Hoover has quit (Ping timeout: 240 seconds). 17:50:31 -!- Phantom_Hoover has joined. 17:51:38 -!- elliott has joined. 17:54:18 16:33:48: > is not a repl it's an expression evaluator 17:54:21 oerjan: read EVAL print loop 17:54:33 -!- augur has joined. 17:54:34 oh right 17:54:37 in that lambdabot != ghci 17:55:19 -!- Phantom_Hoover has quit (Ping timeout: 240 seconds). 17:55:26 17:02:10: oh wait i was reading glogbot logs not clog logs... 17:55:27 and? :p 17:57:05 elliott: so clog wasn't the one failing 17:57:12 failing _what_ 17:57:27 to record some minutes of conversation 17:57:34 ouch 17:57:39 yay for ch2 17:58:00 Gregor: whaddya think happened 17:58:23 well after a while there was a glogbot netsplit, then it reentered 17:58:30 is what i see 17:59:15 16:06:03 They use Smalltalk, by the way. 17:59:16 16:06:34 XD 17:59:16 16:06:42 Prepare for tomorrow with the language of yesterday :P 17:59:19 Ooh, imma beat Gregor up. 17:59:37 man everyone is stupid in 2006 :D 18:00:10 razor-x, what happened to her... 18:00:52 was that her first or second nick, i've forgotten the other one 18:01:00 sukoshi 18:01:03 something japanese-soun... right 18:01:06 i think sukoshi was the later one 18:01:23 BUT IT'S OK BECAUSE EVERYONE WAS STUPID IN 2006 AND THEREFORE EVERYONE FROM 2006 SHOULD BE BOMBED 18:01:25 me too 18:01:28 Gregor has escaped punishment by dropping the R 18:01:33 you've escaped the punshiment by dropping the j 18:01:34 Gregor: whaddya think happened // I think glogbackup worked perfectly is what 18:01:38 * oerjan hides in his bomb shelter 18:01:43 even though that happened in 2006 18:01:53 and pikhq hasn't yet escaped so he's on death row 18:02:01 Gregor: But why did glogbot die :P Netsplit? 18:02:10 * glogbot has quit (*.net *.split) 18:02:15 It said quite clearly that it was a netsplit you dunce. 18:02:36 16:37:56: ok well that was fun 18:02:36 16:51:01: -!- glogbot has joined #esoteric. 18:02:36 16:51:15: > let let x = 5 in "hi" 18:02:41 Gregor: Not in the "fancy" logs. 18:02:54 THIS IS WHY CH2 IS AWESOME (Info messages :P) 18:03:16 That's odd ... quit messages are in fact logged ... it's like it saw the other side of the netsplit or something ... 18:03:26 Gregor: Or, it's because the baker totally fails at quit messages. 18:03:30 Which it does. 18:03:39 No, quit messages work fine. 18:03:44 ROLY? 18:03:46 I've never seen one. 18:04:01 If you look at the raw log, you'll see that it never received any quit messages. 18:04:07 Ah :P 18:05:03 Gregor: from what i see, glogbackup only entered once glogbot split. by that time messages to glogbot could have been lost for a while. 18:05:44 oerjan: That's ... not how a netsplit works. But glogbackup joins either by seeing a QUIT message, or by losing its dead man's switch on Codu. 18:06:08 Gregor: that's how a netsplit works if a server takes a long time to time out? 18:06:16 Gregor: Did you get watchdog set up, btw? 18:06:27 oerjan: So you're complaining that glogbackup isn't psychic? Awwww. 18:06:30 elliott: Yes. 18:06:45 glogbackup could ping glogbot every few seconds, you know. 18:06:56 If glogbot was programmed to not log those pings, it'd have basically 0 overhead and be perfect *shrug* 18:07:06 Good fucking lord. 18:07:07 I hate you all. 18:07:15 SORRY FOR SUGGESTING CONSTRUCTIVE IMPROVEMENTS 18:07:19 The point of glogbackup is not to work around netsplits, it just HAPPENS to work that way some times. 18:07:28 Gregor: just pointing out it doesn't protect against messages lost before split detection, is all 18:07:36 It could work perfectly if it pinged like that. and also notice when codu dies quicker. 18:09:19 clearly we must have a logbot on every freenode server. 18:09:21 * oerjan hides 18:09:32 It's amazing how I can improve the state of logging on this channel by 100x, and everybody complains that it's not 1000x X_X 18:09:58 Gregor, I'm not complaining! 18:10:07 Gregor: this ... in a channel of extreme geeks ... surprises you? 18:10:42 Gregor: 100x? that sounds a leeetle excessive 18:10:50 anyway HEROBRINE did that ;D 18:11:06 huh, smalltalk has very few tokens 18:11:16 to ken, or not to ken 18:12:20 ...don't you mean keywords... 18:12:37 no 18:12:48 i mean, every identifier is a token 18:12:52 I mean token types 18:12:58 ...ok 18:13:09 hash, caret, pipe, equals, dot, semicolon, comment, symbol, number, string, lparen, rparen, lbracket, rbracket 18:13:11 that's pretty few 18:13:47 elliott: Herobrine was at http://lolsomeIP, and had no backup at all. 18:14:08 lolsomeIP... I fail to see the relevance considering it was in the topic always 18:14:25 And glogbot doesn't have a backup that works for the vastly common case i.e. netsplits :P 18:15:58 Gregor is now fuming so hard he's actually evaporated completely 18:16:24 -!- variable has quit (Remote host closed the connection). 18:16:27 The only form of backup that would work in that case is having a bot connected to every server, on every logged channel. 18:16:35 And that's what we in the biz call "a terrible idea." 18:16:42 Then again, terrible ideas are your fort. 18:17:04 -!- variable has joined. 18:17:15 (1) With geographically-separated servers, pinging glogbot every few seconds would handle >50% of cases. 18:17:27 (2) Considering you're the one who just invented that idea on the spot, I'm not sure what's with all the self-hating. 18:18:23 elliott: It was oerjan's idea. 18:18:34 Yes, oerjan says things seriously. 18:18:40 elliott: And you can't know where the split will occur, so that won't handle >50% of cases. 18:18:42 elliott: That was to (2) 18:19:03 Generally two geographically far-away servers don't get split IME, but whatever. 18:20:39 elliott: just look at * oerjan hides, that proves i was serious 18:23:28 in order for two servers to be split, one of the (inclusive) in-between servers must fail. any other server failing will not be detected. 18:25:26 hm take the tree, remove all leaf nodes. put a logbot on everything that is _now_ a leaf node. i think that detects everything interesting due to one server going down 18:25:49 it's not a tree, it's a graph 18:25:51 how many servers that is, i don't know 18:25:51 i believe 18:26:01 um irc is supposedly a tree, always 18:26:18 hmm 18:26:25 Gregor: http://freenode.net/irc_servers.shtml ;; a logbot on every server would not be difficult at all 18:26:26 unless they have some protocol addition. in fact that's one reason why irc has so much netsplits 18:26:40 only about 25 18:27:03 i repeat, you don't need a logbot on all nodes, just the second-to-leaf ones 18:27:07 yes yes 18:27:09 just saying that even then 18:27:13 oerjan: irc as a graph sounds like it'd be a lot more reliable... 18:27:23 or wait hm is that correct 18:27:37 elliott: yes. but that makes everything else more complicated. 18:27:50 oerjan: "modern" IRC isn't exactly trivial :) 18:27:58 _especially_ interserver stuff 18:28:00 DISAPPOINTED BY LACK OF AFRICAN SERVERS 18:28:11 Freenode's racism will no longer be tolerated. 18:28:15 a graph means there is more than one path between two servers, so you need to do something special to prevent messages arriving twice 18:28:22 * Gregor sets up irc.freenode.so 18:28:23 yeah, and where's the antarctic servers! 18:28:38 also, the ANYWHERE IN THE AMERICAS BUT THE US servers! 18:28:40 also, the asian servers! 18:28:42 also, servers anywhere 18:28:56 man, hiato must have a blast connecting from south africa :D 18:29:25 Where's our Mars server. 18:29:40 and what about andromeda? oh wait, Ed blew that up 18:29:43 (SPOILERS LOL) 18:30:07 "The Andromeda–Milky Way collision is a predicted galaxy collision that could possibly take place in approximately 3 to 5 billion years' time between the two largest galaxies in the Local Group – the Andromeda Galaxy and the Milky Way, which contains Earth." 18:30:09 Does it now. Really. 18:31:15 Classic-style IRC is indeed a tree, but it can be configumarated to bring up backup links if one node dies. 18:32:42 But does non-classic-style IRC exist? :P 18:32:45 Galaxy collisions, for those in the galaxy, are extremely boring events, even if we could experience the sheer time scale. 18:33:09 there's some impressive numbers associated with that collision 18:33:12 they expect all of what 18:33:22 six stars colliding? 18:33:35 I don't know what freenode does. Based on how often they go all "we're rerouting things", it doesn't sound likely they'd be very automatically-robust. 18:33:56 Zwaarddijk: :D 18:34:22 A whole SIX stars will collide, and images of the resulting galaxy might even look SLIGHTLY different from a simple image blending of them! 18:34:24 Off by .1 pixels, even! 18:34:28 hm assuming that's essentially a random thing, one might ask how many stars collide in a galaxy under usual circumstances, even without a galaxy collision 18:34:33 fizzie: But does it exist in general? 18:35:45 Perhaps not, but I wouldn't rule it out. 18:35:58 CLEARLY IT MUST BE INTERVENTED 18:36:15 i vaguely recall something about there possibly being big changes in the large-scale structure though, possibly merging into a galaxy that is no longer spiral, but elliptic? 18:37:00 as in, just because stars don't collide, it doesn't mean the whole galaxies pass through each other as if nothing happened 18:37:12 As far as I can tell, freenode has done the typical thing and nerfed the LINKS command too, so that you can't even draw the graph. 18:40:51 Lame. 18:40:56 * anthony.freenode.net calvino.freenode.net :1 Irvine, CA, USA 18:40:56 * calvino.freenode.net calvino.freenode.net :0 Milan, IT 18:40:56 * * :End of /LINKS list. 18:41:03 Couldn't you do like 385734958734598345 hops to find out the graph from that? 18:42:01 It gives that same list wherever I connect to. 18:42:27 (Okay, so I just spot-checked a few.) 18:42:57 Weird. 18:43:09 So is anthony.freenode.net, like, The freenode server? 18:43:45 I guess theoretically anthony-calvino could be the US/EU link. Or maybe it's just a fakey-fakey. 18:44:06 Why return a real-looking fake link, rather than like 18:44:15 * your.freenode.net mom.freenode.net :1 Your Mom's Household 18:44:50 So, in Smalltalk, the global namespace contains true, false, nil, self, super, thisContext, string literals, numeric literals, block literals, and classes. Anything else? 18:45:20 tswett: self and super and thisContext aren't global are they? 18:45:25 They're local to whatever method you're in. 18:45:29 Or execution context, really. 18:45:42 Well, they're available everywhere. :P 18:45:47 If you just mean "the top-level namespace in a certain context", well, temporary variables and instance variables are in there too. 18:45:48 Nearly. >.> 18:45:56 tswett: But they don't have a consistent value everywhere. 18:46:15 tswett: Isn't "nil" a keyword? I may be wrong. 18:46:32 Also, literals aren't identifiers, so they're not in any namespace. 18:46:39 In conclusion, the global namespace contains classes and maybe nil. :p 18:46:53 Yeah, nil's a keyword. Just like true and false. 18:46:54 And the available-everywhere namespace contains true, false, self, super, thisContext, classes, and maybe nil. 18:46:57 Ah. 18:47:03 And the available-everywhere namespace contains self, super, thisContext, and classes. 18:47:07 Is thisContext a keyword too? 18:47:08 I guess so. 18:47:14 And self and super too. 18:47:18 So basically the global namespace contains... classes. :p 18:47:18 Yep. 18:47:22 Yup. 18:47:31 But self/super/nil/true/false/thisContext are pretty damn close to being immutable variables in a given scope. 18:47:33 So I'd count them. 18:47:37 (self isn't immutable in idst!) 18:47:47 Float value_: _fp 18:47:48 [ 18:47:48 self := self new. 18:47:48 { memcpy(self, v__fp, sizeof(double)); }. 18:47:48 ] 18:47:49 Because... 18:47:51 * tswett drumrolls. 18:47:54 Nothing is immutable in idst! 18:47:56 Right? 18:48:04 tswett: Well, I think "3" might be immutable. 18:48:11 In the sense that you can't assign to it; you can certainly give it new methods. 18:48:15 Is 3 immutable in C? 18:48:18 Yes. :p 18:48:29 That Float method is amazing, though. 18:48:32 I wouldn't be entirely surprised if you could &3 = 5. Or is it 3%? 18:48:35 s/%/&/ 18:48:38 No, you can't do that. 18:48:47 &foo isn't an lvalue. 18:48:50 What that method does: 18:48:54 First it replaces itself with a new instance of itself (idst is prototype-based). 18:49:09 Then it copies its _fp argument to itself, overwriting itself. 18:49:26 The key here being that in idst, the vtable is *just before* the self pointer, so that doesn't actually cause it to stop being an object. 18:49:37 It just overwrites all the data with the single double that constitutes a Float. 18:49:47 -!- iconmaster has joined. 18:50:37 tswett: btw, you can't do &3 in general in C. 18:51:00 &lvalue results in an rvalue of type T*, where T is the type of lvalue. 18:51:16 3 isn't an lvalue, and "&x = ..." isn't valid because &x is an rvalue. 18:51:23 * tswett nods. 18:51:32 ("*&x = ..." is valid because *p is an lvalue where p is a pointer, and &x is a pointer.) 18:51:39 Can you do &"foo"? 18:51:51 And use it as an lvalue? 18:51:59 -!- calamari has joined. 18:52:01 No. "foo" isn't an lvalue. 18:52:19 It's a literal rvalue of type (const char *). Or actually (const char []), in certain contexts. 18:52:20 Aw. 18:52:31 Or is that just (char []). 18:52:33 Can I cast it to a char * and then write to it? 18:52:45 tswett: You don't need to cast it, you can write directly; your program will segfault. 18:52:50 Yay. 18:52:56 "foo"[0] = 'p'; 18:53:05 ("*&x = ..." is valid because *p is an lvalue where p is a pointer, and &x is a pointer.) 18:53:05 I guess this is almost the definition of a segmentation fault. 18:53:23 This isn't quite true, in that that's not always valid. 18:53:30 elliott: btw, some of the bugs you mentioned in yoob have been fixed. but not all. 18:53:37 Because if p is of type (const T *) then you can't assign to its dereferencing, even though it's an lvalue. 18:53:40 cpressey: Hoorj 18:53:57 cpressey: I still think a swanky fungespace-editor would be cool :P 18:54:04 DESIGN GOALS ARE IRRELEVANT ONLY COOL MATTERS 18:54:12 there's only one runthread now, and it receives messages telling it to start, stop, or load a new language 18:54:35 but but, I _liked_ being able to make it go faster in certain weird scenarios 18:54:44 &* is almost a no-op by a special definition, though. (If the operand of unary & is the result of unary *, neither the * nor the & are evaluated, and the result is as if both were omitted, "except that the constraints on the operators still apply and the result is not an lvalue".) 18:54:45 it was like a magic/more magic switch! 18:55:07 fizzie: Heh. So &*var turns var into an rvalue, no matter what type var has. 18:55:31 fizzie: that's kind of like saying (x/n)*n=x 18:55:55 fizzie: I wonder what the heck the justification for that was ;P 18:55:56 *:P 18:56:06 Compatimability with olde compilers that literally just saw &* and skipped over the pair? 18:56:11 Optomized! 18:56:12 The rationale doesn't say. 18:56:17 I bet it's that. 18:57:01 There's another such special rule: in "&foo[bar]", again "neither the & operator nor the unary * that is implied by the [] is evaluated, and the result is as if the & operator were removed and the [] operator were changed to a + operator". 18:57:19 Does that actually change anything? 18:57:23 Semantically. 18:57:26 -!- Imk0tter has joined. 18:57:33 Or is it just because that expands to 18:57:36 &*(foo + bar) 18:57:39 which is again that special case? 18:57:41 shouldn't &*foo segfault if foo is NULL? or otherwise outside the address space? 18:57:50 no, wait 18:57:51 -!- copumpkin has joined. 18:58:00 it maybe should, but it actually just results in NULL 18:58:01 no, you can't... can you? 18:58:33 never mind. i should be coding in python right now. 18:58:38 HERE, PYTHON PYTHON PYTHON 18:59:07 cpressey: i feel sorry for you igf it's any consolation 18:59:25 cpressey: python will numb your mind and retard your soul 18:59:26 * cpressey makes squeaky sounds with his pursed lips designed to attract lower forms of life 18:59:37 Good python! Sit, fetch, etc 18:59:53 olsner: WILL? 18:59:57 it's not a tree, it's a graph <-- it is a spanning tree 19:00:03 Vorpal: that's what she said 19:00:55 oerjan: irc as a graph sounds like it'd be a lot more reliable... <-- meshing has been tried. Several times even. Problem is that it isn't very easy to make it work properly since irc is multicast. 19:01:17 bah 19:01:22 let's just move to chatting over ipv6 multicast 19:02:56 There was some talk at clc whether "char *foo = 0; (void)*foo;" should segfault, i.e. whether the dereferencing should "happen". I guess the majority opinion was that it doesn't. (They were a lot more divided on whether "volatile char *foo = ...; (void)*foo;" should cause a read always, but of course "what constitutes an access to an object that has volatile-qualified type is implementation-defined".) 19:03:08 elliott, inspircd 1.0 even implemented meshing. Sure it helped a bit at netsplits, but it caused lots of bugs elsewhere. Maybe it would have been possible to make it work, but the devs decided it wasn't worth the work. Even today inspircd supports you plugging in a different server linking module if you want. 19:03:20 whoa holding down cmd+n is so trippy 19:03:21 there is only the spanning tree one though 19:03:40 Vorpal: well inspircd is lame so who cares! 19:03:45 elliott, is it? 19:04:09 it's like, written in c++, and it has that smell of obnoxious over-modularity 19:04:34 i'd totally plug a better server but not really being so much of an ircd guy i'll just say that ngircd is pretty okay :P 19:04:38 it should totally support graphs though 19:04:41 bet i could get a degree out of that 19:04:47 elliott, it and charybdis are the only two serious competitors for the position of best ircd really. Most derivatives are crap. And ircd-seven that freenode uses is very very close to charybdis iirc 19:04:52 Alternate network topologies for an internetworked relay-chat system 19:05:01 Vorpal: what's from with ngircd 19:05:10 if anyone wants to try fixing some brainfuck: http://pastebin.com/raw.php?i=v97Kx3pm 19:05:23 elliott, from what I remember, it looked a bit crap. What do you think makes it good? 19:05:25 Imk0tter: yikes 19:05:30 I think SILC has at least some automatic split-free fallover thing to a backup router, where "router" is a special case of a "regular" SILC server, which can only be a leaf to another router. 19:05:32 it's supposed to take an integer and print out the first 6 digits 19:05:58 Imk0tter, what's up with the first lin? 19:05:59 line* 19:06:00 Vorpal: it's portable, the code is very simple and straightforward, it supports just about everything, it's mature... 19:06:02 what's crap about it 19:06:09 not having ZOMGMODULES? 19:06:10 Vorpal, it's the input integer 19:06:13 elliott, feature support from what I remember 19:06:16 also it's small 19:06:32 oh right, you don't care much about features. Forgot that. 19:06:40 Vorpal: uhh, it supports ssl, ipv6... define "features" 19:06:48 a server command to do trout slapping? 19:07:18 elliott, stuff like more advanced channel modes. Such as invite exempt based on service account 19:07:34 +I $a:elliott would work in charybdis for example. 19:07:43 I'm not sure if freenode has that turned on for example 19:07:47 ngircd's service support is purely linking-based. so that's the services' job to handle 19:08:03 freenode lets you set invite in access flags list of a channel 19:08:04 elliott, you can't do that in the service. How would it work? 19:08:17 from ZOMGMODULES import WINNING 19:08:26 elliott, and yes that flag for invite means you can manually do /cs invite #channel 19:08:27 Vorpal: services kick anyone out who doesn't match the enabled invite pattern? services invite someone in the list who sends a message requesting them? 19:08:41 elliott, there is a delay there. Some in channel message could get through 19:08:45 ...zomg! 19:08:47 IRC IS NOT REALTIME 19:08:48 HOW AMAZING 19:09:09 if you're saying "well, it doesn't support this *very specific* feature that nobody uses, and I count any slight change in the interface as a completely different feature, therefore ngircd sucks", that's just... stupid 19:09:12 Vorpal: ircd-seven does the "$type:data" special-ban/exempt/whatever syntax, with types of a, r and x. 19:09:15 elliott, you mean: ngircd fails to do a simple check at the server that many other ircds can do 19:09:23 Vorpal: define simple check 19:09:24 fizzie, ah right. 19:09:33 you mean mandating that services use NickServ as the name? 19:09:38 or any other kind of tight coupling? 19:09:39 great idea! 19:09:55 anyway just because something is simple to implement doesn't mean it's inherently the best thing to implement... or no, am I wrong? 19:10:04 I think GNU echo should read mail: mbox is a simple format after all. 19:10:28 elliott, well in the case of charybdis, it could go like this in pseudo code: is_in_invite_list(channel, "$a" + user->metadata[service_tag]) 19:10:41 of course since it is C, it will be more involved 19:10:41 so, tight coupling with services 19:10:45 anyway just because something is simple to implement doesn't mean it's inherently the best thing to implement... or no, am I wrong? 19:10:45 I think GNU echo should read mail: mbox is a simple format after all. 19:10:59 elliott, tight coupling with the metadata in the protocol :P 19:10:59 but no, it wouldn't be simple to implement anyway 19:11:13 Vorpal: ngircd supports services in the proper way, i.e. linking to them normally. 19:11:19 elliott, which is TS6 basically 19:11:20 so is there also a client called scylla? 'cos if not, i'm miffed. 19:11:40 you're suggesting a semi-useless feature (because it can be incredibly easily done in another way with services) that involves tight coupling of the server codebase to services details 19:11:42 elliott, they still link. But it uses TS6 protocol. Same as inspircd do (though both uses minor extensions iirc) 19:11:45 and saying that on the basis that it lacks that, ngircd is crap 19:11:51 this is stupid, you're just trolling 19:11:53 bye 19:12:19 no that was just one example. *shrug* 19:12:32 and you seem to hate this sort of functionality 19:12:34 I wonder why 19:13:08 you really fail at this. You can use that same feature with another service package. 19:18:50 cpressey: i want to write one now just because it's a nice name 19:19:13 elliott: it's not just that it's nice, it's... jeez, mythology, people 19:19:26 cpressey: no, i just want to make it because it's nice, mythology can go fuck itself 19:19:40 hey Gregor did you just change the log font 19:19:41 cuz its ugly now 19:19:51 or am i just imagining it 19:20:37 hello 19:20:48 oklopol: i saw your picture, i can now snipe you 19:21:04 you must be one hell of a hacker 19:21:10 and sniper. 19:21:25 i am 19:21:28 i fucking hacked a sniper 19:21:39 elliott: Fontophiles are not permitted. 19:21:46 Gregor: did you just change it y or n 19:21:50 elliott: However, I haven't changed anything, it's always been font-face: monospace 19:21:53 Err, font-family 19:22:07 it's not about ph0ntohpilia, it just antialiased really badly for a second 19:22:08 like 19:22:10 really bad colour fringing 19:22:15 it either fixed itself or my eyes unfucked 19:22:20 I don't think I can change that from CSS. 19:22:25 No shit :P 19:22:56 I wouldn't be too surprised, they put all sorts of shit in CSS :P 19:23:20 Gregor: Yet NO FEATURES FOR HIDE-BUT-COPY 19:23:31 oklopol: We saw your castle thing, http://zem.fi/~fis/turkustle.jpg -- and didn't clean up your place. :/ 19:23:45 that's the shittiest castle i've ever 19:23:59 Gregor: .foo { display: no; pronounce: no; copy: yes } /* IS THIS TOO MUCH TO ASK */ 19:24:44 .foo { display: none; pronounce: accent(swedish); copy: random } 19:24:48 -!- cpressey has changed nick to ph0ntohpiliac. 19:25:05 Gregor: :D 19:25:09 Gregor: bork bork bork 19:25:16 !swedish .foo { display: none; pronounce: accent(swedish); copy: random } 19:25:18 .fuu { deespley: nune-a; prunuoonce-a: eccent(svedeesh); cupy: rundum } 19:25:22 :-D 19:25:35 fizzie: did you leave already? 19:25:45 no 19:25:50 THEN COME AND CLEAN THE FUCKING PLACE UP 19:26:20 although i did just do 6 hours of group theory so i'm not sure i'd feel like meeting people even if you were here 19:27:51 i don't actually let people in my home anyway, so i wasn't very serious about the cleaning 19:28:06 but you said i could visit :< 19:28:08 my parents have been trying to clean this place up since i moved, but i don't let them 19:28:16 well exceptions are possible 19:28:18 ah 19:28:21 i'm better than fizzie 19:28:22 ofc 19:28:27 but cleaning up and looking through my stuff? 19:28:29 no fucking way 19:28:34 yeah that's like 19:28:36 molestation 19:28:39 yes 19:28:40 or rape, even 19:28:45 fizzie is pretty evil. 19:28:49 elliott: Yeah, we're not very castley peoples. 19:28:59 well rapists rarely are. 19:29:03 -!- augur has quit (Remote host closed the connection). 19:29:12 but yeah like 19:29:15 oklopol: We was there for just a few hours. 19:29:15 how is that even a castle 19:29:19 no fucking rooks or anything 19:29:29 it's slightly bigger than it looks 19:29:36 elliott: http://en.wikipedia.org/wiki/File:%C3%85bo_slott_1724.JPG 19:29:38 A CASTLE IS NOT JUST A BIG HOUSE 19:29:48 fizzie: "1724" 19:29:57 I GUESS IT GOT DE-CASTLIFIED 19:30:15 lol turku is called Åbo in swedish 19:31:09 Well, it got quite damageded in bombings in 1941, I think. I guess oklopol can tell you lots of more of the history, he lives nearby after all. 19:31:35 oklopol 19:31:36 history 19:31:37 LOL 19:32:14 yeah i have no idea about the history 19:32:20 but i've surely heard a lot of it 19:33:14 -!- ph0ntohpiliac has changed nick to ZOMGMODULES. 19:33:23 why are none of these fantastic nicks taken 19:33:30 because they suck 19:33:37 i know some stuff about the current state of the castle, due to knowing people who study museology 19:33:54 ZOMGMODULES: i propose you snatch up one-honking-great-idea while it's still available 19:34:20 -!- oklopol has changed nick to MYPEN_ISBIG. 19:34:22 -!- augur has joined. 19:34:27 HELLOO augur 19:34:44 you can just in time 19:35:01 i'm sure this nick turns you on 19:35:08 how big is your pen 19:35:09 -!- ZOMGMODULES has changed nick to EnjoyBeingLocked. 19:35:15 oh it's pretty fucking big 19:35:16 get it 19:35:16 -!- elliott has changed nick to matrix-of-solidi. 19:35:17 fucking 19:35:20 -!- matrix-of-solidi has changed nick to matrixofsolidity. 19:35:25 YESSSSSSSSSSSSSS 19:35:29 :D 19:35:30 EnjoyBeingLocked: please do /me in your 19:35:41 -!- matrixofsolidity has changed nick to MatrixOfSolidity. 19:35:43 EnjoyBeingLocked: plz 19:35:44 * EnjoyBeingLocked in your 19:35:47 * MatrixOfSolidity 19:35:50 :DDDDDDDDDDDDD 19:35:57 that was pretty awesome 19:35:58 we are so lame 19:36:00 anyone semi-fluent with brainfuck? 19:36:03 i'm not worthy 19:36:05 -!- MYPEN_ISBIG has changed nick to oklopol. 19:36:08 Imk0tter: yep, but none of us jokers 19:36:29 omg we should have a con 19:36:30 and call it 19:36:37 EnjoyBeingLockedInYourMatrixOfSolidityCon 19:36:39 Imk0tter: what's "fluent"? that's sort of relative 19:36:40 MatrixOfSolidity, how would i subtract 1 from v1 and v2 until one of them is 0 19:36:47 EnjoyBeingLocked: TEN TIMES BETTER THAN PYCON AMIRITE 19:36:52 Imk0tter: hmm 19:36:56 MatrixOfSolidity, either or 19:36:56 so v2 is right after v1 right 19:36:58 yes 19:37:07 we need to keep a pair of bots around for just this purpose 19:37:21 Imk0tter: >>[<[-<->>]] 19:37:26 Imk0tter: tape must be (v1,v2,scrap) 19:37:29 scrap must be 0 19:37:33 that should work 19:37:34 okay 19:37:35 that does nothing 19:37:39 er right 19:37:40 INDEED 19:37:46 but otherwise it's pretty nice 19:37:47 ok wait 19:38:00 Imk0tter: [>[-<->>]<<] 19:38:02 same tape requirement 19:38:08 i... think this should work 19:38:21 well. i'm not going to comment on that. 19:38:26 :D 19:38:28 oh wait 19:38:37 hmm 19:38:42 oklopol: are you _sure_ that's wrong 19:38:56 !bf8 ,>,<[>[-<->>]<<]!ab 19:39:03 !bf8 ,>,<[>[-<->>]<<].>.!ab 19:39:07 X_X 19:39:09 !bf ,>,<[>[-<->>]<<].>.!ab 19:39:15 hey Gregor, who let the dogs out 19:39:22 well i have no idea why it would work 19:39:32 hmm 19:39:34 actually 19:39:47 EgoBot !bf has never accepted !input. 19:39:48 oklopol: well "while (v1) { while (v2) { v2--; v1--; go to scrap }; go back to v1 }" 19:40:04 Gregor: well how do i get inputs in, that stupid input system thing? :D 19:40:12 oklopol: looks right to me at least 19:40:12 MatrixOfSolidity, v1 can go negative 19:40:14 MatrixOfSolidity: How's that going to terminate the outer loop when v2 is 0. 19:40:14 -!- EgoBot has quit (Remote host closed the connection). 19:40:17 MatrixOfSolidity: Nope, that's gone. You don't. 19:40:24 fizzie: uh. good question. 19:40:25 -!- EgoBot has joined. 19:40:28 Gregor: That...sucks? 19:40:33 Imk0tter: no such thing as negative in bf 19:40:36 MatrixOfSolidity: Too bad. 19:40:47 Gregor: So much for EgoBot the useful esolang execution bot :P 19:40:48 MatrixOfSolidity, eh? 19:40:48 -!- fungot has joined. 19:40:51 Imk0tter: cells are 0 to 255 inclusive 19:41:00 MatrixOfSolidity: the interpreter i'm using uses 32bit integers 19:41:09 that CAN go negative 19:41:09 that interpreter sucks, get a new one :) 19:41:15 ^bf ,>,<[>[-<->>]<<].>.!ab 19:41:27 well i suppose i should fix that loop first! 19:41:27 :DD 19:41:33 fizzie: how it terminates is it moves to the left of v1, because it doesn't enter the inner loop 19:41:37 ...that's true! 19:41:42 so the requirement is actually (0,v1,v2,0) 19:41:44 and you should do > right after 19:41:55 MatrixOfSolidity, let's assume there is no negative 19:42:01 ^bf >,>,<[>[-<->>]<<]>.>.!ab 19:42:02 19:42:05 tada! 19:42:09 ^bf >,>,<[>[-<->>]<<]>.>.!ab 19:42:10 19:42:15 it turns into ctcp :P 19:42:19 Imk0tter: let's say the tape is (0, v1, v2, 0) 19:42:30 Imk0tter: then >[>[-<->>]<<]> will do what you want 19:42:32 ending up on the v1 cell 19:42:35 actually 19:42:39 the first value can be whatever 19:42:40 doesn't have to be 0 19:42:44 or... 19:42:44 yes it does 19:42:46 it has to be 0 19:42:51 ^bf >,>,<[>[-<->>]<<]>.>.!ba 19:42:51 19:42:56 * Received a CTCP from fungot (to #esoteric) 19:42:57 MatrixOfSolidity: http://zzo38computer.cjb.net/ chrono/ zzo38/ mainpage the actual ui has something to do that anyway 19:42:58 it does work :) 19:43:01 the only problem is you don't know where you stop, but that's kinda easy 19:43:05 it just doesn't output properly 19:43:11 oklopol: er, yes you do? 19:43:12 oh wait 19:43:14 no you don't 19:43:14 MatrixOfSolidity 19:43:16 yeah that's kinda :/ 19:43:19 oh well oklopol can fix it 19:43:23 it's very easy 19:43:39 indeed 19:43:41 i suck at bf though 19:43:45 -!- MatrixOfSolidity has changed nick to elliott. 19:43:45 i mean, at least if you don't care about size 19:43:53 -!- oklopol has changed nick to ICAREABOUTSIZE. 19:43:59 -!- ICAREABOUTSIZE has changed nick to oklopol. 19:44:01 elliott 19:44:03 i realized that was retarded 19:44:05 anyhow 19:44:18 Imk0tter: why do you keep pinging me without any message 19:44:22 err sorry 19:44:27 i forgot what i was going to say 19:44:35 EnjoyBeingLocked: [[This is quite true, you won't find ones complement. IBM pushed this through. In the early years, Mathematicians dominated the field. In the one's complement setup, a negative zero can result. "BUT THERE IS NO SUCH THING !!" the mathematicians exclaim. That always tickled me. They go along with all kinds of obscure and arcane advances, like "imaginary" numbers. But this they couldn't 19:44:35 swallow.]] 19:44:38 !ba puts v0 and v1 to b and a respectively 19:44:39 right? 19:44:53 if you don't care, you can just walk say two steps left, and have (0, 1, 0, v_1, v_2, 0), then search for the leftmost 0 19:44:53 :DD 19:45:00 Imk0tter: it does nothing, that's just input syntax 19:45:05 prog!input means "run prog with input" 19:45:16 ohh im slow 19:45:17 l0l 19:45:41 yeah do what oklopol said I guess :P 19:45:44 what do you want this for anyway 19:45:47 to compute |a-b|? 19:45:57 or err 19:45:59 hmm 19:49:58 EnjoyBeingLocked: definitely gonna go for tedious, not relaxing 19:50:10 well 19:50:16 defining an ast structure might be even more tedious actually 19:55:11 -!- EnjoyBeingLocked has changed nick to ZOMGMODULES. 19:56:12 elliott: depends on the language 19:56:20 ZOMGMODULES: C 19:56:27 not sure _why_ C, but C 19:56:29 i dunno man, should be relaxing 19:56:47 it's like drumming... it has a cadence 19:56:51 i...'ve never even really thought of C as anything that i could possibly ever file under relaxing 19:57:00 you're speaking english, right? 19:57:01 THIS IS THE WISDOM OF ZOMGMODULES. HEED IT 19:57:20 well it's possibly made worse by the fact that it's a programming language I'm specifying. 19:57:35 like, damn, this would be so much easier if i could just write the compiler in itself and use it without any bootstrapping! 19:57:37 your grammar is pretty much established? 19:57:58 you wrote it out? on paper? 19:58:04 ZOMGMODULES: well, the bootstrap grammar is pretty much established. i'm not going to try fun stuff until i rewrite the compiler in the language. 19:58:08 Fun: HFCS at half soda concentration vs. Table sugar at full soda concentration. 19:58:14 i...write it out, no, but I've pretty much stolen Smalltalk's grammar 19:58:16 for now 19:58:41 you need to write it out, preferably on paper but also in a comment block at the top of the source is acceptable, or it won't be relaxing. 19:59:05 really? 19:59:10 this is the wisdom 19:59:13 (And no, that wasn't study from corn refiner's association).. 19:59:45 ZOMGMODULES: pretty impressive ass you have there, with all the ideas you pull out of it ;;;;::DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDdddddddddddd 19:59:51 sorry sorry *wisdom 19:59:59 ;DDDDDDd 20:00:00 dd 20:00:24 hmm, parsing smalltalk is actually quite a pain 20:00:43 because of (foo a: b) vs. (foo a: b c: d). 20:02:34 hmm 20:02:36 elliott, the only problem with your example is that you don't know which variable is the one that's not empty 20:02:52 Imk0tter: well like oklopol said, if you just put a 1 after some 0s you can synchronis 20:02:53 e 20:03:00 -!- Phantom_Hoover has joined. 20:03:03 ZOMGMODULES: with yacc-like things, if you have like, [a; b; c] and {a; b; c} both as blocks 20:03:05 do you need two rules 20:03:09 'cuz one ends with RBRACKET and the other RBRACE 20:03:14 oh wait 20:03:15 you can just do 20:03:17 foo ::= . 20:03:17 cute! 20:04:56 * ZOMGMODULES ACKNOWLEDGES NOT THESE "YACC-LIKE THINGS" 20:05:15 ZOMGMODULES: I WOULD LIKE TO SEE YOU WRITE THIS PARSER RECURSIVE-DESCENT 20:05:19 MOSTLY BECAUSE IT WOULD SAVE ME FROM DOING SO 20:06:34 woo i totally have it down apart from like 20:06:35 operators 20:06:37 and method calls 20:06:38 i.e. everything 20:07:19 void parse() { if(tokeq("["){expect("["); parse_list(); expect("]");} else if (tokeq("{"){expect("{"); parse_list(); expect("}");} else error(); } 20:07:28 ZOMGMODULES: no i don't mean that 20:07:32 i mean 20:07:34 the entire grammar 20:07:53 -!- azaq23 has joined. 20:07:56 void parse_list() { parse_elem(); while(tokeq(";")){ expect(";"); parse_elem(); } } 20:08:21 program := exprs. expr := #ident | ^expr | (expr) | [block] | ident := expr | message | literal. 20:08:38 block := (optional: | var var var ... |) expr . block | expr | 20:08:49 message := dem smalltalk thangles 20:08:53 ;_; 20:09:02 i'd love to, it's very relaxing. unfortunately, can't spend all day here 20:09:19 though 'dem smalltalk thangles' is a little underspecified for my taste 20:09:55 ZOMGMODULES: message is expr messagepart* 20:10:08 messagepart is either ident without :, or ident ending in : and having no other :s in it followed by an expr 20:10:22 fucking ugly to specify because you have to have constraints on the ident inside the actual thing 20:10:35 oh and it's messagepart+, not *. 20:10:36 obviously. 20:11:24 http://sprunge.us/jbMF hey i think i did it 20:11:42 hey oklopol 20:11:53 can you help me out here, because i don't really understand your example ;\ 20:12:23 i'm trying to divide v1 by v2, but the problem i'm having is that v1 goes negative and the loop never ends 20:12:24 erm just that elliott's code can end on top of either the leftmost 0 or v1 if you start with (0, _v1_, v2, 0) 20:12:29 i would just accept ident or ident: interchangeably and filter out the bad stuff at the static analysis phase 20:12:33 if that's legal 20:12:41 ZOMGMODULES: oh that's not the problem 20:12:51 hey,... ghci's "let" does something like that, right oerjan? 20:12:54 the problem is that some dickhead could say "foo a:b: c" 20:12:55 and actually 20:13:00 "foo a:b c:d" should parse properly 20:13:02 if it's good enough for ghci it's good enough for me 20:13:06 but that a:b and c:d will parse as one ident 20:13:07 euuurgh 20:13:15 maybe i should have two types of ident 20:13:17 ident and symbol 20:13:18 symbol allows :s 20:13:19 elliott: that's a dumb grammar 20:13:20 so just move two steps left and then do a search to the left for a 0, have 0, 1, 0, v1, v2, 0 as the initial tape 20:13:20 ident doesn't 20:13:24 then you'll know where the head is 20:13:25 ZOMGMODULES: that's smalltalk 20:13:33 ZOMGMODULES: really :s are banned in identifiers altogether 20:13:36 ZOMGMODULES: it's just that they're valid _symbols_ 20:13:37 "That's our Smalltalk!" 20:13:39 i.e. #foo:bar: is an ok symbol 20:13:43 * ZOMGMODULES canned laughter 20:13:46 but foo:bar: is so not an ok identifier. 20:13:50 you won't know which one went to zero, but you can check that by looking at them... 20:13:52 so really what i need to do is handle # at the lexer phase 20:14:00 turn #foo:bar: into SYMBOL("foo:bar:") 20:14:10 and turn foo:bar: into IDENT("foo") COLON IDENT("bar") COLON 20:14:13 yeah that's much nicer 20:14:19 this is pretty much why i never got into smalltalk 20:14:30 this very part of it seemed unnecessarily brutal 20:14:36 what par 20:14:37 t 20:14:42 :'s 20:14:44 anyway it was my token's fault :) 20:14:49 for not distinguishing idents and symbols 20:14:58 ZOMGMODULES: hmm, i dunno 20:15:00 how's it brutal 20:15:11 you mean like how you can't arrange parts? 20:15:21 oh and really i want a multi-dispatch thing but that's too much for my brain to jam together right now 20:15:33 i think i'll finish writing up this yacc-style grammar then recursive descend on it 20:15:34 my brain just does not think like that 20:16:02 ZOMGMODULES: well, it's nicer than /python's/ approach to the "argument positions are meaningless" problem. 20:16:05 using the same label mechanism for all those things 20:16:11 eh? 20:16:15 sorry, i don't get you :) 20:16:23 whaddya mean 20:16:26 that's ok. it's been a long time and i don't remember 20:16:43 ok now the grammar is perfectly sanified 20:16:47 apart from being left-recursive. 20:16:57 i don't even know how you're meant to do 20:17:05 expr ::= IDENT EQUALS expr 20:17:06 oh wait 20:17:08 that's not left-recursive :D 20:17:14 body(A) ::= expr(B) DOT body(C). {...;} 20:17:14 body(A) ::= expr(B). {...;} 20:17:14 body(A) ::= . {...;} 20:17:17 and that looks... kind of easy? 20:17:25 well 20:17:25 dunno 20:17:28 maybe kinda hard 20:19:29 -!- ais523 has joined. 20:19:35 oh dear 20:19:40 i broke the CHIQRSX9+ article 20:19:46 it is now impossible to access it 20:19:48 thanks, MediaWiki! 20:19:55 http://esolangs.org/wiki/CHIQRSX9%2B ;; click for fun 20:22:06 I do not know if I agree with the sentiment that adding a random number to every character in your program and interpreting it as Perl counts as your language being "Turing-complete" 20:22:40 um, it _is_ a joke 20:22:49 oh cool 20:22:52 it can be accessed from http://esolangs.org/wiki/CHIQRSX9_Plus 20:22:56 which doesn't do a hard redirect 20:23:14 still can't be moved though 20:23:15 impressi 20:23:16 ve 20:23:32 aha 20:23:32 http://esolangs.org/w/index.php?title=CHIQRSX9%2B 20:23:56 fixed! 20:24:10 elliott 20:24:12 i'm stuck here 20:24:19 can you help me out mate 20:24:21 Imk0tter: what was wrong with oklopol's solution? 20:24:29 i don't understand how it works 20:24:32 lol 20:25:00 therefor i can't write it out 20:26:10 well assuming you have 0 1 0 v1 v2 0 just do elliott's, and then append <<[<] 20:26:12 hey,... ghci's "let" does something like that, right oerjan? <-- well that's what it looked like... 20:26:22 int block() { 20:26:22 if (accept(PIPE)) 20:26:22 while (1) 20:26:22 if (accept(PIPE)) 20:26:22 break; 20:26:23 else if (!accept(IDENT)) 20:26:24 return 0; 20:26:26 ZOMGMODULES: look at dat lack of braces 20:27:57 C needs a ";;" operator that is a high-precedence ";" to avoid the need for braces 20:28:10 ZOMGMODULES: and we could call it ocaml 20:28:12 if (x==y) printf("hi") ;; printf("there") 20:28:20 can you stack ;s arbitrarily? 20:28:22 that would be awesome 20:28:30 oh uh 20:28:31 SURWE 20:28:34 *SURE 20:28:41 so basically, if/while/etc. are { 20:28:43 the more ;'s the higher the precedence 20:28:51 and ;^(n+1) is }^n 20:28:54 well 20:28:55 ;}^n 20:28:58 SORRY TO BREAK YOUR DREAMS 20:29:11 yeah that's not quite my vision 20:29:16 :D 20:29:19 sorry for tarnishing it 20:29:22 obfuscated c and metalanguage 20:29:29 omg having comments in the ast is the best idea ever 20:29:31 like 20:29:38 okay so you can't just put comments in ANY old place now 20:29:40 but like 20:29:41 like 20:29:43 like!!! 20:29:50 it's like docstrings, except not stupid! 20:30:52 apparently richard dawkins is on the vpri board of advisors 20:30:52 WHO KNEW 20:30:59 oh wait 20:31:00 that's like 20:31:02 the actual richard dawkins 20:31:07 thought it was just some guy with the same name 20:31:21 heh 20:31:32 wonder why he's on the board? 20:31:49 -!- gnidan has quit (Quit: leaving). 20:32:03 http://www.vpri.org/images/people/board/vpri_ppl_24.jpg 20:32:04 http://www.vpri.org/images/people/board/vpri_ppl_20.jpg 20:32:06 with these kinds of beards 20:32:10 http://www.vpri.org/images/people/board/vpri_ppl_07.jpg 20:32:15 why hasn't vpri invented the next big language yet! 20:32:44 http://piumarta.com/cv/xyzzy.jpg 20:32:45 oh gosh 20:32:50 maybe they've had a beard overflow 20:32:55 leaving them with negative beard 20:33:41 "Ian assembled and ran his first program at the age of 13 on a DEC PDP-10" ;; what kinda 13 year old gets access to a pdp-10 20:36:14 What's vpri? 20:36:26 the Viewpoints Research Institute 20:37:33 they do research on viewpoints 20:37:51 yes. actually i think they prefer the acronym VRI but i like vpri better. also it's their domain name 20:37:56 "We found that a certain percentage of the population hold one opinion, while the rest hold another." 20:38:01 "prefer" = their web page uses VRI 20:38:14 ZOMGMODULES: careful. alan kay might punch you 20:38:15 Who's ZOMGMODULES 20:38:23 If your eventual skill at something is determined by the age at which you pick it up, then my calling is definitely programming. 20:38:24 * ZOMGMODULES IS ZOMGMODULES 20:38:43 tswett: Not, say, using the toilet? 20:38:43 Phantom_Hoover YOU ASK A LOT OF QUESTIONS 20:38:51 You must have been programming pretty early on, then. 20:39:05 Your point has goodness. 20:39:31 If your eventual skill at a trade or art is determined . . . programming. 20:39:59 Phantom_Hoover PERHAPS YOU SHOULD TRY /whois 20:40:00 wat 20:40:06 tswett: Did you just ELIDE LOGIC 20:40:23 elliott: I assume you can figure out what my ellipsis represents. 20:40:25 ZOMGMODULES! 20:40:25 ZOMGMODULES: wait your name is Christopher? kinda assumed you were always just Chris THIS IS LOGICAL OK 20:41:11 who's ZOMGMODULES? 20:41:20 olsner: Z. Omg Modules 20:41:24 He's not Christ; he's the -opher of Christ. 20:41:25 the Z stands for Christopher 20:41:26 olsner, who else do I greet with exclamations! 20:41:31 Phantom_Hoover: your mom 20:41:35 tswett, that's actually the etymology. 20:41:37 Literally. 20:41:42 I'll opher YOUR Christ 20:41:49 Phantom_Hoover: yes, I just looked it up. :) 20:42:15 It's funny how "Christopher" is sometimes shortened to "Chris" and sometimes to "Topher". 20:42:18 http://upload.wikimedia.org/wikipedia/commons/e/eb/Christopher_icon.jpg 20:42:30 tswett: FSVO sometimes equal to never. 20:42:35 elliott: parents who put just "Chris" on a birth certificate are... like parents who put just "Bob" on a birth certificate. 20:42:35 ZOMGMODULES, you're named after a werewolf. 20:42:44 ZOMGMODULES: So, like your parents then? 20:42:45 HA HA HA 20:42:52 `addquote elliott: parents who put just "Chris" on a birth certificate are... like parents who put just "Bob" on a birth certificate. 20:42:55 351) elliott: parents who put just "Chris" on a birth certificate are... like parents who put just "Bob" on a birth certificate. 20:43:04 that was quotable? 20:43:09 well i laughed. 20:43:18 It's like... it's like someone who invents the name "Wafflecarrot" based on the words "waffle" and "carrot", and then people named Wafflecarrot start being called Waff and Lecarrot. 20:43:22 i swear, with our powers combined, together #esoteric is a mediocre comedian that doesn't know when to shut up and doesn't know when it's being funny or not 20:43:23 That was an awful analogy on my part. I apologize. 20:43:25 we could capitalise on this 20:43:28 Most amusing thing: take male names and add -ina. 20:43:38 If it's common enough you get a legitimate female name. 20:43:42 tswett: WHO SHORTENS CHRISTOPHER TO TOPHER 20:43:48 Phantom_Hoover: Christopherina 20:43:50 elliott: Topher Grace? 20:43:54 elliott: ask Topher Grace's shortners. 20:43:56 s//e/ 20:43:56 elliottina 20:43:59 jackina 20:44:06 Tannerina. 20:44:10 tannerina is catchy 20:44:11 phantomina 20:44:13 oklopol: villeina 20:44:17 Oerjanina 20:44:17 ;DDDDD 20:44:23 Hooverina 20:44:27 was gonna go for phantomina 20:44:28 The female form of Tanner is Tanress. :P 20:44:28 hooverina is nice 20:44:29 but oklopol preempted me 20:44:31 Phantom_Hoover: Which werewolf would that be? 20:44:34 oklorina of time 20:44:37 Vagina 20:44:41 you know, all those men named Vag 20:44:52 ZOMGMODULES, St. Christopher, saint and werewolf. 20:44:56 olsnerina 20:44:56 Oerjanina <-- In Swedish (and possibly Norwegian) you would add -ida instead 20:44:59 olsner: your real name is olsner right 20:45:00 Phantom_Hoover: this is news to me 20:45:06 elliott: nope 20:45:14 Phantom_Hoover, at least quite often 20:45:16 `addquote ZOMGMODULES, St. Christopher, saint and werewolf. 20:45:17 352) ZOMGMODULES, St. Christopher, saint and werewolf. 20:45:18 SO FUNNY TODAY 20:45:28 Arvidida. 20:45:30 olsner: what is it then!!!! 20:45:33 Phantom_Hoover: *ina 20:45:37 Arvidina 20:45:40 BASICALLY THIS "-INA" THING IS TOTAL BULLSHIT 20:45:42 o 20:45:42 o 20:45:42 o 20:45:42 o 20:45:42 o 20:45:44 o 20:45:44 o 20:45:44 o 20:45:44 o 20:45:47 oina 20:45:47 Phantom_Hoover, "Arvida" though exists. I think it gets combined in there. 20:46:01 you know why i did that oing 20:46:04 Adamhnanina. 20:46:19 because i was like OMG IF I SPAM NOW I'LL GET TO SEE 23:45:67 20:46:23 IN THE TIME STAMPMGEG 20:46:46 My mom's name is Peggy because one of her parents wanted her to be named Margaret, and the other threatened to call her Maggie if they did that. 20:46:48 It was, like... 20:46:50 tswett: hey the HA HA HA is supposed to come _after_ the wafflecarrot. know your memes! 20:46:51 Phantom_Hoover: so what's your second name! 20:47:09 McHoover. 20:47:15 ooh, I've become less googleable since last time I tried 20:47:16 tswett: is her second name Sue DID BUDDY HOLLY MAKE A SONG ABOUT YOUR MOTHER 20:47:18 you know why i asked that 20:47:19 because 20:47:20 your mom 20:47:23 is SO OLD 20:47:24 also: FAT 20:47:29 i'm so smooth 20:47:36 Phantom_Hoover: Adamhnan McHoover. best name 20:47:52 "I want to name her Margaret." "I will not let you do that. If you do, I will have to release the ultimate weapon... CALLING HER MAGGIE." "No! ANYTHING but Maggie! We'll name her Peggy, how's that?" "Fine by me." 20:47:57 elliott: nobody knows what her second name is. 20:48:15 should have called her Adamhnanina 20:48:22 maybe that's the origin of Nina 20:48:24 nobody can disprove that! 20:49:05 I'm glad that this channel never quotes Internet memes. 20:49:27 tswett: no u 20:49:32 See? 20:49:35 -!- sftp has quit (Remote host closed the connection). 20:49:40 The example that proves the rule. 20:49:40 it's possibly the best thing about this channel 20:49:40 tswett, all your meme are not belong to us. 20:49:47 peggy could be short for peregrina 20:49:57 Phantom_Hoover just demonstrated the exception that proves the rule. 20:49:59 Oerjanina <-- In Swedish (and possibly Norwegian) you would add -ida instead <-- i don't think femininizing Ørjan really works with any suffix, although possibilities include -a, -e and -ine. 20:50:03 Everything proves the rule, you see. I'm right no matter what. 20:50:08 your mom proves the rule 20:50:14 Precisely. 20:50:20 oerjan: so basically Ørjan is already as female as it gets? 20:50:34 elliott, nah, it's the \omega of manliness. 20:51:23 Why is this subreddit all read? (self.Norway) 20:51:23 Just thinking, why not make it a little blue and white and fjords and snowmen and stuff? 20:51:27 oerjan: WAS THIS YOUR DOING 20:51:27 Not Ørjanette? 20:51:48 The best way to feminize a name is by taking off the -er and replacing it with -ress. 20:51:56 The great thing about that way is that it works for ANY NAME. 20:52:00 Adamhnan(ANTI-ER)ress 20:52:05 HOORAY FOR ANTISTRINGS 20:52:08 Phantom_Hoovress. olsnress. See? 20:52:19 olsnress is an impressive name, pronunciation-wise 20:52:43 ZOMGMODULES: hm that might also work 20:53:02 Adamhnanr^-1e^-1ress. 20:53:07 Letters form a group, right? 20:53:08 olshfpngress 20:53:52 tswett: erm, they are not even closed under multiplication 20:54:06 Letters generate a group, right? 20:54:19 but nothing wrong with doing english over the free group 20:54:34 int block() { 20:54:35 if (accept(PIPE)) 20:54:35 while (!accept(PIPE)) 20:54:35 if (!accept(IDENT)) 20:54:35 return 0; 20:54:39 while (expr() && accept(DOT)); 20:54:41 expr(); /* optional */ 20:54:43 yeah they form the free group with base size 26 20:54:43 return 1; 20:54:45 } 20:54:47 hmm, that might be right 20:55:54 -!- azaq23 has quit (Read error: Operation timed out). 20:56:28 ZOMGMODULES: IS THAT RIGHT, O WISE RECURSIVELY-DESCENDING MASTER 20:56:32 maybe i'll write the better kind of parser 20:56:34 (recursive ascent) 20:56:47 recursive accent 20:56:57 i can't believe recursive ascent was invented before descent 20:56:59 just boggles the mind :) 20:57:09 "oh, I've read a number... guess I should check if there's an operator after me" 20:57:22 "hey there is! ok, i just read an operator... guess a number would be good" 20:58:01 -!- Phantom_Hoover has left ("Leaving"). 20:58:04 -!- Phantom_Hoover has quit (Quit: Leaving). 20:58:54 wow, reading /r/norway totally equips me to talk to oerjan like i'm a norwegian! 20:59:08 hey oerjan, maria amelie! that was totally part of one of the headlines! 20:59:10 and uh 20:59:12 uh 20:59:14 damn this subreddit sucks 20:59:15 OH 20:59:16 stamps!! 20:59:32 "Where to buy live snails in Oslo, or Norway in general?" 20:59:51 elliott: ¿cuántas lenguas conoces? 21:00:04 tswett: yes, I recant all my linguistic coconuts. 21:00:09 -!- cheater- has joined. 21:00:18 elliott I AM STILL TRYING TO WRAP MY HEAD AROUND THE ENGLISH GROUP 21:00:20 oerjan: HEY REACT TO ME, I'M FROM NORWAY 21:00:44 elliott: do you chant in the coconut language? 21:00:54 That's Spanish for "what is the number of languages that you have come to have a significant understanding of". 21:00:57 olsner: bro. 21:01:10 "á" means "number of", for example. 21:01:18 tswett: 1, or lots if you include languages that computers can understand :-P 21:01:30 tswett: I have this plan thing to learn Japanese that will never happen because oklopol keeps HARSHING 21:01:31 MY 21:01:32 VIBES 21:01:42 feel those harshed vibes oklopol 21:01:46 look at what you're doing to mefw;gdh 21:01:56 elliott: does your accept() have a side-effect 21:02:05 ZOMGMODULES: accept() is 21:02:14 if (curtok == whatyousaid) eatitup() 21:02:19 and return 1 21:02:21 otherwise return 0 21:02:35 expect() is just if (!accept()) BALLLK, but i haven't used expect yet i don't think 21:03:00 huh. i always use expect(), and never accept() 21:03:12 i use tokeq() which doesn't consume 21:03:17 fewer side-effects in tests 21:03:18 ZOMGMODULES: well i copied accept() from wikipedia :) but accept is actually quite nice i think 21:03:22 because you can just do like 21:03:27 if (accept(one_thing)) ...handle that... 21:03:30 if you like side-effects in tests, SURE 21:03:31 else if (accept(another_thing)) ... 21:03:35 hmm.. seems like there is no actual parsing reason why C should require parens around an if expression 21:03:42 ZOMGMODULES: if (ident() && accept(COLON) && expr()) return 1; 21:03:52 ZOMGMODULES: (ok so that wouldn't be as nice-looking in practice cuz you have to build an ast, but that's not bad) 21:04:02 elliott: should i point out that _i_ don't read r/norway? 21:04:07 er 21:04:08 *expect 21:04:12 calamari: consider if foo (bar); 21:04:21 oerjan: MARIA AMELIE 21:04:40 is bar an argument list to foo, or the body coming after the boolean expression foo? 21:04:49 int messagepart() { 21:04:49 if (!ident()) return 0; 21:04:49 if (accept(COLON)) return expr(); 21:04:49 else return 1; 21:04:49 } 21:04:51 ZOMGMODULES: PRETTY 21:05:12 -!- iconmaster has quit (Ping timeout: 260 seconds). 21:05:34 olsner: I didn't realize there could be whitespace before the function parms.. good one 21:06:14 elliott: yes yes i've heard about maria amelie 21:06:20 -!- jix has quit (Ping timeout: 246 seconds). 21:06:24 oerjan: SEE 21:06:28 I CAN CONSERVE LIK EA NORWEGIAN 21:06:30 also, converse 21:06:35 calamari: really? clearly you've never read GNU code! 21:06:41 if (the_most_awesome (oh_yes)) 21:06:42 { 21:06:46 printf ("oh yes!\n"); 21:06:46 } 21:07:00 elliott: it's true.. I hardly ever look at gnu code 21:07:03 augh 21:07:08 calamari: your sanity thanks you :) 21:07:10 the ugly :( 21:08:00 wow, I took almost all day to come up with two lines of code 21:08:12 a victim of norway's strict immigration and asylum policies. 21:08:17 -!- jix has joined. 21:08:49 ZOMGMODULES: http://sprunge.us/iQeM hey this grammar is actually pretty simple 21:08:57 doesn't actually build an ast and has ... for all the simple parts, but :) 21:09:03 also probably doesn't work, I think I need more expects 21:09:05 to avoid like 21:09:06 infinite loops 21:09:12 expects are kind of like cuts in prolog 21:09:24 if we don't get this token here THERE IS NO WAY THIS IS VALID, don't tell the function we have to try something else, just die 21:09:55 oerjan: lol @ norwegians complaining about their country's politics not being liberal enough 21:09:56 if your tests consume tokens, you won't have infinite loops 21:10:24 at least you have THAT assurance, with those side-effects 21:10:27 oerjan: i briefly googled it and failed to come up with any info on why she actually applied for asylum, though 21:10:34 elliott: well the policy is being loosened up a tiny bit because of her. 21:10:38 ZOMGMODULES: i'm practically a nazi 21:10:47 elliott: she didn't, her parents did when she was a child 21:10:50 expects are... more like exit()s in C 21:10:50 afair 21:10:53 oerjan: well, same thing 21:11:05 ZOMGMODULES: right but like if you have a 21:11:10 unless you do some fancy catching thing with them 21:11:12 while (expr()); 21:11:15 return accept(FOO); 21:11:15 and like 21:11:17 you have the expr be 21:11:18 in which case they're more like throw 21:11:23 (abc. 21:11:27 (abc.] 21:11:28 say 21:11:32 there's no way that'd valid 21:11:35 and it'll look for a FOO 21:11:37 which it won't find 21:11:39 thus returning false 21:11:39 although 21:11:42 i guess it will fail at the top level 21:11:46 but otoh 21:11:48 that'll be like 21:11:52 "found ], but I was expecting EOF or expression!" 21:11:52 you will eventually run out of tokens 21:11:56 because it'll fail at the top level 21:12:02 ZOMGMODULES: accept doesn't consume if it doesn't match 21:12:12 oh, right 21:12:15 (basically from now on, you can apply for work permit in norway even if you've been thrown out for not getting asylum.) 21:12:15 anyway, my point is, I think expect gives you nicer error messages 21:12:23 because otherwise errors bubble up to the top error 21:12:46 THAT IS WHY ZOMGMODULES USES IT ALMOST EXCLUSIVELY 21:12:53 ZOMGMODULES: GOOD ADVICE 21:12:59 *top level 21:13:07 I even do things like { if tokeq(";") { expect(";"); ... } } 21:13:12 lol 21:13:16 aka, accept 21:13:22 simplicity > efficiency 21:13:58 ZOMGMODULES: um but that's exactly what accept is :D 21:14:06 yes 21:14:07 well, technically it doesn't re-compare the current token 21:14:22 that's why accept is an UNNECESSARY 21:14:55 ZOMGMODULES: BLAHHH 21:14:59 but still juiceful 21:15:08 also, ... 21:15:19 ZOMGMODULES: so your routines, do they call the tokeniser or does the tokeniser call it? 21:15:35 void parse_foo() { expect("foo"); } void parse_bar() { if (tokeq("foo")) parse_foo(); } 21:15:46 that d. richard hipp guy thinks the latter is totally more cooler 21:15:52 -!- Tachycek has changed nick to You_got_AIDS. 21:15:56 -!- You_got_AIDS has changed nick to Tachycek. 21:16:01 Tachycek: i already had aids :'( 21:16:14 elliott: and how was it like ? 21:16:17 was it sexy ? 21:16:23 Tachycek: yes. almost painfully. 21:16:27 ZOMGMODULES: actually with recursive descent the latter would only be possible with continuations i think :D 21:16:29 elliott: I call the tokenizer, generally 21:16:29 elliott: basically the norwegian government refuses to acknowledge the obvious fact that some people may not actually _agree_ when it decides they won't be in danger if sent back, and punishes them for acting rationally on that disagreement, whether or not they're correct. 21:16:32 great 21:16:34 elliott: you got it 21:16:41 elliott: with something continuation-like, anyway 21:16:44 ZOMGMODULES: which means: we need that C continuation lib! 21:16:55 ZOMGMODULES: I APPROVE OF MY PROBLEM-SOLVING METHOD 21:17:02 once, in Erlang, I did neither. I had the lexer and parser be seperate processes which messaged each other 21:17:15 oerjan: hmm, punishes them how? I FEEL OUT OF MY LEAGUE, I THOUGHT SKIMMING /R/NORWAY WOULD PREPARE ME FULLY FOR THIS STRANGE CROSS-CULTURAL EXPERIENCE 21:17:22 elliott: tell me more about the HAARP treatment it surely arouses me 21:17:22 ZOMGMODULES: that's ... almost beautifully hideous 21:17:41 Tachycek: basically we had to have sex with goats while the whole room vibrated. 21:17:50 THAT'S HOW EVIL THE GOVERNMENT IS 21:17:59 oh noes 21:18:02 thats so sad 21:18:07 sad like my elbow 21:18:37 how disappointed the room should have been that it is not a vibrator and cannot go into your ass 21:18:43 must 21:18:53 * Tachycek is crying 21:19:01 -!- azaq23 has joined. 21:21:56 ZOMGMODULES: so does writing a compiler that compiles to machine code hurts? 21:22:02 i'm assuming you've done it. 21:22:22 like, without libc 21:22:27 maybe i should make an assembler dsl thing... 21:26:39 I think I shall work on that IRC bot. 21:26:48 That darnèd IRC bot. 21:27:15 -!- tswettbot has joined. 21:27:16 I am sending a message. 21:28:24 I am sending /this/ message. 21:29:05 the message is the medium 21:29:30 I am sending no message. 21:29:58 tswettbot: you rock 21:30:12 * ZOMGMODULES is hoping a dozen debug windows just opened up for tswett 21:30:47 < elliott> ZOMGMODULES: so does writing a compiler that compiles to machine code hurts? <-- no, not really... depends, I guess 21:31:06 tswettbot, I dismiss you. 21:31:08 or what was it. 21:31:11 tswettbot: you are dismissed. 21:31:15 I dismiss you, tswettbot. 21:31:31 -!- tswettbot has quit (Ping timeout: 246 seconds). 21:31:33 ZOMGMODULES: yeah but my compiler has to have, liek, two backends! 21:31:42 ZOMGMODULES: x86-64/linux and x86-64/NOTHING 21:31:54 Oh, tswettbot ran successfully again. 21:31:59 (i decided that bootstrapping a compiler on linux is more productive for @ than writing an optimising compiler in x86-64 assembly) 21:32:03 so like 21:32:23 elliott: then it's not, generally speaking, that painful... everything is partitioned nicely. 21:32:25 c interpreter of lang -> compiler from lang to x86-64/linux written in lang -> write a freestanding backend -> prophet 21:32:31 lexer, parser, ast, codegen. 21:32:42 ZOMGMODULES: oh the compiler parts don't scare me. 21:32:46 it's the x86-64 machine code part. 21:32:53 it's if you want to do it all "narrow" where it gets hairy 21:32:54 (i refuse to use assembly because i want a repl :)) 21:33:02 but yeah like 21:33:05 i don't want to be all 21:33:11 self lolCode: 3243482349234 21:33:13 nothing too painful about generating x86 code, is there? 21:33:16 *. 21:33:21 ZOMGMODULES: well no. but i want mnemonics! 21:33:24 and generating those will be painful. 21:33:36 you want to generate assembler? 21:34:07 ZOMGMODULES: no. 21:34:17 ZOMGMODULES: i want to generate machine code using an assembler-ish dsl 21:34:20 then you lost me at "mnemonics" 21:34:22 -!- Zuu has quit (Ping timeout: 260 seconds). 21:34:33 self mov: eax : 42. 21:34:42 elliott: have you done threading with Smalltalk? 21:34:47 self mov: eax : ebx value. 21:34:50 self mov: eax : (ebx + 1) value. 21:34:54 then you (in effect) want to write an assembler, and generate assembly for that assembler 21:34:57 tswett: no. why'd you want to? 21:34:58 :P 21:35:07 ZOMGMODULES: yes. that's true. but i don't want to _generate_ it, i want to invoke its routines directly. 21:35:10 which is a bit different 21:35:16 ZOMGMODULES: and the assembler doesn't actually have to be convenient... 21:35:20 like, (ebx + 1) value could be 21:35:23 ebx valueOffset: 1 21:35:25 or, you know 21:35:27 OTHER PAINFUL THINGS 21:35:32 and i don't actually need mov 21:35:33 vs like 21:35:36 movl 21:35:47 corollary: at&t syntax assemblers are not real assemblers, they are low-level APIs :) 21:35:52 elliott: then you are writing a codegen. 21:35:58 yes. yes i am. 21:36:05 but e.g. the plain english codegen just does things like 21:36:11 intel $8C98HF9398FN398HG98EH9JQ 21:36:18 i don't want to be the kind of person who does that. 21:36:22 a codegen with an API whose entry points have names that mnemonics. much like, well, every API 21:36:27 *that are 21:36:30 -!- cheater- has quit (Ping timeout: 246 seconds). 21:36:38 technically i want to write a codegen backend and an actual codegen 21:36:40 like 21:36:44 mylang->machine code 21:36:46 that uses 21:36:50 bunch of methods->machine code 21:37:12 there are many codegens that let you switch out backends to target a different architecture. if that's what you're saying 21:37:14 -!- cheater00 has joined. 21:37:21 ZOMGMODULES: no no no. 21:37:25 i just want to write an api so i can do 21:37:40 x86 movd: eax : 42. 21:37:42 rather than 21:37:43 elliott: because I'm... oh, never mind. 21:37:51 x86 code: 8394784 21:38:02 and that api sounds like a pain to generate. i guess i could hand-code it 21:38:03 tswett: :-P 21:38:16 tswett: If you're doing it to process each individual line to all the handlers, I think doing it synchronously is cleaner. 21:38:22 elliott: I've basically coded that API (in C, not Smalltalk) 21:38:23 with the handlers forking off if they're going to do some complex computation 21:38:32 -!- tswettbot has joined. 21:38:32 I am sending a message. 21:38:49 I dismiss you, tswettbot, WITH GREAT PREJUDICE AND ANGER. 21:38:50 ZOMGMODULES: sure. it's easy enough for a subset. just IDEALLY i'd generate it from the big instruction table things :) 21:38:54 with the imm8/r and that kind of stuff 21:38:58 immr/8. whatever. 21:39:02 tswettbot: what, you want a period after that? You're not getting one. 21:39:09 I dismiss you, tswettbot. 21:39:15 WHY DOES IT ONLY LISTEN TO YOU 21:39:19 WHYYYYYYY 21:39:23 generating it from an instruction table, yes: I've never done that and it would have some nice to it. 21:39:31 It listens to everyone equally. 21:39:37 it would... have... some... nice... to... it? 21:39:53 * ZOMGMODULES SAYS ONLY EXACTLY WHAT ZOMGMODULES MEANS 21:39:59 I dismiss you, tswettbot. I dismiss you, tswettbot. I dismiss... is this working? 21:40:07 tswettbot: :( 21:40:18 * ZOMGMODULES DISMISSES TSWETTBOT!!!! 21:40:21 i love you, tswettbot 21:40:23 don't listen to the haters 21:40:25 wow, ZOMGMODULES fits better in here than most of the regulars 21:40:29 let's dance off into the sunrise together 21:40:30 ais523: xD 21:40:32 ais523: indeed! 21:40:44 it is true 21:40:53 nobody tell him. 21:41:14 Let's try this one. 21:41:22 ais523: there is nothing that we're not telling you, btw 21:41:24 just clearing that up 21:41:26 -!- tswettbot2 has joined. 21:41:27 I am sending a message. 21:41:31 I dismiss you, tswettbot. 21:41:39 **** you, tswettbot. 21:41:41 elliott: I hope that isn't true, knowing every fact in existence would be a huge drain 21:41:58 (message includesSubString: 'I dismiss you, tswettbot') ifTrue: [bot quit]. 21:41:59 ais523: 0 =/= 1. 0 =/= 2. 0 =/= 3. 0 =/= 4. 21:42:09 tswett: what does bot quit do? 21:42:12 as in, the source 21:42:33 wow, Smalltalk's ifTrue: reminds me of Unassignable 21:42:48 -!- tswettbot has quit (Ping timeout: 246 seconds). 21:43:09 I should start blocking ads, they're becoming more and more annoying. 21:43:18 you don't block ads? 21:43:22 (cue ais523's incredulity) 21:43:23 ha 21:43:23 quit 21:43:23 stream nextPutAll: 'QUIT'; crlf; flush. 21:43:23 stream close. 21:43:28 That's wrong, by the way. 21:43:36 it's worthwhile doing just to prevent them slowing down page loads 21:43:40 tswett: are you sure message is right? :) 21:43:44 ais523: CPU-wise, or bandwidth-wise? 21:43:48 the ads often take longer to load than the page itself 21:43:56 and normally not exactly bandwidth, but just response time 21:43:59 that's not true. at least not for me. 21:44:09 ah, OK 21:44:14 ais523: my alternative to ad-blocking is not going to sites with obnoxious ads, really 21:44:15 elliott: it was working before. :P 21:44:23 in fact, ads are a pretty good indicator of how useless a site is 21:44:31 CPU is mostly only relevant for JS- or Flash-based ads, which are blocked incidentally by other things 21:44:44 I don't block either :) 21:44:57 meh, they make even legitimate sites work a lot more nicely 21:45:02 -!- tswettbot2 has quit (Remote host closed the connection). 21:45:14 ais523: the main impetus for me considering blocking ads right now is livejournal 21:45:20 -!- tswettbot3 has joined. 21:45:20 I am sending a message. 21:45:23 tswettbot3, do you even think that you're quitting? 21:45:23 every other page load on livejournal greys out and shows an irritating interstitial 21:45:27 I dismiss you, tswettbot3. 21:45:27 that you have to click a tiny X box to dismiss 21:45:31 this is _insanely_ annoying 21:45:42 Er. 21:45:44 I dismiss you, tswettbot. 21:45:46 elliott: I use ad-blockers to block all sorts of annoyances, not just ads 21:46:01 I normally block avatars on forums, for instance 21:46:01 I really ought to give this thing a morph so I can control it. 21:46:24 meh, avatars on forums don't bother me, 90% of a forum's UI is just ego-oriented irritatingness 21:46:30 so blocking avatars wouldn't help much 21:46:43 ais523: also, at least punbb lets you disable avatars in preferences 21:46:50 that requires an account, though 21:46:51 I've never heard of punbb 21:47:04 and I thought you were a vertical space fanatic 21:47:08 -!- Zuu has joined. 21:47:12 it's quite popular. and what do you mean? 21:47:24 given how short forum posts tend to be on many forums, blocking avatars lets you show about three times as many posts in a screenful 21:47:37 as otherwise the posts have to expand to make room for the avatars 21:47:40 not really 21:47:47 i mean 21:47:58 most forums have large enough padding on the left and right side that with a reasonable avatar size limit there is no difference 21:48:05 i guess if it allows like 256 high avatars :P 21:48:22 Oh, I think I know what's happening here. 21:48:24 even 64 high avatars would heighten typical posts in some places 21:48:34 hmm, looks like the maximum on this forum is 128x128 21:48:42 the other one i post on doesn't show the maximum and I'm too lazy to test 21:48:56 The message handler thread grabs a line, processes it, and repeats, until the line grabbed is empty. I thought the line grabbed being empty would only happen once the connection is closed, but now I think it happens if the buffer is empty. 21:49:17 tswett: Why's that in a thread? :p 21:49:55 -!- tswettbot3 has quit (Ping timeout: 260 seconds). 21:50:57 -!- tswettbot4 has joined. 21:50:57 I am sending a message. 21:51:07 Because I don't want the entire VM to block every time I wait for a message. 21:51:27 tswettbot4: yo dude, shouldn't you be throwing a failed assertion right about now? 21:52:10 tswett: oh, right 21:52:20 tswett: shouldn't you abstract the threaded line-reader into another class? 21:52:25 tswettbot4: I dismiss you, tswettbot. 21:52:26 with some thing for setting up a callback for "line received" 21:52:36 then you could hide the necessity of the ugly threadedness :) 21:52:38 -!- tswettbot4 has quit (Remote host closed the connection). 21:52:54 I dismiss you, livejournal. 21:53:08 elliott: I dunno, it's pretty small. 21:53:15 I'm abstracting the message handlers into another class. 21:53:17 ZOMGMODULES: lots of cool people use livejournal. i'm not sure why. 21:53:24 And... remote host closed the connection? Why did that happen? 21:53:31 http://www.google.com/recaptcha/api/image?c=03AHJ_Vutjaxx7sWT-X_rA0M5Zqe7bNiMJc4VpqmdqMIyrJzrwPrCEbHPAdQZG9OEixxe5JrXMYRAjO9iVRo3ViYAw1RsHw6TR06jwIVUGga2IJd8zS9Ttt_H0zHsnO_00EyUUxPoatRhbW1RtfVUF0oVMZqYHm1KCuA 21:53:34 i sure hope ^p was right 21:53:42 -!- tswettbot4 has joined. 21:53:42 I am sending a message. 21:54:29 I dissmiss you, tswettbot. 21:54:30 I dissmiss you, tswettbot4. 21:54:35 I dismiss you, tswettbot. 21:54:39 The nick is hardcoded into that message. 21:54:56 also the spelling, bizarrely enough. 21:55:05 :D 21:55:22 shouldn't it just figure out what i mean and do it? 21:55:49 That will be in tswettbot5. 21:55:53 -!- tswettbot4 has quit (Remote host closed the connection). 21:56:12 -!- tswettbot4 has joined. 21:56:32 -!- tswettbot6 has joined. 21:56:42 I dismiss you, tswettbot. 21:56:46 BOTH OF YOU 21:57:24 What the heck is happening? :P 21:57:47 love 21:57:49 love is happening 21:57:54 so when's tswettbot5 coming out 21:58:08 -!- augur has quit (Remote host closed the connection). 21:59:01 -!- tswettbot4 has quit (Remote host closed the connection). 21:59:01 -!- tswettbot6 has quit (Remote host closed the connection). 21:59:13 ais523: evil prediction: an advertising network will implement an "innovative new anti-adblocker feature" for sites 21:59:29 I've seen sites that use anti-adblockers 21:59:31 ais523: this will involve the ad executing some code to decrypt the stored page html 21:59:34 ais523: and displaying it 21:59:42 however, the advertising networks really like adblockers, or at least don't mind them 21:59:48 Debugging that was the most confusing experience of my life. 21:59:49 so unless you have JS enabled and ad-blocking off, you can't see the page content without breaking the (simple) encryption 21:59:54 because if the ad's never loaded from their servers, they don't have to pay the site for showing it 22:00:03 ais523: heh, right, it's actually profitable for them to support adblockers 22:00:06 and so, people who probably wouldn't click on the ads anyway don't eat into their overheads 22:00:06 -!- Leonidas has joined. 22:00:10 ais523: well, pay-per-view isn't universal 22:00:12 vs. pay-per-click 22:00:19 indeed 22:00:23 but pay-per-click's basically neutral too 22:00:31 whereas pay-per-view likes adblockers 22:00:42 * tswett debugs it better. 22:01:00 hmm... ad networks essentially want the minimum possible number of people to click their ads, so that webmasters and advertisers still use them 22:01:07 -!- tswettbot8 has joined. 22:01:26 -!- Sgeo has joined. 22:01:36 tswettbot8: HOW'S IT GOING, MAN 22:01:37 -!- MigoMipo has quit (Read error: Connection reset by peer). 22:01:42 -!- tswettbot9 has joined. 22:02:37 I dismiss you, tswettbot. 22:02:58 also, I dismiss my lack of incredulity that it's taken tswett this long to get a bot that can now do less than it started with :D 22:03:07 (it no longer says it's sending a message, or quits on command) 22:03:21 -!- Leonidas has left ("Violence is the last refuge of the incompetent"). 22:03:44 I removed the part where it says it's sending a message. 22:03:58 The quitting on command... I'm working on that. :P 22:04:01 -!- tswettbot9 has quit (Remote host closed the connection). 22:04:01 -!- tswettbot8 has quit (Remote host closed the connection). 22:04:03 FSP looks cool 22:04:05 well 22:04:08 cooler than FTP :-P 22:04:13 fsvo cool 22:04:43 Golly gee whiz, I think I've figured it out. 22:04:58 Hey elliott, guess what this does: ['foo' isEmpty ifFalse: [^ true]] whileTrue 22:05:02 hmm 22:05:07 i've forgotten what parse trees look like 22:05:13 ZOMGMODULES: please advise 22:05:16 tswett: returns true 22:05:23 And guess what this does: (['foo' isEmpty ifFalse: [^ true]] whileTrue) not 22:05:29 returns true 22:05:37 You know what I didn't. 22:05:51 ...elide the unnecessary ^? 22:05:52 I was expecting [^ true] to just return true for itself, not the whole running thread thingy. 22:06:03 yes, well, that's blocks for you :) 22:06:04 Does "elide" mean what you think it means? 22:06:07 THIN VS. THICK FUNCTIONS 22:06:17 elide means emit. so yes. 22:06:20 (more or less) 22:06:21 er 22:06:22 *omit. 22:06:39 -!- tswettbot10 has joined. 22:07:08 I dismiss you, tswettbot. 22:07:11 Whoa, I can't believe that worked. 22:07:23 it ... didn't 22:07:33 you realise quit is "QUIT :x" not "QUIT" 22:07:34 right? 22:07:37 fsvo x 22:07:56 You see, I was getting one of those debugger loops, where each debugger that opens crashes, opening another debugger. 22:08:04 I pressed Cmd-., and the debugger loop stopped. 22:08:08 Who'dathunk? 22:08:08 that doesn't sound normal, you know. 22:08:19 Indeed, but apparently it happens to people other than me sometimes. 22:08:39 how can you expect a debugger to be bug-free 22:08:45 :D 22:08:51 at least smalltalk has the foresight to try to debug it 22:09:04 with 22:09:06 itself 22:09:19 ZOMGMODULES: what do asts look like again 22:09:29 elliott: ... 22:09:33 TREES 22:09:35 * tswett runs the bot, expecting something to happen. 22:09:36 they look like TREES 22:09:37 are they fuzzy 22:09:44 Apparently, nothing happens when I run the bot now. 22:09:45 do they warm you up if you hug them 22:09:50 or are they green 22:10:09 ZOMGMODULES: i'm only half joking, why doesn't c have support for data structures :/ 22:10:22 you have to use a hideous enum and a union of structs just to get the simplest kind of data structure, i.e. an adt 22:10:24 -!- augur has joined. 22:10:28 C has fine support for sexprs once you code them up 22:10:35 you have to use a hideous enum and a union of structs just to get the simplest kind of data structure, i.e. an adt 22:10:43 well 22:10:53 to understand asts, read r/trees 22:10:54 and afaict any non-trivial AST is an ADT 22:11:05 * tswett tries changing the bot's nick, to see if that helps. 22:11:12 i usually end up with a hideous enum and a union of structs, but I'm usually not aiming for the simplest kind of data structure 22:11:27 ZOMGMODULES: well it's just... does that e-- 22:11:31 hey i should make them actual smalltalk objects 22:11:32 no no no 22:11:33 that's stupid 22:11:33 -!- tswettbot10 has quit (Ping timeout: 276 seconds). 22:11:38 that would be useful 22:12:06 wow. richard dawkins' guardian.co.uk picture is so derpy 22:12:10 elliott: if you are trying to code objects in C, that's your own damn fault 22:12:10 http://static.guim.co.uk/sys-images/Guardian/Pix/pictures/2009/9/21/1253534142104/Dawkins-bio-pic-001.jpg "harr!" 22:12:15 ZOMGMODULES: i'm not i'm not 22:12:18 just an ast 22:12:23 i briefly considered making the ast nodes smalltalk objects 22:12:24 for like 22:12:27 metacircularity 22:12:29 but that is stupid 22:12:44 struct expr { struct expr *lhs; struct expr *rhs; char *op; } 22:12:48 there's your ast 22:12:59 O YA, AND WHAT IS [] 22:13:04 NULL 22:13:12 WHAT IS 22:13:16 [|x y z| x := 3.] 22:13:29 DOES LHS POINT TO SOMETHING WITH OP=| AND LHS=X AND RHS=(OP=| AND LHS=Y ...) 22:13:33 SO SILY 22:14:17 hey dawkins said scapegoat in this article 22:14:18 :DDD 22:14:23 he wants to control his versions 22:16:24 "The method we recommend is calmly to approach Mr Blair and in a gentle fashion to lay a hand on his shoulder or elbow, in such a way that he cannot have any cause to complain of being hurt or trapped by you, and announce loudly, “Mr Blair, this is a citizens’ arrest for a crime against peace, namely your decision to launch an unprovoked war against Iraq. I am inviting you to accompany me to a poli 22:16:24 ce station to answer the charge.”" 22:16:46 It's working! 22:16:56 Badly! 22:17:27 I have three questions now. 22:17:37 1. Why is it working? 2. Why isn't it working? 3. Why is it working? 22:17:49 tswett: GIMME THE WORLD IMAGE IMA MAKE IT WORK WITH FRIENDSHIP & LOVE 22:18:26 hmm, is it legal for police to stop someone making a citizen's arrest? 22:19:18 elliott: is it illegal to trap someone when citizen's-arresting them? 22:19:36 well, define "trap" 22:19:50 I think it's perfectly legal to stop someone removing themselves from a public place if you're attempting to citizen's-arrest them 22:19:52 or at least, it should be legal 22:19:57 so long as you don't actually use force 22:19:59 I define "trap" as meaning whatever it meant as used in that quote you quoted. :P 22:20:20 (and running away from a citizen's arrest should probably be illegal too, but) 22:20:25 (i'm asking what is, not what should be) 22:20:27 I take it "use force" does not mean "apply a force to the person in question". 22:20:39 -!- oerjan has quit (Quit: Nude gait). 22:20:40 It's difficult to arrest someone effectively without applying any forces to them. 22:21:03 :D 22:21:08 "oops, sorry, i breathed on you" 22:21:42 tswett: afaict citizen's arrests are a bit useless because either they'll run away, ignore you, or be high-profile enough that it won't work :) 22:21:51 -!- FireFly has quit (Quit: swatted to death). 22:22:18 This bot seems to be sending a message for every message it receives. 22:22:26 * oerjan has quit (Quit: Nude gait) 22:22:26 what 22:22:29 That is, to quote Eliezer Yudkowsky, wrong. 22:22:51 tswett, is this supposed to be a trivial bot? 22:23:00 tswett is, to quote Eliezer Yudkowsky, a, person who quotes Eliezer Yudkowsky a lot. 22:23:02 Maybe I should stay away from Smalltalk for bot purposes 22:23:07 (I am pretty sure Eliezer Yudkowsky once said "a".) 22:23:24 Sgeo: no, I'm just bad at Smalltalk. 22:23:34 I made a glaring error here. 22:23:50 Wait, no, I made a less-glaring error here. 22:23:53 tswett: I WANT YOUR WHIRRLED IMAGE 22:23:56 ooh wait 22:23:59 I have a smalltalk transcript 22:24:03 this means i can type things and have them execute 22:24:16 My friend got me a MtG online account as an early birthday gift 22:25:03 elliott: okay, okay, just give me a moment. 22:25:25 whirrled? 22:25:35 Sgeo: world. 22:25:35 -!- tswettbot128888 has joined. 22:25:40 Said in elliottese. 22:25:46 I dismiss you, tswettbot. 22:25:47 I am quitting. 22:25:47 -!- tswettbot128888 has quit (Client Quit). 22:26:05 So apparently the problem all along was that this thing was sending null messages. :P 22:26:14 And I have no idea why that was a problem. 22:26:53 elliottese is a good language 22:26:57 it's basically phonetics 22:27:50 -!- tswettbot has joined. 22:28:07 MY BOT IS PERFECT 22:28:12 hey tswettbot, say this 22:28:25 :( 22:29:01 I dismiss you, tswettbot. 22:29:10 The listener thread probably got killed, eh. 22:29:28 We just need a new bot, then. 22:29:35 -!- tswetttbot has joined. 22:29:38 tswett: hmm, this gc thing _is_ irritating 22:29:44 Er, we need a new nick, then. 22:29:52 elliott: no, I Cmd-.ed it because it was throwing a debugger loop again. 22:29:57 tswett: no i mean in my bot 22:29:58 Throwing the debugger for a loop again. 22:29:59 Oh. 22:30:11 [[stream nextLine. true] whileTrue] fork 22:30:11 Turn garbage collection off. :P 22:30:12 doesn't work 22:30:19 apparently it gets disconnected while waiting for input... 22:30:36 If you're having trouble that I'm not having, I recommend being you. 22:30:39 I mean, being me. 22:30:55 hey tswettbot, say something better this time. 22:31:04 -!- tswettbot has quit (Remote host closed the connection). 22:31:08 Alas, I'm getting a debugger loop again. 22:31:15 I dismiss you, tswettbot. 22:31:38 I stand by my previous statement: :( 22:31:40 hmm 22:31:42 it's not working :( 22:33:03 i'm gonna make a new class so it's less shitty 22:33:54 -!- tswetttbot has quit (Ping timeout: 246 seconds). 22:36:45 -!- tswettbot has joined. 22:36:50 I turned Pharo's sound on. It's really annoying. 22:36:51 WHY IS THIS NO WORK 22:36:53 hey tswettbot, say say say say say 22:37:50 tswett: are you using stream nextLine? 22:38:15 These sounds are *really* annoying. To quote Eliezer Yudkowsky, AAIIIIIEEEEEAAARRRRRGGGHHH. 22:38:57 what sounds? 22:39:04 olsner: the sounds Smalltalk makes when you turn sound on. 22:39:05 ohh 22:39:06 duh 22:39:21 Every time you open or close a window, it goes "TSSK tk". 22:39:34 TSSK tk. TSSK tk. TSSK tk. TSSK tk. TSSK tk. 22:39:50 It disapproves. 22:39:52 A debugger loop sounds like this: TSSK TSSK-tk TSSK-tk TSSK-tk TSSK-tk tk. 22:40:09 -!- tswettbot has quit (Remote host closed the connection). 22:40:15 coppro, anyone else who knows magic? What's a scheme? 22:40:16 http://gatherer.wizards.com/Pages/Card/Details.aspx?multiverseid=212585 22:40:23 It's not legally playable in any formats 22:40:30 -!- tswettttbot has joined. 22:40:43 god 22:40:48 squeak/pharo really sucks 22:40:57 with the whole single-threaded vm thing 22:40:58 elliott: what's better than it? 22:41:02 oh, nothing 22:41:03 ...it's a single-threaded VM? 22:41:05 well 22:41:06 no 22:41:07 it used to be 22:41:09 before this new cog thing 22:41:10 but even then 22:41:12 like 22:41:17 you can either 22:41:20 have simple networking code 22:41:21 or have a gui 22:41:24 THANKS SQUEAK 22:41:27 also the gc stuff is stupid 22:41:34 workspace objects shouldn't get gc'd, or something 22:41:43 Workspace objects should definitely get GC'd. 22:41:56 not before the workspace is closed. 22:42:05 Yes, that makes it not a bad idea. 22:42:18 hey tswettbot, say say say SAY SAY SAY 22:42:25 say say SAY 22:42:27 SAY SAY SAY 22:42:28 SAYYYYYY 22:42:33 hey tswettbot, say PONG 22:42:38 -!- smallbot has joined. 22:42:41 ha 22:42:41 HA 22:42:42 hey tswettbot, say PRIVMSG #esoteric :okay, man 22:42:43 okay, man 22:42:43 <3 22:42:45 smallbot: marry me 22:42:51 hey tswettbot, say QUIT :look what you can do, man 22:42:51 -!- tswettttbot has quit (Client Quit). 22:43:07 To quote elliott, <3 22:43:22 aww 22:43:22 <3 22:43:24 love all aroun 22:43:24 d 22:44:03 um 22:44:05 smallbot 22:44:07 Um? 22:44:08 please ping out so that i can use the gui again 22:44:11 and make you threaded 22:44:12 thanks 22:44:16 -!- tswettbot has joined. 22:44:23 elliott: Cmd-. You use a Mac, right? :P 22:44:26 Something-. 22:44:33 hey tswettbot, say NICK elliottbot 22:44:33 alt-. did it 22:44:33 -!- tswettbot has changed nick to elliottbot. 22:44:33 thanks 22:44:36 OOH 22:44:39 hey tswettbot, say NICK faggot 22:44:39 -!- elliottbot has changed nick to faggot. 22:44:45 hey tswettbot, say JOIN #freenode 22:44:46 hey tswettbot, say QUIT 22:44:46 -!- faggot has quit (Client Quit). 22:44:49 hey tswettbot, say PRIVMSG #freenode :i'm a faggot 22:44:52 tswett: THAT'S WHAT YOU GET 22:44:55 <3 22:45:00 to quote eliezer yudkowsky, "faggot" 22:45:08 that was probably stupid 22:45:11 but i'm laughing anyway 22:45:17 -!- Tachycek has changed nick to Me_faps. 22:45:19 tswett: hey, you typed pretty fast there 22:45:21 -!- Me_faps has changed nick to Tachycek. 22:45:21 you're getting better ;D 22:45:27 I typed it before you typed that. 22:45:32 Lame :P 22:46:09 Just kidding. I actually typed "hey tswettbot, say QUIT" after you typed "hey tswettbot, say PRIVMSG #freenode :i'm a faggot". 22:47:27 wtf 22:47:30 -!- tswettbot has joined. 22:47:31 String has endsWith: but not startsWith: 22:47:34 elliott: have at it. 22:47:45 hey tswettbot, say NICK iloveeverybody 22:47:46 NO ELLIOTT I HATE YOU 22:47:46 -!- smallbot has quit (Ping timeout: 276 seconds). 22:47:51 ... :( 22:47:56 i was just trying to be friendly 22:48:06 * elliott cries 22:48:09 Well, too bad. 22:48:15 You should be ashamed of yourself. For everything. 22:48:17 You're a jerrrrrrrrrrrrrrrrrrrk. 22:48:35 How do you pronounce "jerrrrrrrrrrrrrrrrrrrk"? 22:48:41 Nobody knows. 22:48:44 Oh. 22:48:54 tswettbot probably still pings out. 22:48:58 ... 22:49:00 tswett still pings out. 22:49:03 ... 22:49:07 tswettbot still pings out. 22:49:16 The first of those, I had no reason to doubt. The second of those was a typo. 22:49:29 elliott: here, you can go ahead and dismiss the bot. 22:49:33 no 22:49:35 i love it 22:49:39 it's my friend 22:49:56 Oh? I thought it was a jerrrrrrrrrrrrrrrrrrrk. 22:50:01 no, that was tswett. 22:50:04 Oh. 22:50:07 hey tswettbot, 22:50:09 Take out your feelings of anger on the bot! 22:50:19 tswett: i think you are a bad parent and also abusive 22:50:20 hey tswettbot, say 22:50:23 i think tswettbot should go into foster care. 22:50:27 tswettbot doesn't say what you tell it to say any more. 22:50:29 tswettbot: everything is going to be ok 22:50:35 ZOMGMODULES: the space on the end is necessary. 22:50:41 elliott: dismiss it into foster care. 22:50:43 hey tswettbot, say I dismiss you, tswettbot. 22:50:44 NO ELLIOTT I HATE YOU 22:50:44 I am quitting. 22:50:44 -!- tswettbot has quit (Client Quit). 22:50:50 X-D 22:51:03 I made it ragequit! 22:53:30 oh man, smalltalk shares the same braindamage as lua! 22:53:39 exciting! 22:53:41 1-based indexing, huh 22:53:41 (1-indexed arrays) 22:53:44 yes!!! 22:53:57 DOES IT CONFLATE THEM WITH DICTIONARIES LIKE LUA 22:54:01 the best kind of indexing, if you define best as the top element when sorted from worst to best 22:54:05 ZOMGMODULES: NO 22:54:05 BECAUSE THAT IS SOOOOOO AWESOME 22:54:07 IT'S NOT QUITE THAT BAD 22:54:10 ZOMGMODULES: hey wait 22:54:12 No, Smalltalk has lots of kinds of containers. 22:54:14 and lua only has floats 22:54:15 so basically 22:54:21 YES 22:54:22 1.5 is a valid array index 22:54:23 YES YES YES 22:54:23 :DDDD 22:54:31 The worst kind of indexing is indexing by wood. 22:54:36 i propose we all adopt the compromise 0.5 starting array index value 22:54:42 In order to index the array, you must jab a piece of wood into your CPU. 22:55:07 Anyway, feel free to subclass Array to get a zero-indexed Array. :P 22:56:14 -!- BeholdMyGlory has quit (Remote host closed the connection). 22:56:25 omg smalltalk has nice names for indexes 22:56:26 tokens first 22:56:27 tokens fourth 22:56:40 Wow. 22:56:42 :DD 22:56:49 it should be done with the not implemented thing 22:56:50 so you can do 22:57:01 tokens sevenhundredsquillionsixthousandsextillion 22:57:01 THIS IS HOW CHILDREN LEARN 22:57:06 :D 22:57:19 And they go up to ninth. 22:57:27 everything cp... ZOMGMODULES says sounds better in caps 22:57:35 elliott: ahem. tokens sevenhundredsquillionsixthousandsextillionth. 22:57:46 tswett: oh ofc 22:57:47 :D 22:58:11 hmm, yet how do you chop the first element off a smalltalk orderd collection 22:58:20 allButfirst: 1? :P 22:58:29 polynomialEval: thisX 22:58:29 | sum valToPower | 22:58:29 "Treat myself as the coeficients of a polynomial in X. Evaluate it with thisX. First element is the constant and last is the coeficient for the highest power." 22:58:29 " #(1 2 3) polynomialEval: 2 " "is 3*X^2 + 2*X + 1 with X = 2" 22:58:32 yes, sequences should know how to do this 22:58:33 allButFirst, I guess. 22:58:36 (this is my main objection to message passing) 22:58:55 -!- Tachycek has left ("."). 22:59:40 tokens := line findTokens: ':'. 22:59:40 elems := tokens first findTokens: ' '. 22:59:40 prefix := elems first. 22:59:40 args := elems allButFirst. 22:59:40 args add: tokens second. 22:59:41 tswett: deugly plz 23:00:37 elliott: where do you use prefix? 23:00:46 prefix and args are the result 23:00:51 * tswett nods. 23:00:52 soooooooooo........ there's this code, that is never called by these unit tests. but changing the code causes the unit tests to fail. 23:00:54 this is basically a constructor thing :) 23:01:05 Why would you want it to be prettier? :P 23:01:41 it's ugly :D 23:01:43 oh, no. i had wrong method. whew. 23:02:01 ZOMGMODULES: :D 23:02:31 tswett: HOW DO YOU GET ALL BUT THE FIRST AND SECOND EH 23:02:34 allButFirstAndSecond?! 23:02:47 elliott: allButFirst: 2 23:02:51 OR THAT, YES 23:07:53 tswett: there's some fancy StringBuilder thing isn't there? or am i wrong 23:08:09 I haven't a quack. 23:08:12 :D 23:09:54 -!- smallbot has joined. 23:09:55 *sigh* 23:10:03 smallbot: what are you doing here, you broke 23:10:04 Magic Online wants admin access to my computer 23:10:15 * Sgeo glares at Wizards of the Coast 23:10:42 Sgeo: doesn't just about everything? 23:10:55 Well, a lot of old stuff 23:11:17 Docking Station comes to mind rather quickly 23:11:25 elliott: StringBuilder? Java? 23:11:34 olsner: probably that's what i was thinking 23:11:54 do we even allow talking about Java in here? :/ 23:12:41 smallbot: come on, die, fucker! 23:13:07 -!- elliotts_favorit has joined. 23:13:24 -!- smallbot has quit (Client Quit). 23:13:25 olsner: well, that depends. Is Java an esoteric language? 23:13:28 yess 23:13:33 elliotts_favorit is elliott's favorit. 23:13:46 -!- smallbot has joined. 23:13:48 wait 23:13:49 Hello! 23:13:50 that should be flooding 23:13:52 Hello! 23:13:57 uhh 23:13:57 Hello! 23:14:04 how are you not pinged out, little buddy 23:14:04 Hello! 23:14:12 -!- tswett has set topic: ESOTERIC LANGUAGES | Catch sufficiently hello world. | An unusually not mephitic forum. | Enjoy being locked in your matrix of solidity. | yoob: http://catseye.tc/lab/yoob/applet.html (+Etcha +fixes) | Logs: http://tunes.org/~nef/logs/esoteric/?C=M;O=D, http://codu.org/logs/_esoteric/. 23:14:17 oh it only does it on privmsgs 23:14:17 Hello! 23:14:26 tswett: isn't it cute 23:14:27 Hello! 23:14:29 smallbot: <3 23:14:30 Hello! 23:14:30 Yeah! 23:14:31 Hello! 23:14:38 Get two of it in here. Now. 23:14:38 Hello! 23:14:42 :D 23:14:42 Hello! 23:14:53 DOING SO 23:14:53 Hello! 23:14:55 this may be painful 23:14:55 Hello! 23:14:57 -!- smallbot has quit (Remote host closed the connection). 23:14:58 :D 23:14:59 oops 23:15:01 saved and quat the world 23:15:02 will fix 23:15:09 quat - past tense of quit 23:15:16 Open two of the world. 23:15:18 -!- storkbot has joined. 23:15:20 Nothing can go wrong. 23:15:24 -!- smallbot has joined. 23:15:28 Who is storkbot? 23:15:28 Hello! 23:15:32 oh wait 23:15:32 Hello! 23:15:40 |help 23:15:41 ZOMGMODULES: Help is available for: assignment expressions print goto tell source errors 23:15:41 Hello! 23:15:42 Hello! 23:15:46 |errors 23:15:47 ZOMGMODULES: Unknown command. Type '|help' for help. 23:15:47 Hello! 23:15:47 the other smallbot is still using its nick 23:15:48 Hello! 23:15:48 Hello! 23:15:48 -!- smallbotx has joined. 23:15:49 here we go 23:15:50 Hello! 23:15:50 Hello! 23:15:50 Hello! 23:15:50 Hello! 23:15:50 Hello! 23:15:50 Hello! 23:15:50 Hello! 23:15:50 |help errors 23:15:50 Hello! 23:15:50 Hello! 23:15:50 Hello! 23:15:50 ZOMGMODULES: To get more interesting error messages, set ~/errmsgs=snark. 23:15:55 um 23:15:55 it 23:15:56 stopped 23:15:59 |~/errmsgs=snark 23:16:00 ZOMGMODULES: snark 23:16:01 -!- smallbot has quit (Read error: Connection reset by peer). 23:16:01 -!- smallbotx has quit (Read error: Connection reset by peer). 23:16:05 |foo 23:16:06 ZOMGMODULES: That's wonderful for you! 23:16:07 well that was uneventful 23:16:11 |~/errmsgs=poop 23:16:11 elliott: poop 23:16:12 |hello!!! 23:16:13 elliott: Unknown command. Type '|help' for help. 23:16:16 :( 23:16:23 |poop 23:16:24 ZOMGMODULES: What is this I don't even 23:16:32 |save 23:16:32 ZOMGMODULES: State saved. 23:16:35 storkbot: YOU LIE 23:16:36 ZOMGMODULES: That's wonderful for you! 23:16:46 Anyway, as you can see, elliotts_favorit is immortal. 23:16:49 |~/errmsgs=snark 23:16:49 elliott: snark 23:16:51 Nothing can make it quit. 23:16:58 |copulate 23:16:58 elliott: wat. 23:17:02 |wat yourself 23:17:02 elliott: omg u errored teh syntax!!1! 23:17:06 |no i di't 23:17:06 elliott: That's wonderful for you! 23:17:11 |you too! :) 23:17:12 elliott: That's wonderful for you! 23:17:14 |thanks! 23:17:15 elliott: What is this I don't even 23:17:20 |we all don't even. 23:17:20 elliott: What is this I don't even 23:17:23 and the scary thing is that that feature requires lua 5.1 23:17:26 ZOMGMODULES: needs moar errors 23:17:30 ZOMGMODULES: can you let us define our own errmsgs 23:17:30 like 23:17:42 be able to set |~/errmsgs=('That's stupid.'; 'You''re stupid.') 23:17:47 (best string and list syntax, bcuz its different) 23:17:52 |~/errmsgs=('That's stupid.'; 'You''re stupid.') 23:17:53 ZOMGMODULES: ('That's stupid.'; 'You''re stupid.') 23:18:03 yes but it doesn't actually... use them 23:18:09 |true that 23:18:09 ZOMGMODULES: Unknown command. Type '|help' for help. 23:18:15 not hard to implement 23:18:16 ANYWAY 23:18:21 -!- tswett_otherbot has joined. 23:18:22 SO IMPLEMENT IT 23:18:23 storkbot: DIE DIE 23:18:24 ZOMGMODULES: Unknown command. Type '|help' for help. 23:18:29 |what is stockbot supposed to do? 23:18:29 tswett: Unknown command. Type '|help' for help. 23:18:30 storkbot: helllllp 23:18:31 ZOMGMODULES: Unknown command. Type '|help' for help. 23:18:36 storkbot: help 23:18:36 ZOMGMODULES: Help is available for: assignment expressions print goto tell source errors 23:18:44 storkbot: help goto 23:18:44 ZOMGMODULES: To evaluate a string as a command, issue 'goto command'. This discards control context. 23:18:53 storkbot: goto help 23:18:53 ZOMGMODULES: Help is available for: assignment expressions print goto tell source errors 23:18:58 oh yeah, THIS bot. 23:19:02 ok 23:19:12 what's the thing to activate a block in smalltalk 23:19:12 * ZOMGMODULES shuffles over to the other monitor 23:19:14 -!- storkbot has quit (Remote host closed the connection). 23:19:19 |go- 23:19:19 :( 23:19:26 good night 23:19:35 -!- ZOMGMODULES has changed nick to storkbot. 23:19:37 -!- storkbot has quit (Quit: leaving). 23:19:48 Look, tswett can control me. 23:20:06 tswett: 23:20:08 what's the thing to activate a block in smalltalk 23:20:18 All he has to do is open up the Process Browser, find my process, inspect me, and send me me the sendMessage: message. 23:20:27 elliott: value, I think. 23:20:31 [3] value === 3 23:20:37 with an arg :p 23:20:42 ah 23:20:44 value: 23:20:49 [:x | x + 1] value: 4 === 5 23:21:01 hmm, maybe that way of doing it sucks 23:21:28 -!- sedbot has joined. 23:21:31 yo who am i 23:21:35 sedbot: hi 23:21:51 ais523: btw, re your liquid democracy thing 23:21:57 ais523: (that you didn't invent, but) 23:21:58 hmm, my bot is useless :) 23:22:01 ais523: i invented the BEST SYSTEM EVER based on it 23:22:07 im out yo 23:22:13 -!- elliotts_favorit has quit (Quit: elliotts_favorit). 23:22:30 sedbot: QUIT 23:22:30 -!- sedbot has quit (Client Quit). 23:23:00 noo 23:23:03 rbing the bots bacq 23:23:08 -!- cheater- has joined. 23:23:12 tswett_otherbot is still here. 23:24:13 I think if I patch ZbasuBot, some of the patches will take effect right away. :P 23:24:31 had a hard time getting the bot working, but then I realized that I was just connecting to the wrong port number 23:24:47 * elliott still finds squeak/pharo a bit awkward to use 23:26:03 -!- cheater00 has quit (Ping timeout: 246 seconds). 23:26:14 tswett: can i throw money at you to make you write @ 23:26:19 hmm, could be fun to extend that sed bot to something vaguely useful 23:26:23 @ 23:26:24 Next. 23:26:45 tswett: no, the os 23:26:45 -!- tswett_otherbot has quit (Ping timeout: 246 seconds). 23:26:49 Oh. 23:26:54 Tha--hey! 23:27:02 What? It errored? 23:27:43 tswett: WOULD MONEY WOR 23:27:44 K 23:27:48 it pung out? 23:27:54 No, I already have enough money, but not enough time. 23:28:02 You should pay me time for money. 23:28:34 -!- tswettbot has joined. 23:28:37 I should try to fix that thing that causes every error to cause a debugger loop. 23:28:42 tswettbot: be better this time. 23:29:28 -!- smallbot has joined. 23:29:32 say Hello, world! 23:29:35 ... :( 23:29:52 It... timed out. 23:29:59 oh a bug 23:30:00 the lames 23:30:46 I guess this bot is impatient. 23:30:57 btw, "elliotts_favorit", was that just favorite truncated or was it scandinavian? 23:30:58 -!- smallbot has quit (Read error: Connection reset by peer). 23:31:18 whoops 23:31:22 killed the wrong process 23:31:27 how can i tell pharo to save from the console >_> 23:31:35 -!- tswettbot has quit (Remote host closed the connection). 23:31:44 elliott: you have a console? 23:31:55 I have my terminal :P 23:31:59 That I started Pharo in. 23:32:05 Basically I killed the input-reading thread>_> 23:32:07 *thread >_> 23:32:11 Which includes mouse/keyboard 23:32:32 Why would you want to save that? 23:32:45 Because the world has code... 23:32:46 If the image is broken, quit it and recover your changes. 23:32:49 Note that I have never done this. 23:32:49 Oh, right. 23:32:54 Yes, but it doesn't have an input-reading thread. :P 23:33:55 -!- smallbot has joined. 23:34:00 say hello 23:34:05 FUCK YOU WHORE 23:34:22 elliott, you will like the randomised name of my current dwarf fortress embarkment: Boatprison. 23:34:34 ugh 23:34:35 still borked 23:36:04 DIE STUPID BOT DIE 23:37:00 smallbot: die 23:37:00 die 23:37:01 die 23:37:01 die 23:37:01 die 23:37:02 die 23:37:02 die 23:37:04 die 23:38:28 -!- smallbot has quit (Ping timeout: 276 seconds). 23:38:30 i'll just wait for it to ping out 23:38:30 yay 23:38:31 good timing 23:38:40 -!- smallbot has joined. 23:39:37 say hello 23:39:42 tswett: it's a bit retarded. :( 23:40:32 So is tswettbot. 23:40:35 It's so retarded that it isn't here. 23:40:39 yeah. 23:40:41 tard. 23:42:33 It's a bit smarter now. 23:42:36 -!- tswettbot has joined. 23:42:42 hey tswettbot, say nothing at all 23:42:45 hey tswettbot, say PRIVMSG #esoteric :nothing at all 23:42:48 hey tswettbot, die 23:42:58 See how smart it is? 23:43:17 -!- smallbot has quit (Ping timeout: 260 seconds). 23:43:41 the smartest 23:43:55 now i'm going to do something less painful, like suicide 23:44:07 maybe i'll write storkbot but better :) 23:44:20 just as long as i don't end up writing a proper parser 23:44:29 i could make it like tcl, everything is a string! 23:54:23 Is there a reason to like Smalltalk more than Newspeak? 23:55:05 tswett: So hey, Redivider! 23:56:16 -!- ZOMGMODULES has joined. 23:56:21 ZOMGMODULES: hi! 23:56:25 ZOMG HI 23:56:28 ZOMGMODULES: plz not to be suing me for what i've done 23:56:47 WHAT HAVE YOU DONE 23:56:56 ZOMGMODULES: DECIDED TO MAKE A BOT THAT'S ALL THAT STORKBOT COULD BE 23:57:01 :( 23:57:08 what does that mean, though? 23:57:09 like, |tell? who needs that when you can just append to someone's inbox array??? 23:57:19 or when lambdabot's here, use it 23:57:24 IF YOU WON'T NURTURE THIS POSSIBLE SHITTY LANGUAGE, I WILL 23:57:46 i nurture it... on and off 23:57:47 i don't actually know what i mean 23:57:58 i don't think it's a language yet exactly 23:58:04 yeah. but it SHOULD be. 23:58:19 total agreement 23:58:43 hmm, the "permissions" on variables sound like fun... like, you want the inbox array to be append-only for everyone else 23:58:46 i was going to... implement persistence 23:58:53 -!- storkbot has joined. 23:58:57 or maybe you just need ~foo/inbox to automatically erase itself and append to ~foo/msgs 23:58:58 where msgs is private 23:58:59 except now i look at its lua source code and i hate it... oh hi storkbot 23:59:04 ooh! ooh! OOH! 23:59:08 ~foo/send should be a FUNCTION 23:59:09 |~/ 23:59:10 ZOMGMODULES: 23:59:13 that can obviously access ~foo/inbox 23:59:15 |~/* 23:59:15 ZOMGMODULES: Unknown command. Type '|help' for help. 23:59:17 so ~foo/send just appends to the inbox 23:59:21 ZOMGMODULES: AWESOME Y/N 23:59:37 i was thinking about how to distinguish commands from variables 23:59:45 i have no idea 23:59:50 see, i just solved it, don't distinguish! 23:59:54 in fact 23:59:58 just expand variables with like