←2011-04-04 2011-04-05 2011-04-06→ ↑2011 ↑all
00:01:33 <tswett> But every graph is representable in three dimensions.
00:01:35 * tswett coughs.
00:01:41 <Sgeo> ?
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:07:42 <fizzie> Hm, no go. :/
00:08:52 <fizzie> \m/ \m/ \m/ \m/
00:08:53 <myndzi> `\o/´ `\o/´
00:08:53 <myndzi> | |
00:08:53 <myndzi> /'¯|_) /'\
00:08:53 <myndzi> (_| (_| |_)
00:09:05 <fizzie> There.
00:11:02 <myndzi> < tswett> What's that sixth one?
00:11:09 <myndzi> blood spatter lol
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:09 * tswett nods.
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:24 <myndzi> `\o/´ `\o/´ `\o/´
00:13:25 <myndzi> | | |
00:13:25 <myndzi> (_|¯`¯|_) /'\ (_|¯`\
00:13:25 <myndzi> (_| |_) |_)
00:13:30 <tswett> Yay.
00:13:34 <myndzi> yeah, well, i can break the rules
00:13:35 <myndzi> :)
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:14:39 <myndzi> (for the feet)
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:20:45 * Sgeo is confused
00:20:57 <myndzi> lol
00:21:00 <myndzi> have you read the Amber series?
00:21:42 <Sgeo> No
00:21:47 <myndzi> that's why then
00:22:02 <myndzi> it's a fantasy 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:38 <myndzi> or something
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> d, v = 0, [1.] + [0.] * 365
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:31:35 <quintopia> d
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:50:55 * tswett whistles.
00:52:02 <tswett> Well, that was anticlimactic.
00:52:30 * tswett tries again.
00:54:17 * tswett tries again again.
00:54:31 <quintopia> fizzie: so what does v contain?
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:00:37 <quintopia> what i meant was
01:00:46 <quintopia> "a single assignment value"
01:00:59 <quintopia> so x,y,z=5 sets everything to 5
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:06:12 * tswett celebrates.
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:29 <tswett> Hi copumpkin.
01:19:37 -!- tswettbot has joined.
01:19:37 <tswettbot> I am sending a message.
01:19:38 <copumpkin> yo
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:20:04 <tswett> Observe.
01:21:00 -!- catseye has set topic: ESOTERIC LANGUAGES | Catch sufficiently hello world. | An unusually not mephitic forum. | Enjoy being locked in your matrix of solidity. | yoob: http://catseye.tc/lab/yoob/applet.html (+Etcha +fixes) | Logs: http://tunes.org/~nef/logs/esoteric/?C=M;O=D, http://codu.org/logs/_esoteric/.
01:21:17 <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> I am sending a message.
01:21:47 -!- tswettbot has quit (Client Quit).
01:21:59 <tswett> Just as expected.
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:24 <tswett> Yeah.
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:31:58 <catseye> tswett: what's it wri...
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:32:54 <tswett> Smalltalk, yes.
01:33:00 <catseye> Cool.
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:44:31 <tswettbot> I am sending a message.
01:45:34 -!- tswettbot has quit (Remote host closed the connection).
01:45:56 -!- tswettbot has joined.
01:45:56 <tswettbot> I am sending a message.
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:39 <tswett> Sgeo: Pharo.
01:47:42 <oklopol> i take a 12 hour nap and suddenly you people have talked here for lines and lines
01:47:44 <oklopol> you know what
01:47:46 -!- tswettbot has joined.
01:47:46 <tswettbot> I am sending a message.
01:47:48 <oklopol> i'm not gonna read any of it
01:47:50 <oklopol> fuck you
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:00 <tswett> Wait, it crashed.
01:49:05 <oklopol> are you trying to write a bot?
01:49:23 <tswett> Yep.
01:49:27 <oklopol> is it hard
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:16 <tswettbot> I am sending a message.
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:52:02 <copumpkin> :P
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:43 <tswett> Sgeo: yeah.
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> [[
01:59:17 <tswett> |line|
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:21 <tswett> ] whileTrue] fork.
01:59:23 <tswett> (Yep, tabs.)
01:59:33 <tswett> (And this is #esoteric. We paste five lines here.)
01:59:38 <oklopol> o
01:59:38 <oklopol> o
01:59:39 <oklopol> o
01:59:39 <oklopol> o
01:59:39 <oklopol> o
01:59:39 <oklopol> o
01:59:39 <oklopol> o
01:59:40 <oklopol> o
01:59:40 <oklopol> o
01:59:40 <oklopol> o
01:59:42 <tswett> See?
01:59:46 <oklopol> what does |line| do?
01:59:55 <tswett> It declares a local variable called line.
02:00:01 <variable> :-\
02:00:03 <oklopol> okay
02:00:15 <oklopol> variable: are you local or global?
02:00:23 <tswett> variable: I know. It will be all right.
02:00:26 <variable> oklopol: global
02:00:28 <oklopol> whore
02:00:36 <Sgeo> SGU time
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:12 <oklopol> i hear
02:01:23 <tswett> I call x.
02:01:26 <variable> oklopol: not really. I'm only *considered* harmful
02:02:00 <oklopol> true
02:03:19 <oklopol> i guess you just did wulf
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:09 <tswettbot> I am sending a message.
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:04:59 <olsner> sure do!
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:21 <oklopol> eerie
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:05:43 <tswett> Nope.
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:29 <oklopol> *fo
02:06:32 <oklopol> *for
02:06:37 <variable> :-)
02:06:38 -!- tswettbot has quit (Remote host closed the connection).
02:07:34 <oklopol> variable: thanks
02:17:25 -!- augur has quit (Remote host closed the connection).
02:18:57 -!- storkbot has joined.
02:19:07 <catseye> storkbot: hi
02:19:08 -!- storkbot has quit (Remote host closed the connection).
02:19:15 <catseye> rock
02:20:30 -!- storkbot has joined.
02:20:36 <catseye> storkbot: hi again
02:20:37 <storkbot> catseye: Unknown command. Type '|help' for help.
02:20:43 <catseye> |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:22:57 <catseye> |save
02:22:58 <storkbot> catseye: State saved.
02:23:01 <catseye> storkbot: YOU LIE
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:38:52 <Tachycek> xD
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:33 <variable> Tachycek: yeap
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:05 <Tachycek> hehe
02:40:07 <variable> oklopol: no - the language
02:40:11 <variable> :-)
02:40:13 <oklopol> no - the silence
02:40:17 <variable> oh
02:40:17 <variable> ok
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:24 <Tachycek> i like lolcode :)
02:41:45 <Tachycek> but i didn't see any working serious implementation of it :)
02:41:50 <Tachycek> maybe lolpython
02:41:56 <Sgeo> Tachycek, might want to put on some asbestos clothes
02:42:23 <Tachycek> :-)
02:43:35 <Tachycek> the logs of this channel are public?
02:43:36 <variable> Tachycek: there are many
02:43:44 <variable> Tachycek: yeah
02:43:47 <Tachycek> :<
02:44:00 <variable> Tachycek: I know, it put me off at the start too
02:44:01 <Tachycek> don't like to be googlable :)
02:44:08 <variable> Tachycek: ditto - hence the nick
02:45:04 <variable> Tachycek: http://lolcode.com/
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:10 <Tachycek> well however
02:46:14 <Tachycek> i'm tired ppl
02:46:17 <Tachycek> so gn :)
02:46:41 <variable> gnight Tachycek
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:39 <Tachycek> and mabye the mask
02:47:55 <Tachycek> dont like link ip->nick either :)
02:47:57 <Tachycek> anyway gn
02:53:54 <oklopol> n
02:54:42 <oklopol> http://www.math.utu.fi/henkilokunta/?userID=810 me and my giant hand
02:56:08 <olsner> Oklo "Bighand" Pol
02:56:36 <oklopol> my full name is oklopol ominovorol
02:56:43 <oklopol> everyone knows that
02:57:24 -!- calamari has quit (Quit: Leaving).
03:10:42 -!- augur has joined.
03:18:25 -!- zzo38 has joined.
03:21:37 <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:27:39 <olsner> Sgeo: I think so
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:35:55 <zzo38> Sgeo: Why?
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:37:54 <zzo38> Yes
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:24 <oklopol> oh indeed
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:56:29 <oklopol> but WHYYYYYYYYYYYYY
03:56:42 <oklopol> physics is 3d :\
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:00:58 <oklopol> wb
04:01:30 <zzo38> What is "wb"?
04:02:05 <oklopol> welcome bro
04:02:21 <zzo38> I looked at the log file, the glogbot logs does not have the quit message, it seems?
04:02:32 <oklopol> dunno, dunno
04:03:13 <oklopol> what does it mean to do "matrix multiplication horizontally"
04:03:20 <oklopol> erm vertically
04:03:24 <oklopol> but in any case
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:07:15 <oklopol> mkay.
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:16 <oklopol> oh
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:22 <oklopol> yeah yeah okay
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:13:52 <zzo38> Maybe......
04:14:05 <oklopol> which would be obvious if i knew even the tiniest bit about the actual usage of these things
04:14:33 <oklopol> in any case
04:14:39 <oklopol> i should go to uni
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:21 <oklopol> or what is a component
04:16:39 <zzo38> For $n$ bits, you need $2^n$ components.
04:16:45 <oklopol> oh right
04:16:47 <zzo38> One for each possible combination.
04:16:51 <oklopol> yeah sure
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:34 <oklopol> or do you mean
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:14 <oklopol> oh right
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:25:53 <oklopol> then again what isn't
04:28:30 <zzo38> You can write a tensor as a matrix, also.
04:30:28 <oklopol> yes
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:37:42 <oklopol> *which
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:44:06 <oklopol> yes
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:47 <Tachyx> elliott: HAI
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:23 <elliott> HAPPY NAO
13:37:39 <elliott> also Tachyx Tachycek 81.200.61.23 >__________>
13:37:54 <Tachyx> :))
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:39:54 <Tachyx> :))
13:39:56 <Tachyx> 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:40:57 <elliott> JERKFACE
13:41:01 * elliott cries
13:44:23 <Tachyx> :)))
13:44:25 <Tachyx> trololo
13:59:47 -!- wareya has joined.
13:59:51 -!- asiekierka has joined.
14:01:02 <elliott> Float value_: _fp
14:01:02 <elliott> [
14:01:02 <elliott> self := self new.
14:01:02 <elliott> { memcpy(self, v__fp, sizeof(double)); }.
14:01:02 <elliott> ]
14:01:04 <elliott> Now that's some code.
14:01:11 <elliott> tswett: ^
14:02:31 -!- wareya_ has quit (Ping timeout: 240 seconds).
14:23:05 -!- Sgeo_ has quit (Read error: Connection reset by peer).
14:38:16 <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:31 <elliott> it was quite entertaining
14:40:37 <elliott> (seconds later it was about how Emacs was an OS lol)
14:40:51 <elliott> OH!
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:41:05 <elliott> (internet was out)
14:42:56 -!- cpressey has joined.
14:43:50 <elliott> hi cpressey we're doign the best thing
14:43:57 <elliott> trollign Gregor
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:44:46 <cpressey> *requiring it (the webpage)
14:45:06 <cpressey> I ask here because I know you are all totally lawyers here
14:45:17 <elliott> cpressey: depends
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:38 <cpressey> lol
14:45:41 <elliott> i'm not joking
14:45:50 <elliott> assuming CC share alike doesn't have special provisions for this, that's the situation
14:45:58 <cpressey> then "ironic lol"
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:20 <cpressey> er, 3.0 I think
14:46:29 <elliott> what country version? or unported?
14:46:33 <cpressey> unported
14:46:44 * cpressey hugs public domain
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:05 <elliott> PHONOGRAM
14:47:11 <elliott> PHONOGRAM IN DIGITAL FORM
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:41 <elliott> uh
14:47:43 <elliott> cpressey: that
14:47:45 <elliott> cpressey: might
14:47:47 <elliott> cpressey: give you a license to use it
14:47:49 <elliott> if you're making like
14:47:51 <elliott> a gallery of images
14:48:03 <elliott> fuck it, i'll ask irc
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 <elliott> right
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:48:54 <elliott> i feel cheated
14:49:00 <cpressey> well, it's ONE case
14:49:04 <cpressey> but, you know
14:49:06 <cpressey> images.
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:49:57 <elliott> so s/software/work/
14:50:54 <elliott> cpressey: or uh wait, that's just a verbose wtfpl
14:51:00 <elliott> disregard
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:52:59 <elliott> fuckin' kitten anarchy
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:41 <elliott> <greg-g> IANAL, TINLA
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:00:27 <Phantom_Hoover> Huh.
15:00:37 <Phantom_Hoover> I appear to be 403ed from Conservapedia.
15:00:48 <cpressey> \o/
15:00:48 <myndzi> |
15:00:48 <myndzi> >\
15:00:51 <elliott> me too
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:08 <elliott> *find /
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:47 <Phantom_Hoover> hg is the one in Python, isn't it?
15:24:56 <Phantom_Hoover> And is named after a toxic metal that causes brain damage.
15:25:25 <elliott> Yes
15:25:26 <elliott> *Yes.
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:12 <elliott> Right, LL(k) basically.
15:29:15 <Gregor> Yeah
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:31:23 <elliott> s/awful/ugly/
15:37:58 -!- sebbu has joined.
15:37:58 -!- sebbu has quit (Changing host).
15:37:58 -!- sebbu has joined.
15:44:11 -!- elliott has quit (Ping timeout: 260 seconds).
15:50:44 -!- Tachyx has changed nick to rofl_idiot.
15:50:55 -!- rofl_idiot has changed nick to Tachycek.
15:53:36 <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 <lambdabot> 5
16:11:24 <oerjan> pretty much :D
16:11:24 * oerjan cannot recall if haskell adds anything else
16:11:25 <cpressey> > let _' = 5 in _'
16:11:25 <lambdabot> 5
16:11:25 <cpressey> > let _` = 5 in _`
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:26 <oerjan> oh wait
16:11:27 <Phantom_Hoover> It's used for infixing, though.
16:11:27 <oerjan> yours errored out at = not `
16:11:27 <oerjan> right that was it
16:11:27 <cpressey> > let (+-) = 5 in (+-)
16:11:27 <lambdabot> 5
16:13:42 <cpressey> let (a b) = 5 in (a b)
16:13:42 <cpressey> um
16:13:43 <cpressey> > let (a b) = 5 in (a b)
16:13:43 <lambdabot> <no location info>: Parse error in pattern
16:13:45 <oerjan> that's not legal alas
16:13:45 <cpressey> spaces not good enough for you, huh, haskell?
16:13:47 <oerjan> > let a b = 5 in a b
16:13:47 <lambdabot> 5
16:13:50 <cpressey> ouch
16:13:51 * oerjan grins evilly
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:02 <cpressey> > b
16:14:02 <lambdabot> b
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:36 <cpressey> > let foo bar = 5 in foo bar
16:16:36 <lambdabot> Not in scope: `bar'
16:16:51 -!- tswett has quit (Ping timeout: 250 seconds).
16:16:51 <oerjan> the last bar is a free variable
16:17:10 <cpressey> sadly
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:49 <lambdabot> 5
16:17:55 -!- tswett has joined.
16:18:02 <cpressey> > let foo foo = 5 in foo (foo)
16:18:03 <lambdabot> 5
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:18:55 <lambdabot> 5
16:18:58 <cpressey> !
16:19:23 <cpressey> i guess you can parenthesize it without putting an @ on it
16:19:31 <oerjan> so it seems
16:20:18 <cpressey> > let (+-) (+-) = 5 in (+-) (+-)
16:20:18 <lambdabot> 5
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:15 <lambdabot> Conflicting definitions for `+-'
16:22:15 <lambdabot> Bound at: <interactive>:1:9-12
16:22:15 <lambdabot> ...
16:22:17 <oerjan> and vice versa for `...alphanum chars`
16:22:46 <oerjan> > (`a`)
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:04 <lambdabot> Conflicting definitions for `foo'
16:23:05 <lambdabot> Bound at: <interactive>:1:8-10
16:23:05 <lambdabot> ...
16:23:10 <cpressey> > let foo foo' foo'' = 5 in (foo) `foo` (foo)
16:23:12 <lambdabot> 5
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:01 <lambdabot> 42
16:25:14 <cpressey> > let (+-) a b = a * b in (+-) 6 7
16:25:15 <lambdabot> 42
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:31 <cpressey> but... but...
16:25:44 <oerjan> i said except for that
16:25:46 <cpressey> i know.
16:25:54 <cpressey> i know, i know.. but ... but'
16:26:27 <cpressey> > let (6) = 7 in (6)
16:26:28 <lambdabot> 6
16:26:33 <cpressey> >:(
16:26:51 <oerjan> that one works a different way because 6 is a pattern, not an identifier
16:27:16 <cpressey> > let (*6*) = 7 in (*6*)
16:27:48 <lambdabot> <no location info>: parse error on input `)'
16:27:54 <oerjan> 6 isn't an operator char either
16:27:54 <cpressey> no digits in operators. bah!
16:29:02 <cpressey> > let _6_ _ _ = 7 in 6 `_6_` 6
16:29:02 <lambdabot> 7
16:29:04 <oerjan> haskell keeps the charset for identifiers and operators disjoint.
16:29:05 <cpressey> so...
16:33:23 <cpressey> > let (_) _ _ = 7 in 6 _ 7
16:33:23 <lambdabot> <no location info>: Parse error in pattern
16:33:24 <cpressey> indeed
16:33:28 <cpressey> > let (') _ _ = 7 in 6 ' 7
16:33:28 <oerjan> it tries mostly to prevent two consecutive tokens with operator chars from being likely
16:33:28 <lambdabot> <no location info>:
16:33:28 <lambdabot> lexical error in string/character literal at chara...
16:33:29 <oerjan> although there are exceptions
16:33:31 <cpressey> > let (↯) _ _ = 7 in 6 ↯ 7
16:33:31 <lambdabot> 7
16:33:35 <oerjan> cpressey: _ is a special pattern and not an identifier
16:33:44 <cpressey> > f 1 = 0; f _ = 1; f 9
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:50 * cpressey splits hairs
16:33:50 <oerjan> use let
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:34:35 <cpressey> > let f 1 = 0; f _ = 1 in f 9
16:34:35 <lambdabot> 1
16:34:39 <cpressey> ok
16:37:42 <oerjan> and neither lambdabot nor ghci allows the full set of declarations in a module file
16:37:44 <cpressey> > let ↯ _ = 7 in ↯ 6
16:37:45 <lambdabot> <no location info>: parse error on input `
16:37:50 <cpressey> > let (↯) _ _ = 7 in (↯) 6 6
16:37:50 <lambdabot> 7
16:37:56 <cpressey> ok well that was fun
16:50:10 -!- esowiki has joined.
16:51:01 -!- esowiki has joined.
16:51:01 -!- glogbot has joined.
16:51:15 <oerjan> > let let x = 5 in "hi"
16:51:16 <lambdabot> <no location info>: parse error (possibly incorrect indentation)
16:51:29 <oerjan> > let let x = 5
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:19 <oerjan> > let \x -> 5 + = in
16:54:20 <lambdabot> <no location info>: parse error on input `='
16:54:26 <oerjan> hah
16:54:51 <oerjan> it looks like a let block is parsed with something that allows an arbitrary expression
16:55:22 <cpressey> eeeenteresting yes
16:55:33 <oerjan> and only errors out after the whole expression has been parsed
16:55:51 <cpressey> > let 5 + 6 = 11 in 11
16:55:52 <lambdabot> 11
16:56:10 <cpressey> > let 5 + 6 = 12 in 11
16:56:11 <lambdabot> 11
16:56:16 <oerjan> that's actually a legal operator definition
16:56:27 <cpressey> > let 5 + 6 = 12 in 5 + 6
16:56:28 <lambdabot> 12
16:56:36 <cpressey> that's... beautiful
16:56:57 <oerjan> until you try to call it with something other than 5 and 6, anyhow
16:57:08 <cpressey> > let 5 + 6 = 12 in 5 + 5
16:57:09 <lambdabot> *Exception: <interactive>:3:4-13: Non-exhaustive patterns in function +
16:57:14 <cpressey> yep
16:57:45 <oerjan> > let f (5+6) = 3 in f 11
16:57:46 <lambdabot> <no location info>: Parse error in pattern
16:57:52 <Deewiant> > let x + y = 4 in x + y
16:57:52 <lambdabot> 4
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 ; ...
16:59:59 <oerjan> )
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:39 <cpressey> > let \x -> 5 in 5
17:08:40 <lambdabot> <no location info>: parse error on input `in'
17:09:24 <cpressey> > let 5 + 6 + 7 = 8 in 9
17:09:25 <lambdabot> <no location info>: Parse error in pattern
17:09:48 <Phantom_Hoover> > let 5+6 = 13 in 5+6
17:09:49 <lambdabot> 13
17:09:58 <cpressey> > let \x -> 5 = \x -> 6 in 5
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:56 <oerjan> > let 5 + 6 + 7 + =
17:13:57 <lambdabot> <no location info>: parse error on input `='
17:14:30 * oerjan fires up real ghci
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:54:34 <elliott> oh right
17:54:37 <elliott> in that lambdabot != ghci
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:55:27 <elliott> and? :p
17:57:05 <oerjan> elliott: so clog wasn't the one failing
17:57:12 <elliott> failing _what_
17:57:27 <oerjan> to record some minutes of conversation
17:57:34 <elliott> ouch
17:57:39 <elliott> yay for ch2
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:58:30 <oerjan> is what i see
17:59:15 <elliott> 16:06:03 <Razor-X> They use Smalltalk, by the way.
17:59:16 <elliott> 16:06:34 <GregorR> XD
17:59:16 <elliott> 16:06:42 <GregorR> Prepare for tomorrow with the language of yesterday :P
17:59:19 <elliott> Ooh, imma beat Gregor up.
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:00 <elliott> sukoshi
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:25 <oerjan> me too
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:30 <elliott> Which it does.
18:03:39 <Gregor> No, quit messages work fine.
18:03:44 <elliott> ROLY?
18:03:46 <elliott> I've never seen one.
18:04:01 <Gregor> If you look at the raw log, you'll see that it never received any quit messages.
18:04:07 <elliott> Ah :P
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:30 <Gregor> elliott: Yes.
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:06 <Gregor> Good fucking lord.
18:07:07 <Gregor> I hate you all.
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:21 * oerjan hides
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:11:16 <oerjan> to ken, or not to ken
18:12:20 <oerjan> ...don't you mean keywords...
18:12:37 <elliott> no
18:12:48 <oerjan> i mean, every identifier is a token
18:12:52 <elliott> I mean token types
18:12:58 <oerjan> ...ok
18:13:09 <elliott> hash, caret, pipe, equals, dot, semicolon, comment, symbol, number, string, lparen, rparen, lbracket, rbracket
18:13:11 <elliott> that's pretty few
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:25:51 <elliott> i believe
18:26:01 <oerjan> um irc is supposedly a tree, always
18:26:18 <elliott> hmm
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:26:40 <elliott> only about 25
18:27:03 <oerjan> i repeat, you don't need a logbot on all nodes, just the second-to-leaf ones
18:27:07 <elliott> yes yes
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:40 <elliott> also, the asian servers!
18:28:42 <elliott> also, servers anywhere
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:29:43 <elliott> (SPOILERS LOL)
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:30:09 <elliott> Does it now. Really.
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:12 <Zwaarddijk> they expect all of what
18:33:22 <Zwaarddijk> six stars colliding?
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:33:56 <elliott> Zwaarddijk: :D
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:24 <elliott> Off by .1 pixels, even!
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:51 <elliott> Lame.
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:40:56 <elliott> * * :End of /LINKS list.
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:42:57 <elliott> Weird.
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:48 <tswett> Nearly. >.>
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:46:57 <elliott> Ah.
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:08 <elliott> I guess so.
18:47:14 <elliott> And self and super too.
18:47:18 <elliott> So basically the global namespace contains... classes. :p
18:47:18 <tswett> Yep.
18:47:22 <tswett> Yup.
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:33 <elliott> So I'd count them.
18:47:37 <elliott> (self isn't immutable in idst!)
18:47:47 <elliott> Float value_: _fp
18:47:48 <elliott> [
18:47:48 <elliott> self := self new.
18:47:48 <elliott> { memcpy(self, v__fp, sizeof(double)); }.
18:47:48 <elliott> ]
18:47:49 <tswett> Because...
18:47:51 * tswett drumrolls.
18:47:54 <tswett> Nothing is immutable in idst!
18:47:56 <tswett> Right?
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:15 <tswett> Is 3 immutable in C?
18:48:18 <elliott> Yes. :p
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:35 <tswett> s/%/&/
18:48:38 <elliott> No, you can't do that.
18:48:47 <elliott> &foo isn't an lvalue.
18:48:50 <elliott> What that method does:
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:23 * tswett nods.
18:51:32 <elliott> ("*&x = ..." is valid because *p is an lvalue where p is a pointer, and &x is a pointer.)
18:51:39 <tswett> Can you do &"foo"?
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:20 <tswett> Aw.
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:52:50 <tswett> Yay.
18:52:56 <elliott> "foo"[0] = 'p';
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:40 <elliott> cpressey: Hoorj
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:55:56 <elliott> *:P
18:56:06 <elliott> Compatimability with olde compilers that literally just saw &* and skipped over the pair?
18:56:11 <elliott> Optomized!
18:56:12 <fizzie> The rationale doesn't say.
18:56:17 <elliott> I bet it's that.
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:23 <elliott> Semantically.
18:57:26 -!- Imk0tter has joined.
18:57:33 <elliott> Or is it just because that expands to
18:57:36 <elliott> &*(foo + bar)
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:50 <cpressey> no, wait
18:57:51 -!- copumpkin has joined.
18:58:00 <elliott> it maybe should, but it actually just results in NULL
18:58:01 <cpressey> no, you can't... can you?
18:58:33 <cpressey> never mind. i should be coding in python right now.
18:58:38 <cpressey> HERE, PYTHON PYTHON PYTHON
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:37 <cpressey> Good python! Sit, fetch, etc
18:59:53 <elliott> olsner: WILL?
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:17 <elliott> bah
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:03:45 <Vorpal> elliott, is it?
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:25 <elliott> Imk0tter: yikes
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:05:59 <Vorpal> line*
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:02 <elliott> what's crap about it
19:06:09 <elliott> not having ZOMGMODULES?
19:06:10 <Imk0tter> Vorpal, it's the input integer
19:06:13 <Vorpal> elliott, feature support from what I remember
19:06:16 <elliott> also it's small
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:08:45 <elliott> ...zomg!
19:08:47 <elliott> IRC IS NOT REALTIME
19:08:48 <elliott> HOW AMAZING
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:24 <Vorpal> fizzie, ah right.
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:39 <elliott> great idea!
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:11:53 <elliott> bye
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:12:34 <Vorpal> I wonder why
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:19:41 <elliott> cuz its ugly now
19:19:51 <elliott> or am i just imagining it
19:20:37 <oklopol> hello
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:10 <oklopol> and sniper.
19:21:25 <elliott> i am
19:21:28 <elliott> i fucking hacked a sniper
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:21:53 <Gregor> Err, font-family
19:22:07 <elliott> it's not about ph0ntohpilia, it just antialiased really badly for a second
19:22:08 <elliott> like
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:25 <elliott> No shit :P
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:05 <elliott> Gregor: :D
19:25:09 <elliott> Gregor: bork bork bork
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:22 <elliott> :-D
19:25:35 <oklopol> fizzie: did you leave already?
19:25:45 <elliott> <fizzie> no
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:18 <elliott> ah
19:28:21 <elliott> i'm better than fizzie
19:28:22 <elliott> ofc
19:28:27 <oklopol> but cleaning up and looking through my stuff?
19:28:29 <oklopol> no fucking way
19:28:34 <elliott> yeah that's like
19:28:36 <elliott> molestation
19:28:39 <oklopol> yes
19:28:40 <elliott> or rape, even
19:28:45 <elliott> fizzie is pretty evil.
19:28:49 <fizzie> elliott: Yeah, we're not very castley peoples.
19:28:59 <elliott> well rapists rarely are.
19:29:03 -!- augur has quit (Remote host closed the connection).
19:29:12 <elliott> but yeah like
19:29:15 <fizzie> oklopol: We was there for just a few hours.
19:29:15 <elliott> how is that even a castle
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:48 <elliott> fizzie: "1724"
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:31:35 <elliott> oklopol
19:31:36 <elliott> history
19:31:37 <elliott> LOL
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:30 <elliott> because they suck
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:34:27 <MYPEN_ISBIG> HELLOO augur
19:34:44 <MYPEN_ISBIG> you can just in time
19:35:01 <MYPEN_ISBIG> i'm sure this nick turns you on
19:35:08 <elliott> how big is your pen
19:35:09 -!- ZOMGMODULES has changed nick to EnjoyBeingLocked.
19:35:15 <MYPEN_ISBIG> oh it's pretty fucking big
19:35:16 <MYPEN_ISBIG> get it
19:35:16 -!- elliott has changed nick to matrix-of-solidi.
19:35:17 <MYPEN_ISBIG> fucking
19:35:20 -!- matrix-of-solidi has changed nick to matrixofsolidity.
19:35:25 <matrixofsolidity> YESSSSSSSSSSSSSS
19:35:29 <MYPEN_ISBIG> :D
19:35:30 <matrixofsolidity> EnjoyBeingLocked: please do /me in your
19:35:41 -!- matrixofsolidity has changed nick to MatrixOfSolidity.
19:35:43 <MatrixOfSolidity> EnjoyBeingLocked: plz
19:35:44 * EnjoyBeingLocked in your
19:35:47 * MatrixOfSolidity
19:35:50 <MatrixOfSolidity> :DDDDDDDDDDDDD
19:35:57 <MYPEN_ISBIG> that was pretty awesome
19:35:58 <MatrixOfSolidity> we are so lame
19:36:00 <Imk0tter> anyone semi-fluent with brainfuck?
19:36:03 <MYPEN_ISBIG> i'm not worthy
19:36:05 -!- MYPEN_ISBIG has changed nick to oklopol.
19:36:08 <MatrixOfSolidity> Imk0tter: yep, but none of us jokers
19:36:29 <MatrixOfSolidity> omg we should have a con
19:36:30 <MatrixOfSolidity> and call it
19:36:37 <MatrixOfSolidity> EnjoyBeingLockedInYourMatrixOfSolidityCon
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:36:47 <MatrixOfSolidity> EnjoyBeingLocked: TEN TIMES BETTER THAN PYCON AMIRITE
19:36:52 <MatrixOfSolidity> Imk0tter: hmm
19:36:56 <Imk0tter> MatrixOfSolidity, either or
19:36:56 <MatrixOfSolidity> so v2 is right after v1 right
19:36:58 <Imk0tter> yes
19:37:07 <EnjoyBeingLocked> we need to keep a pair of bots around for just this purpose
19:37:21 <MatrixOfSolidity> Imk0tter: >>[<[-<->>]]
19:37:26 <MatrixOfSolidity> Imk0tter: tape must be (v1,v2,scrap)
19:37:29 <MatrixOfSolidity> scrap must be 0
19:37:33 <MatrixOfSolidity> that should work
19:37:34 <Imk0tter> okay
19:37:35 <oklopol> that does nothing
19:37:39 <MatrixOfSolidity> er right
19:37:40 <MatrixOfSolidity> INDEED
19:37:46 <oklopol> but otherwise it's pretty nice
19:37:47 <MatrixOfSolidity> ok wait
19:38:00 <MatrixOfSolidity> Imk0tter: [>[-<->>]<<]
19:38:02 <MatrixOfSolidity> same tape requirement
19:38:08 <MatrixOfSolidity> i... think this should work
19:38:21 <oklopol> well. i'm not going to comment on that.
19:38:26 <MatrixOfSolidity> :D
19:38:28 <MatrixOfSolidity> oh wait
19:38:37 <MatrixOfSolidity> hmm
19:38:42 <MatrixOfSolidity> oklopol: are you _sure_ that's wrong
19:38:56 <MatrixOfSolidity> !bf8 ,>,<[>[-<->>]<<]!ab
19:39:03 <MatrixOfSolidity> !bf8 ,>,<[>[-<->>]<<].>.!ab
19:39:07 <MatrixOfSolidity> X_X
19:39:09 <MatrixOfSolidity> !bf ,>,<[>[-<->>]<<].>.!ab
19:39:15 <MatrixOfSolidity> hey Gregor, who let the dogs out
19:39:22 <oklopol> well i have no idea why it would work
19:39:32 <oklopol> hmm
19:39:34 <oklopol> actually
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 <MatrixOfSolidity> oklopol: looks right to me at least
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:24 <MatrixOfSolidity> fizzie: uh. good question.
19:40:25 -!- EgoBot has joined.
19:40:28 <MatrixOfSolidity> Gregor: That...sucks?
19:40:33 <MatrixOfSolidity> Imk0tter: no such thing as negative in bf
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 <Imk0tter> MatrixOfSolidity, eh?
19:40:48 -!- fungot has joined.
19:40:51 <MatrixOfSolidity> Imk0tter: cells are 0 to 255 inclusive
19:41:00 <Imk0tter> MatrixOfSolidity: the interpreter i'm using uses 32bit integers
19:41:09 <Imk0tter> that CAN go negative
19:41:09 <MatrixOfSolidity> that interpreter sucks, get a new one :)
19:41:15 <MatrixOfSolidity> ^bf ,>,<[>[-<->>]<<].>.!ab
19:41:27 <MatrixOfSolidity> well i suppose i should fix that loop first!
19:41:27 <MatrixOfSolidity> :DD
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:37 <MatrixOfSolidity> ...that's true!
19:41:42 <MatrixOfSolidity> so the requirement is actually (0,v1,v2,0)
19:41:44 <MatrixOfSolidity> and you should do > right after
19:41:55 <Imk0tter> MatrixOfSolidity, let's assume there is no negative
19:42:01 <MatrixOfSolidity> ^bf >,>,<[>[-<->>]<<]>.>.!ab
19:42:02 <fungot> <CTCP>
19:42:05 <MatrixOfSolidity> tada!
19:42:09 <Imk0tter> ^bf >,>,<[>[-<->>]<<]>.>.!ab
19:42:10 <fungot> <CTCP>
19:42:15 <MatrixOfSolidity> it turns into ctcp :P
19:42:19 <MatrixOfSolidity> Imk0tter: let's say the tape is (0, v1, v2, 0)
19:42:30 <MatrixOfSolidity> Imk0tter: then >[>[-<->>]<<]> will do what you want
19:42:32 <MatrixOfSolidity> ending up on the v1 cell
19:42:35 <MatrixOfSolidity> actually
19:42:39 <MatrixOfSolidity> the first value can be whatever
19:42:40 <MatrixOfSolidity> doesn't have to be 0
19:42:44 <MatrixOfSolidity> or...
19:42:44 <MatrixOfSolidity> yes it does
19:42:46 <MatrixOfSolidity> it has to be 0
19:42:51 <Imk0tter> ^bf >,>,<[>[-<->>]<<]>.>.!ba
19:42:51 <fungot> <CTCP>
19:42:56 <MatrixOfSolidity> * Received a CTCP from fungot (to #esoteric)
19:42:57 <fungot> MatrixOfSolidity: http://zzo38computer.cjb.net/ chrono/ zzo38/ mainpage the actual ui has something to do that anyway
19:42:58 <MatrixOfSolidity> it does work :)
19:43:01 <oklopol> the only problem is you don't know where you stop, but that's kinda easy
19:43:05 <MatrixOfSolidity> it just doesn't output properly
19:43:11 <MatrixOfSolidity> oklopol: er, yes you do?
19:43:12 <MatrixOfSolidity> oh wait
19:43:14 <MatrixOfSolidity> no you don't
19:43:14 <Imk0tter> MatrixOfSolidity
19:43:16 <MatrixOfSolidity> yeah that's kinda :/
19:43:19 <MatrixOfSolidity> oh well oklopol can fix it
19:43:23 <oklopol> it's very easy
19:43:39 <MatrixOfSolidity> indeed
19:43:41 <MatrixOfSolidity> i suck at bf though
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:01 <Imk0tter> elliott
19:44:03 <oklopol> i realized that was retarded
19:44:05 <oklopol> anyhow
19:44:18 <elliott> Imk0tter: why do you keep pinging me without any message
19:44:22 <Imk0tter> err sorry
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:35 <elliott> swallow.]]
19:44:38 <Imk0tter> !ba puts v0 and v1 to b and a respectively
19:44:39 <Imk0tter> right?
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:44:53 <elliott> :DD
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:16 <Imk0tter> ohh im slow
19:45:17 <Imk0tter> l0l
19:45:41 <elliott> yeah do what oklopol said I guess :P
19:45:44 <elliott> what do you want this for anyway
19:45:47 <elliott> to compute |a-b|?
19:45:57 <elliott> or err
19:45:59 <elliott> hmm
19:49:58 <elliott> EnjoyBeingLocked: definitely gonna go for tedious, not relaxing
19:50:10 <elliott> well
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:12 <ZOMGMODULES> elliott: depends on the language
19:56:20 <elliott> ZOMGMODULES: C
19:56:27 <elliott> not sure _why_ C, but C
19:56:29 <ZOMGMODULES> i dunno man, should be relaxing
19:56:47 <ZOMGMODULES> it's like drumming... it has a cadence
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:57:37 <ZOMGMODULES> your grammar is pretty much established?
19:57:58 <ZOMGMODULES> you wrote it out? on paper?
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:16 <elliott> for now
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:05 <elliott> really?
19:59:10 <ZOMGMODULES> this is the wisdom
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
19:59:51 <elliott> sorry sorry *wisdom
19:59:59 <elliott> ;DDDDDDd
20:00:00 <elliott> dd
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:34 <elliott> hmm
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:02:53 <elliott> e
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:05 <elliott> do you need two rules
20:03:09 <elliott> 'cuz one ends with RBRACKET and the other RBRACE
20:03:14 <elliott> oh wait
20:03:15 <elliott> you can just do
20:03:17 <elliott> foo ::= .
20:03:17 <elliott> cute!
20:04:56 * ZOMGMODULES ACKNOWLEDGES NOT THESE "YACC-LIKE THINGS"
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:06:35 <elliott> operators
20:06:37 <elliott> and method calls
20:06:38 <elliott> i.e. everything
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:32 <elliott> i mean
20:07:34 <elliott> the entire grammar
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:08:53 <elliott> ;_;
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:10:36 <elliott> obviously.
20:11:24 <elliott> http://sprunge.us/jbMF hey i think i did it
20:11:42 <Imk0tter> hey oklopol
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:33 <ZOMGMODULES> if that's legal
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:12:55 <elliott> and actually
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:07 <elliott> euuurgh
20:13:15 <elliott> maybe i should have two types of ident
20:13:17 <elliott> ident and symbol
20:13:18 <elliott> symbol allows :s
20:13:19 <ZOMGMODULES> elliott: that's a dumb grammar
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:20 <elliott> ident doesn't
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:37 <ZOMGMODULES> "That's our Smalltalk!"
20:13:39 <elliott> i.e. #foo:bar: is an ok symbol
20:13:43 * ZOMGMODULES canned laughter
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:13 <elliott> yeah that's much nicer
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:36 <elliott> what par
20:14:37 <elliott> t
20:14:42 <ZOMGMODULES> :'s
20:14:44 <elliott> anyway it was my token's fault :)
20:14:49 <elliott> for not distinguishing idents and symbols
20:14:58 <elliott> ZOMGMODULES: hmm, i dunno
20:15:00 <elliott> how's it brutal
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:15:34 <ZOMGMODULES> my brain just does not think like that
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:11 <elliott> eh?
20:16:15 <elliott> sorry, i don't get you :)
20:16:23 <elliott> whaddya mean
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:06 <elliott> oh wait
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:14 <elliott> body(A) ::= . {...;}
20:17:17 <elliott> and that looks... kind of easy?
20:17:25 <elliott> well
20:17:25 <elliott> dunno
20:17:28 <elliott> maybe kinda hard
20:19:29 -!- ais523 has joined.
20:19:35 <elliott> oh dear
20:19:40 <elliott> i broke the CHIQRSX9+ article
20:19:46 <elliott> it is now impossible to access it
20:19:48 <elliott> thanks, MediaWiki!
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:40 <elliott> um, it _is_ a joke
20:22:49 <elliott> oh cool
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:15 <elliott> impressi
20:23:16 <elliott> ve
20:23:32 <elliott> aha
20:23:32 <elliott> http://esolangs.org/w/index.php?title=CHIQRSX9%2B
20:23:56 <elliott> fixed!
20:24:10 <Imk0tter> elliott
20:24:12 <Imk0tter> i'm stuck here
20:24:19 <Imk0tter> can you help me out mate
20:24:21 <elliott> Imk0tter: what was wrong with oklopol's solution?
20:24:29 <Imk0tter> i don't understand how it works
20:24:32 <Imk0tter> lol
20:25:00 <Imk0tter> therefor i can't write it out
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:22 <elliott> int block() {
20:26:22 <elliott> if (accept(PIPE))
20:26:22 <elliott> while (1)
20:26:22 <elliott> if (accept(PIPE))
20:26:22 <elliott> break;
20:26:23 <elliott> else if (!accept(IDENT))
20:26:24 <elliott> return 0;
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:12 <ZOMGMODULES> if (x==y) printf("hi") ;; printf("there")
20:28:20 <elliott> can you stack ;s arbitrarily?
20:28:22 <elliott> that would be awesome
20:28:30 <ZOMGMODULES> oh uh
20:28:31 <ZOMGMODULES> SURWE
20:28:34 <ZOMGMODULES> *SURE
20:28:41 <elliott> so basically, if/while/etc. are {
20:28:43 <ZOMGMODULES> the more ;'s the higher the precedence
20:28:51 <elliott> and ;^(n+1) is }^n
20:28:54 <elliott> well
20:28:55 <elliott> ;}^n
20:28:58 <elliott> SORRY TO BREAK YOUR DREAMS
20:29:11 <ZOMGMODULES> yeah that's not quite my vision
20:29:16 <elliott> :D
20:29:19 <elliott> sorry for tarnishing it
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:31 <elliott> like
20:29:38 <elliott> okay so you can't just put comments in ANY old place now
20:29:40 <elliott> but like
20:29:41 <elliott> like
20:29:43 <elliott> like!!!
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:30:52 <elliott> WHO KNEW
20:30:59 <elliott> oh wait
20:31:00 <elliott> that's like
20:31:02 <elliott> the actual richard dawkins
20:31:07 <elliott> thought it was just some guy with the same name
20:31:21 <ais523> heh
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:45 <elliott> oh gosh
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:14 <Phantom_Hoover> What's vpri?
20:36:26 <elliott> the Viewpoints Research Institute
20:37:33 <ZOMGMODULES> they do research on viewpoints
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:15 <Phantom_Hoover> Who's ZOMGMODULES
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:24 * ZOMGMODULES IS ZOMGMODULES
20:38:43 <elliott> tswett: Not, say, using the toilet?
20:38:43 <ZOMGMODULES> Phantom_Hoover YOU ASK A LOT OF QUESTIONS
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:00 <elliott> wat
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 <Phantom_Hoover> ZOMGMODULES!
20:40:25 <elliott> ZOMGMODULES: wait your name is Christopher? kinda assumed you were always just Chris THIS IS LOGICAL OK
20:41:11 <olsner> who's ZOMGMODULES?
20:41:20 <elliott> olsner: Z. Omg Modules
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:26 <Phantom_Hoover> olsner, who else do I greet with exclamations!
20:41:31 <elliott> Phantom_Hoover: your mom
20:41:35 <Phantom_Hoover> tswett, that's actually the etymology.
20:41:37 <Phantom_Hoover> Literally.
20:41:42 <elliott> I'll opher YOUR Christ
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:35 <Phantom_Hoover> ZOMGMODULES, you're named after a werewolf.
20:42:44 <elliott> ZOMGMODULES: So, like your parents then?
20:42:45 <elliott> HA HA HA
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:04 <ZOMGMODULES> that was quotable?
20:43:09 <elliott> well i laughed.
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:28 <Phantom_Hoover> Most amusing thing: take male names and add -ina.
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:50 <ZOMGMODULES> elliott: Topher Grace?
20:43:54 <tswett> elliott: ask Topher Grace's shortners.
20:43:56 <tswett> s//e/
20:43:56 <Phantom_Hoover> elliottina
20:43:59 <oklopol> jackina
20:44:06 <Phantom_Hoover> Tannerina.
20:44:10 <elliott> tannerina is catchy
20:44:11 <oklopol> phantomina
20:44:13 <elliott> oklopol: villeina
20:44:17 <Phantom_Hoover> Oerjanina
20:44:17 <elliott> ;DDDDD
20:44:23 <elliott> Hooverina
20:44:27 <elliott> was gonna go for phantomina
20:44:28 <tswett> The female form of Tanner is Tanress. :P
20:44:28 <oklopol> hooverina is nice
20:44:29 <elliott> but oklopol preempted me
20:44:31 <ZOMGMODULES> Phantom_Hoover: Which werewolf would that be?
20:44:34 <olsner> oklorina of time
20:44:37 <elliott> Vagina
20:44:41 <elliott> you know, all those men named Vag
20:44:52 <Phantom_Hoover> ZOMGMODULES, St. Christopher, saint and werewolf.
20:44:56 <elliott> olsnerina
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:00 <ZOMGMODULES> Phantom_Hoover: this is news to me
20:45:06 <olsner> elliott: nope
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:18 <elliott> SO FUNNY TODAY
20:45:28 <Phantom_Hoover> Arvidida.
20:45:30 <elliott> olsner: what is it then!!!!
20:45:33 <elliott> Phantom_Hoover: *ina
20:45:37 <Phantom_Hoover> Arvidina
20:45:40 <elliott> BASICALLY THIS "-INA" THING IS TOTAL BULLSHIT
20:45:42 <oklopol> o
20:45:42 <oklopol> o
20:45:42 <oklopol> o
20:45:42 <oklopol> o
20:45:42 <oklopol> o
20:45:44 <oklopol> o
20:45:44 <oklopol> o
20:45:44 <oklopol> o
20:45:44 <oklopol> o
20:45:47 <elliott> oina
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:04 <Phantom_Hoover> Adamhnanina.
20:46:19 <oklopol> because i was like OMG IF I SPAM NOW I'LL GET TO SEE 23:45:67
20:46:23 <oklopol> IN THE TIME STAMPMGEG
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:48 <tswett> It was, like...
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:09 <Phantom_Hoover> McHoover.
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:18 <elliott> you know why i asked that
20:47:19 <elliott> because
20:47:20 <elliott> your mom
20:47:23 <elliott> is SO OLD
20:47:24 <elliott> also: FAT
20:47:29 <elliott> i'm so smooth
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:48:24 <elliott> nobody can disprove that!
20:49:05 <tswett> I'm glad that this channel never quotes Internet memes.
20:49:27 <elliott> tswett: no u
20:49:32 <tswett> See?
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:40 <Phantom_Hoover> tswett, all your meme are not belong to us.
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:08 <elliott> your mom proves the rule
20:50:14 <tswett> Precisely.
20:50:20 <elliott> oerjan: so basically Ørjan is already as female as it gets?
20:50:34 <Phantom_Hoover> elliott, nah, it's the \omega of manliness.
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:27 <ZOMGMODULES> Not Ørjanette?
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:00 <elliott> Adamhnan(ANTI-ER)ress
20:52:05 <elliott> HOORAY FOR ANTISTRINGS
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:02 <tswett> Adamhnanr^-1e^-1ress.
20:53:07 <tswett> Letters form a group, right?
20:53:08 <olsner> olshfpngress
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:34 <elliott> int block() {
20:54:35 <elliott> if (accept(PIPE))
20:54:35 <elliott> while (!accept(PIPE))
20:54:35 <elliott> if (!accept(IDENT))
20:54:35 <elliott> return 0;
20:54:39 <elliott> while (expr() && accept(DOT));
20:54:41 <elliott> expr(); /* optional */
20:54:43 <oklopol> yeah they form the free group with base size 26
20:54:43 <elliott> return 1;
20:54:45 <elliott> }
20:54:47 <elliott> hmm, that might be right
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:34 <elliott> (recursive ascent)
20:56:47 <olsner> recursive accent
20:56:57 <elliott> i can't believe recursive ascent was invented before descent
20:56:59 <elliott> just boggles the mind :)
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:10 <elliott> and uh
20:59:12 <elliott> uh
20:59:14 <elliott> damn this subreddit sucks
20:59:15 <elliott> OH
20:59:16 <elliott> stamps!!
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:00:57 <elliott> olsner: bro.
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:31 <elliott> MY
21:01:32 <elliott> VIBES
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:05 <elliott> ZOMGMODULES: accept() is
21:02:14 <elliott> if (curtok == whatyousaid) eatitup()
21:02:19 <elliott> and return 1
21:02:21 <elliott> otherwise return 0
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:12 <ZOMGMODULES> i use tokeq() which doesn't consume
21:03:17 <ZOMGMODULES> fewer side-effects in tests
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:30 <ZOMGMODULES> if you like side-effects in tests, SURE
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:07 <elliott> er
21:04:08 <elliott> *expect
21:04:12 <olsner> calamari: consider if foo (bar);
21:04:21 <elliott> oerjan: MARIA AMELIE
21:04:40 <olsner> is bar an argument list to foo, or the body coming after the boolean expression foo?
21:04:49 <elliott> int messagepart() {
21:04:49 <elliott> if (!ident()) return 0;
21:04:49 <elliott> if (accept(COLON)) return expr();
21:04:49 <elliott> else return 1;
21:04:49 <elliott> }
21:04:51 <elliott> ZOMGMODULES: PRETTY
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:24 <elliott> oerjan: SEE
21:06:28 <elliott> I CAN CONSERVE LIK EA NORWEGIAN
21:06:30 <elliott> also, converse
21:06:35 <elliott> calamari: really? clearly you've never read GNU code!
21:06:41 <elliott> if (the_most_awesome (oh_yes))
21:06:42 <elliott> {
21:06:46 <elliott> printf ("oh yes!\n");
21:06:46 <elliott> }
21:07:00 <calamari> elliott: it's true.. I hardly ever look at gnu code
21:07:03 <olsner> augh
21:07:08 <elliott> calamari: your sanity thanks you :)
21:07:10 <olsner> the ugly :(
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:05 <elliott> to avoid like
21:09:06 <elliott> infinite loops
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:10:50 <ZOMGMODULES> expects are... more like exit()s in C
21:10:50 <oerjan> afair
21:10:53 <elliott> oerjan: well, same thing
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:12 <elliott> while (expr());
21:11:15 <elliott> return accept(FOO);
21:11:15 <elliott> and like
21:11:17 <elliott> you have the expr be
21:11:18 <ZOMGMODULES> in which case they're more like throw
21:11:23 <elliott> (abc.
21:11:27 <elliott> (abc.]
21:11:28 <elliott> say
21:11:32 <elliott> there's no way that'd valid
21:11:35 <elliott> and it'll look for a FOO
21:11:37 <elliott> which it won't find
21:11:39 <elliott> thus returning false
21:11:39 <elliott> although
21:11:42 <elliott> i guess it will fail at the top level
21:11:46 <elliott> but otoh
21:11:48 <elliott> that'll be like
21:11:52 <elliott> "found ], but I was expecting EOF or expression!"
21:11:52 <ZOMGMODULES> you will eventually run out of tokens
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:12 <ZOMGMODULES> oh, right
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:12:53 <elliott> ZOMGMODULES: GOOD ADVICE
21:12:59 <elliott> *top level
21:13:07 <ZOMGMODULES> I even do things like { if tokeq(";") { expect(";"); ... } }
21:13:12 <elliott> lol
21:13:16 <elliott> aka, accept
21:13:22 <ZOMGMODULES> simplicity > efficiency
21:13:58 <elliott> ZOMGMODULES: um but that's exactly what accept is :D
21:14:06 <ZOMGMODULES> yes
21:14:07 <elliott> well, technically it doesn't re-compare the current token
21:14:22 <ZOMGMODULES> that's why accept is an UNNECESSARY
21:14:55 <elliott> ZOMGMODULES: BLAHHH
21:14:59 <olsner> but still juiceful
21:15:08 <ZOMGMODULES> also, ...
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:17 <Tachycek> was it sexy ?
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 <ZOMGMODULES> elliott: I call the tokenizer, generally
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:32 <Tachycek> great
21:16:34 <ZOMGMODULES> elliott: you got it
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:17:59 <Tachycek> oh noes
21:18:02 <Tachycek> thats so sad
21:18:07 <elliott> sad like my elbow
21:18:37 <Tachycek> how disappointed the room should have been that it is not a vibrator and cannot go into your ass
21:18:43 <Tachycek> must
21:18:53 * Tachycek is crying
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:22 <elliott> like, without libc
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:26:48 <tswett> That darnèd IRC bot.
21:27:15 -!- tswettbot has joined.
21:27:16 <tswettbot> I am sending a message.
21:28:24 <ais523> I am sending /this/ message.
21:29:05 <oerjan> the message is the medium
21:29:30 <elliott> I am sending no message.
21:29:58 <ZOMGMODULES> tswettbot: you rock
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:06 <elliott> tswettbot, I dismiss you.
21:31:08 <elliott> or what was it.
21:31:11 <elliott> tswettbot: you are dismissed.
21:31:15 <elliott> I dismiss you, tswettbot.
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:03 <elliott> so like
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:31 <ZOMGMODULES> lexer, parser, ast, codegen.
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:02 <elliott> but yeah like
21:33:05 <elliott> i don't want to be all
21:33:11 <elliott> self lolCode: 3243482349234
21:33:13 <ZOMGMODULES> nothing too painful about generating x86 code, is there?
21:33:16 <elliott> *.
21:33:21 <elliott> ZOMGMODULES: well no. but i want mnemonics!
21:33:24 <elliott> and generating those will be painful.
21:33:36 <ZOMGMODULES> you want to generate assembler?
21:34:07 <elliott> ZOMGMODULES: no.
21:34:17 <elliott> ZOMGMODULES: i want to generate machine code using an assembler-ish dsl
21:34:20 <ZOMGMODULES> then you lost me at "mnemonics"
21:34:22 -!- Zuu has quit (Ping timeout: 260 seconds).
21:34:33 <elliott> self mov: eax : 42.
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:34:58 <elliott> :P
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:10 <elliott> which is a bit different
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:23 <elliott> ebx valueOffset: 1
21:35:25 <elliott> or, you know
21:35:27 <elliott> OTHER PAINFUL THINGS
21:35:32 <elliott> and i don't actually need mov
21:35:33 <elliott> vs like
21:35:36 <elliott> movl
21:35:47 <elliott> corollary: at&t syntax assemblers are not real assemblers, they are low-level APIs :)
21:35:52 <ZOMGMODULES> elliott: then you are writing a codegen.
21:35:58 <elliott> yes. yes i am.
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:27 <ZOMGMODULES> *that are
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:40 <elliott> like
21:36:44 <elliott> mylang->machine code
21:36:46 <elliott> that uses
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:21 <elliott> ZOMGMODULES: no no no.
21:37:25 <elliott> i just want to write an api so i can do
21:37:40 <elliott> x86 movd: eax : 42.
21:37:42 <elliott> rather than
21:37:43 <tswett> elliott: because I'm... oh, never mind.
21:37:51 <elliott> x86 code: 8394784
21:38:02 <elliott> and that api sounds like a pain to generate. i guess i could hand-code it
21:38:03 <elliott> tswett: :-P
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:32 <tswettbot> I am sending a message.
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:38:58 <elliott> immr/8. whatever.
21:39:02 <tswett> tswettbot: what, you want a period after that? You're not getting one.
21:39:09 <elliott> I dismiss you, tswettbot.
21:39:15 <elliott> WHY DOES IT ONLY LISTEN TO YOU
21:39:19 <elliott> WHYYYYYYY
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:53 * ZOMGMODULES SAYS ONLY EXACTLY WHAT ZOMGMODULES MEANS
21:39:59 <tswett> I dismiss you, tswettbot. I dismiss you, tswettbot. I dismiss... is this working?
21:40:07 <tswett> tswettbot: :(
21:40:18 * ZOMGMODULES DISMISSES TSWETTBOT!!!!
21:40:21 <elliott> i love you, tswettbot
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:40:30 <elliott> ais523: xD
21:40:32 <elliott> ais523: indeed!
21:40:44 <olsner> it is true
21:40:53 <elliott> nobody tell him.
21:41:14 <tswett> Let's try this one.
21:41:22 <elliott> ais523: there is nothing that we're not telling you, btw
21:41:24 <elliott> just clearing that up
21:41:26 -!- tswettbot2 has joined.
21:41:27 <tswettbot2> I am sending a message.
21:41:31 <tswett> I dismiss you, tswettbot.
21:41:39 <tswett> **** 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:12 <elliott> as in, the source
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:18 <ais523> you don't block ads?
21:43:22 <elliott> (cue ais523's incredulity)
21:43:23 <elliott> ha
21:43:23 <tswett> quit
21:43:23 <tswett> stream nextPutAll: 'QUIT'; crlf; flush.
21:43:23 <tswett> stream close.
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:09 <ais523> ah, OK
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:44 <elliott> I don't block either :)
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:20 <tswettbot3> I am sending a message.
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:42 <tswett> Er.
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:40 <elliott> not really
21:47:47 <elliott> i mean
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:50:57 <tswettbot4> I am sending a message.
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:10 <elliott> tswett: oh, right
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:52:54 <ZOMGMODULES> I dismiss you, livejournal.
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:34 <elliott> i sure hope ^p was right
21:53:42 -!- tswettbot4 has joined.
21:53:42 <tswettbot4> I am sending a message.
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:05 <elliott> :D
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:56:42 <elliott> I dismiss you, tswettbot.
21:56:46 <elliott> BOTH OF YOU
21:57:24 <tswett> What the heck is happening? :P
21:57:47 <elliott> love
21:57:49 <elliott> love is happening
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:34 <elliott> ais523: and displaying it
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:12 <elliott> vs. pay-per-click
22:00:19 <ais523> indeed
22:00:23 <ais523> but pay-per-click's basically neutral too
22:00:31 <ais523> whereas pay-per-view likes adblockers
22:00:42 * tswett debugs it better.
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:36 <ZOMGMODULES> tswettbot8: HOW'S IT GOING, MAN
22:01:37 -!- MigoMipo has quit (Read error: Connection reset by peer).
22:01:42 -!- tswettbot9 has joined.
22:02:37 <elliott> I dismiss you, tswettbot.
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:03 <elliott> FSP looks cool
22:04:05 <elliott> well
22:04:08 <elliott> cooler than FTP :-P
22:04:13 <elliott> fsvo cool
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:02 <elliott> hmm
22:05:07 <elliott> i've forgotten what parse trees look like
22:05:13 <elliott> ZOMGMODULES: please advise
22:05:16 <elliott> tswett: returns true
22:05:23 <tswett> And guess what this does: (['foo' isEmpty ifFalse: [^ true]] whileTrue) not
22:05:29 <elliott> returns true
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:07 <elliott> THIN VS. THICK FUNCTIONS
22:06:17 <elliott> elide means emit. so yes.
22:06:20 <elliott> (more or less)
22:06:21 <elliott> er
22:06:22 <elliott> *omit.
22:06:39 -!- tswettbot10 has joined.
22:07:08 <elliott> I dismiss you, tswettbot.
22:07:11 <tswett> Whoa, I can't believe that worked.
22:07:23 <elliott> it ... didn't
22:07:33 <elliott> you realise quit is "QUIT :x" not "QUIT"
22:07:34 <elliott> right?
22:07:37 <elliott> fsvo x
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 <tswett> Who'dathunk?
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:45 <elliott> :D
22:08:51 <ZOMGMODULES> at least smalltalk has the foresight to try to debug it
22:09:04 <ZOMGMODULES> with
22:09:06 <ZOMGMODULES> itself
22:09:19 <elliott> ZOMGMODULES: what do asts look like again
22:09:29 <ZOMGMODULES> elliott: ...
22:09:33 <ZOMGMODULES> TREES
22:09:35 * tswett runs the bot, expecting something to happen.
22:09:36 <ZOMGMODULES> they look like TREES
22:09:37 <elliott> are they fuzzy
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:09:50 <elliott> or are they green
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:43 <ZOMGMODULES> well
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:32 <elliott> no no no
22:11:33 <elliott> that's stupid
22:11:33 -!- tswettbot10 has quit (Ping timeout: 276 seconds).
22:11:38 <elliott> that would be useful
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:18 <elliott> just an ast
22:12:23 <elliott> i briefly considered making the ast nodes smalltalk objects
22:12:24 <elliott> for like
22:12:27 <elliott> metacircularity
22:12:29 <elliott> but that is stupid
22:12:44 <ZOMGMODULES> struct expr { struct expr *lhs; struct expr *rhs; char *op; }
22:12:48 <ZOMGMODULES> there's your ast
22:12:59 <elliott> O YA, AND WHAT IS []
22:13:04 <ZOMGMODULES> NULL
22:13:12 <elliott> WHAT IS
22:13:16 <elliott> [|x y z| x := 3.]
22:13:29 <elliott> DOES LHS POINT TO SOMETHING WITH OP=| AND LHS=X AND RHS=(OP=| AND LHS=Y ...)
22:13:33 <elliott> SO SILY
22:14:17 <elliott> hey dawkins said scapegoat in this article
22:14:18 <elliott> :DDD
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:16:46 <tswett> It's working!
22:16:56 <tswett> Badly!
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:36 <elliott> well, define "trap"
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:03 <elliott> :D
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:26 <elliott> what
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:56 <elliott> ooh wait
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:25 <Sgeo> whirrled?
22:25:35 <tswett> Sgeo: world.
22:25:35 -!- tswettbot128888 has joined.
22:25:40 <tswett> Said in elliottese.
22:25:46 <tswett> I dismiss you, tswettbot.
22:25:47 <tswettbot128888> I am quitting.
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:26:57 <elliott> it's basically phonetics
22:27:50 -!- tswettbot has joined.
22:28:07 <tswett> MY BOT IS PERFECT
22:28:12 <tswett> hey tswettbot, say this
22:28:25 <tswett> :(
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:29:59 <tswett> Oh.
22:30:11 <elliott> [[stream nextLine. true] whileTrue] fork
22:30:11 <tswett> Turn garbage collection off. :P
22:30:12 <elliott> doesn't work
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:39 <tswett> I mean, being me.
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:31:40 <elliott> hmm
22:31:42 <elliott> it's not working :(
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:51 <elliott> WHY IS THIS NO WORK
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:38:57 <olsner> what sounds?
22:39:04 <tswett> olsner: the sounds Smalltalk makes when you turn sound on.
22:39:05 <elliott> ohh
22:39:06 <elliott> duh
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:50 <elliott> It disapproves.
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:43 <elliott> god
22:40:48 <elliott> squeak/pharo really sucks
22:40:57 <elliott> with the whole single-threaded vm thing
22:40:58 <tswett> elliott: what's better than it?
22:41:02 <elliott> oh, nothing
22:41:03 <tswett> ...it's a single-threaded VM?
22:41:05 <elliott> well
22:41:06 <elliott> no
22:41:07 <elliott> it used to be
22:41:09 <elliott> before this new cog thing
22:41:10 <elliott> but even then
22:41:12 <elliott> like
22:41:17 <elliott> you can either
22:41:20 <elliott> have simple networking code
22:41:21 <elliott> or have a gui
22:41:24 <elliott> THANKS SQUEAK
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:25 <elliott> say say SAY
22:42:27 <elliott> SAY SAY SAY
22:42:28 <elliott> SAYYYYYY
22:42:33 <tswett> hey tswettbot, say PONG
22:42:38 -!- smallbot has joined.
22:42:41 <elliott> ha
22:42:41 <elliott> HA
22:42:42 <tswett> hey tswettbot, say PRIVMSG #esoteric :okay, man
22:42:43 <tswettttbot> okay, man
22:42:43 <elliott> <3
22:42:45 <elliott> smallbot: marry me
22:42:51 <tswett> hey tswettbot, say QUIT :look what you can do, man
22:42:51 -!- tswettttbot has quit (Client Quit).
22:43:07 <tswett> To quote elliott, <3
22:43:22 <elliott> aww
22:43:22 <elliott> <3
22:43:24 <elliott> love all aroun
22:43:24 <elliott> d
22:44:03 <elliott> um
22:44:05 <elliott> smallbot
22:44:07 <tswett> Um?
22:44:08 <elliott> please ping out so that i can use the gui again
22:44:11 <elliott> and make you threaded
22:44:12 <elliott> thanks
22:44:16 -!- tswettbot has joined.
22:44:23 <tswett> elliott: Cmd-. You use a Mac, right? :P
22:44:26 <tswett> Something-.
22:44:33 <tswett> hey tswettbot, say NICK elliottbot
22:44:33 <elliott> alt-. did it
22:44:33 -!- tswettbot has changed nick to elliottbot.
22:44:33 <elliott> thanks
22:44:36 <elliott> OOH
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:44:55 <elliott> <3
22:45:00 <elliott> to quote eliezer yudkowsky, "faggot"
22:45:08 <elliott> that was probably stupid
22:45:11 <elliott> but i'm laughing anyway
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:21 <elliott> you're getting better ;D
22:45:27 <tswett> I typed it before you typed that.
22:45:32 <elliott> Lame :P
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:27 <elliott> wtf
22:47:30 -!- tswettbot has joined.
22:47:31 <elliott> String has endsWith: but not startsWith:
22:47:34 <tswett> elliott: have at it.
22:47:45 <elliott> hey tswettbot, say NICK iloveeverybody
22:47:46 <tswettbot> NO ELLIOTT I HATE YOU
22:47:46 -!- smallbot has quit (Ping timeout: 276 seconds).
22:47:51 <elliott> ... :(
22:47:56 <elliott> i was just trying to be friendly
22:48:06 * elliott cries
22:48:09 <tswett> Well, too bad.
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:41 <elliott> Nobody knows.
22:48:44 <tswett> Oh.
22:48:54 <tswett> tswettbot probably still pings out.
22:48:58 <tswett> ...
22:49:00 <tswett> tswett still pings out.
22:49:03 <tswett> ...
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:33 <elliott> no
22:49:35 <elliott> i love it
22:49:39 <elliott> it's my friend
22:49:56 <tswett> Oh? I thought it was a jerrrrrrrrrrrrrrrrrrrk.
22:50:01 <elliott> no, that was tswett.
22:50:04 <tswett> Oh.
22:50:07 <ZOMGMODULES> hey tswettbot,
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:20 <ZOMGMODULES> hey tswettbot, say
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> NO ELLIOTT I HATE YOU
22:50:44 <tswettbot> I am quitting.
22:50:44 -!- tswettbot has quit (Client Quit).
22:50:50 <elliott> X-D
22:51:03 <ZOMGMODULES> I made it ragequit!
22:53:30 <elliott> oh man, smalltalk shares the same braindamage as lua!
22:53:39 <elliott> exciting!
22:53:41 <ZOMGMODULES> 1-based indexing, huh
22:53:41 <elliott> (1-indexed arrays)
22:53:44 <elliott> yes!!!
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:05 <elliott> ZOMGMODULES: NO
22:54:05 <ZOMGMODULES> BECAUSE THAT IS SOOOOOO AWESOME
22:54:07 <elliott> IT'S NOT QUITE THAT BAD
22:54:10 <elliott> ZOMGMODULES: hey wait
22:54:12 <tswett> No, Smalltalk has lots of kinds of containers.
22:54:14 <elliott> and lua only has floats
22:54:15 <elliott> so basically
22:54:21 <ZOMGMODULES> YES
22:54:22 <elliott> 1.5 is a valid array index
22:54:23 <ZOMGMODULES> YES YES YES
22:54:23 <elliott> :DDDD
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:26 <elliott> tokens first
22:56:27 <elliott> tokens fourth
22:56:40 <tswett> Wow.
22:56:42 <elliott> :DD
22:56:49 <elliott> it should be done with the not implemented thing
22:56:50 <elliott> so you can do
22:57:01 <elliott> tokens sevenhundredsquillionsixthousandsextillion
22:57:01 <ZOMGMODULES> THIS IS HOW CHILDREN LEARN
22:57:06 <elliott> :D
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:57:46 <elliott> tswett: oh ofc
22:57:47 <elliott> :D
22:58:11 <elliott> hmm, yet how do you chop the first element off a smalltalk orderd collection
22:58:20 <tswett> allButfirst: 1? :P
22:58:29 <elliott> polynomialEval: thisX
22:58:29 <elliott> | sum valToPower |
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:33 <tswett> allButFirst, I guess.
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> prefix := elems first.
22:59:40 <elliott> args := elems allButFirst.
22:59:40 <elliott> args add: tokens second.
22:59:41 <elliott> tswett: deugly plz
23:00:37 <tswett> elliott: where do you use prefix?
23:00:46 <elliott> prefix and args are the result
23:00:51 * tswett nods.
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:01:41 <elliott> it's ugly :D
23:01:43 <ZOMGMODULES> oh, no. i had wrong method. whew.
23:02:01 <elliott> ZOMGMODULES: :D
23:02:31 <elliott> tswett: HOW DO YOU GET ALL BUT THE FIRST AND SECOND EH
23:02:34 <elliott> allButFirstAndSecond?!
23:02:47 <tswett> elliott: allButFirst: 2
23:02:51 <elliott> OR THAT, YES
23:07:53 <elliott> tswett: there's some fancy StringBuilder thing isn't there? or am i wrong
23:08:09 <tswett> I haven't a quack.
23:08:12 <elliott> :D
23:09:54 -!- smallbot has joined.
23:09:55 <Sgeo> *sigh*
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:28 <elliott> yess
23:13:33 <tswett> elliotts_favorit is elliott's favorit.
23:13:46 -!- smallbot has joined.
23:13:48 <elliott> wait
23:13:49 <smallbot> Hello!
23:13:50 <elliott> that should be flooding
23:13:52 <smallbot> Hello!
23:13:57 <elliott> uhh
23:13:57 <smallbot> Hello!
23:14:04 <elliott> how are you not pinged out, little buddy
23:14:04 <smallbot> Hello!
23:14:12 -!- tswett has set topic: ESOTERIC LANGUAGES | Catch sufficiently hello world. | An unusually not mephitic forum. | Enjoy being locked in your matrix of solidity. | yoob: http://catseye.tc/lab/yoob/applet.html (+Etcha +fixes) | Logs: http://tunes.org/~nef/logs/esoteric/?C=M;O=D, http://codu.org/logs/_esoteric/.
23:14:17 <elliott> oh it only does it on privmsgs
23:14:17 <smallbot> Hello!
23:14:26 <elliott> tswett: isn't it cute
23:14:27 <smallbot> Hello!
23:14:29 <elliott> smallbot: <3
23:14:30 <smallbot> Hello!
23:14:30 <tswett> Yeah!
23:14:31 <smallbot> Hello!
23:14:38 <tswett> Get two of it in here. Now.
23:14:38 <smallbot> Hello!
23:14:42 <elliott> :D
23:14:42 <smallbot> Hello!
23:14:53 <elliott> DOING SO
23:14:53 <smallbot> Hello!
23:14:55 <elliott> this may be painful
23:14:55 <smallbot> Hello!
23:14:57 -!- smallbot has quit (Remote host closed the connection).
23:14:58 <tswett> :D
23:14:59 <elliott> oops
23:15:01 <elliott> saved and quat the world
23:15:02 <elliott> will fix
23:15:09 <elliott> quat - past tense of quit
23:15:16 <tswett> Open two of the world.
23:15:18 -!- storkbot has joined.
23:15:20 <tswett> Nothing can go wrong.
23:15:24 -!- smallbot has joined.
23:15:28 <tswett> Who is storkbot?
23:15:28 <smallbot> Hello!
23:15:32 <elliott> oh wait
23:15:32 <smallbot> Hello!
23:15:40 <ZOMGMODULES> |help
23:15:41 <storkbot> ZOMGMODULES: Help is available for: assignment expressions print goto tell source errors
23:15:41 <smallbot> Hello!
23:15:42 <smallbot> Hello!
23:15:46 <ZOMGMODULES> |errors
23:15:47 <storkbot> ZOMGMODULES: Unknown command. Type '|help' for help.
23:15:47 <smallbot> Hello!
23:15:47 <elliott> the other smallbot is still using its nick
23:15:48 <smallbot> Hello!
23:15:48 <smallbot> Hello!
23:15:48 -!- smallbotx has joined.
23:15:49 <elliott> here we go
23:15:50 <smallbotx> Hello!
23:15:50 <smallbot> Hello!
23:15:50 <smallbot> Hello!
23:15:50 <smallbotx> Hello!
23:15:50 <smallbot> Hello!
23:15:50 <smallbotx> Hello!
23:15:50 <smallbot> Hello!
23:15:50 <ZOMGMODULES> |help errors
23:15:50 <smallbotx> Hello!
23:15:50 <smallbot> Hello!
23:15:50 <smallbotx> Hello!
23:15:50 <storkbot> ZOMGMODULES: To get more interesting error messages, set ~/errmsgs=snark.
23:15:55 <elliott> um
23:15:55 <elliott> it
23:15:56 <elliott> stopped
23:15:59 <ZOMGMODULES> |~/errmsgs=snark
23:16:00 <storkbot> ZOMGMODULES: snark
23:16:01 -!- smallbot has quit (Read error: Connection reset by peer).
23:16:01 -!- smallbotx has quit (Read error: Connection reset by peer).
23:16:05 <ZOMGMODULES> |foo
23:16:06 <storkbot> ZOMGMODULES: That's wonderful for you!
23:16:07 <elliott> well that was uneventful
23:16:11 <elliott> |~/errmsgs=poop
23:16:11 <storkbot> elliott: poop
23:16:12 <elliott> |hello!!!
23:16:13 <storkbot> elliott: Unknown command. Type '|help' for help.
23:16:16 <elliott> :(
23:16:23 <ZOMGMODULES> |poop
23:16:24 <storkbot> ZOMGMODULES: What is this I don't even
23:16:32 <ZOMGMODULES> |save
23:16:32 <storkbot> ZOMGMODULES: State saved.
23:16:35 <ZOMGMODULES> storkbot: YOU LIE
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:49 <elliott> |~/errmsgs=snark
23:16:49 <storkbot> elliott: snark
23:16:51 <tswett> Nothing can make it quit.
23:16:58 <elliott> |copulate
23:16:58 <storkbot> elliott: wat.
23:17:02 <elliott> |wat yourself
23:17:02 <storkbot> elliott: omg u errored teh syntax!!1!
23:17:06 <elliott> |no i di't
23:17:06 <storkbot> elliott: That's wonderful for you!
23:17:11 <elliott> |you too! :)
23:17:12 <storkbot> elliott: That's wonderful for you!
23:17:14 <elliott> |thanks!
23:17:15 <storkbot> elliott: What is this I don't even
23:17:20 <elliott> |we all 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:30 <elliott> like
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 <ZOMGMODULES> |true that
23:18:09 <storkbot> ZOMGMODULES: Unknown command. Type '|help' for help.
23:18:15 <ZOMGMODULES> not hard to implement
23:18:16 <ZOMGMODULES> ANYWAY
23:18:21 -!- tswett_otherbot has joined.
23:18:22 <elliott> SO IMPLEMENT IT
23:18:23 <ZOMGMODULES> storkbot: DIE DIE
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:30 <ZOMGMODULES> storkbot: helllllp
23:18:31 <storkbot> ZOMGMODULES: Unknown command. Type '|help' for help.
23:18:36 <ZOMGMODULES> storkbot: help
23:18:36 <storkbot> ZOMGMODULES: Help is available for: assignment expressions print goto tell source errors
23:18:44 <ZOMGMODULES> storkbot: help goto
23:18:44 <storkbot> ZOMGMODULES: To evaluate a string as a command, issue 'goto command'. This discards control context.
23:18:53 <ZOMGMODULES> storkbot: goto help
23:18:53 <storkbot> ZOMGMODULES: Help is available for: assignment expressions print goto tell source errors
23:18:58 <ZOMGMODULES> oh yeah, THIS bot.
23:19:02 <ZOMGMODULES> ok
23:19:12 <elliott> what's the thing to activate a block in smalltalk
23:19:12 * ZOMGMODULES shuffles over to the other monitor
23:19:14 -!- storkbot has quit (Remote host closed the connection).
23:19:19 <elliott> |go-
23:19:19 <elliott> :(
23:19:26 <ZOMGMODULES> good night
23:19:35 -!- ZOMGMODULES has changed nick to storkbot.
23:19:37 -!- storkbot has quit (Quit: leaving).
23:19:48 <tswett_otherbot> Look, tswett can control me.
23:20:06 <elliott> tswett:
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:31 <tswett> [3] value === 3
23:20:37 <elliott> with an arg :p
23:20:42 <elliott> ah
23:20:44 <elliott> value:
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:31 <elliotts_favorit> yo who am i
23:21:35 <olsner> sedbot: hi
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:07 <elliotts_favorit> im out yo
23:22:13 -!- elliotts_favorit has quit (Quit: elliotts_favorit).
23:22:30 <olsner> sedbot: QUIT
23:22:30 -!- sedbot has quit (Client Quit).
23:23:00 <elliott> noo
23:23:03 <elliott> rbing the bots bacq
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:23 <tswett> @
23:26:24 <tswett> Next.
23:26:45 <elliott> tswett: no, the os
23:26:45 -!- tswett_otherbot has quit (Ping timeout: 246 seconds).
23:26:49 <tswett> Oh.
23:26:54 <tswett> Tha--hey!
23:27:02 <tswett> What? It errored?
23:27:43 <elliott> tswett: WOULD MONEY WOR
23:27:44 <elliott> K
23:27:48 <olsner> it pung out?
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:29:32 <elliott> say Hello, world!
23:29:35 <elliott> ... :(
23:29:52 <tswett> It... timed out.
23:29:59 <elliott> oh a bug
23:30:00 <elliott> the lames
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:18 <elliott> whoops
23:31:22 <elliott> killed the wrong process
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:31:55 <elliott> I have my terminal :P
23:31:59 <elliott> That I started Pharo in.
23:32:05 <elliott> Basically I killed the input-reading thread>_>
23:32:07 <elliott> *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:49 <elliott> Oh, right.
23:32:54 <tswett> Yes, but it doesn't have an input-reading thread. :P
23:33:55 -!- smallbot has joined.
23:34:00 <elliott> say hello
23:34:05 <elliott> FUCK YOU WHORE
23:34:22 <Vorpal> elliott, you will like the randomised name of my current dwarf fortress embarkment: Boatprison.
23:34:34 <elliott> ugh
23:34:35 <elliott> still borked
23:36:04 <elliott> DIE STUPID BOT DIE
23:37:00 <elliott> smallbot: die
23:37:00 <elliott> die
23:37:01 <elliott> die
23:37:01 <elliott> die
23:37:01 <elliott> die
23:37:02 <elliott> die
23:37:02 <elliott> die
23:37:04 <elliott> die
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:30 <elliott> yay
23:38:31 <elliott> good timing
23:38:40 -!- smallbot has joined.
23:39:37 <elliott> say hello
23:39:42 <elliott> tswett: it's a bit retarded. :(
23:40:32 <tswett> So is tswettbot.
23:40:35 <tswett> It's so retarded that it isn't here.
23:40:39 <elliott> yeah.
23:40:41 <elliott> tard.
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:42:48 <elliott> hey tswettbot, die
23:42:58 <tswett> See how smart it is?
23:43:17 -!- smallbot has quit (Ping timeout: 260 seconds).
23:43:41 <elliott> the smartest
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:21 <elliott> ZOMGMODULES: hi!
23:56:25 <ZOMGMODULES> ZOMG HI
23:56:28 <elliott> ZOMGMODULES: plz not to be suing me for what i've done
23:56:47 <ZOMGMODULES> WHAT HAVE YOU DONE
23:56:56 <elliott> ZOMGMODULES: DECIDED TO MAKE A BOT THAT'S ALL THAT STORKBOT COULD BE
23:57:01 <ZOMGMODULES> :(
23:57:08 <ZOMGMODULES> what does that mean, though?
23:57:09 <elliott> like, |tell? who needs that when you can just append to someone's inbox array???
23:57:19 <ZOMGMODULES> or when lambdabot's here, use it
23:57:24 <elliott> IF YOU WON'T NURTURE THIS POSSIBLE SHITTY LANGUAGE, I WILL
23:57:46 <ZOMGMODULES> i nurture it... on and off
23:57:47 <elliott> i don't actually know what i mean
23:57:58 <ZOMGMODULES> i don't think it's a language yet exactly
23:58:04 <elliott> yeah. but it SHOULD be.
23:58:19 <ZOMGMODULES> total agreement
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:46 <ZOMGMODULES> i was going to... implement persistence
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:58 <elliott> where msgs is private
23:58:59 <ZOMGMODULES> except now i look at its lua source code and i hate it... oh hi storkbot
23:59:04 <elliott> ooh! ooh! OOH!
23:59:08 <elliott> ~foo/send should be a FUNCTION
23:59:09 <ZOMGMODULES> |~/
23:59:10 <storkbot> ZOMGMODULES:
23:59:13 <elliott> that can obviously access ~foo/inbox
23:59:15 <ZOMGMODULES> |~/*
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:21 <elliott> ZOMGMODULES: AWESOME Y/N
23:59:37 <ZOMGMODULES> i was thinking about how to distinguish commands from variables
23:59:45 <ZOMGMODULES> i have no idea
23:59:50 <elliott> see, i just solved it, don't distinguish!
23:59:54 <elliott> in fact
23:59:58 <elliott> just expand variables with like
←2011-04-04 2011-04-05 2011-04-06→ ↑2011 ↑all