00:01:33 <tswett> But every graph is representable in three dimensions.
00:07:30 <fizzie> 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:11:02 <myndzi> < tswett> What's that sixth one?
00:11:49 <myndzi> the limits are fairly straightforward
00:12:13 <myndzi> it won't accept lines that would make it output lines long enough that it increases my throttling score significantly
00:12:22 <myndzi> it won't draw guys that would run into each other (or my name)
00:12:28 <myndzi> and there is a bit of a rate limit
00:13:18 <myndzi> 4d maze sounds interesting
00:13:23 <fizzie> Log-grepping seems to show some rather long ones.
00:13:23 <tswett> \m/ \m/ \m/ \m/ \m/ \m/
00:13:34 <myndzi> yeah, well, i can break the rules
00:14:00 <myndzi> re: maze; would you have it something like, every movement moves you through the 4th dimension
00:14:04 <myndzi> or you could move at will?
00:14:34 <myndzi> (oh yeah, also the rocker dude needs +1 character on either side)
00:15:13 <myndzi> i remember when i learned that angband took influences from the Amber series
00:15:30 <myndzi> that i was thinking about ways to make a game like that able to implement walking in shadow
00:15:49 <myndzi> some sort of seeded randomization based on a coordinate system was what i wound up with
00:15:59 <myndzi> where you could like, hold a meta-key while moving
00:16:04 <myndzi> and it would also move you on the coordinate system
00:16:20 <myndzi> dunno how you'd generate subtle changes in the environment with significant randomizer changes though
00:17:11 <myndzi> 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 <myndzi> and the inbetweens would be generated somehow by a combination of parameters of the nearby anchor points
00:17:42 <myndzi> i think that'd be more interesting than a 4d maze anyway ;)
00:17:59 -!- Mathnerd314 has joined.
00:21:00 <myndzi> have you read the Amber series?
00:22:15 <myndzi> it utilizes the "many worlds" idea
00:22:32 <myndzi> where there are infinite parallel existences you know?
00:22:42 <myndzi> except in this setting, there is one "true" world, Amber
00:22:42 <Zwaarddijk> has anyone made a game in fractal dimensions?
00:22:53 <myndzi> and all the other worlds are somehow lesser; shadows of Amber, if you will
00:23:04 <myndzi> extending outwards towards chaos
00:23:26 <myndzi> the princes of amber have the ability to "walk in shadow" (i think that's how they phrased it?)
00:23:36 <myndzi> which is essentially moving away from the true reality through all the many variants
00:23:50 <myndzi> it involves physical movement and some sort of internal concentration
00:24:14 <myndzi> 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 <Mathnerd314> I thought there were 2 true realities... order and chaos (one was Amber, the other had some name I forgot)
00:24:22 <myndzi> supposedly arriving at your destination means you have to know to perfection all the details
00:24:25 <fizzie> 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 <myndzi> oh yeah, i guess chaos is also a true reality
00:24:51 <myndzi> anyway, the point is to describe what i was getting at in terms of roguelikes ;)
00:25:15 <myndzi> which is the ability to navigate intentionally through "infinite" variants with various notable characteristics
00:25:37 <myndzi> in some fashion that is both programmable and not so obscenely obtuse that you couldn't play it as a game
00:25:45 <myndzi> while trying to stay somewhat true to the source
00:26:09 <myndzi> it shares some traits with the 4d maze idea, which is what brought it back to mind
00:26:53 <myndzi> 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 <myndzi> 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 <fizzie> 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 <myndzi> oh, i keep forgetting to play Braid
00:31:21 <myndzi> i don't do much gaming, but that one interested me
00:31:30 <quintopia> someone explain to me the following python code:
00:31:32 <quintopia> 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:32:36 <quintopia> 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 <Sgeo> My 4d maze is a bit banal
00:36:20 <quintopia> what list does that enumerate thing make?
00:44:40 <Sgeo> 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 <fizzie> 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:52:02 <tswett> Well, that was anticlimactic.
00:55:53 <Gregor> Welp, won the Halstead award, just in time to not be able to use it for libc.so :P
00:56:09 <fizzie> 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 <tswett> What's the Halstead award?
00:57:20 <quintopia> fizzie: i can't even see where it is changing the value of v
00:58:21 <fizzie> quintopia: d, v = d+1, <new value of v> is the body of the loop.
00:58:45 <quintopia> oh, that's two assignments using the same =
00:59:01 <quintopia> had no idea python could be so hard to read
00:59:02 <fizzie> Yes; that's also done in the initialization.
00:59:36 <fizzie> 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 <tswett> Languages without multiple assignment are annoying.
01:00:36 <tswett> x, y = y, x; is a better way to swap two variables than tmp = x; x = y; y = tmp;.
01:01:30 <Sgeo> Halstead award?
01:01:44 <fizzie> 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 <Gregor> Wrong Halstead award X_X
01:04:10 <fizzie> Then you must be talking about Halstead Property, LLC, a real estate company.
01:04:40 <fizzie> "The E. Bayard Halsted Scholarship In Science, History and Journalism"?
01:04:50 <Gregor> Yup. They awarded me ¾ of Somalia.
01:06:05 -!- tswettbot has joined.
01:07:38 <tswett> Wait, my GUI's unfrozen. How is this?
01:07:57 -!- tswettbot2 has joined.
01:08:22 <fizzie> 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 <tswett> Now my GUI's frozen again.
01:09:19 <tswett> I wonder if it will unfreeze the moment tswettbot pings out.
01:09:29 <tswett> Which ought to be... soonish.
01:09:40 <tswett> Let's talk about fun things in the interim!
01:09:53 <tswett> Like gelatinous spheres filled with liquid.
01:10:22 -!- tswettbot has quit (Ping timeout: 246 seconds).
01:10:34 <tswett> 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 <tswett> 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:37 -!- tswettbot has joined.
01:19:47 <tswett> There, tswettbot can send messages now.
01:20:01 <tswett> 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: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 <tswett> 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 -!- tswettbot has quit (Client Quit).
01:22:06 <tswett> 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 <tswett> 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 <catseye> 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:38 <tswett> tswettbot knows that the people in #python probably wouldn't be happy to see it.
01:31:52 <tswett> You know, in Smalltalk, I'm still not clear on the difference between using a caret and not using a caret.
01:32:09 <catseye> tswett: shall I assume it's written in Smalltalk?
01:32:38 <catseye> I would certainly *like* for that to be true.
01:33:35 <tswett> 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:45:34 -!- tswettbot has quit (Remote host closed the connection).
01:45:56 -!- tswettbot has joined.
01:46:22 <Sgeo> 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:42 <oklopol> i take a 12 hour nap and suddenly you people have talked here for lines and lines
01:47:46 -!- tswettbot has joined.
01:47:48 <oklopol> i'm not gonna read any of it
01:48:15 <tswett> Let's see how bad my off-by-one errors are.
01:48:21 <tswett> hey tswettbot, say something.
01:48:28 <oklopol> if you said anything worth hearing during those hours, please resay it
01:48:31 <tswett> You know what, I think I forgot to make it a PRIVMSG. :P
01:48:39 <tswett> hey tswettbot, say PRIVMSG #esoteric :Okay.
01:48:44 <tswett> hey tswettbot, say PRIVMSG #esoteric :Okay.
01:49:05 <oklopol> are you trying to write a bot?
01:49:44 <tswett> It crashed, causing a debugger to open. Whenever a debugger is opened, it crashes, causing another debugger to open.
01:49:55 <tswett> The result is that there are now dozens of debuggers open.
01:50:03 <tswett> 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 <tswett> Dear Pharo: ???. Love, tswett.
01:51:16 -!- tswettbot has joined.
01:51:28 <tswett> Okay. It hasn't crashed yet. That's good.
01:51:35 <tswett> Yep, still no crashing.
01:51:52 <tswett> Maybe it will crash when I say "hey tswettbot, say ".
01:52:01 <copumpkin> tswett: got tired of category theory, eh? :
01:54:17 <tswett> I like to study more than one topic. :)
01:54:41 <Sgeo> 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 <oklopol> tswett: i bet i draw my commuting diagrams with much prettier lines than you
01:58:49 -!- augur has joined.
01:59:12 <oklopol> you're better off writing bots u'll never learn to draw them quite as neatly as me
01:59:16 <tswett> There could be something horribly wrong with this code:
01:59:17 <tswett> line := stream nextLine.
01:59:17 <tswett> line isEmpty ifTrue: [false] ifFalse: [msgHandlers do: [:handler | handler bot: self heard: line]. true].
01:59:33 <tswett> (And this is #esoteric. We paste five lines here.)
01:59:55 <tswett> It declares a local variable called line.
02:00:15 <oklopol> variable: are you local or global?
02:00:23 <tswett> variable: I know. It will be all right.
02:01:09 <oklopol> variable: you guys are bad for the environment
02:01:09 <tswett> I set x to the current continuation.
02:01:26 <variable> oklopol: not really. I'm only *considered* harmful
02:03:28 <oklopol> *didn't keep wulf's secrets one time too many
02:03:37 <oklopol> (had to check who wrote that)
02:04:09 -!- tswettbot has joined.
02:04:27 <tswett> tswettbot: what? Where did you come from?
02:04:31 <tswett> You errored out, remember?
02:04:39 <olsner> me too! I'm sending a message!
02:04:47 <tswett> Do you respond to things?
02:05:02 <tswett> hey tswettbot, say something and crash.
02:05:11 <tswett> I dismiss you, tswettbot.
02:05:12 <oklopol> "<tswettbot> I am sending a message." it's like it's alive
02:05:23 <tswett> Nope, he's not handling messages. I guess he's going to stay here forever.
02:05:36 <tswett> Wait, why hasn't he been garbage collected? Maybe this debugger is keeping him alive.
02:06:01 <tswett> I... maybe there's a local variable containing him?
02:06:26 <oklopol> maybe variable wanted to revenge you summoning him
02:06:38 -!- tswettbot has quit (Remote host closed the connection).
02:17:25 -!- augur has quit (Remote host closed the connection).
02:18:57 -!- storkbot has joined.
02:19:08 -!- storkbot has quit (Remote host closed the connection).
02:20:30 -!- storkbot has joined.
02:20:37 <storkbot> catseye: Unknown command. Type '|help' for help.
02:20:44 <storkbot> catseye: Help is available for: assignment expressions print goto tell source errors
02:21:09 <catseye> 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 <catseye> last time I grab lua code off a wiki, I tell you
02:23:02 <storkbot> 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 <variable> Tachycek: welcome to #esoteric
02:39:16 <variable> Tachycek: 90% of the time the topic has nothing to do with programming
02:39:18 <Tachycek> well i would think in this channel whitespace seems quite ordinary :D
02:39:22 <oklopol> enjoy being locked in your matrix of solidity
02:39:25 <variable> but 90% of the time the topic is interesting
02:39:44 <ais523> Tachycek: it's the same sort of thing as everything else
02:39:52 <oklopol> he was making a joke about silence i think
02:40:31 <Sgeo> Newspeak got me temporarily interested in programming again
02:40:40 <Sgeo> But it's still not all that mature
02:40:48 <Sgeo> Maybe I should take up Smalltalk again
02:40:55 <oklopol> i'm on a programming course so i might actually have to program a bit soonish :\
02:41:45 <Tachycek> but i didn't see any working serious implementation of it :)
02:41:56 <Sgeo> Tachycek, might want to put on some asbestos clothes
02:43:35 <Tachycek> the logs of this channel are public?
02:44:00 <variable> Tachycek: I know, it put me off at the start too
02:44:08 <variable> Tachycek: ditto - hence the nick
02:45:14 <oklopol> there's currently a picture of me online :|
02:45:34 <oklopol> i won't tell you where before i ask them to remove it though
02:45:47 <Tachycek> variable: yes, there are few things and they were touched several years ago
02:45:52 -!- calamari has joined.
02:46:45 <variable> add this channel to autojoin though
02:47:02 <Tachycek> if i figure out what to do with the nick i will :)
02:47:55 <Tachycek> dont like link ip->nick either :)
02:54:42 <oklopol> http://www.math.utu.fi/henkilokunta/?userID=810 me and my giant hand
02:56:36 <oklopol> my full name is oklopol ominovorol
02:57:24 -!- calamari has quit (Quit: Leaving).
03:10:42 -!- augur has joined.
03:18:25 -!- zzo38 has joined.
03:21:37 <Gregor> You know what they say about guys with big hands.
03:22:42 <oklopol> that they even masturbate with just fat chicks
03:25:31 <zzo38> 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 <oklopol> in a forest nearby, there is this tree that is kinda crooked
03:26:40 <Sgeo> Wait. Are tensors just n-dimensional matrices?
03:26:45 <Sgeo> (looking at Wikipedia)
03:27:09 -!- catseye has quit (Quit: leaving).
03:27:29 <oklopol> i don't know what a "tensor" is, unless it's a vector in a tensor product
03:28:19 <zzo38> 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 <zzo38> I find use of diagrammatic tensor notation can be useful with computing tensors, too.
03:29:45 <oklopol> okay yeah it's what i think it is
03:30:05 <oklopol> 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 <oklopol> if you just look at the tensor space alone, it's just another vector space
03:30:44 <oklopol> but saying "what, tensors are just vectors??" is like saying "what, the product of two numbers is just another number?"
03:31:21 <olsner> the product of two numbers can also be the same number as one or both of them
03:31:33 <oklopol> olsner: same for the tensor product
03:31:41 <oklopol> kind of like direct product, the tensor product is a way to construct another vector space from two spaces
03:31:54 <olsner> yay! I know a thing about the tensor product now
03:32:09 <oklopol> olsner: the result can be isomorphic to one of the components
03:32:40 <Sgeo> This went over my head as soon as you said space, I think. Or maybe product
03:32:50 <oklopol> Sgeo: you don't know vector spaces?
03:33:03 <Sgeo> I know vectors
03:33:39 <oklopol> vector spaces are just an axiomatization of your usual vectors in R^n
03:34:43 <oklopol> 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 <oklopol> anyhow you can do tensor products without the axioms
03:35:13 <zzo38> 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 <Sgeo> I'm honestly not even paying attention right now
03:36:17 <Sgeo> This is way over my head for casual glances, and I can't do more than casual glances right now
03:36:55 <oklopol> 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 <oklopol> Sgeo: no problem, i'm not trying to teach you right now
03:38:13 <oklopol> just saying stuff because it's fun
03:38:41 <oklopol> i have no idea what zzo38 is saying though
03:38:56 <oklopol> "components laid out horizontally are multiplied using tensor product"
03:39:07 <zzo38> oklopol: But I am saying too, and so are you are also correct too
03:39:18 <zzo38> oklopol: I mean in a tensor diagram.
03:39:28 <oklopol> i don't know what those are, sry
03:39:33 <zzo38> (Sometimes tensor multiplications are written using diagrams)
03:42:40 <oklopol> 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 <oklopol> it can be proven that such (W, *) always exists, and is unique up to isomorphism (that part is obvious)
03:45:35 <oklopol> 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 <oklopol> so all bilinear maps can be "routed" via the tensor product
03:47:16 <oklopol> 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 <oklopol> (where again f : UxV -> X for some space X)
03:49:20 <oklopol> 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 <oklopol> the tensor diagram page is way over my head
03:55:57 <zzo38> Yes it is useful in physics
03:57:48 <oklopol> all you need is addition and multiplication and vectors with three components
03:57:59 <oklopol> and sometimes, SOMETIMES, a small group.
03:58:06 <zzo38> 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 <oklopol> WELL THAT WAS KIND OF RUDE
04:00:49 -!- zzo38 has joined.
04:02:21 <zzo38> I looked at the log file, the glogbot logs does not have the quit message, it seems?
04:03:13 <oklopol> what does it mean to do "matrix multiplication horizontally"
04:04:00 <oklopol> 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 <oklopol> (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 <zzo38> oklopol: Yes, like that.
04:06:09 <zzo38> 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:09:03 <zzo38> 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 <zzo38> Is understandable good?
04:10:07 <oklopol> "which means the result i"
04:10:27 <zzo38> Sorry, I wrote it wrong. Here I write it correct: Is it understandable with good?
04:10:41 <zzo38> s now a scalar number.
04:10:45 <oklopol> "unconnected arms/legs is zero, which means the result i" then it got cut
04:10:57 <oklopol> or did it really continue ", which means the result is understandable good?"
04:11:18 <zzo38> No, it continued "s now a scalar number." which is why I wrote that just now when I realized what you meant
04:11:52 <oklopol> i have absolutely no idea what a shape with two lines down could represent
04:12:05 <oklopol> or two shapes with two lines between them
04:12:42 <oklopol> or more precisely, i have all kinds of ideas
04:13:01 <zzo38> 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 <oklopol> vector? no one said there were any vectors involved
04:13:41 <oklopol> i have a hunch there is some key point both you and the wp page are missing
04:14:05 <oklopol> which would be obvious if i knew even the tiniest bit about the actual usage of these things
04:14:53 <oklopol> that nothing isn't going to do itself!
04:15:11 <oklopol> 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 <zzo38> 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 <oklopol> so, if you want to represent n bits, you take a vector of length 2n?
04:16:39 <zzo38> For $n$ bits, you need $2^n$ components.
04:16:47 <zzo38> One for each possible combination.
04:17:16 <oklopol> so then what do you mean by two components
04:18:26 <zzo38> I mean, like, components of a vector! Does this make sense or am I forgetting something?
04:19:01 <zzo38> 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 <oklopol> 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:47 <oklopol> one for *all* bits being zero, one for *all* bits being one?
04:21:00 <zzo38> 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:32 <oklopol> a single bit can indeed have two states
04:21:55 <oklopol> otherwise computer science would be way easier
04:22:11 <zzo38> 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 <oklopol> is superposition addition?
04:23:46 <oklopol> or umm what are you saying there
04:24:01 <oklopol> i thought our vectors had complex coordinates to begin with
04:25:13 <oklopol> or maybe i know what you're trying to say
04:25:29 <oklopol> this is damn hard to do informally
04:28:30 <zzo38> You can write a tensor as a matrix, also.
04:31:00 <zzo38> Also also Dirac notation (bra-ket notation).
04:31:23 <zzo38> Is used to represent the state vector.
04:32:01 -!- azaq23 has joined.
04:34:10 <zzo38> 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 <zzo38> (Which is similar tp \pmatrix but with [] instead of () as delimiters)
04:34:58 <oklopol> i don't care about notation
04:35:14 <oklopol> argh, why haven't i left yet
04:35:36 <zzo38> If you don't care about notation, how are you going to write the math?
04:35:38 <oklopol> you and your matrical temptations
04:36:27 <oklopol> erm, i suppose if i was doing quantum computation stuff, i'd use the standard notation
04:37:17 <zzo38> Would you use the bra-ket notation?
04:37:36 <oklopol> but sure, i'd give a five second shit to choose the one to use.
04:38:10 <oklopol> perhaps, depends on the length and depth of those five seconds.
04:39:13 <zzo38> 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 <zzo38> Length and depth of five seconds?
04:43:56 -!- Mathnerd314 has quit (Ping timeout: 246 seconds).
04:46:11 -!- lament has joined.
04:52:12 <zzo38> 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 <Vorpal> 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 <elliott> 02:41:24: <Tachycek> i like lolcode :)
13:36:12 <elliott> 02:41:45: <Tachycek> but i didn't see any working serious implementation of it :)
13:36:12 <elliott> 02:41:50: <Tachycek> maybe lolpython
13:36:18 <elliott> Tachyx: BUUUUUUUURN IN A FIERY PIT OF ETERNAL SUFFERING
13:36:29 <elliott> 02:45:14: <oklopol> there's currently a picture of me online :|
13:36:29 <elliott> 02:45:34: <oklopol> i won't tell you where before i ask them to remove it though
13:36:37 <elliott> oklopol: hey we all have one, from the frappr dump :>
13:36:57 <Tachyx> elliott: CAN I HAZ EXPLANATION?
13:37:22 <elliott> 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:39 <elliott> also Tachyx Tachycek 81.200.61.23 >__________>
13:38:28 * elliott yawns. in his matrix of solidity.
13:38:37 <elliott> flaming noobs in the morning, what a refreshing start to the day!
13:39:06 <elliott> Tachyx: oh i forgot, hello
13:40:15 <elliott> gonna assume you've been magically pointed to http://esolangs.org/wiki/Main_Page
13:40:32 <Tachyx> elliott: ok you're flaming i'll be trolling
13:40:36 <Tachyx> elliott: http://www.youtube.com/watch?v=T3n0vBcW5fc
13:40:56 <elliott> THAT WASN'T FLAMING that was me helpfully pointing you to our wiki
13:59:47 -!- wareya has joined.
13:59:51 -!- asiekierka has joined.
14:01:02 <elliott> { memcpy(self, v__fp, sizeof(double)); }.
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 <elliott> Gregor: http://codu.org/myavatar.gif why did you make this
14:38:57 <Gregor> elliott: To be the most annoying avatar imaginable.
14:39:03 <elliott> Gregor: but it's awesome...
14:39:12 <elliott> you should use it. even on irc
14:39:18 <elliott> prefix all your messages with <img src="http://codu.org/myavatar.gif">
14:39:26 <elliott> actually i think limechat has the ability to expand linked images
14:39:30 <elliott> so basically just prefix every message with http://codu.org/myavatar.gif
14:39:42 <elliott> i think linkinius did that too, i guess os x deludes them into thinking it's a good idea
14:39:46 <elliott> anyway, that would be awesome, do it
14:40:19 <elliott> also i logreaded a shitload yesterday for no real reason
14:40:20 <elliott> 16:18:42 <GregorR-L> Go write an interpreter for http://www.codu.org/plof/
14:40:20 <elliott> 16:19:37 <oerjan> 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 <elliott> 16:19:56 <pikhq> oerjan: Thanks.
14:40:20 <elliott> 16:20:11 <pikhq> GregorR-L: No thanks.
14:40:21 <elliott> 16:20:17 <pikhq> I'd rather do a real Lisp. :p
14:40:23 <elliott> 16:20:37 <GregorR-L> Plof and lisp aren't particularly similar.
14:40:25 <elliott> 16:21:33 <pikhq> Fixed and up on server.
14:40:27 <elliott> 16:22:00 <pikhq> GregorR-L: Yeah. . . Lisp is worth learning. :p
14:40:37 <elliott> (seconds later it was about how Emacs was an OS lol)
14:40:55 <elliott> I saved this to troll Gregor
14:40:55 <elliott> 09:13:01 <GregorR-W> BSD == better server than GNU/Linux.
14:40:56 <elliott> 09:13:08 <GregorR-W> GNU/Linux, on the other hand == better desktop than BSD
14:42:56 -!- cpressey has joined.
14:43:50 <elliott> hi cpressey we're doign the best thing
14:44:12 -!- cheater99 has quit (Ping timeout: 246 seconds).
14:44:28 <cpressey> 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:45:06 <cpressey> I ask here because I know you are all totally lawyers here
14:45:25 <elliott> cpressey: if you use a data: URI, it's like static linking and not allowed
14:45:34 <elliott> if you just use src="...", then it's like dynamic linking, and allowed
14:45:50 <elliott> assuming CC share alike doesn't have special provisions for this, that's the situation
14:46:00 <elliott> linking isn't creating a derivative work, baking it in is
14:46:09 <elliott> cpressey: is it 2.5 or 3.0 :p
14:46:18 * elliott will trawl through the legalese for uh... fun?
14:46:29 <elliott> what country version? or unported?
14:47:00 <elliott> http://creativecommons.org/licenses/by-sa/3.0/legalcode fuck licenses that start with definitions
14:47:04 <elliott> "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:32 <elliott> "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 <elliott> 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 <elliott> "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 <elliott> 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:47 <elliott> cpressey: give you a license to use it
14:48:21 <elliott> cpressey: is it just attribution-share alike?
14:48:34 <cpressey> http://creativecommons.org/licenses/by-sa/3.0/deed.en
14:48:41 <cpressey> but really, it was mostly just an example
14:48:52 <elliott> cpressey: oh, so this isn't actually a real case?
14:48:53 <cpressey> its real purpose is to make me loathe creative commons
14:49:07 <elliott> cpressey: well there's http://creativecommons.org/publicdomain/zero/1.0/ :P
14:49:26 <elliott> less ugly just to remove the requirement from ISC though :-D
14:49:45 <elliott> Permission to use, copy, modify, and/or distribute this software for any
14:49:45 <elliott> purpose with or without fee is hereby unconditionally granted.
14:49:51 <elliott> except that's software specific
14:50:54 <elliott> cpressey: or uh wait, that's just a verbose wtfpl
14:51:45 <cpressey> 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 <elliott> cpressey: TAKE A STAND AGAINST COPYRIGHT
14:52:49 <elliott> CAPTION ANY FUCKING KITTEN PHOTOGRAPH YOU WANT
14:57:54 -!- BeholdMyGlory has joined.
14:59:11 -!- Phantom_Hoover has joined.
14:59:41 <elliott> <elliott> 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> <greg-g> elliott: no, unless some fancy overlays are done. But a typical image and text without any overlap is fine.
14:59:49 <elliott> cpressey: it's even more fucked than i could have possibly imagined!
15:00:12 <elliott> cpressey: so basically i think if you used it as the background to a page that would be close to a grey area
15:07:46 -!- MigoMipo has joined.
15:20:21 <Gregor> Finally figured out how hg-git works with git branches.
15:20:25 <Gregor> Now I shall never have to use git again :)
15:21:17 <elliott> On the downside, you still have to use hg.
15:21:33 <Gregor> I think you typo'd, "plus on the upside, you get to use hg"
15:21:50 <elliott> Scapegoat now to be released under the "Everybody Except Gregor Richards" EULA
15:22:06 <elliott> Or maybe just the "I Am Now Going To find . -name .hg -exec rm -rf '{}' \;" EULA :P
15:22:18 <Gregor> I thought that was always the license for Scape🐐
15:22:31 <elliott> EULA, dammit, licenses only cover redistribution. And are also legally valid unlike EULAs.
15:24:56 <Phantom_Hoover> And is named after a toxic metal that causes brain damage.
15:25:44 <Gregor> It's a fun kind of brain damage though.
15:26:05 <Phantom_Hoover> (I want to name something osmium but I don't know what.)
15:26:05 <Gregor> 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 <elliott> What's the class of languages parseable by recursive-descent?
15:27:06 <Gregor> elliott: ... context-free languages. Recursive-descent essentially has infinite rollback.
15:27:26 <Gregor> Mind you, without memoization it's quite expensive for languages with a lot of ambiguity.
15:28:49 <Gregor> (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 <elliott> Gregor: OK, slight rephrase: Parseable with recursive-descent WITHOUT HELLISHNESS :P
15:29:31 <elliott> (Recursive descent may be a pain but it's less of a pain than yacc >_>)
15:30:59 -!- lament has joined.
15:31:15 <elliott> Actually, writing a lexer by hand might be more awful than the combined awfulness of using lex and yacc.
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 <Gregor> By-hand lexers are simple ...
15:53:43 <Gregor> I write by-hand lexers all the time ...
15:54:02 <Gregor> If you're really brave you can one-pass your lexer into your recursive-descent parser >: )
15:55:28 <Ilari> 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 <Ilari> 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 <cpressey> 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 <oerjan> it's relaxing in that tedious way
16:05:16 <cpressey> I have one by-hand lexer that I've just copied and pasted into everything, with suitable modifications :)
16:05:44 <cpressey> Languages' tokenization rules don't tend to vary *too* much. Except when they do/
16:06:51 <cpressey> "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 <cpressey> Toss in hyphens and single quotes if you want to get racy.
16:11:23 -!- Zuu has joined.
16:11:24 <oerjan> > let _6'a = 5 in _6'a
16:11:24 * oerjan cannot recall if haskell adds anything else
16:11:25 <lambdabot> <no location info>: parse error on input `='
16:11:26 <oerjan> > let (+`-) = 5 in (+`-)
16:11:26 <lambdabot> <no location info>: parse error on input ``'
16:11:26 <oerjan> darn it's not an operator character either
16:11:27 <oerjan> yours errored out at = not `
16:13:43 <lambdabot> <no location info>: Parse error in pattern
16:13:45 <cpressey> spaces not good enough for you, huh, haskell?
16:14:00 <oerjan> 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:42 <oerjan> > scanl1 (+) $ repeat b
16:14:43 <lambdabot> [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 <cpressey> 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 <oerjan> technically let a b = 5 is a function definition and you cannot put parentheses around those
16:16:22 <cpressey> oh, so b is the pattern match. right
16:16:51 -!- tswett has quit (Ping timeout: 250 seconds).
16:16:51 <oerjan> the last bar is a free variable
16:17:21 <cpressey> my mind is working on some way for that not to be the case
16:17:34 <oerjan> you can use about any already defined identifier instead, though
16:17:48 <cpressey> > let foo bar = 5 in foo (foo)
16:17:55 -!- tswett has joined.
16:18:02 <cpressey> > let foo foo = 5 in foo (foo)
16:18:20 <cpressey> now i'm all itchin' to write me some obfuscated Haskell
16:18:46 <oerjan> usually you want to use lots of operator identifiers for that
16:18:48 <cpressey> hm, this probably won't work...
16:18:54 <cpressey> > let foo (foo) = 5 in foo (foo)
16:19:23 <cpressey> i guess you can parenthesize it without putting an @ on it
16:20:18 <cpressey> > let (+-) (+-) = 5 in (+-) (+-)
16:21:05 <oerjan> iirc you can do everything with (...operator chars...) that you can do with an ordinary identifier, except put `` around
16:22:14 <cpressey> > let (+-) (+-) (+-) = 5 in (+-) +- (+-)
16:22:17 <oerjan> and vice versa for `...alphanum chars`
16:22:46 <lambdabot> <no location info>: parse error on input `)'
16:23:04 <cpressey> > let foo foo foo = 5 in (foo) `foo` (foo)
16:23:10 <cpressey> > let foo foo' foo'' = 5 in (foo) `foo` (foo)
16:23:29 <oerjan> it allows you to name a parameter the same as the function but not to name two parameters the same
16:23:53 <oerjan> i guess both of those could have gone either way
16:25:00 <cpressey> > let (+-) a b = a * b in 6 +- 7
16:25:14 <cpressey> > let (+-) a b = a * b in (+-) 6 7
16:25:23 <cpressey> > let (+-) a b = a * b in 6 `(+-)` 7
16:25:24 <lambdabot> <no location info>: parse error on input `('
16:25:44 <oerjan> i said except for that
16:26:51 <oerjan> that one works a different way because 6 is a pattern, not an identifier
16:27:48 <lambdabot> <no location info>: parse error on input `)'
16:27:54 <oerjan> 6 isn't an operator char either
16:29:02 <cpressey> > let _6_ _ _ = 7 in 6 `_6_` 6
16:29:04 <oerjan> haskell keeps the charset for identifiers and operators disjoint.
16:33:23 <lambdabot> <no location info>: Parse error in pattern
16:33:28 <oerjan> it tries mostly to prevent two consecutive tokens with operator chars from being likely
16:33:28 <lambdabot> lexical error in string/character literal at chara...
16:33:29 <oerjan> although there are exceptions
16:33:35 <oerjan> cpressey: _ is a special pattern and not an identifier
16:33:44 <lambdabot> <no location info>: parse error on input `='
16:33:45 <cpressey> does the REPL not like function definitions?
16:33:48 <oerjan> > is not a repl it's an expression evaluator
16:33:54 <oerjan> also the ghci repl requires let as well, although with a different notation (it behaves like a giant do block)
16:33:54 <cpressey> it reads. it evaluates. it... privmsgs. it... logs onto irc.
16:34:03 <oerjan> ok i guess it's a kind of repl
16:37:42 <oerjan> and neither lambdabot nor ghci allows the full set of declarations in a module file
16:37:45 <lambdabot> <no location info>: parse error on input `
16:50:10 -!- esowiki has joined.
16:51:01 -!- esowiki has joined.
16:51:01 -!- glogbot has joined.
16:51:15 <oerjan> > let let x = 5 in "hi"
16:51:16 <lambdabot> <no location info>: parse error (possibly incorrect indentation)
16:51:30 <lambdabot> <no location info>: parse error (possibly incorrect indentation)
16:51:57 -!- augur has quit (Remote host closed the connection).
16:52:02 <oerjan> i guess that error could happen for any cause once you're inside a block
16:52:54 <oerjan> cpressey: the difference here may be that a do block cannot be empty while a let block can
16:53:24 <oerjan> > let do { "hi" } = 5 in 6
16:53:25 <lambdabot> <no location info>: Parse error in pattern
16:54:20 <lambdabot> <no location info>: parse error on input `='
16:54:51 <oerjan> it looks like a let block is parsed with something that allows an arbitrary expression
16:55:33 <oerjan> and only errors out after the whole expression has been parsed
16:56:16 <oerjan> that's actually a legal operator definition
16:56:57 <oerjan> until you try to call it with something other than 5 and 6, anyhow
16:57:09 <lambdabot> *Exception: <interactive>:3:4-13: Non-exhaustive patterns in function +
16:57:45 <oerjan> > let f (5+6) = 3 in f 11
16:57:46 <lambdabot> <no location info>: Parse error in pattern
16:58:23 <oerjan> 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 <oerjan> 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 <oerjan> (e.g. in do blocks you can have do pattern <- ... ; ... or do expression ; ...
17:02:10 <oerjan> oh wait i was reading glogbot logs not clog logs...
17:08:31 -!- asiekierka has quit (Ping timeout: 252 seconds).
17:08:40 <lambdabot> <no location info>: parse error on input `in'
17:09:25 <lambdabot> <no location info>: Parse error in pattern
17:09:58 <Phantom_Hoover> What's all this crap about being distilled mathematics?
17:09:59 <lambdabot> <no location info>: Parse error in pattern
17:12:56 <oerjan> 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:57 <lambdabot> <no location info>: parse error on input `='
17:15:36 <oerjan> ghci gives <interactive>:1:17: parse error on input `='
17:16:03 <oerjan> so this is clearly a weirdness in ghc parsing, not just lambdabot
17:16:46 <oerjan> <interactive>:1:5: Parse error in pattern: 5 + 6
17:16:54 <oerjan> 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 <elliott> 16:33:48: <oerjan> > is not a repl it's an expression evaluator
17:54:21 <elliott> oerjan: read EVAL print loop
17:54:33 -!- augur has joined.
17:55:19 -!- Phantom_Hoover has quit (Ping timeout: 240 seconds).
17:55:26 <elliott> 17:02:10: <oerjan> oh wait i was reading glogbot logs not clog logs...
17:57:05 <oerjan> elliott: so clog wasn't the one failing
17:57:27 <oerjan> to record some minutes of conversation
17:58:00 <elliott> Gregor: whaddya think happened
17:58:23 <oerjan> well after a while there was a glogbot netsplit, then it reentered
17:59:15 <elliott> 16:06:03 <Razor-X> They use Smalltalk, by the way.
17:59:16 <elliott> 16:06:42 <GregorR> Prepare for tomorrow with the language of yesterday :P
17:59:37 <elliott> man everyone is stupid in 2006 :D
18:00:10 <oerjan> razor-x, what happened to her...
18:00:52 <oerjan> was that her first or second nick, i've forgotten the other one
18:01:03 <oerjan> something japanese-soun... right
18:01:06 <elliott> i think sukoshi was the later one
18:01:23 <elliott> BUT IT'S OK BECAUSE EVERYONE WAS STUPID IN 2006 AND THEREFORE EVERYONE FROM 2006 SHOULD BE BOMBED
18:01:28 <elliott> Gregor has escaped punishment by dropping the R
18:01:33 <elliott> you've escaped the punshiment by dropping the j
18:01:34 <Gregor> <elliott> Gregor: whaddya think happened // I think glogbackup worked perfectly is what
18:01:38 * oerjan hides in his bomb shelter
18:01:43 <elliott> even though that happened in 2006
18:01:53 <elliott> and pikhq hasn't yet escaped so he's on death row
18:02:01 <elliott> Gregor: But why did glogbot die :P Netsplit?
18:02:10 <Gregor> * glogbot has quit (*.net *.split)
18:02:15 <Gregor> It said quite clearly that it was a netsplit you dunce.
18:02:36 <elliott> 16:37:56: <cpressey> ok well that was fun
18:02:36 <elliott> 16:51:01: -!- glogbot has joined #esoteric.
18:02:36 <elliott> 16:51:15: <oerjan> > let let x = 5 in "hi"
18:02:41 <elliott> Gregor: Not in the "fancy" logs.
18:02:54 <elliott> THIS IS WHY CH2 IS AWESOME (Info messages :P)
18:03:16 <Gregor> 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 <elliott> Gregor: Or, it's because the baker totally fails at quit messages.
18:03:39 <Gregor> No, quit messages work fine.
18:04:01 <Gregor> If you look at the raw log, you'll see that it never received any quit messages.
18:05:03 <oerjan> 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 <Gregor> 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 <oerjan> Gregor: that's how a netsplit works if a server takes a long time to time out?
18:06:16 <elliott> Gregor: Did you get watchdog set up, btw?
18:06:27 <Gregor> oerjan: So you're complaining that glogbackup isn't psychic? Awwww.
18:06:45 <elliott> glogbackup could ping glogbot every few seconds, you know.
18:06:56 <elliott> If glogbot was programmed to not log those pings, it'd have basically 0 overhead and be perfect *shrug*
18:07:15 <elliott> SORRY FOR SUGGESTING CONSTRUCTIVE IMPROVEMENTS
18:07:19 <Gregor> The point of glogbackup is not to work around netsplits, it just HAPPENS to work that way some times.
18:07:28 <oerjan> Gregor: just pointing out it doesn't protect against messages lost before split detection, is all
18:07:36 <elliott> It could work perfectly if it pinged like that. and also notice when codu dies quicker.
18:09:19 <oerjan> clearly we must have a logbot on every freenode server.
18:09:32 <Gregor> 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 <Vorpal> Gregor, I'm not complaining!
18:10:07 <oerjan> Gregor: this ... in a channel of extreme geeks ... surprises you?
18:10:42 <elliott> Gregor: 100x? that sounds a leeetle excessive
18:10:50 <elliott> anyway HEROBRINE did that ;D
18:11:06 <elliott> huh, smalltalk has very few tokens
18:12:20 <oerjan> ...don't you mean keywords...
18:12:48 <oerjan> i mean, every identifier is a token
18:13:09 <elliott> hash, caret, pipe, equals, dot, semicolon, comment, symbol, number, string, lparen, rparen, lbracket, rbracket
18:13:47 <Gregor> elliott: Herobrine was at http://lolsomeIP, and had no backup at all.
18:14:08 <elliott> lolsomeIP... I fail to see the relevance considering it was in the topic always
18:14:25 <elliott> And glogbot doesn't have a backup that works for the vastly common case i.e. netsplits :P
18:15:58 <elliott> 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 <Gregor> 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 <Gregor> And that's what we in the biz call "a terrible idea."
18:16:42 <Gregor> Then again, terrible ideas are your fort.
18:17:04 -!- variable has joined.
18:17:15 <elliott> (1) With geographically-separated servers, pinging glogbot every few seconds would handle >50% of cases.
18:17:27 <elliott> (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 <Gregor> elliott: It was oerjan's idea.
18:18:34 <elliott> Yes, oerjan says things seriously.
18:18:40 <Gregor> elliott: And you can't know where the split will occur, so that won't handle >50% of cases.
18:18:42 <Gregor> elliott: That was to (2)
18:19:03 <elliott> Generally two geographically far-away servers don't get split IME, but whatever.
18:20:39 <oerjan> elliott: just look at * oerjan hides, that proves i was serious
18:23:28 <oerjan> 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 <oerjan> 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 <elliott> it's not a tree, it's a graph
18:25:51 <oerjan> how many servers that is, i don't know
18:26:01 <oerjan> um irc is supposedly a tree, always
18:26:25 <elliott> Gregor: http://freenode.net/irc_servers.shtml ;; a logbot on every server would not be difficult at all
18:26:26 <oerjan> unless they have some protocol addition. in fact that's one reason why irc has so much netsplits
18:27:03 <oerjan> i repeat, you don't need a logbot on all nodes, just the second-to-leaf ones
18:27:09 <elliott> just saying that even then
18:27:13 <elliott> oerjan: irc as a graph sounds like it'd be a lot more reliable...
18:27:23 <oerjan> or wait hm is that correct
18:27:37 <oerjan> elliott: yes. but that makes everything else more complicated.
18:27:50 <elliott> oerjan: "modern" IRC isn't exactly trivial :)
18:27:58 <elliott> _especially_ interserver stuff
18:28:00 <Gregor> DISAPPOINTED BY LACK OF AFRICAN SERVERS
18:28:11 <Gregor> Freenode's racism will no longer be tolerated.
18:28:15 <oerjan> 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 <elliott> yeah, and where's the antarctic servers!
18:28:38 <elliott> also, the ANYWHERE IN THE AMERICAS BUT THE US servers!
18:28:56 <elliott> man, hiato must have a blast connecting from south africa :D
18:29:25 <Gregor> Where's our Mars server.
18:29:40 <elliott> and what about andromeda? oh wait, Ed blew that up
18:30:07 <elliott> "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:31:15 <fizzie> Classic-style IRC is indeed a tree, but it can be configumarated to bring up backup links if one node dies.
18:32:42 <elliott> But does non-classic-style IRC exist? :P
18:32:45 <Gregor> Galaxy collisions, for those in the galaxy, are extremely boring events, even if we could experience the sheer time scale.
18:33:09 <Zwaarddijk> there's some impressive numbers associated with that collision
18:33:35 <fizzie> 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:34:22 <elliott> 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:28 <oerjan> 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 <elliott> fizzie: But does it exist in general?
18:35:45 <fizzie> Perhaps not, but I wouldn't rule it out.
18:35:58 <elliott> CLEARLY IT MUST BE INTERVENTED
18:36:15 <oerjan> 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 <oerjan> 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 <fizzie> 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:56 <elliott> * anthony.freenode.net calvino.freenode.net :1 Irvine, CA, USA
18:40:56 <elliott> * calvino.freenode.net calvino.freenode.net :0 Milan, IT
18:41:03 <elliott> Couldn't you do like 385734958734598345 hops to find out the graph from that?
18:42:01 <fizzie> It gives that same list wherever I connect to.
18:42:27 <fizzie> (Okay, so I just spot-checked a few.)
18:43:09 <elliott> So is anthony.freenode.net, like, The freenode server?
18:43:45 <fizzie> I guess theoretically anthony-calvino could be the US/EU link. Or maybe it's just a fakey-fakey.
18:44:06 <elliott> Why return a real-looking fake link, rather than like
18:44:15 <elliott> * your.freenode.net mom.freenode.net :1 Your Mom's Household
18:44:50 <tswett> 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 <elliott> tswett: self and super and thisContext aren't global are they?
18:45:25 <elliott> They're local to whatever method you're in.
18:45:29 <elliott> Or execution context, really.
18:45:42 <tswett> Well, they're available everywhere. :P
18:45:47 <elliott> If you just mean "the top-level namespace in a certain context", well, temporary variables and instance variables are in there too.
18:45:56 <elliott> tswett: But they don't have a consistent value everywhere.
18:46:15 <elliott> tswett: Isn't "nil" a keyword? I may be wrong.
18:46:32 <elliott> Also, literals aren't identifiers, so they're not in any namespace.
18:46:39 <elliott> In conclusion, the global namespace contains classes and maybe nil. :p
18:46:53 <tswett> Yeah, nil's a keyword. Just like true and false.
18:46:54 <elliott> And the available-everywhere namespace contains true, false, self, super, thisContext, classes, and maybe nil.
18:47:03 <elliott> And the available-everywhere namespace contains self, super, thisContext, and classes.
18:47:07 <elliott> Is thisContext a keyword too?
18:47:18 <elliott> So basically the global namespace contains... classes. :p
18:47:31 <elliott> But self/super/nil/true/false/thisContext are pretty damn close to being immutable variables in a given scope.
18:47:37 <elliott> (self isn't immutable in idst!)
18:47:48 <elliott> { memcpy(self, v__fp, sizeof(double)); }.
18:47:54 <tswett> Nothing is immutable in idst!
18:48:04 <elliott> tswett: Well, I think "3" might be immutable.
18:48:11 <elliott> In the sense that you can't assign to it; you can certainly give it new methods.
18:48:29 <elliott> That Float method is amazing, though.
18:48:32 <tswett> I wouldn't be entirely surprised if you could &3 = 5. Or is it 3%?
18:48:54 <elliott> First it replaces itself with a new instance of itself (idst is prototype-based).
18:49:09 <elliott> Then it copies its _fp argument to itself, overwriting itself.
18:49:26 <elliott> 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 <elliott> It just overwrites all the data with the single double that constitutes a Float.
18:49:47 -!- iconmaster has joined.
18:50:37 <elliott> tswett: btw, you can't do &3 in general in C.
18:51:00 <elliott> &lvalue results in an rvalue of type T*, where T is the type of lvalue.
18:51:16 <elliott> 3 isn't an lvalue, and "&x = ..." isn't valid because &x is an rvalue.
18:51:32 <elliott> ("*&x = ..." is valid because *p is an lvalue where p is a pointer, and &x is a pointer.)
18:51:51 <tswett> And use it as an lvalue?
18:51:59 -!- calamari has joined.
18:52:01 <elliott> No. "foo" isn't an lvalue.
18:52:19 <elliott> It's a literal rvalue of type (const char *). Or actually (const char []), in certain contexts.
18:52:31 <elliott> Or is that just (char []).
18:52:33 <tswett> Can I cast it to a char * and then write to it?
18:52:45 <elliott> tswett: You don't need to cast it, you can write directly; your program will segfault.
18:53:05 <elliott> <elliott> ("*&x = ..." is valid because *p is an lvalue where p is a pointer, and &x is a pointer.)
18:53:05 <tswett> I guess this is almost the definition of a segmentation fault.
18:53:23 <elliott> This isn't quite true, in that that's not always valid.
18:53:30 <cpressey> elliott: btw, some of the bugs you mentioned in yoob have been fixed. but not all.
18:53:37 <elliott> Because if p is of type (const T *) then you can't assign to its dereferencing, even though it's an lvalue.
18:53:57 <elliott> cpressey: I still think a swanky fungespace-editor would be cool :P
18:54:04 <elliott> DESIGN GOALS ARE IRRELEVANT ONLY COOL MATTERS
18:54:12 <cpressey> there's only one runthread now, and it receives messages telling it to start, stop, or load a new language
18:54:35 <elliott> but but, I _liked_ being able to make it go faster in certain weird scenarios
18:54:44 <fizzie> &* 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 <elliott> it was like a magic/more magic switch!
18:55:07 <elliott> fizzie: Heh. So &*var turns var into an rvalue, no matter what type var has.
18:55:31 <cpressey> fizzie: that's kind of like saying (x/n)*n=x
18:55:55 <elliott> fizzie: I wonder what the heck the justification for that was ;P
18:56:06 <elliott> Compatimability with olde compilers that literally just saw &* and skipped over the pair?
18:56:12 <fizzie> The rationale doesn't say.
18:57:01 <fizzie> 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 <elliott> Does that actually change anything?
18:57:26 -!- Imk0tter has joined.
18:57:33 <elliott> Or is it just because that expands to
18:57:39 <elliott> which is again that special case?
18:57:41 <cpressey> shouldn't &*foo segfault if foo is NULL? or otherwise outside the address space?
18:57:51 -!- copumpkin has joined.
18:58:00 <elliott> it maybe should, but it actually just results in NULL
18:58:33 <cpressey> never mind. i should be coding in python right now.
18:59:07 <elliott> cpressey: i feel sorry for you igf it's any consolation
18:59:25 <olsner> 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:57 <Vorpal> <elliott> it's not a tree, it's a graph <-- it is a spanning tree
19:00:03 <elliott> Vorpal: that's what she said
19:00:55 <Vorpal> <elliott> 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:22 <elliott> let's just move to chatting over ipv6 multicast
19:02:56 <fizzie> 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 <Vorpal> 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 <elliott> whoa holding down cmd+n is so trippy
19:03:21 <Vorpal> there is only the spanning tree one though
19:03:40 <elliott> Vorpal: well inspircd is lame so who cares!
19:04:09 <elliott> it's like, written in c++, and it has that smell of obnoxious over-modularity
19:04:34 <elliott> 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 <elliott> it should totally support graphs though
19:04:41 <elliott> bet i could get a degree out of that
19:04:47 <Vorpal> 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 <elliott> Alternate network topologies for an internetworked relay-chat system
19:05:01 <elliott> Vorpal: what's from with ngircd
19:05:10 <Imk0tter> if anyone wants to try fixing some brainfuck: http://pastebin.com/raw.php?i=v97Kx3pm
19:05:23 <Vorpal> elliott, from what I remember, it looked a bit crap. What do you think makes it good?
19:05:30 <fizzie> 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 <Imk0tter> it's supposed to take an integer and print out the first 6 digits
19:05:58 <Vorpal> Imk0tter, what's up with the first lin?
19:06:00 <elliott> Vorpal: it's portable, the code is very simple and straightforward, it supports just about everything, it's mature...
19:06:10 <Imk0tter> Vorpal, it's the input integer
19:06:13 <Vorpal> elliott, feature support from what I remember
19:06:32 <Vorpal> oh right, you don't care much about features. Forgot that.
19:06:40 <elliott> Vorpal: uhh, it supports ssl, ipv6... define "features"
19:06:48 <elliott> a server command to do trout slapping?
19:07:18 <Vorpal> elliott, stuff like more advanced channel modes. Such as invite exempt based on service account
19:07:34 <Vorpal> +I $a:elliott would work in charybdis for example.
19:07:43 <Vorpal> I'm not sure if freenode has that turned on for example
19:07:47 <elliott> ngircd's service support is purely linking-based. so that's the services' job to handle
19:08:03 <elliott> freenode lets you set invite in access flags list of a channel
19:08:04 <Vorpal> elliott, you can't do that in the service. How would it work?
19:08:17 <cpressey> from ZOMGMODULES import WINNING
19:08:26 <Vorpal> elliott, and yes that flag for invite means you can manually do /cs invite #channel
19:08:27 <elliott> 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 <Vorpal> elliott, there is a delay there. Some in channel message could get through
19:09:09 <elliott> 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 <fizzie> Vorpal: ircd-seven does the "$type:data" special-ban/exempt/whatever syntax, with types of a, r and x.
19:09:15 <Vorpal> elliott, you mean: ngircd fails to do a simple check at the server that many other ircds can do
19:09:23 <elliott> Vorpal: define simple check
19:09:33 <elliott> you mean mandating that services use NickServ as the name?
19:09:38 <elliott> or any other kind of tight coupling?
19:09:55 <elliott> 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 <elliott> I think GNU echo should read mail: mbox is a simple format after all.
19:10:28 <Vorpal> 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 <Vorpal> of course since it is C, it will be more involved
19:10:41 <elliott> so, tight coupling with services
19:10:45 <elliott> <elliott> 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 <elliott> <elliott> I think GNU echo should read mail: mbox is a simple format after all.
19:10:59 <Vorpal> elliott, tight coupling with the metadata in the protocol :P
19:10:59 <elliott> but no, it wouldn't be simple to implement anyway
19:11:13 <elliott> Vorpal: ngircd supports services in the proper way, i.e. linking to them normally.
19:11:19 <Vorpal> elliott, which is TS6 basically
19:11:20 <cpressey> so is there also a client called scylla? 'cos if not, i'm miffed.
19:11:40 <elliott> 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 <Vorpal> elliott, they still link. But it uses TS6 protocol. Same as inspircd do (though both uses minor extensions iirc)
19:11:45 <elliott> and saying that on the basis that it lacks that, ngircd is crap
19:11:51 <elliott> this is stupid, you're just trolling
19:12:19 <Vorpal> no that was just one example. *shrug*
19:12:32 <Vorpal> and you seem to hate this sort of functionality
19:13:08 <Vorpal> you really fail at this. You can use that same feature with another service package.
19:18:50 <elliott> cpressey: i want to write one now just because it's a nice name
19:19:13 <cpressey> elliott: it's not just that it's nice, it's... jeez, mythology, people
19:19:26 <elliott> cpressey: no, i just want to make it because it's nice, mythology can go fuck itself
19:19:40 <elliott> hey Gregor did you just change the log font
19:20:48 <elliott> oklopol: i saw your picture, i can now snipe you
19:21:04 <oklopol> you must be one hell of a hacker
19:21:39 <Gregor> elliott: Fontophiles are not permitted.
19:21:46 <elliott> Gregor: did you just change it y or n
19:21:50 <Gregor> elliott: However, I haven't changed anything, it's always been font-face: monospace
19:22:07 <elliott> it's not about ph0ntohpilia, it just antialiased really badly for a second
19:22:10 <elliott> really bad colour fringing
19:22:15 <elliott> it either fixed itself or my eyes unfucked
19:22:20 <Gregor> I don't think I can change that from CSS.
19:22:56 <Gregor> I wouldn't be too surprised, they put all sorts of shit in CSS :P
19:23:20 <elliott> Gregor: Yet NO FEATURES FOR HIDE-BUT-COPY
19:23:31 <fizzie> oklopol: We saw your castle thing, http://zem.fi/~fis/turkustle.jpg -- and didn't clean up your place. :/
19:23:45 <elliott> that's the shittiest castle i've ever
19:23:59 <elliott> Gregor: .foo { display: no; pronounce: no; copy: yes } /* IS THIS TOO MUCH TO ASK */
19:24:44 <Gregor> .foo { display: none; pronounce: accent(swedish); copy: random }
19:24:48 -!- cpressey has changed nick to ph0ntohpiliac.
19:25:16 <elliott> !swedish .foo { display: none; pronounce: accent(swedish); copy: random }
19:25:18 <EgoBot> .fuu { deespley: nune-a; prunuoonce-a: eccent(svedeesh); cupy: rundum }
19:25:35 <oklopol> fizzie: did you leave already?
19:25:50 <elliott> <oklopol> THEN COME AND CLEAN THE FUCKING PLACE UP
19:26:20 <oklopol> 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 <oklopol> i don't actually let people in my home anyway, so i wasn't very serious about the cleaning
19:28:06 <elliott> but you said i could visit :<
19:28:08 <oklopol> my parents have been trying to clean this place up since i moved, but i don't let them
19:28:16 <oklopol> well exceptions are possible
19:28:27 <oklopol> but cleaning up and looking through my stuff?
19:28:49 <fizzie> elliott: Yeah, we're not very castley peoples.
19:29:03 -!- augur has quit (Remote host closed the connection).
19:29:15 <fizzie> oklopol: We was there for just a few hours.
19:29:19 <elliott> no fucking rooks or anything
19:29:29 <oklopol> it's slightly bigger than it looks
19:29:36 <fizzie> elliott: http://en.wikipedia.org/wiki/File:%C3%85bo_slott_1724.JPG
19:29:38 <elliott> A CASTLE IS NOT JUST A BIG HOUSE
19:29:57 <elliott> I GUESS IT GOT DE-CASTLIFIED
19:30:15 <elliott> lol turku is called Åbo in swedish
19:31:09 <fizzie> 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:32:14 <oklopol> yeah i have no idea about the history
19:32:20 <oklopol> but i've surely heard a lot of it
19:33:14 -!- ph0ntohpiliac has changed nick to ZOMGMODULES.
19:33:23 <ZOMGMODULES> why are none of these fantastic nicks taken
19:33:37 <oklopol> i know some stuff about the current state of the castle, due to knowing people who study museology
19:33:54 <elliott> 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:35:09 -!- ZOMGMODULES has changed nick to EnjoyBeingLocked.
19:35:16 -!- elliott has changed nick to matrix-of-solidi.
19:35:20 -!- matrix-of-solidi has changed nick to matrixofsolidity.
19:35:41 -!- matrixofsolidity has changed nick to MatrixOfSolidity.
19:36:00 <Imk0tter> anyone semi-fluent with brainfuck?
19:36:05 -!- MYPEN_ISBIG has changed nick to oklopol.
19:36:39 <oklopol> Imk0tter: what's "fluent"? that's sort of relative
19:36:40 <Imk0tter> MatrixOfSolidity, how would i subtract 1 from v1 and v2 until one of them is 0
19:37:46 <oklopol> but otherwise it's pretty nice
19:38:21 <oklopol> well. i'm not going to comment on that.
19:39:22 <oklopol> well i have no idea why it would work
19:39:47 <Gregor> EgoBot !bf has never accepted !input.
19:39:48 <MatrixOfSolidity> oklopol: well "while (v1) { while (v2) { v2--; v1--; go to scrap }; go back to v1 }"
19:40:04 <MatrixOfSolidity> Gregor: well how do i get inputs in, that stupid input system thing? :D
19:40:12 <Imk0tter> MatrixOfSolidity, v1 can go negative
19:40:14 <fizzie> 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 <Gregor> MatrixOfSolidity: Nope, that's gone. You don't.
19:40:25 -!- EgoBot has joined.
19:40:36 <Gregor> MatrixOfSolidity: Too bad.
19:40:47 <MatrixOfSolidity> Gregor: So much for EgoBot the useful esolang execution bot :P
19:40:48 -!- fungot has joined.
19:41:00 <Imk0tter> MatrixOfSolidity: the interpreter i'm using uses 32bit integers
19:41:33 <oklopol> fizzie: how it terminates is it moves to the left of v1, because it doesn't enter the inner loop
19:41:55 <Imk0tter> MatrixOfSolidity, let's assume there is no negative
19:42:57 <fungot> MatrixOfSolidity: http://zzo38computer.cjb.net/ chrono/ zzo38/ mainpage the actual ui has something to do that anyway
19:43:01 <oklopol> the only problem is you don't know where you stop, but that's kinda easy
19:43:45 -!- MatrixOfSolidity has changed nick to elliott.
19:43:45 <oklopol> 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:03 <oklopol> i realized that was retarded
19:44:18 <elliott> Imk0tter: why do you keep pinging me without any message
19:44:27 <Imk0tter> i forgot what i was going to say
19:44:35 <elliott> 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:38 <Imk0tter> !ba puts v0 and v1 to b and a respectively
19:44:53 <oklopol> 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:45:00 <elliott> Imk0tter: it does nothing, that's just input syntax
19:45:05 <elliott> prog!input means "run prog with input"
19:45:41 <elliott> yeah do what oklopol said I guess :P
19:45:44 <elliott> what do you want this for anyway
19:49:58 <elliott> EnjoyBeingLocked: definitely gonna go for tedious, not relaxing
19:50:16 <elliott> defining an ast structure might be even more tedious actually
19:55:11 -!- EnjoyBeingLocked has changed nick to ZOMGMODULES.
19:56:51 <elliott> i...'ve never even really thought of C as anything that i could possibly ever file under relaxing
19:57:00 <elliott> you're speaking english, right?
19:57:01 <ZOMGMODULES> THIS IS THE WISDOM OF ZOMGMODULES. HEED IT
19:57:20 <elliott> well it's possibly made worse by the fact that it's a programming language I'm specifying.
19:57:35 <elliott> like, damn, this would be so much easier if i could just write the compiler in itself and use it without any bootstrapping!
19:58:04 <elliott> 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 <Ilari> Fun: HFCS at half soda concentration vs. Table sugar at full soda concentration.
19:58:14 <elliott> i...write it out, no, but I've pretty much stolen Smalltalk's grammar
19:58:41 <ZOMGMODULES> 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:13 <Ilari> (And no, that wasn't study from corn refiner's association)..
19:59:45 <elliott> ZOMGMODULES: pretty impressive ass you have there, with all the ideas you pull out of it ;;;;::DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDdddddddddddd
20:00:24 <elliott> hmm, parsing smalltalk is actually quite a pain
20:00:43 <elliott> because of (foo a: b) vs. (foo a: b c: d).
20:02:36 <Imk0tter> 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 <elliott> Imk0tter: well like oklopol said, if you just put a 1 after some 0s you can synchronis
20:03:00 -!- Phantom_Hoover has joined.
20:03:03 <elliott> ZOMGMODULES: with yacc-like things, if you have like, [a; b; c] and {a; b; c} both as blocks
20:03:09 <elliott> 'cuz one ends with RBRACKET and the other RBRACE
20:05:15 <elliott> ZOMGMODULES: I WOULD LIKE TO SEE YOU WRITE THIS PARSER RECURSIVE-DESCENT
20:05:19 <elliott> MOSTLY BECAUSE IT WOULD SAVE ME FROM DOING SO
20:06:34 <elliott> woo i totally have it down apart from like
20:07:19 <ZOMGMODULES> void parse() { if(tokeq("["){expect("["); parse_list(); expect("]");} else if (tokeq("{"){expect("{"); parse_list(); expect("}");} else error(); }
20:07:28 <elliott> ZOMGMODULES: no i don't mean that
20:07:53 -!- azaq23 has joined.
20:07:56 <ZOMGMODULES> void parse_list() { parse_elem(); while(tokeq(";")){ expect(";"); parse_elem(); } }
20:08:21 <elliott> program := exprs. expr := #ident | ^expr | (expr) | [block] | ident := expr | message | literal.
20:08:38 <elliott> block := (optional: | var var var ... |) expr . block | expr |
20:08:49 <elliott> message := dem smalltalk thangles
20:09:02 <ZOMGMODULES> i'd love to, it's very relaxing. unfortunately, can't spend all day here
20:09:19 <ZOMGMODULES> though 'dem smalltalk thangles' is a little underspecified for my taste
20:09:55 <elliott> ZOMGMODULES: message is expr messagepart*
20:10:08 <elliott> messagepart is either ident without :, or ident ending in : and having no other :s in it followed by an expr
20:10:22 <elliott> fucking ugly to specify because you have to have constraints on the ident inside the actual thing
20:10:35 <elliott> oh and it's messagepart+, not *.
20:11:24 <elliott> http://sprunge.us/jbMF hey i think i did it
20:11:53 <Imk0tter> can you help me out here, because i don't really understand your example ;\
20:12:23 <Imk0tter> 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 <oklopol> 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 <ZOMGMODULES> i would just accept ident or ident: interchangeably and filter out the bad stuff at the static analysis phase
20:12:41 <elliott> ZOMGMODULES: oh that's not the problem
20:12:51 <ZOMGMODULES> hey,... ghci's "let" does something like that, right oerjan?
20:12:54 <elliott> the problem is that some dickhead could say "foo a:b: c"
20:13:00 <elliott> "foo a:b c:d" should parse properly
20:13:02 <ZOMGMODULES> if it's good enough for ghci it's good enough for me
20:13:06 <elliott> but that a:b and c:d will parse as one ident
20:13:15 <elliott> maybe i should have two types of ident
20:13:20 <oklopol> 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:24 <oklopol> then you'll know where the head is
20:13:25 <elliott> ZOMGMODULES: that's smalltalk
20:13:33 <elliott> ZOMGMODULES: really :s are banned in identifiers altogether
20:13:36 <elliott> ZOMGMODULES: it's just that they're valid _symbols_
20:13:39 <elliott> i.e. #foo:bar: is an ok symbol
20:13:46 <elliott> but foo:bar: is so not an ok identifier.
20:13:50 <oklopol> you won't know which one went to zero, but you can check that by looking at them...
20:13:52 <elliott> so really what i need to do is handle # at the lexer phase
20:14:00 <elliott> turn #foo:bar: into SYMBOL("foo:bar:")
20:14:10 <elliott> and turn foo:bar: into IDENT("foo") COLON IDENT("bar") COLON
20:14:19 <ZOMGMODULES> this is pretty much why i never got into smalltalk
20:14:30 <ZOMGMODULES> this very part of it seemed unnecessarily brutal
20:14:44 <elliott> anyway it was my token's fault :)
20:14:49 <elliott> for not distinguishing idents and symbols
20:15:11 <elliott> you mean like how you can't arrange parts?
20:15:21 <elliott> 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 <elliott> i think i'll finish writing up this yacc-style grammar then recursive descend on it
20:16:02 <elliott> ZOMGMODULES: well, it's nicer than /python's/ approach to the "argument positions are meaningless" problem.
20:16:05 <ZOMGMODULES> using the same label mechanism for all those things
20:16:26 <ZOMGMODULES> that's ok. it's been a long time and i don't remember
20:16:43 <elliott> ok now the grammar is perfectly sanified
20:16:47 <elliott> apart from being left-recursive.
20:16:57 <elliott> i don't even know how you're meant to do
20:17:05 <elliott> expr ::= IDENT EQUALS expr
20:17:08 <elliott> that's not left-recursive :D
20:17:14 <elliott> body(A) ::= expr(B) DOT body(C). {...;}
20:17:14 <elliott> body(A) ::= expr(B). {...;}
20:17:17 <elliott> and that looks... kind of easy?
20:19:29 -!- ais523 has joined.
20:19:40 <elliott> i broke the CHIQRSX9+ article
20:19:46 <elliott> it is now impossible to access it
20:19:55 <elliott> http://esolangs.org/wiki/CHIQRSX9%2B ;; click for fun
20:22:06 <ZOMGMODULES> 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:52 <elliott> it can be accessed from http://esolangs.org/wiki/CHIQRSX9_Plus
20:22:56 <elliott> which doesn't do a hard redirect
20:23:14 <elliott> still can't be moved though
20:23:32 <elliott> http://esolangs.org/w/index.php?title=CHIQRSX9%2B
20:24:21 <elliott> Imk0tter: what was wrong with oklopol's solution?
20:24:29 <Imk0tter> i don't understand how it works
20:26:10 <oklopol> well assuming you have 0 1 0 v1 v2 0 just do elliott's, and then append <<[<]
20:26:12 <oerjan> <ZOMGMODULES> hey,... ghci's "let" does something like that, right oerjan? <-- well that's what it looked like...
20:26:26 <elliott> ZOMGMODULES: look at dat lack of braces
20:27:57 <ZOMGMODULES> C needs a ";;" operator that is a high-precedence ";" to avoid the need for braces
20:28:10 <elliott> ZOMGMODULES: and we could call it ocaml
20:28:20 <elliott> can you stack ;s arbitrarily?
20:28:41 <elliott> so basically, if/while/etc. are {
20:28:58 <elliott> SORRY TO BREAK YOUR DREAMS
20:29:22 <oerjan> obfuscated c and metalanguage
20:29:29 <elliott> omg having comments in the ast is the best idea ever
20:29:38 <elliott> okay so you can't just put comments in ANY old place now
20:29:50 <elliott> it's like docstrings, except not stupid!
20:30:52 <elliott> apparently richard dawkins is on the vpri board of advisors
20:31:02 <elliott> the actual richard dawkins
20:31:07 <elliott> thought it was just some guy with the same name
20:31:32 <elliott> wonder why he's on the board?
20:31:49 -!- gnidan has quit (Quit: leaving).
20:32:03 <elliott> http://www.vpri.org/images/people/board/vpri_ppl_24.jpg
20:32:04 <elliott> http://www.vpri.org/images/people/board/vpri_ppl_20.jpg
20:32:06 <elliott> with these kinds of beards
20:32:10 <elliott> http://www.vpri.org/images/people/board/vpri_ppl_07.jpg
20:32:15 <elliott> why hasn't vpri invented the next big language yet!
20:32:44 <elliott> http://piumarta.com/cv/xyzzy.jpg
20:32:50 <elliott> maybe they've had a beard overflow
20:32:55 <elliott> leaving them with negative beard
20:33:41 <elliott> "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:26 <elliott> the Viewpoints Research Institute
20:37:51 <elliott> yes. actually i think they prefer the acronym VRI but i like vpri better. also it's their domain name
20:37:56 <ZOMGMODULES> "We found that a certain percentage of the population hold one opinion, while the rest hold another."
20:38:01 <elliott> "prefer" = their web page uses VRI
20:38:14 <elliott> ZOMGMODULES: careful. alan kay might punch you
20:38:23 <tswett> 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:43 <elliott> tswett: Not, say, using the toilet?
20:38:51 <elliott> You must have been programming pretty early on, then.
20:39:05 <tswett> Your point has goodness.
20:39:31 <tswett> If your eventual skill at a trade or art is determined . . . programming.
20:39:59 <ZOMGMODULES> Phantom_Hoover PERHAPS YOU SHOULD TRY /whois
20:40:06 <elliott> tswett: Did you just ELIDE LOGIC
20:40:23 <tswett> elliott: I assume you can figure out what my ellipsis represents.
20:40:25 <elliott> ZOMGMODULES: wait your name is Christopher? kinda assumed you were always just Chris THIS IS LOGICAL OK
20:41:24 <tswett> He's not Christ; he's the -opher of Christ.
20:41:25 <elliott> the Z stands for Christopher
20:41:49 <tswett> Phantom_Hoover: yes, I just looked it up. :)
20:42:15 <tswett> It's funny how "Christopher" is sometimes shortened to "Chris" and sometimes to "Topher".
20:42:18 <Phantom_Hoover> http://upload.wikimedia.org/wikipedia/commons/e/eb/Christopher_icon.jpg
20:42:30 <elliott> tswett: FSVO sometimes equal to never.
20:42:35 <ZOMGMODULES> elliott: parents who put just "Chris" on a birth certificate are... like parents who put just "Bob" on a birth certificate.
20:42:44 <elliott> ZOMGMODULES: So, like your parents then?
20:42:52 <elliott> `addquote <ZOMGMODULES> elliott: parents who put just "Chris" on a birth certificate are... like parents who put just "Bob" on a birth certificate.
20:42:55 <HackEgo> 351) <ZOMGMODULES> elliott: parents who put just "Chris" on a birth certificate are... like parents who put just "Bob" on a birth certificate.
20:43:18 <tswett> 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 <elliott> 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 <tswett> That was an awful analogy on my part. I apologize.
20:43:25 <elliott> we could capitalise on this
20:43:38 <Phantom_Hoover> If it's common enough you get a legitimate female name.
20:43:42 <elliott> tswett: WHO SHORTENS CHRISTOPHER TO TOPHER
20:43:48 <elliott> Phantom_Hoover: Christopherina
20:43:54 <tswett> elliott: ask Topher Grace's shortners.
20:44:27 <elliott> was gonna go for phantomina
20:44:28 <tswett> The female form of Tanner is Tanress. :P
20:44:31 <ZOMGMODULES> Phantom_Hoover: Which werewolf would that be?
20:44:41 <elliott> you know, all those men named Vag
20:44:56 <Vorpal> <Phantom_Hoover> Oerjanina <-- In Swedish (and possibly Norwegian) you would add -ida instead
20:44:59 <elliott> olsner: your real name is olsner right
20:45:14 <Vorpal> Phantom_Hoover, at least quite often
20:45:16 <elliott> `addquote <Phantom_Hoover> ZOMGMODULES, St. Christopher, saint and werewolf.
20:45:17 <HackEgo> 352) <Phantom_Hoover> ZOMGMODULES, St. Christopher, saint and werewolf.
20:45:30 <elliott> olsner: what is it then!!!!
20:45:40 <elliott> BASICALLY THIS "-INA" THING IS TOTAL BULLSHIT
20:45:47 <Vorpal> Phantom_Hoover, "Arvida" though exists. I think it gets combined in there.
20:46:01 <oklopol> you know why i did that oing
20:46:19 <oklopol> because i was like OMG IF I SPAM NOW I'LL GET TO SEE 23:45:67
20:46:46 <tswett> 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:50 <oerjan> tswett: hey the HA HA HA is supposed to come _after_ the wafflecarrot. know your memes!
20:46:51 <elliott> Phantom_Hoover: so what's your second name!
20:47:15 <olsner> ooh, I've become less googleable since last time I tried
20:47:16 <elliott> tswett: is her second name Sue DID BUDDY HOLLY MAKE A SONG ABOUT YOUR MOTHER
20:47:36 <elliott> Phantom_Hoover: Adamhnan McHoover. best name
20:47:52 <tswett> "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 <tswett> elliott: nobody knows what her second name is.
20:48:15 <elliott> should have called her Adamhnanina
20:48:22 <elliott> maybe that's the origin of Nina
20:49:05 <tswett> I'm glad that this channel never quotes Internet memes.
20:49:35 -!- sftp has quit (Remote host closed the connection).
20:49:40 <tswett> The example that proves the rule.
20:49:40 <elliott> it's possibly the best thing about this channel
20:49:47 <olsner> peggy could be short for peregrina
20:49:57 <tswett> Phantom_Hoover just demonstrated the exception that proves the rule.
20:49:59 <oerjan> <Vorpal> <Phantom_Hoover> 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 <tswett> Everything proves the rule, you see. I'm right no matter what.
20:50:20 <elliott> oerjan: so basically Ørjan is already as female as it gets?
20:51:23 <elliott> Why is this subreddit all read? (self.Norway)
20:51:23 <elliott> Just thinking, why not make it a little blue and white and fjords and snowmen and stuff?
20:51:27 <elliott> oerjan: WAS THIS YOUR DOING
20:51:48 <tswett> The best way to feminize a name is by taking off the -er and replacing it with -ress.
20:51:56 <tswett> The great thing about that way is that it works for ANY NAME.
20:52:08 <tswett> Phantom_Hoovress. olsnress. See?
20:52:19 <elliott> olsnress is an impressive name, pronunciation-wise
20:52:43 <oerjan> ZOMGMODULES: hm that might also work
20:53:07 <tswett> Letters form a group, right?
20:53:52 <oklopol> tswett: erm, they are not even closed under multiplication
20:54:06 <tswett> Letters generate a group, right?
20:54:19 <oklopol> but nothing wrong with doing english over the free group
20:54:39 <elliott> while (expr() && accept(DOT));
20:54:43 <oklopol> yeah they form the free group with base size 26
20:55:54 -!- azaq23 has quit (Read error: Operation timed out).
20:56:28 <elliott> ZOMGMODULES: IS THAT RIGHT, O WISE RECURSIVELY-DESCENDING MASTER
20:56:32 <elliott> maybe i'll write the better kind of parser
20:56:57 <elliott> i can't believe recursive ascent was invented before descent
20:57:09 <elliott> "oh, I've read a number... guess I should check if there's an operator after me"
20:57:22 <elliott> "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 <elliott> wow, reading /r/norway totally equips me to talk to oerjan like i'm a norwegian!
20:59:08 <elliott> hey oerjan, maria amelie! that was totally part of one of the headlines!
20:59:32 <elliott> "Where to buy live snails in Oslo, or Norway in general?"
20:59:51 <tswett> elliott: ¿cuántas lenguas conoces?
21:00:04 <elliott> tswett: yes, I recant all my linguistic coconuts.
21:00:09 -!- cheater- has joined.
21:00:18 <ZOMGMODULES> elliott I AM STILL TRYING TO WRAP MY HEAD AROUND THE ENGLISH GROUP
21:00:20 <elliott> oerjan: HEY REACT TO ME, I'M FROM NORWAY
21:00:44 <olsner> elliott: do you chant in the coconut language?
21:00:54 <tswett> That's Spanish for "what is the number of languages that you have come to have a significant understanding of".
21:01:10 <tswett> "á" means "number of", for example.
21:01:18 <elliott> tswett: 1, or lots if you include languages that computers can understand :-P
21:01:30 <elliott> tswett: I have this plan thing to learn Japanese that will never happen because oklopol keeps HARSHING
21:01:42 <elliott> feel those harshed vibes oklopol
21:01:46 <elliott> look at what you're doing to mefw;gdh
21:01:56 <ZOMGMODULES> elliott: does your accept() have a side-effect
21:02:14 <elliott> if (curtok == whatyousaid) eatitup()
21:02:35 <elliott> expect() is just if (!accept()) BALLLK, but i haven't used expect yet i don't think
21:03:00 <ZOMGMODULES> huh. i always use expect(), and never accept()
21:03:18 <elliott> ZOMGMODULES: well i copied accept() from wikipedia :) but accept is actually quite nice i think
21:03:22 <elliott> because you can just do like
21:03:27 <elliott> if (accept(one_thing)) ...handle that...
21:03:31 <elliott> else if (accept(another_thing)) ...
21:03:35 <calamari> hmm.. seems like there is no actual parsing reason why C should require parens around an if expression
21:03:42 <elliott> ZOMGMODULES: if (ident() && accept(COLON) && expr()) return 1;
21:03:52 <elliott> 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 <oerjan> elliott: should i point out that _i_ don't read r/norway?
21:04:12 <olsner> calamari: consider if foo (bar);
21:04:40 <olsner> is bar an argument list to foo, or the body coming after the boolean expression foo?
21:04:49 <elliott> if (accept(COLON)) return expr();
21:05:12 -!- iconmaster has quit (Ping timeout: 260 seconds).
21:05:34 <calamari> olsner: I didn't realize there could be whitespace before the function parms.. good one
21:06:14 <oerjan> elliott: yes yes i've heard about maria amelie
21:06:20 -!- jix has quit (Ping timeout: 246 seconds).
21:06:28 <elliott> I CAN CONSERVE LIK EA NORWEGIAN
21:06:35 <elliott> calamari: really? clearly you've never read GNU code!
21:06:41 <elliott> if (the_most_awesome (oh_yes))
21:07:00 <calamari> elliott: it's true.. I hardly ever look at gnu code
21:07:08 <elliott> calamari: your sanity thanks you :)
21:08:00 <ZOMGMODULES> wow, I took almost all day to come up with two lines of code
21:08:12 <oerjan> a victim of norway's strict immigration and asylum policies.
21:08:17 -!- jix has joined.
21:08:49 <elliott> ZOMGMODULES: http://sprunge.us/iQeM hey this grammar is actually pretty simple
21:08:57 <elliott> doesn't actually build an ast and has ... for all the simple parts, but :)
21:09:03 <elliott> also probably doesn't work, I think I need more expects
21:09:12 <elliott> expects are kind of like cuts in prolog
21:09:24 <elliott> 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 <elliott> oerjan: lol @ norwegians complaining about their country's politics not being liberal enough
21:09:56 <ZOMGMODULES> if your tests consume tokens, you won't have infinite loops
21:10:24 <ZOMGMODULES> at least you have THAT assurance, with those side-effects
21:10:27 <elliott> oerjan: i briefly googled it and failed to come up with any info on why she actually applied for asylum, though
21:10:34 <oerjan> elliott: well the policy is being loosened up a tiny bit because of her.
21:10:38 <elliott> ZOMGMODULES: i'm practically a nazi
21:10:47 <oerjan> elliott: she didn't, her parents did when she was a child
21:11:05 <elliott> ZOMGMODULES: right but like if you have a
21:11:10 <ZOMGMODULES> unless you do some fancy catching thing with them
21:11:32 <elliott> there's no way that'd valid
21:11:42 <elliott> i guess it will fail at the top level
21:11:52 <elliott> "found ], but I was expecting EOF or expression!"
21:11:56 <elliott> because it'll fail at the top level
21:12:02 <elliott> ZOMGMODULES: accept doesn't consume if it doesn't match
21:12:15 <oerjan> (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 <elliott> anyway, my point is, I think expect gives you nicer error messages
21:12:23 <elliott> because otherwise errors bubble up to the top error
21:12:46 <ZOMGMODULES> THAT IS WHY ZOMGMODULES USES IT ALMOST EXCLUSIVELY
21:13:07 <ZOMGMODULES> I even do things like { if tokeq(";") { expect(";"); ... } }
21:13:58 <elliott> ZOMGMODULES: um but that's exactly what accept is :D
21:14:07 <elliott> well, technically it doesn't re-compare the current token
21:15:19 <elliott> ZOMGMODULES: so your routines, do they call the tokeniser or does the tokeniser call it?
21:15:35 <ZOMGMODULES> void parse_foo() { expect("foo"); } void parse_bar() { if (tokeq("foo")) parse_foo(); }
21:15:46 <elliott> 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 <elliott> Tachycek: i already had aids :'(
21:16:14 <Tachycek> elliott: and how was it like ?
21:16:23 <elliott> Tachycek: yes. almost painfully.
21:16:27 <elliott> ZOMGMODULES: actually with recursive descent the latter would only be possible with continuations i think :D
21:16:29 <oerjan> 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:41 <ZOMGMODULES> elliott: with something continuation-like, anyway
21:16:44 <elliott> ZOMGMODULES: which means: we need that C continuation lib!
21:16:55 <elliott> ZOMGMODULES: I APPROVE OF MY PROBLEM-SOLVING METHOD
21:17:02 <ZOMGMODULES> once, in Erlang, I did neither. I had the lexer and parser be seperate processes which messaged each other
21:17:15 <elliott> 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 <Tachycek> elliott: tell me more about the HAARP treatment it surely arouses me
21:17:22 <elliott> ZOMGMODULES: that's ... almost beautifully hideous
21:17:41 <elliott> Tachycek: basically we had to have sex with goats while the whole room vibrated.
21:17:50 <elliott> THAT'S HOW EVIL THE GOVERNMENT IS
21:18:37 <Tachycek> how disappointed the room should have been that it is not a vibrator and cannot go into your ass
21:19:01 -!- azaq23 has joined.
21:21:56 <elliott> ZOMGMODULES: so does writing a compiler that compiles to machine code hurts?
21:22:02 <elliott> i'm assuming you've done it.
21:22:27 <elliott> maybe i should make an assembler dsl thing...
21:26:39 <tswett> I think I shall work on that IRC bot.
21:27:15 -!- tswettbot has joined.
21:28:24 <ais523> I am sending /this/ message.
21:29:05 <oerjan> the message is the medium
21:30:12 * ZOMGMODULES is hoping a dozen debug windows just opened up for tswett
21:30:47 <ZOMGMODULES> < elliott> ZOMGMODULES: so does writing a compiler that compiles to machine code hurts? <-- no, not really... depends, I guess
21:31:11 <elliott> tswettbot: you are dismissed.
21:31:31 -!- tswettbot has quit (Ping timeout: 246 seconds).
21:31:33 <elliott> ZOMGMODULES: yeah but my compiler has to have, liek, two backends!
21:31:42 <elliott> ZOMGMODULES: x86-64/linux and x86-64/NOTHING
21:31:54 <tswett> Oh, tswettbot ran successfully again.
21:31:59 <elliott> (i decided that bootstrapping a compiler on linux is more productive for @ than writing an optimising compiler in x86-64 assembly)
21:32:23 <ZOMGMODULES> elliott: then it's not, generally speaking, that painful... everything is partitioned nicely.
21:32:25 <elliott> c interpreter of lang -> compiler from lang to x86-64/linux written in lang -> write a freestanding backend -> prophet
21:32:42 <elliott> ZOMGMODULES: oh the compiler parts don't scare me.
21:32:46 <elliott> it's the x86-64 machine code part.
21:32:53 <ZOMGMODULES> it's if you want to do it all "narrow" where it gets hairy
21:32:54 <elliott> (i refuse to use assembly because i want a repl :))
21:33:11 <elliott> self lolCode: 3243482349234
21:33:13 <ZOMGMODULES> nothing too painful about generating x86 code, is there?
21:33:21 <elliott> ZOMGMODULES: well no. but i want mnemonics!
21:33:24 <elliott> and generating those will be painful.
21:34:17 <elliott> ZOMGMODULES: i want to generate machine code using an assembler-ish dsl
21:34:22 -!- Zuu has quit (Ping timeout: 260 seconds).
21:34:42 <tswett> elliott: have you done threading with Smalltalk?
21:34:47 <elliott> self mov: eax : ebx value.
21:34:50 <elliott> self mov: eax : (ebx + 1) value.
21:34:54 <ZOMGMODULES> then you (in effect) want to write an assembler, and generate assembly for that assembler
21:34:57 <elliott> tswett: no. why'd you want to?
21:35:07 <elliott> ZOMGMODULES: yes. that's true. but i don't want to _generate_ it, i want to invoke its routines directly.
21:35:16 <elliott> ZOMGMODULES: and the assembler doesn't actually have to be convenient...
21:35:20 <elliott> like, (ebx + 1) value could be
21:35:32 <elliott> and i don't actually need mov
21:35:47 <elliott> corollary: at&t syntax assemblers are not real assemblers, they are low-level APIs :)
21:36:05 <elliott> but e.g. the plain english codegen just does things like
21:36:11 <elliott> intel $8C98HF9398FN398HG98EH9JQ
21:36:18 <elliott> i don't want to be the kind of person who does that.
21:36:22 <ZOMGMODULES> a codegen with an API whose entry points have names that mnemonics. much like, well, every API
21:36:30 -!- cheater- has quit (Ping timeout: 246 seconds).
21:36:38 <elliott> technically i want to write a codegen backend and an actual codegen
21:36:50 <elliott> bunch of methods->machine code
21:37:12 <ZOMGMODULES> 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:25 <elliott> i just want to write an api so i can do
21:37:43 <tswett> elliott: because I'm... oh, never mind.
21:38:02 <elliott> and that api sounds like a pain to generate. i guess i could hand-code it
21:38:16 <elliott> 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 <ZOMGMODULES> elliott: I've basically coded that API (in C, not Smalltalk)
21:38:23 <elliott> with the handlers forking off if they're going to do some complex computation
21:38:32 -!- tswettbot has joined.
21:38:49 <tswett> I dismiss you, tswettbot, WITH GREAT PREJUDICE AND ANGER.
21:38:50 <elliott> ZOMGMODULES: sure. it's easy enough for a subset. just IDEALLY i'd generate it from the big instruction table things :)
21:38:54 <elliott> with the imm8/r and that kind of stuff
21:39:02 <tswett> tswettbot: what, you want a period after that? You're not getting one.
21:39:15 <elliott> WHY DOES IT ONLY LISTEN TO YOU
21:39:23 <ZOMGMODULES> generating it from an instruction table, yes: I've never done that and it would have some nice to it.
21:39:31 <tswett> It listens to everyone equally.
21:39:37 <elliott> it would... have... some... nice... to... it?
21:39:59 <tswett> I dismiss you, tswettbot. I dismiss you, tswettbot. I dismiss... is this working?
21:40:23 <elliott> don't listen to the haters
21:40:25 <ais523> wow, ZOMGMODULES fits better in here than most of the regulars
21:40:29 <elliott> let's dance off into the sunrise together
21:41:22 <elliott> ais523: there is nothing that we're not telling you, btw
21:41:26 -!- tswettbot2 has joined.
21:41:31 <tswett> I dismiss you, tswettbot.
21:41:41 <ais523> elliott: I hope that isn't true, knowing every fact in existence would be a huge drain
21:41:58 <tswett> (message includesSubString: 'I dismiss you, tswettbot') ifTrue: [bot quit].
21:41:59 <elliott> ais523: 0 =/= 1. 0 =/= 2. 0 =/= 3. 0 =/= 4.
21:42:09 <elliott> tswett: what does bot quit do?
21:42:33 <ais523> wow, Smalltalk's ifTrue: reminds me of Unassignable
21:42:48 -!- tswettbot has quit (Ping timeout: 246 seconds).
21:43:09 <elliott> I should start blocking ads, they're becoming more and more annoying.
21:43:22 <elliott> (cue ais523's incredulity)
21:43:23 <tswett> stream nextPutAll: 'QUIT'; crlf; flush.
21:43:28 <tswett> That's wrong, by the way.
21:43:36 <ais523> it's worthwhile doing just to prevent them slowing down page loads
21:43:40 <elliott> tswett: are you sure message is right? :)
21:43:44 <elliott> ais523: CPU-wise, or bandwidth-wise?
21:43:48 <ais523> the ads often take longer to load than the page itself
21:43:56 <ais523> and normally not exactly bandwidth, but just response time
21:43:59 <elliott> that's not true. at least not for me.
21:44:14 <elliott> ais523: my alternative to ad-blocking is not going to sites with obnoxious ads, really
21:44:15 <tswett> elliott: it was working before. :P
21:44:23 <elliott> in fact, ads are a pretty good indicator of how useless a site is
21:44:31 <ais523> CPU is mostly only relevant for JS- or Flash-based ads, which are blocked incidentally by other things
21:44:57 <ais523> 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 <elliott> ais523: the main impetus for me considering blocking ads right now is livejournal
21:45:20 -!- tswettbot3 has joined.
21:45:23 <tswett> tswettbot3, do you even think that you're quitting?
21:45:23 <elliott> every other page load on livejournal greys out and shows an irritating interstitial
21:45:27 <tswett> I dismiss you, tswettbot3.
21:45:27 <elliott> that you have to click a tiny X box to dismiss
21:45:31 <elliott> this is _insanely_ annoying
21:45:44 <tswett> I dismiss you, tswettbot.
21:45:46 <ais523> elliott: I use ad-blockers to block all sorts of annoyances, not just ads
21:46:01 <ais523> I normally block avatars on forums, for instance
21:46:01 <tswett> I really ought to give this thing a morph so I can control it.
21:46:24 <elliott> meh, avatars on forums don't bother me, 90% of a forum's UI is just ego-oriented irritatingness
21:46:30 <elliott> so blocking avatars wouldn't help much
21:46:43 <elliott> ais523: also, at least punbb lets you disable avatars in preferences
21:46:50 <elliott> that requires an account, though
21:46:51 <ais523> I've never heard of punbb
21:47:04 <ais523> and I thought you were a vertical space fanatic
21:47:08 -!- Zuu has joined.
21:47:12 <elliott> it's quite popular. and what do you mean?
21:47:24 <ais523> 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 <ais523> as otherwise the posts have to expand to make room for the avatars
21:47:58 <elliott> 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 <elliott> i guess if it allows like 256 high avatars :P
21:48:22 <tswett> Oh, I think I know what's happening here.
21:48:24 <ais523> even 64 high avatars would heighten typical posts in some places
21:48:34 <elliott> hmm, looks like the maximum on this forum is 128x128
21:48:42 <elliott> the other one i post on doesn't show the maximum and I'm too lazy to test
21:48:56 <tswett> 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 <elliott> 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:51:07 <tswett> Because I don't want the entire VM to block every time I wait for a message.
21:51:27 <tswett> tswettbot4: yo dude, shouldn't you be throwing a failed assertion right about now?
21:52:20 <elliott> tswett: shouldn't you abstract the threaded line-reader into another class?
21:52:25 <oerjan> tswettbot4: I dismiss you, tswettbot.
21:52:26 <elliott> with some thing for setting up a callback for "line received"
21:52:36 <elliott> then you could hide the necessity of the ugly threadedness :)
21:52:38 -!- tswettbot4 has quit (Remote host closed the connection).
21:53:08 <tswett> elliott: I dunno, it's pretty small.
21:53:15 <tswett> I'm abstracting the message handlers into another class.
21:53:17 <elliott> ZOMGMODULES: lots of cool people use livejournal. i'm not sure why.
21:53:24 <tswett> And... remote host closed the connection? Why did that happen?
21:53:31 <elliott> http://www.google.com/recaptcha/api/image?c=03AHJ_Vutjaxx7sWT-X_rA0M5Zqe7bNiMJc4VpqmdqMIyrJzrwPrCEbHPAdQZG9OEixxe5JrXMYRAjO9iVRo3ViYAw1RsHw6TR06jwIVUGga2IJd8zS9Ttt_H0zHsnO_00EyUUxPoatRhbW1RtfVUF0oVMZqYHm1KCuA
21:53:42 -!- tswettbot4 has joined.
21:54:29 <elliott> I dissmiss you, tswettbot.
21:54:30 <elliott> I dissmiss you, tswettbot4.
21:54:35 <tswett> I dismiss you, tswettbot.
21:54:39 <tswett> The nick is hardcoded into that message.
21:54:56 <oerjan> also the spelling, bizarrely enough.
21:55:22 <elliott> shouldn't it just figure out what i mean and do it?
21:55:49 <tswett> 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:57:24 <tswett> What the heck is happening? :P
21:57:54 <elliott> 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 <elliott> ais523: evil prediction: an advertising network will implement an "innovative new anti-adblocker feature" for sites
21:59:29 <ais523> I've seen sites that use anti-adblockers
21:59:31 <elliott> ais523: this will involve the ad executing some code to decrypt the stored page html
21:59:42 <ais523> however, the advertising networks really like adblockers, or at least don't mind them
21:59:48 <tswett> Debugging that was the most confusing experience of my life.
21:59:49 <elliott> 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 <ais523> because if the ad's never loaded from their servers, they don't have to pay the site for showing it
22:00:03 <elliott> ais523: heh, right, it's actually profitable for them to support adblockers
22:00:06 <ais523> 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 <elliott> ais523: well, pay-per-view isn't universal
22:00:23 <ais523> but pay-per-click's basically neutral too
22:00:31 <ais523> whereas pay-per-view likes adblockers
22:01:00 <elliott> 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:37 -!- MigoMipo has quit (Read error: Connection reset by peer).
22:01:42 -!- tswettbot9 has joined.
22:02:58 <elliott> 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 <elliott> (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 <tswett> I removed the part where it says it's sending a message.
22:03:58 <tswett> 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:43 <tswett> Golly gee whiz, I think I've figured it out.
22:04:58 <tswett> Hey elliott, guess what this does: ['foo' isEmpty ifFalse: [^ true]] whileTrue
22:05:07 <elliott> i've forgotten what parse trees look like
22:05:13 <elliott> ZOMGMODULES: please advise
22:05:23 <tswett> And guess what this does: (['foo' isEmpty ifFalse: [^ true]] whileTrue) not
22:05:37 <tswett> You know what I didn't.
22:05:51 <elliott> ...elide the unnecessary ^?
22:05:52 <tswett> I was expecting [^ true] to just return true for itself, not the whole running thread thingy.
22:06:03 <elliott> yes, well, that's blocks for you :)
22:06:04 <tswett> Does "elide" mean what you think it means?
22:06:39 -!- tswettbot10 has joined.
22:07:11 <tswett> Whoa, I can't believe that worked.
22:07:33 <elliott> you realise quit is "QUIT :x" not "QUIT"
22:07:56 <tswett> You see, I was getting one of those debugger loops, where each debugger that opens crashes, opening another debugger.
22:08:04 <tswett> I pressed Cmd-., and the debugger loop stopped.
22:08:08 <elliott> that doesn't sound normal, you know.
22:08:19 <tswett> Indeed, but apparently it happens to people other than me sometimes.
22:08:39 <ZOMGMODULES> how can you expect a debugger to be bug-free
22:08:51 <ZOMGMODULES> at least smalltalk has the foresight to try to debug it
22:09:19 <elliott> ZOMGMODULES: what do asts look like again
22:09:35 * tswett runs the bot, expecting something to happen.
22:09:44 <tswett> Apparently, nothing happens when I run the bot now.
22:09:45 <elliott> do they warm you up if you hug them
22:10:09 <elliott> ZOMGMODULES: i'm only half joking, why doesn't c have support for data structures :/
22:10:22 <elliott> 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 <ZOMGMODULES> C has fine support for sexprs once you code them up
22:10:35 <elliott> 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:53 <oerjan> to understand asts, read r/trees
22:10:54 <elliott> 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 <ZOMGMODULES> 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 <elliott> ZOMGMODULES: well it's just... does that e--
22:11:31 <elliott> hey i should make them actual smalltalk objects
22:11:33 -!- tswettbot10 has quit (Ping timeout: 276 seconds).
22:12:06 <elliott> wow. richard dawkins' guardian.co.uk picture is so derpy
22:12:10 <ZOMGMODULES> elliott: if you are trying to code objects in C, that's your own damn fault
22:12:10 <elliott> http://static.guim.co.uk/sys-images/Guardian/Pix/pictures/2009/9/21/1253534142104/Dawkins-bio-pic-001.jpg "harr!"
22:12:15 <elliott> ZOMGMODULES: i'm not i'm not
22:12:23 <elliott> i briefly considered making the ast nodes smalltalk objects
22:12:44 <ZOMGMODULES> struct expr { struct expr *lhs; struct expr *rhs; char *op; }
22:13:29 <elliott> DOES LHS POINT TO SOMETHING WITH OP=| AND LHS=X AND RHS=(OP=| AND LHS=Y ...)
22:14:17 <elliott> hey dawkins said scapegoat in this article
22:14:23 <elliott> he wants to control his versions
22:16:24 <elliott> "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 <elliott> ce station to answer the charge.”"
22:17:27 <tswett> I have three questions now.
22:17:37 <tswett> 1. Why is it working? 2. Why isn't it working? 3. Why is it working?
22:17:49 <elliott> tswett: GIMME THE WORLD IMAGE IMA MAKE IT WORK WITH FRIENDSHIP & LOVE
22:18:26 <elliott> hmm, is it legal for police to stop someone making a citizen's arrest?
22:19:18 <tswett> elliott: is it illegal to trap someone when citizen's-arresting them?
22:19:50 <elliott> 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 <elliott> or at least, it should be legal
22:19:57 <elliott> so long as you don't actually use force
22:19:59 <tswett> I define "trap" as meaning whatever it meant as used in that quote you quoted. :P
22:20:20 <elliott> (and running away from a citizen's arrest should probably be illegal too, but)
22:20:25 <elliott> (i'm asking what is, not what should be)
22:20:27 <tswett> 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 <tswett> It's difficult to arrest someone effectively without applying any forces to them.
22:21:08 <elliott> "oops, sorry, i breathed on you"
22:21:42 <elliott> 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 <tswett> This bot seems to be sending a message for every message it receives.
22:22:26 <elliott> * oerjan has quit (Quit: Nude gait)
22:22:29 <tswett> That is, to quote Eliezer Yudkowsky, wrong.
22:22:51 <Sgeo> tswett, is this supposed to be a trivial bot?
22:23:00 <elliott> tswett is, to quote Eliezer Yudkowsky, a, person who quotes Eliezer Yudkowsky a lot.
22:23:02 <Sgeo> Maybe I should stay away from Smalltalk for bot purposes
22:23:07 <elliott> (I am pretty sure Eliezer Yudkowsky once said "a".)
22:23:24 <tswett> Sgeo: no, I'm just bad at Smalltalk.
22:23:34 <tswett> I made a glaring error here.
22:23:50 <tswett> Wait, no, I made a less-glaring error here.
22:23:53 <elliott> tswett: I WANT YOUR WHIRRLED IMAGE
22:23:59 <elliott> I have a smalltalk transcript
22:24:03 <elliott> this means i can type things and have them execute
22:24:16 <Sgeo> My friend got me a MtG online account as an early birthday gift
22:25:03 <tswett> elliott: okay, okay, just give me a moment.
22:25:35 -!- tswettbot128888 has joined.
22:25:46 <tswett> I dismiss you, tswettbot.
22:25:47 -!- tswettbot128888 has quit (Client Quit).
22:26:05 <tswett> So apparently the problem all along was that this thing was sending null messages. :P
22:26:14 <tswett> And I have no idea why that was a problem.
22:26:53 <elliott> elliottese is a good language
22:27:50 -!- tswettbot has joined.
22:28:12 <tswett> hey tswettbot, say this
22:29:01 <tswett> I dismiss you, tswettbot.
22:29:10 <tswett> The listener thread probably got killed, eh.
22:29:28 <tswett> We just need a new bot, then.
22:29:35 -!- tswetttbot has joined.
22:29:38 <elliott> tswett: hmm, this gc thing _is_ irritating
22:29:44 <tswett> Er, we need a new nick, then.
22:29:52 <tswett> elliott: no, I Cmd-.ed it because it was throwing a debugger loop again.
22:29:57 <elliott> tswett: no i mean in my bot
22:29:58 <tswett> Throwing the debugger for a loop again.
22:30:11 <elliott> [[stream nextLine. true] whileTrue] fork
22:30:11 <tswett> Turn garbage collection off. :P
22:30:19 <elliott> apparently it gets disconnected while waiting for input...
22:30:36 <tswett> If you're having trouble that I'm not having, I recommend being you.
22:30:55 <tswett> hey tswettbot, say something better this time.
22:31:04 -!- tswettbot has quit (Remote host closed the connection).
22:31:08 <tswett> Alas, I'm getting a debugger loop again.
22:31:15 <tswett> I dismiss you, tswettbot.
22:31:38 <tswett> I stand by my previous statement: :(
22:33:03 <elliott> 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 <tswett> I turned Pharo's sound on. It's really annoying.
22:36:53 <tswett> hey tswettbot, say say say say say
22:37:50 <elliott> tswett: are you using stream nextLine?
22:38:15 <tswett> These sounds are *really* annoying. To quote Eliezer Yudkowsky, AAIIIIIEEEEEAAARRRRRGGGHHH.
22:39:04 <tswett> olsner: the sounds Smalltalk makes when you turn sound on.
22:39:21 <tswett> Every time you open or close a window, it goes "TSSK tk".
22:39:34 <tswett> TSSK tk. TSSK tk. TSSK tk. TSSK tk. TSSK tk.
22:39:52 <tswett> 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 <Sgeo> coppro, anyone else who knows magic? What's a scheme?
22:40:16 <Sgeo> http://gatherer.wizards.com/Pages/Card/Details.aspx?multiverseid=212585
22:40:23 <Sgeo> It's not legally playable in any formats
22:40:30 -!- tswettttbot has joined.
22:40:57 <elliott> with the whole single-threaded vm thing
22:40:58 <tswett> elliott: what's better than it?
22:41:03 <tswett> ...it's a single-threaded VM?
22:41:20 <elliott> have simple networking code
22:41:27 <elliott> also the gc stuff is stupid
22:41:34 <elliott> workspace objects shouldn't get gc'd, or something
22:41:43 <tswett> Workspace objects should definitely get GC'd.
22:41:56 <elliott> not before the workspace is closed.
22:42:05 <tswett> Yes, that makes it not a bad idea.
22:42:18 <tswett> hey tswettbot, say say say SAY SAY SAY
22:42:33 <tswett> hey tswettbot, say PONG
22:42:38 -!- smallbot has joined.
22:42:42 <tswett> hey tswettbot, say PRIVMSG #esoteric :okay, man
22:42:51 <tswett> hey tswettbot, say QUIT :look what you can do, man
22:42:51 -!- tswettttbot has quit (Client Quit).
22:44:08 <elliott> please ping out so that i can use the gui again
22:44:16 -!- tswettbot has joined.
22:44:23 <tswett> elliott: Cmd-. You use a Mac, right? :P
22:44:33 <tswett> hey tswettbot, say NICK elliottbot
22:44:33 -!- tswettbot has changed nick to elliottbot.
22:44:39 <elliott> hey tswettbot, say NICK faggot
22:44:39 -!- elliottbot has changed nick to faggot.
22:44:45 <elliott> hey tswettbot, say JOIN #freenode
22:44:46 <tswett> hey tswettbot, say QUIT
22:44:46 -!- faggot has quit (Client Quit).
22:44:49 <elliott> hey tswettbot, say PRIVMSG #freenode :i'm a faggot
22:44:52 <elliott> tswett: THAT'S WHAT YOU GET
22:45:00 <elliott> to quote eliezer yudkowsky, "faggot"
22:45:17 -!- Tachycek has changed nick to Me_faps.
22:45:19 <elliott> tswett: hey, you typed pretty fast there
22:45:21 -!- Me_faps has changed nick to Tachycek.
22:45:27 <tswett> I typed it before you typed that.
22:46:09 <tswett> Just kidding. I actually typed "hey tswettbot, say QUIT" after you typed "hey tswettbot, say PRIVMSG #freenode :i'm a faggot".
22:47:30 -!- tswettbot has joined.
22:47:31 <elliott> String has endsWith: but not startsWith:
22:47:45 <elliott> hey tswettbot, say NICK iloveeverybody
22:47:46 -!- smallbot has quit (Ping timeout: 276 seconds).
22:47:56 <elliott> i was just trying to be friendly
22:48:15 <tswett> You should be ashamed of yourself. For everything.
22:48:17 <elliott> You're a jerrrrrrrrrrrrrrrrrrrk.
22:48:35 <tswett> How do you pronounce "jerrrrrrrrrrrrrrrrrrrk"?
22:48:54 <tswett> tswettbot probably still pings out.
22:49:00 <tswett> tswett still pings out.
22:49:07 <tswett> tswettbot still pings out.
22:49:16 <tswett> The first of those, I had no reason to doubt. The second of those was a typo.
22:49:29 <tswett> elliott: here, you can go ahead and dismiss the bot.
22:49:56 <tswett> Oh? I thought it was a jerrrrrrrrrrrrrrrrrrrk.
22:50:09 <tswett> Take out your feelings of anger on the bot!
22:50:19 <elliott> tswett: i think you are a bad parent and also abusive
22:50:23 <elliott> i think tswettbot should go into foster care.
22:50:27 <tswett> tswettbot doesn't say what you tell it to say any more.
22:50:29 <elliott> tswettbot: everything is going to be ok
22:50:35 <tswett> ZOMGMODULES: the space on the end is necessary.
22:50:41 <tswett> elliott: dismiss it into foster care.
22:50:43 <ZOMGMODULES> hey tswettbot, say I dismiss you, tswettbot.
22:50:44 -!- tswettbot has quit (Client Quit).
22:53:30 <elliott> oh man, smalltalk shares the same braindamage as lua!
22:53:57 <ZOMGMODULES> DOES IT CONFLATE THEM WITH DICTIONARIES LIKE LUA
22:54:01 <elliott> the best kind of indexing, if you define best as the top element when sorted from worst to best
22:54:12 <tswett> No, Smalltalk has lots of kinds of containers.
22:54:22 <elliott> 1.5 is a valid array index
22:54:31 <tswett> The worst kind of indexing is indexing by wood.
22:54:36 <elliott> i propose we all adopt the compromise 0.5 starting array index value
22:54:42 <tswett> In order to index the array, you must jab a piece of wood into your CPU.
22:55:07 <tswett> 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 <elliott> omg smalltalk has nice names for indexes
22:56:49 <elliott> it should be done with the not implemented thing
22:57:01 <elliott> tokens sevenhundredsquillionsixthousandsextillion
22:57:19 <tswett> And they go up to ninth.
22:57:27 <elliott> everything cp... ZOMGMODULES says sounds better in caps
22:57:35 <tswett> elliott: ahem. tokens sevenhundredsquillionsixthousandsextillionth.
22:58:11 <elliott> hmm, yet how do you chop the first element off a smalltalk orderd collection
22:58:29 <elliott> "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 <elliott> " #(1 2 3) polynomialEval: 2 " "is 3*X^2 + 2*X + 1 with X = 2"
22:58:32 <elliott> yes, sequences should know how to do this
22:58:36 <elliott> (this is my main objection to message passing)
22:58:55 -!- Tachycek has left (".").
22:59:40 <elliott> tokens := line findTokens: ':'.
22:59:40 <elliott> elems := tokens first findTokens: ' '.
22:59:40 <elliott> args := elems allButFirst.
23:00:37 <tswett> elliott: where do you use prefix?
23:00:46 <elliott> prefix and args are the result
23:00:52 <ZOMGMODULES> 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 <elliott> this is basically a constructor thing :)
23:01:05 <tswett> Why would you want it to be prettier? :P
23:02:31 <elliott> tswett: HOW DO YOU GET ALL BUT THE FIRST AND SECOND EH
23:02:47 <tswett> elliott: allButFirst: 2
23:07:53 <elliott> tswett: there's some fancy StringBuilder thing isn't there? or am i wrong
23:09:54 -!- smallbot has joined.
23:10:03 <elliott> smallbot: what are you doing here, you broke
23:10:04 <Sgeo> Magic Online wants admin access to my computer
23:10:15 * Sgeo glares at Wizards of the Coast
23:10:42 <tswett> Sgeo: doesn't just about everything?
23:10:55 <Sgeo> Well, a lot of old stuff
23:11:17 <Sgeo> Docking Station comes to mind rather quickly
23:11:25 <olsner> elliott: StringBuilder? Java?
23:11:34 <elliott> olsner: probably that's what i was thinking
23:11:54 <olsner> do we even allow talking about Java in here? :/
23:12:41 <elliott> smallbot: come on, die, fucker!
23:13:07 -!- elliotts_favorit has joined.
23:13:24 -!- smallbot has quit (Client Quit).
23:13:25 <tswett> olsner: well, that depends. Is Java an esoteric language?
23:13:33 <tswett> elliotts_favorit is elliott's favorit.
23:13:46 -!- smallbot has joined.
23:14:04 <elliott> how are you not pinged out, little buddy
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 <elliott> oh it only does it on privmsgs
23:14:38 <tswett> Get two of it in here. Now.
23:14:57 -!- smallbot has quit (Remote host closed the connection).
23:15:16 <tswett> Open two of the world.
23:15:18 -!- storkbot has joined.
23:15:24 -!- smallbot has joined.
23:15:41 <storkbot> ZOMGMODULES: Help is available for: assignment expressions print goto tell source errors
23:15:47 <storkbot> ZOMGMODULES: Unknown command. Type '|help' for help.
23:15:47 <elliott> the other smallbot is still using its nick
23:15:48 -!- smallbotx has joined.
23:15:50 <storkbot> ZOMGMODULES: To get more interesting error messages, set ~/errmsgs=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:06 <storkbot> ZOMGMODULES: That's wonderful for you!
23:16:13 <storkbot> elliott: Unknown command. Type '|help' for help.
23:16:24 <storkbot> ZOMGMODULES: What is this I don't even
23:16:36 <storkbot> ZOMGMODULES: That's wonderful for you!
23:16:46 <tswett> Anyway, as you can see, elliotts_favorit is immortal.
23:16:51 <tswett> Nothing can make it quit.
23:17:02 <storkbot> elliott: omg u errored teh syntax!!1!
23:17:06 <storkbot> elliott: That's wonderful for you!
23:17:12 <storkbot> elliott: That's wonderful for you!
23:17:15 <storkbot> elliott: What is this I don't even
23:17:20 <storkbot> elliott: What is this I don't even
23:17:23 <ZOMGMODULES> and the scary thing is that that feature requires lua 5.1
23:17:26 <elliott> ZOMGMODULES: needs moar errors
23:17:30 <elliott> ZOMGMODULES: can you let us define our own errmsgs
23:17:42 <elliott> be able to set |~/errmsgs=('That's stupid.'; 'You''re stupid.')
23:17:47 <elliott> (best string and list syntax, bcuz its different)
23:17:52 <ZOMGMODULES> |~/errmsgs=('That's stupid.'; 'You''re stupid.')
23:17:53 <storkbot> ZOMGMODULES: ('That's stupid.'; 'You''re stupid.')
23:18:03 <elliott> yes but it doesn't actually... use them
23:18:09 <storkbot> ZOMGMODULES: Unknown command. Type '|help' for help.
23:18:21 -!- tswett_otherbot has joined.
23:18:24 <storkbot> ZOMGMODULES: Unknown command. Type '|help' for help.
23:18:29 <tswett> |what is stockbot supposed to do?
23:18:29 <storkbot> tswett: Unknown command. Type '|help' for help.
23:18:31 <storkbot> ZOMGMODULES: Unknown command. Type '|help' for help.
23:18:36 <storkbot> ZOMGMODULES: Help is available for: assignment expressions print goto tell source errors
23:18:44 <storkbot> ZOMGMODULES: To evaluate a string as a command, issue 'goto command'. This discards control context.
23:18:53 <storkbot> ZOMGMODULES: Help is available for: assignment expressions print goto tell source errors
23:19:12 <elliott> what's the thing to activate a block in smalltalk
23:19:14 -!- storkbot has quit (Remote host closed the connection).
23:19:35 -!- ZOMGMODULES has changed nick to storkbot.
23:19:37 -!- storkbot has quit (Quit: leaving).
23:20:08 <elliott> <elliott> what's the thing to activate a block in smalltalk
23:20:18 <tswett_otherbot> 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 <tswett> elliott: value, I think.
23:20:49 <tswett> [:x | x + 1] value: 4 === 5
23:21:01 <elliott> hmm, maybe that way of doing it sucks
23:21:28 -!- sedbot has joined.
23:21:51 <elliott> ais523: btw, re your liquid democracy thing
23:21:57 <elliott> ais523: (that you didn't invent, but)
23:21:58 <olsner> hmm, my bot is useless :)
23:22:01 <elliott> ais523: i invented the BEST SYSTEM EVER based on it
23:22:13 -!- elliotts_favorit has quit (Quit: elliotts_favorit).
23:22:30 -!- sedbot has quit (Client Quit).
23:23:08 -!- cheater- has joined.
23:23:12 <tswett> tswett_otherbot is still here.
23:24:13 <tswett> I think if I patch ZbasuBot, some of the patches will take effect right away. :P
23:24:31 <olsner> 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 <elliott> tswett: can i throw money at you to make you write @
23:26:19 <olsner> hmm, could be fun to extend that sed bot to something vaguely useful
23:26:45 -!- tswett_otherbot has quit (Ping timeout: 246 seconds).
23:27:54 <tswett> No, I already have enough money, but not enough time.
23:28:02 <tswett> You should pay me time for money.
23:28:34 -!- tswettbot has joined.
23:28:37 <tswett> I should try to fix that thing that causes every error to cause a debugger loop.
23:28:42 <tswett> tswettbot: be better this time.
23:29:28 -!- smallbot has joined.
23:30:46 <tswett> I guess this bot is impatient.
23:30:57 <olsner> 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:27 <elliott> how can i tell pharo to save from the console >_>
23:31:35 -!- tswettbot has quit (Remote host closed the connection).
23:31:44 <tswett> elliott: you have a console?
23:32:05 <elliott> Basically I killed the input-reading thread>_>
23:32:11 <elliott> Which includes mouse/keyboard
23:32:32 <tswett> Why would you want to save that?
23:32:45 <elliott> Because the world has code...
23:32:46 <tswett> If the image is broken, quit it and recover your changes.
23:32:49 <tswett> Note that I have never done this.
23:32:54 <tswett> Yes, but it doesn't have an input-reading thread. :P
23:33:55 -!- smallbot has joined.
23:34:22 <Vorpal> elliott, you will like the randomised name of my current dwarf fortress embarkment: Boatprison.
23:38:28 -!- smallbot has quit (Ping timeout: 276 seconds).
23:38:30 <elliott> i'll just wait for it to ping out
23:38:40 -!- smallbot has joined.
23:39:42 <elliott> tswett: it's a bit retarded. :(
23:40:35 <tswett> It's so retarded that it isn't here.
23:42:33 <tswett> It's a bit smarter now.
23:42:36 -!- tswettbot has joined.
23:42:42 <elliott> hey tswettbot, say nothing at all
23:42:45 <elliott> hey tswettbot, say PRIVMSG #esoteric :nothing at all
23:43:17 -!- smallbot has quit (Ping timeout: 260 seconds).
23:43:55 <elliott> now i'm going to do something less painful, like suicide
23:44:07 <elliott> maybe i'll write storkbot but better :)
23:44:20 <elliott> just as long as i don't end up writing a proper parser
23:44:29 <elliott> i could make it like tcl, everything is a string!
23:54:23 <Sgeo> Is there a reason to like Smalltalk more than Newspeak?
23:55:05 <elliott> tswett: So hey, Redivider!
23:56:16 -!- ZOMGMODULES has joined.
23:56:28 <elliott> ZOMGMODULES: plz not to be suing me for what i've done
23:56:56 <elliott> ZOMGMODULES: DECIDED TO MAKE A BOT THAT'S ALL THAT STORKBOT COULD BE
23:57:09 <elliott> like, |tell? who needs that when you can just append to someone's inbox array???
23:57:24 <elliott> IF YOU WON'T NURTURE THIS POSSIBLE SHITTY LANGUAGE, I WILL
23:57:47 <elliott> i don't actually know what i mean
23:58:43 <elliott> hmm, the "permissions" on variables sound like fun... like, you want the inbox array to be append-only for everyone else
23:58:53 -!- storkbot has joined.
23:58:57 <elliott> or maybe you just need ~foo/inbox to automatically erase itself and append to ~foo/msgs
23:58:59 <ZOMGMODULES> except now i look at its lua source code and i hate it... oh hi storkbot
23:59:08 <elliott> ~foo/send should be a FUNCTION
23:59:13 <elliott> that can obviously access ~foo/inbox
23:59:15 <storkbot> ZOMGMODULES: Unknown command. Type '|help' for help.
23:59:17 <elliott> so ~foo/send just appends to the inbox
23:59:37 <ZOMGMODULES> i was thinking about how to distinguish commands from variables
23:59:50 <elliott> see, i just solved it, don't distinguish!
23:59:58 <elliott> just expand variables with like