00:00:10 <elliott> pikhq: DAILY REMINDER THAT KITTEN'S SERVICE MANAGEMENT SOLUTION IS THE BEST???
00:01:26 <Gregor> I hope that's fixed but the only way I can test it is to kill glogbot :P
00:02:29 <Gregor> Well, never mind, I could make it react to something else as if it was glogbot quitting.
00:03:10 -!- fungot has quit (Ping timeout: 244 seconds).
00:03:18 <pikhq> elliott: At a minimum, it can't be worse than what's common.
00:03:39 -!- Taneb has quit (Ping timeout: 258 seconds).
00:03:43 <pikhq> If it has any sort of intelligence at all in its design, that is. :P
00:03:43 -!- glogbackup has joined.
00:03:54 <Gregor> Your services will not be necessary thank you.
00:04:20 <pikhq> And can anyone tell me why I should have to wait for every single daemon ever to start before getties spawn?
00:04:53 -!- fizzie has quit (Ping timeout: 276 seconds).
00:05:12 -!- glogbackup has left.
00:05:41 <Gregor> Turns out my dead-man's switch had a bug, it wouldn't set properly when codu came BACK :(
00:06:16 <oerjan> the man somehow stayed dead
00:06:21 <pikhq> I could understand waiting until *certain* daemons spawn for getties to start, but every single damned one?
00:06:36 <pikhq> I genuinely don't need to wait for e.g. apached to start before I log in.
00:06:51 <elliott> Gregor: Have you ever actually merged glogbackup locks in
00:06:57 <Gregor> elliott: Haven't even implemented it :P
00:07:10 <Gregor> elliott: But it's nice to know they may or may not be there if I do or do not need them!
00:10:16 -!- fizzie has joined.
00:22:57 -!- augur has joined.
00:24:09 -!- augur has quit (Remote host closed the connection).
00:25:17 -!- hagb4rd has quit (Ping timeout: 240 seconds).
00:26:01 -!- sllide has quit (Read error: Connection reset by peer).
00:29:17 -!- hagb4rd has joined.
00:35:10 -!- ive has quit (Quit: leaving).
00:37:55 -!- boily has quit (Ping timeout: 260 seconds).
01:00:15 -!- tiffany has quit (Quit: nini~).
01:02:29 -!- hagb4rd has quit (Ping timeout: 240 seconds).
01:04:54 -!- elliott has quit (Remote host closed the connection).
01:50:36 -!- copumpkin has quit (Ping timeout: 255 seconds).
01:56:07 -!- pkzip has joined.
01:56:35 -!- oerjan has quit (Quit: Good night).
01:58:48 -!- madbr has joined.
01:59:39 <madbr> did some progress on the definition only language :D
02:00:10 <pkzip> Its a human Forth-language ?
02:00:29 <madbr> nah, I'm not sure which language it's the most like
02:00:32 <pkzip> or a cpu-oriented one..
02:00:45 <pkzip> your no programmer
02:00:47 <madbr> but there are 5 constructs
02:01:19 <madbr> - variables and multidimensional variable array
02:01:42 <pkzip> you reinvented Forth with variables..
02:01:53 <pkzip> Should I inform chuck ?
02:02:01 <madbr> - iterators/expression only variables
02:02:36 <madbr> - litterals/immediates (ex: 5, 'a')
02:02:53 <pkzip> if its a programming language, u had just reinvented Forth !
02:03:01 <pkzip> ( as was foretold )
02:03:07 <pkzip> ( by the fathers )
02:03:07 <madbr> - comparators (=, !=, < >, <=, >=)
02:03:23 <madbr> - math operators (+ - * /)
02:03:25 <pkzip> elders, my mistake
02:03:37 <pkzip> is it using reverse-polish math ?
02:03:44 <madbr> actually it's prefix
02:03:52 <madbr> so forwards-polish :D
02:04:03 <pkzip> there was someone working on it
02:04:15 <madbr> anyways there's no stack
02:04:23 <madbr> so it can't be forth
02:04:42 <pkzip> it has to use stacks somewhat
02:05:10 <pkzip> esoteric programming languages
02:05:15 <madbr> - there's no defined execution order: statements are to be executed in any order, any number of times
02:05:38 <pkzip> i hate the fucked-up psycho ones
02:05:48 <madbr> what about unlambda
02:05:59 <pkzip> I like the useful ones.
02:06:11 <madbr> - variables can only be defined. they can never be undefined
02:06:13 <pkzip> stuff like my own version of brainfuck
02:06:17 -!- zzo38 has joined.
02:06:30 <pkzip> or a very minimal brainfuck with some good ideas
02:06:39 <madbr> also there is only one value that variables can have: true
02:06:53 <pkzip> its a joke langauge
02:07:01 <madbr> no it's actually turing complete
02:07:35 <pkzip> it can't pass turing if all variables have only one value
02:08:15 <madbr> well, the "iterator" values can have any integer value
02:08:22 <madbr> including over 2^32
02:08:35 <madbr> but they're only valid inside the statement
02:08:49 <madbr> the trick is that a value can be true, or undefined
02:09:34 <pkzip> when I try to work on a language, its something that wud at least interest someone
02:09:35 <madbr> and since you can make an array, you can make a numerical variable by making an array and only defining one of the values
02:10:11 <madbr> When I do a language I'm trying to come up with a new, mind expanding paradigm :D
02:10:33 -!- Sgeo|web has joined.
02:10:48 <madbr> so to define the variable "toto" to 5, you would go
02:11:08 <pkzip> theres nothing to learn after Forth and LISP, and AOP, and.. oh.. i guess your right..
02:11:27 <madbr> which actually means if(true) { toto[5] = true }
02:11:50 <madbr> to do varz = varx + vary, you would go
02:11:53 <pkzip> but I prefer my mix of C/Forth/With-LISP-Macros wud be the best
02:12:13 <madbr> varz z varx x vary y = z + x y
02:12:23 <madbr> this actually means
02:12:47 -!- Aune has quit (Quit: Lmnar).
02:12:50 <pkzip> Its too late for me to try and comprehend what ur trying to code there
02:13:03 <pkzip> and I am the only hacker in here, so..
02:13:14 <pkzip> the only one listening..
02:13:15 <madbr> if (varx[x] && vary[y] && x+y==z) varz[z] = true
02:13:57 <madbr> anyways, it's really neat because it's turing complete despite the fact that variables can't ever change (!) and it has no program flow (!!)
02:14:15 <pkzip> are you the one spending time on breaking cryptographic codes and such ?
02:14:29 <madbr> just a bunch of statements that define a variable (to true) if its conditions are true
02:14:34 <pikhq> Hmmm. pkzip. Any relation to Phil Katz?
02:14:52 <madbr> pkzip: actually no, I'm a sound coder irl
02:14:55 <pkzip> pkzip is the old dos zipping
02:15:05 <pkzip> though i kinda hate it now
02:15:12 <pikhq> Yes, Phil Katz' ZIP. :)
02:15:13 <pkzip> it was super-cool in the 90s
02:15:34 <pikhq> tar(1) is, of course, better. But hey.
02:16:08 <pkzip> tell me why linux can't use the features that device-driver writers wrote into their drivers ?
02:16:49 <pkzip> since the same Windows/API/MFC code
02:16:50 <madbr> pikhq: I wonder how I'm going to garbage collect my language... seems hard :D
02:16:52 <pikhq> Because in order to do that you'd basically have to have a clone of substantial portions of Windows in Linux.
02:17:09 <pikhq> This isn't impossible, but it's *insanely* hard.
02:17:38 <pkzip> why can't they just translate the code they already .. oh wait.. its close-code
02:17:44 <pikhq> It's basically much easier to go ahead and reverse-engineer the sound cards, and thereby get native Linux drivers.
02:17:47 <pkzip> its not open-source ?
02:17:54 <pikhq> Windows drivers aren't.
02:17:59 <pikhq> Linux drivers are.
02:18:20 <madbr> why would anyone use sound card driver features ever anyways
02:18:25 <pikhq> And all too often the Linux drivers are written without any documentation available.
02:18:30 <pkzip> But the same companies that give those drivers to Linux users, write it to fit Windows..
02:18:36 <zzo38> I put a username/password in the cabal configuration file but it won't go. Did I do it wrong?
02:18:52 <pikhq> pkzip: It's actually not the sound card designers that make the drivers, usually.
02:19:12 <pkzip> Real-Tek sound drivers
02:19:15 <pikhq> Most of the Linux drivers for *anything* are made by someone else.
02:19:16 <madbr> sound cards are all the same nowadays anyways
02:19:21 <pkzip> or whats its caled
02:19:47 <madbr> pkzip: is that another ac98 based system?
02:20:27 <pikhq> AC97 is the class of sound cards that have actual documentation available. Courtesy of being designed to a spec. :)
02:20:45 <pkzip> that is what bugs me
02:20:58 <madbr> once you get buffer streaming working they are all the same anyways :D
02:21:08 <pikhq> madbr: Not *quite*.
02:21:11 <pkzip> I can't get the one silly feature they gave Windows Sound Drivers
02:21:19 <pikhq> madbr: Some of them have hardware mixing.
02:21:43 <pkzip> Audio-Effects, EQs
02:21:44 <madbr> pikhq: saves, what, 0.01% cpu? :D
02:22:10 <madbr> pkzip: news flash: on ac97 those are actually done in software, not hardware
02:22:10 <pikhq> madbr: ALSA sucks ass, and PulseAudio sucks worse; thus, hardware mixing saves much more than 0.01%. :P
02:22:48 <pikhq> madbr: It's at least to the point where it's not a *notable* performance gain any more.
02:22:52 <pikhq> But it still sucks ass.
02:23:25 <madbr> how can you mess that up
02:23:28 <pkzip> so, no echo/chipmunk effects to Linux users still ?
02:23:33 <madbr> it's like, a multiply and addition
02:23:54 <madbr> pkzip: tbh those effects should be done by the software
02:23:58 <pikhq> By having the sound done via a dozen abstraction layers.
02:23:59 -!- copumpkin has joined.
02:24:05 <Gregor> Linux drivers made by the actual company that makes the thing being driven: nvidia GFX, ATI GFX, Intel GFX ... and nothing else.
02:24:17 <pkzip> Dumb Echo/Chipmunk/Stone-Room, etc ..
02:24:17 <madbr> pikhq: man, how many layers do you even need?
02:24:57 <pkzip> I almost went to study sound engineering, its quite a funny story
02:25:31 <pikhq> ALSA kernel -> ALSA library -> dmix -> PulseAudio -> [...]
02:25:32 <pkzip> I assume you just bumped into it
02:25:43 <pikhq> Mixing happens in PulseAudio and/or dmix.
02:25:48 <pkzip> or have you studied that from the start ?
02:25:53 <pikhq> Context switches are involved in that mixing.
02:26:33 -!- augur has joined.
02:26:47 <pikhq> Admittedly, PulseAudio is entirely unnecessary, and serves largely as an expensive nop.
02:26:49 -!- augur has quit (Remote host closed the connection).
02:27:16 <pikhq> Oh, even worse. PulseAudio is often configured to redirect sound to it via ALSA. Giving you:
02:27:22 <pkzip> nop ? No-Operative/ion ?
02:27:42 <pikhq> ALSA kernel -> ALSA library -> dmix -> PulseAudio -> ALSA library -> [...]
02:27:55 <pikhq> pkzip: Pretty much.
02:28:33 <madbr> pikhq: right... sounds ripe for a cleanup
02:29:00 <pikhq> madbr: For comparison, here's the OSSv4 stack: OSS -> program
02:29:24 <madbr> then why doesn't alsa get dumped in favor of oss?
02:29:46 <pikhq> OSS was dumped in favor of ALSA way back when.
02:30:02 <pikhq> (the in-kernel OSS sucked, and the external one was proprietary)
02:30:18 <madbr> also, for audio app plugins, you should probably dump ladspa and make a linux version of VST2
02:30:38 <pkzip> I only use faith-based sound drivers, so .. :-/
02:30:55 <pikhq> madbr: Also fun, ALSA is a Linux-specific API.
02:31:07 <pikhq> All the other UNIXes (and I mean *all*) use OSS.
02:32:46 <pikhq> One of the big things I see in modern UNIXes is the idea that complicated is better.
02:32:57 <pikhq> Erm, s/UNIXes/Linux distros/
02:33:44 <madbr> that's not true for sound APIs :D
02:33:47 <pikhq> Adding more onto the heap is somehow better than actually replacing things.
02:33:54 <pikhq> It's not true for most things.
02:34:44 <madbr> for sound APIs it's really just about just doing a sound callback and keeping latency as low as possible
02:34:58 <madbr> buffers go out -> victoly!
02:35:11 <pikhq> It's especially "fun" for init schemes. It's managed to reduce /sbin/init to a program that executes a shell script and spawns getties.
02:35:46 <madbr> but yeah sound APIs are hit or miss
02:36:06 <madbr> some are nasty (OpenSL)
02:36:27 <pkzip> There was this OS for this latency-OCDers..
02:36:28 <pikhq> OSS is merely a bit strange.
02:36:53 <pikhq> open("/dev/dsp", "w"); // ...
02:37:05 <madbr> is it buffering or callback oriented?
02:37:32 <pikhq> Buffering, I guess?
02:37:50 <pikhq> To interact with it you write PCM to the device file.
02:37:59 <madbr> yeah that's buffering
02:38:51 <madbr> how does it handle synchronization?
02:39:47 -!- copumpkin has quit (Quit: Computer has gone to sleep.).
02:40:35 <madbr> smallest audio api I've seen is 2 function calls
02:41:20 <madbr> init, and a function that pushes in a sound buffer (blocks until the sound hardware is ready to take another buffer)
02:41:43 <pikhq> Well. I'd imagine what it does is the file descriptor blocks.
02:42:23 <pikhq> In fact, actually, I'm almost positive that's what it does, considering the behavior of cat raw-pcm >/dev/dsp
02:44:10 <madbr> yeah that would work
02:44:58 <madbr> tbh anything that will get you 20ms latency or less is fine :3
02:46:39 -!- Jafet has joined.
02:47:18 -!- pkzip has left.
02:48:53 <madbr> kinda wondering how to garbage collect this language... seems really hard
02:55:06 <Gregor> (Having no context) What about the language makes it difficult to GC?
02:55:23 <pikhq> Gregor: madbr's ignorance of functional language evaluation and garbage collection. :)
02:55:46 <madbr> but yeah basically all you do is define new variables to "true"
02:56:00 <madbr> usually inside arrays
02:56:23 <madbr> you cannot undefine variables once they are defined
02:57:05 <madbr> so doing brainfuck's array actually requires a 3 dimensional array:
02:57:31 <madbr> data[execution_step][index][value]
02:58:42 <CakeProphet> uh, how you index an array with only true?
02:58:48 <CakeProphet> or are there other kinds of values as well?
02:58:54 <madbr> cakeprophet: somple
02:59:28 <madbr> suppose you want to set index 45 to value 88 on step 61
02:59:47 <madbr> you simply define data[61][88][45]
02:59:57 <madbr> and leave the other values undefined
03:00:26 <madbr> well, there are integers but you can't actually store them :D
03:01:19 <madbr> you store the value 45 by making an array and only defining the entry 45 :D
03:01:35 <CakeProphet> now how do you give a brainfuck interpreter unbounded memory.
03:03:29 -!- augur has joined.
03:03:30 <madbr> you store the size of the array, then when doing > you check if it's over the size, if yes, you define a new index with value 0 so that it can be used by subsequent execution steps
03:03:40 <madbr> all arrays are unbounded
03:04:42 -!- pikhq_ has joined.
03:05:33 -!- simpleirc936 has joined.
03:06:22 <madbr> so yeah it's hard to GC because the number of defined values always increases, never decreases
03:06:25 -!- pikhq has quit (Quit: Reconnecting).
03:06:48 <madbr> so there has to be a way to recognize values that have become irrelevant and can be discarded
03:06:53 <madbr> but I don't know how :D
03:08:09 -!- simpleirc936 has quit (Remote host closed the connection).
03:13:31 <madbr> also you're going to get a copy of pretty much each variale for each execution step, dunno how to prevent that
03:14:47 -!- myndzi\ has changed nick to myndzi.
03:15:46 <Sgeo|web> madbr: Why not similarly to a more normal language? Unreachable etc.
03:15:55 <Sgeo|web> If you never get unreachabl... wait, hmm
03:16:20 <madbr> yeah would need to be some special kind of unreachable :
03:16:33 <Sgeo|web> You still need to maintain a table of which variables were defined, even if you can't see the value
03:18:14 <madbr> the point of the language is that any potential variable is either true or undefined
03:18:32 <madbr> so values aren't really used
03:18:50 <Sgeo|web> What does garbage collection even mean then?
03:19:17 <madbr> mostly it means that the set of defined variables doesn't grow indefinitely with each execution step :D
03:20:35 <madbr> like, the other catch with the language is that variables can't be undefined
03:20:59 <madbr> so essentially, to do computation, you have to keep defining new variables
03:21:24 <Sgeo|web> Oh, so.. wouldn't that make GC meaningless if this language were to be interpreted?
03:21:53 -!- copumpkin has joined.
03:22:14 <Sgeo|web> So, how could a name ever be unreachable, unless you're statically analyzing a file?
03:22:14 <madbr> it has to be GC'd in some way or else the memory would just blow up
03:22:38 <madbr> that's what I'm trying to figure out :D
03:23:10 <Sgeo|web> madbr: It's possible to make a language that has unavoidably bad implementations, you know
03:23:21 <Sgeo|web> Not saying that that's necessarily the case here
03:23:29 <Sgeo|web> But I think you might want some sort of static analysis?
03:23:42 <Sgeo|web> So that you act AS IF variables aren't undefined, but secretly you undefine them?
03:24:29 <madbr> well, there has to be some way to figure out when a variable can't produce any new definitions I guess
03:25:39 <madbr> once a variable cannot be used in the computation of new definitions, then it's effectively unreachable
03:27:07 <madbr> and can thus get garbage collected
03:27:32 <madbr> I'm not sure there's a way to do this without solving the halting problem though :D
03:29:25 <Sgeo|web> It should be harmless to fail to GC a subset of variables that are unreachable
03:29:46 <Sgeo|web> There's nothing impossible about a machine that solves the halting problem but gives false positives or false negatives
03:30:25 <Sgeo|web> Proof: For all turing machines, my machine outputs n
03:32:11 -!- kmc_ has joined.
03:32:16 <monqy> then it doesn't solve the halting problem, does it?
03:34:02 <madbr> sgeo: essentially, the real problem is that since you can't change the state of something once it's declared, you have to create a new state on each step
03:34:50 <madbr> so typically you'll have the new state being created, and the old state, but steps before that are already unreachable
03:35:00 -!- kmc has quit (Ping timeout: 240 seconds).
03:35:09 -!- Sgeo|web has quit (Ping timeout: 265 seconds).
03:37:42 -!- kmc__ has joined.
03:41:12 -!- Sgeo|web has joined.
03:41:19 -!- kmc_ has quit (Ping timeout: 260 seconds).
03:41:26 <Sgeo|web> I got a recaptcha consisting of partially greek symbols
03:41:39 <Sgeo|web> I ended up typing deltamuwhatever
03:42:55 <shachaf> Sgeo|web: Don't worry, it won't be transcribed into that.
03:43:08 <shachaf> As far as I know recaptcha requires several people to enter the same thing before it counts as valid.
03:47:22 <madbr> i guess what is needed is a way to tell from an array[x][y][z] that, say, anything before x=50 has become unreachable
03:48:26 <Sgeo|web> Can only constants go in array[x][y][z]? I don't get how one does indexing
03:52:40 <madbr> the language has a second sort of variables that are only valid for a particular statement
03:52:46 <madbr> that take numerical values
03:53:19 <madbr> so for instance to add the values from varx and vary into varz, you'd go
03:54:07 <madbr> if(varx[x] and vary[y] and z==x+y) define varz[z]
03:54:24 <madbr> or, in shorthand notation,
03:55:09 <madbr> varx[x] vary[y] z=x+y : varz[z]
03:55:57 <madbr> x y and z take numerical values
04:00:25 -!- pikhq has joined.
04:01:24 -!- pikhq_ has quit (Ping timeout: 252 seconds).
04:02:45 -!- augur has quit (Remote host closed the connection).
04:09:48 <zzo38> There are some things I don't like much about the functions for WriterT, such as the contraints on the type for "tell". It is (Monoid w, Monad m) but I think it should be (Applicative m)
04:10:20 <zzo38> My own function "mpure" is like this: mpure :: Applicative f => w -> t -> WriterT w f t; mpure x y = WriterT $ pure (y, x);
04:14:25 -!- hagb4rd has joined.
04:17:57 <zzo38> How many bijective functions of type [a] -> [a] are there?
04:20:11 <copumpkin> if you restrict them to be lists of the same length n, then n!
04:20:55 <zzo38> Yes, that is what I thought. And is it the case the output list will always be the same length as the input list?
04:21:14 <copumpkin> yeah, but that's one of the assumptions there
04:21:26 <copumpkin> having duplicate elements may reduce the number of functions a bit, since you can't distinguish them
04:22:57 <zzo38> That is true but the input could have or not have duplicate elements regardless of the function.
04:23:26 <zzo38> The assumption I make is that only finite lists are used. But nothing else; not even Eq class.
04:25:49 <pikhq> Infinite, then. To start with, there's the class of functions that simply duplicate the first element a fixed number of times, and do nothing on [].
04:26:03 <pikhq> This *alone* gives you infinite bijections, and that's not even the entire set!
04:27:05 <zzo38> Can you please give an example?
04:27:37 <pikhq> example1 (x:xs) = x:x:xs;example1 [] = []
04:27:51 <zzo38> And what is its inverse?
04:28:13 <pikhq> example1' (x:xs) = xs;example1' [] = []
04:29:44 <zzo38> But, you can have example1 (example1' "hello") == "eello" I think it is not inverse
04:34:08 <pikhq> example1 maps from the set of lists to the set of lists that are either null or have a duplicate element at the start, and example1' maps from the set of lists that are either null or have a duplicate element at the start to the set of lists.
04:34:19 <pikhq> It's not my fault that Haskell doesn't encode this at type level.
04:34:44 <zzo38> O, OK. Well, then they are bijective. But then they are not bijective on the type I specified!
04:35:08 <pikhq> Yes they are, your statement was just vague. :P
04:35:34 -!- songhead95 has quit (Ping timeout: 265 seconds).
04:36:03 <pikhq> If you want it to be a bijective mapping from the set of lists to the set of lists, then the maximum number of bijections is O(n!), where n is the maximum length of lists you're considering.
04:36:23 <pikhq> And if you're considering all finite lists, then n is infinity, and there you go.
04:37:01 <pikhq> Wait, why did I put O()?
04:51:55 -!- augur has joined.
05:28:04 -!- MDude has changed nick to MSleep.
05:30:06 <zzo38> Can WriterT be used for probability distributions?
05:38:29 <zzo38> What is it called when a group has everything being their own inverse?
05:47:40 <madbr> bunch of pairs? wish I knew
05:49:29 -!- kmc__ has quit (Quit: Leaving).
06:34:44 <zzo38> I have idea making payphones that even if inband signaling is used, can prevent redboxing. And it does not disrupt telephone calls, no secret keys are used, protocol can be public, etc. It can have three modes, red, yellow, green (and can be indiciated by LEDs of those colors). The initial mode is red.
06:35:13 <zzo38> * Red: Coins are accepted, keypad is enabled, microphone is disabled, commands received are accepted.
06:35:41 <zzo38> * Yellow: Coins are rejected, keypad is disabled, microphone is enabled, the only command accepted is to switch to red mode.
06:36:05 <zzo38> * Green: Coins are rejected, keypad is enabled, microphone is enabled, all commands received are rejected.
06:44:10 -!- zzo38 has quit (Remote host closed the connection).
06:47:53 -!- Darth_Cliche has quit (Quit: You are now graced with my absence.).
06:59:19 -!- aloril has quit (Read error: Connection reset by peer).
07:04:40 -!- Jafet has quit (Quit: Leaving.).
07:14:09 -!- aloril has joined.
07:44:04 -!- jix has quit (Remote host closed the connection).
07:57:46 -!- madbr has quit (Quit: Radiateur).
08:08:36 -!- derrik has joined.
08:16:30 -!- Vorpal_ has joined.
08:19:25 -!- Vorpal has quit (Ping timeout: 240 seconds).
08:19:41 -!- Vorpal_ has changed nick to Vorpal.
08:41:05 -!- monqy has quit (Quit: hello).
09:17:04 -!- pkzip has joined.
09:17:28 -!- pkzip has left.
09:21:51 -!- sebbu has quit (Ping timeout: 248 seconds).
09:35:18 -!- hagb4rd has quit (Ping timeout: 240 seconds).
09:41:40 -!- jix has joined.
09:47:18 -!- Madoka-Kaname has quit (Ping timeout: 240 seconds).
09:47:40 -!- Madoka-Kaname has quit (Changing host).
09:47:41 -!- Madoka-Kaname has joined.
10:04:08 -!- oerjan has joined.
10:05:33 -!- someoneyouhate has joined.
10:07:24 -!- oerjan has quit (Client Quit).
10:07:49 -!- Madoka-Kaname has quit (Ping timeout: 256 seconds).
10:09:14 -!- ais523 has joined.
10:11:05 -!- Madoka-Kaname has quit (Changing host).
10:11:06 -!- Madoka-Kaname has joined.
10:11:23 -!- oerjan has joined.
10:28:15 -!- Madoka-Kaname has quit (Ping timeout: 276 seconds).
10:30:02 -!- Madoka-Kaname has joined.
10:30:02 -!- Madoka-Kaname has quit (Changing host).
10:30:02 -!- Madoka-Kaname has joined.
10:32:10 <oerjan> @tell zzo38 <zzo38> What is it called when a group has everything being their own inverse? <-- i just saw the term "exponent 2" used on the gödel's lost letter blog
10:44:49 -!- hagb4rd has joined.
10:48:23 -!- derdon has joined.
10:54:21 -!- GreaseMonkey has quit (Quit: The Other Game).
11:08:48 -!- ais523 has quit (Remote host closed the connection).
11:08:57 -!- ais523 has joined.
11:18:14 <oerjan> :t id id id id id id id id id id id id id id id id id id id id id id id id id 0
11:18:14 <oerjan> :t id id id id id id id id id id id id id id id id id id id id id id id id id id id id id id id id id id id id id id id id id id id 0
11:18:37 <Deewiant> > id id id id id id id id id id id id id id id id id id id id id id id id id 0
11:19:09 <oerjan> > id id id id id id id id id id id id id id id id id id id id id id id id id id id id id id id id id id id id id id id id id id id 0
11:19:36 <oerjan> http://www.reddit.com/r/haskell/comments/m7uph/whats_going_on_with_id_id_id_id_0/
11:20:12 <oerjan> no one gave a really good answer to why it breaks in some contexts but not others, though
11:20:27 <Deewiant> I was just about to say that someone finally did
11:20:36 <Deewiant> In the form of http://codepad.org/2YrUqs1E
11:21:31 <oerjan> oh i guess :t doesn't need to actually generate the code
11:22:14 <oerjan> > id id id id id id id id id id id id id id id id id id id id id id id id id id id id id id id id id id id id id id id id id id id ()
11:22:29 <oerjan> hm () was supposed to work
11:22:57 <oerjan> i guess it may just take a longer expression to break
11:23:36 -!- derrik has quit (Quit: done).
11:29:16 <fizzie> You must've hit the ID-ten-T error.
11:30:08 -!- pikhq_ has joined.
11:30:39 -!- pikhq has quit (Ping timeout: 276 seconds).
11:39:33 -!- Phantom_Hoover has joined.
11:41:34 -!- Phantom__Hoover has joined.
11:44:30 -!- Phantom_Hoover has quit (Ping timeout: 240 seconds).
11:53:25 -!- ais523 has quit (Remote host closed the connection).
11:53:52 <Vorpal> My impression of Skyrim so far is that it is very much designed with console in mind when it comes to the interface. Heck there are even some sliders you have to use the arrow keys for rather than the mouse. Ugh.
12:33:54 <fizzie> http://killscreendaily.com/articles/things-i-ate-skyrim
12:45:38 -!- aloril has quit (Ping timeout: 260 seconds).
12:58:12 -!- aloril has joined.
13:08:01 -!- ais523 has joined.
13:10:59 <ais523> hmm, can someone here explain the "news at 11" meme for me? I don't get it, and knowyourmeme.com is no help
13:14:40 <oerjan> i think it's supposed to allude to ancient broadcast interruptions
13:14:59 <ais523> ah, when a news story breaks and people are told of it interrupting an existing program
13:15:03 <ais523> and when to look to see more?
13:15:44 <oerjan> it was already a cliche when i was reading usenet back in the 90s
13:16:09 <oerjan> presumably some broadcaster had its evening news then?
13:18:48 <oerjan> there's http://www.imdb.com/title/tt0091624/
13:37:30 -!- oerjan has quit (Quit: leaving).
13:54:00 <fizzie> Also: http://tvtropes.org/pmwiki/pmwiki.php/Main/FilmAtEleven
13:54:14 <fizzie> "The phrase originated in the 1970s, when stations began to run teasers for the late local news during Prime Time (such as "shootout at local gas station, Film at 11.") This was often a Justified Trope at the time, since it could take hours to transport exposed 16 mm film from a remote site to the station, develop it, edit it, and add a voiceover."
13:58:09 <fizzie> Also from the examples: "* Particularly on the Internet, "Film at 11" has taken on an ironic meaning, equivalent to Seen It a Million Times.
13:58:09 <fizzie> "Imminent Death of the Net Predicted. Film at 11." — common Usenet phrase, mid 1990's."
14:00:09 <fizzie> Finally, there's a stubticle of "Film at 11" in Wikipedia, but it doesn't say much else, except the claim that 11 p.m. is/was a "traditional timeslot for local news broadcasts in the Eastern and Pacific time zones of the United States".
14:00:17 <fizzie> (Is stubticle even a word?)
14:01:27 <fizzie> Or is that like the sort of beardcicles you get in cold weather, except re shorter hair? They're not much fun.
14:05:48 -!- hagb4rd has quit (Quit: hagb4rd).
14:08:26 -!- tiffany has joined.
14:19:22 <Phantom__Hoover> fizzie, I don't know, not having a beard or the conditions under which icicles would form on one.
14:21:14 <fizzie> I'm not quite sure they qualify as real icicles, but below -20 (apparently that's -4 Funnyheit) moisture from exhalation tends to freeze one's beard, and it's a bit uncomfortable.
14:21:29 <fizzie> I did do the prequel wander-around flash.
14:22:00 <Phantom__Hoover> Temperatures outside the 25-to-minus-5 range? What is this witchcraft?
14:24:28 <fizzie> (Here in the south tip of Finland it doesn't really go below -10 very often, though.)
14:25:05 -!- hagb4rd has joined.
14:27:13 <Phantom__Hoover> "Libertas is the first syntax-error runtime-error free programming language ever."
14:28:56 -!- Madoka-Kaname has quit (Quit: Hug~♪).
14:37:27 -!- boily has joined.
14:44:40 -!- Madoka-Kaname has joined.
14:44:40 -!- Madoka-Kaname has quit (Changing host).
14:44:40 -!- Madoka-Kaname has joined.
15:06:27 -!- MSleep has changed nick to MDude.
15:07:53 -!- hagb4rd has quit (Quit: hagb4rd).
15:08:09 -!- hagb4rd has joined.
15:18:35 -!- copumpkin has quit (Quit: Computer has gone to sleep.).
15:25:51 -!- hagb4rd2 has joined.
15:26:09 -!- hagb4rd has quit (Disconnected by services).
15:26:24 -!- hagb4rd2 has changed nick to hagb4rd.
15:27:18 <hagb4rd> sry for join flooding. guess its gonna be fine now
15:41:57 <Gregor> Phantom__Hoover: ITYM:
15:42:17 <Gregor> Madoka-Kaname!~moe@ppp-70-251-229-235.dsl.rcsntx.swbell.net, oi, fix your ident order.
15:46:13 -!- copumpkin has joined.
15:52:55 -!- nys has joined.
15:57:35 -!- Madoka-Kaname has quit (Quit: Hug~♪).
16:00:10 -!- Madoka-Kaname has joined.
16:00:10 -!- Madoka-Kaname has quit (Changing host).
16:00:11 -!- Madoka-Kaname has joined.
16:02:07 -!- Zuu has quit (Ping timeout: 244 seconds).
16:07:41 -!- pkzip has joined.
16:08:16 -!- pkzip has left.
16:16:54 -!- Ngevd has joined.
16:18:21 <Ngevd> I hurt my leg today...
16:21:05 <CakeProphet> so yeah some moment of time of numerical signifigance in the Gregorian calendar happened
16:21:31 <Ngevd> We took about ten minutes out of history to celebrate
16:21:56 <ais523> I was busy marking, I think
16:22:08 <ais523> or at least, getting ready to enter marks into a computer
16:22:20 <ais523> (on Friday mornings, we have eight people marking and I enter the marks in as they arrive)
16:23:20 <ais523> I can type in the marks more than eight times faster than another person can mark the work, though, so there's quite a bit of downtime
16:23:45 <CakeProphet> ais523: don't worry there's always 12/12/12
16:23:56 <ais523> why would I worry about a coincidence of numbers?
16:24:10 <CakeProphet> and, provided that you live long enough, 22:22 on 2/22/2222
16:24:25 <ais523> CakeProphet: dates don't work like that
16:24:45 <ais523> !c printf("%d",1<<25);
16:24:57 <ais523> CakeProphet: there aren't 22 months in a year
16:25:20 <ais523> 2^25 being 33554432 is better
16:25:34 <ais523> CakeProphet: how ridiculous
16:25:52 <ais523> Phantom__Hoover: that reminds me, why were you deliberately winding up an op yesterday?
16:26:39 <Phantom__Hoover> ais523, rest assured that the up-windery was entirely independent of your oppishness.
16:26:50 <ais523> well, OK; but it's still incredibly bad form
16:27:27 <Phantom__Hoover> Well no, because I have to concentrate hard to remember that you're an op.
16:27:42 <Phantom__Hoover> Thus I was not deliberately winding up an op; it was accidental.
16:27:42 <ais523> it's bad form to deliberately wind up anyone, whether they're an op or not
16:28:53 <CakeProphet> ais523: so you know how people say "November 11th, 2011"?
16:28:57 <CakeProphet> or, do people not say that where you live?
16:29:05 <Ngevd> I say 11th of November 2011
16:29:08 <ais523> CakeProphet: "11 November 2011"
16:29:10 <CakeProphet> anyway, that's where the m/d/y format comes from
16:29:16 -!- elliott has joined.
16:29:19 <ais523> or just "the 11th" if the month/year are clear from context
16:29:26 <Ngevd> I thought it was a corruption of y/m/d
16:29:37 <Ngevd> Which in some ways DOES MAKE SOME sense
16:29:40 <ais523> there's an "of" that's pronounced but not generally written
16:29:42 <Ngevd> But it's still WRONG
16:29:59 <Vorpal> amusing, there are "Quicksilver ingots" in Skyrim... How would that even work?
16:30:05 <elliott> Gregor: So, I wasn't planning on getting the new Dinosaur Comics book.
16:30:09 <CakeProphet> (implying a correct ordering of elements in a date)
16:30:10 <elliott> BUT IT HAS AN N-GRAM ANALYSIS
16:30:27 <Ngevd> Vorpal, isn't quicksilver mercury?
16:30:29 <CakeProphet> elliott: you could incorporate that in your CORPUS
16:30:37 <ais523> Phantom__Hoover: so basically, I want you to apologise
16:31:00 <Ngevd> Homestuck update, Minecraft pre-release
16:31:02 <Vorpal> Ngevd, btw the Swedish name for mercury is kvicksilver. So this was obvious to me
16:31:16 <elliott> Ngevd: No spoilers re: HS update
16:31:34 <elliott> 11/11/11 - "Examine room."
16:31:46 <elliott> Phantom__Hoover: Stop being an asshole for no reason.
16:31:54 <CakeProphet> elliott: I somehow saw this coming I think.
16:31:55 <ais523> Phantom__Hoover: isn't tendering, in that context, the process of asking a bunch of people for quotes
16:32:01 <ais523> so you can accept the best one and get them to subcontract?
16:32:01 <elliott> CakeProphet: So did everyone
16:32:08 <ais523> it'd be a kind-of weird thing to do, really
16:32:34 <elliott> 02:02:53: <pkzip> if its a programming language, u had just reinvented Forth !
16:32:36 <Ngevd> <elliott> Phantom__Hoover: Stop being an asshole for no reason. <-- that's elliott's job :P
16:32:39 <elliott> this pkzip guy in the logs really likes forth
16:32:57 <ais523> admittedly, Forth is a language it seems vaguely possible to reinvent by mistake
16:32:59 <ais523> but not much more than that
16:33:24 <elliott> Ngevd: it takes slightly more reasons than "because it'll upset them" for me to offend someone :)
16:33:42 <ais523> hmm, if space aliens had programming languages (and they probably do), which of ours do you think they'd have reinvented; not counting things like syntax differences
16:33:50 <elliott> 02:05:03: <pkzip> oh i get it
16:33:50 <elliott> 02:05:10: <pkzip> esoteric programming languages
16:33:50 <elliott> 02:05:15: <madbr> - there's no defined execution order: statements are to be executed in any order, any number of times
16:33:50 <elliott> 02:05:18: <pkzip> my fav !!!!!!!!!1
16:33:52 <elliott> 02:05:38: <pkzip> i hate the fucked-up psycho ones
16:33:54 <elliott> 02:05:59: <pkzip> I like the useful ones.
16:33:55 <elliott> wow this guy is really annoying
16:34:03 <Ngevd> I know someone who actually has had his birthday, and Christmas, ON THE SAME DAY!
16:34:03 <Ngevd> In fact, I'll estimate that just under 1 in 365 people do
16:34:05 <elliott> ais523: heh, you might like the Nock/Urbit posts
16:34:24 <ais523> Ngevd: does he have his birthday and Christmas on the same day every year?
16:34:45 <elliott> 02:06:13: <pkzip> stuff like my own version of brainfuck
16:35:15 <elliott> (diff) (hist) . . N Libertas; 01:29 . . (+1,162) . . Pegasus (Talk | contribs) (New page: '''Libertas''' is the first syntax-error runtime-error free programming language ever. The interpeter will execute the instructions no matter what. =Examples= A hello world application: ...)
16:35:33 <ais523> elliott: that is at least a vaguely eso concept
16:35:38 <ais523> it's not the same as what BF does
16:35:41 <ais523> sure, it's probably a bad impl of it
16:35:47 <ais523> but the concept isn't awful
16:35:55 <elliott> http://esoteric.voxelperfect.net/wiki/Libertas
16:36:14 <elliott> it's just "make an empty object when you reference something undefined"
16:36:30 <elliott> sending a message to nil produces nil
16:36:34 <elliott> you just need to map undefined variables to nil
16:36:54 <ais523> elliott: but the way its syntax works, you could come across fun ambiguities
16:37:05 <ais523> try to figure out how you output a string stored in a variable
16:37:24 <ais523> (the obvious syntax for that, is the same as the syntax for extending toScreen with a new property)
16:37:28 <elliott> 02:16:08: <pkzip> tell me why linux can't use the features that device-driver writers wrote into their drivers ?
16:37:28 <elliott> 02:16:25: <pkzip> Windows drivers
16:37:28 <elliott> 02:16:49: <pkzip> since the same Windows/API/MFC code
16:37:34 <elliott> i hope this guy leaves soon
16:38:05 <ais523> elliott: randomly mentioning ndiswrapper could potentially help, or hurt
16:38:15 <ais523> would at least possibly have produced an amusing reaction
16:38:15 <CakeProphet> elliott: okay so I didn't predict any of this other stuff. Just that there will be more character introductions of that format.
16:38:23 <ais523> elliott: that's the past tense of could
16:38:28 <ais523> it's just the same as the present tense
16:38:33 <ais523> so it's a little hard to tell them apart
16:38:42 <ais523> no "coulded" or whatever in English
16:39:04 -!- rajdev5089 has joined.
16:39:17 <ais523> I suppose I should have said "could have" there
16:39:18 <CakeProphet> elliott: I thought perhaps he was going to take us to the green hardboiled universe and introduce some characters or reintroduct the midnight crew or something like that.
16:39:21 <ais523> hmm, who's rajdev5089?
16:39:31 <HackEgo> Welcome to the international hub for esoteric programming language design and deployment! For more information, check out our wiki: http://esolangs.org/wiki/Main_Page
16:39:33 <ais523> elliott: I was going to do that, but didn't know if they were new or not
16:39:39 <elliott> CakeProphet: Well, don't spoil me.
16:39:52 <ais523> perhaps I should just welcome regulars randomly, so that if a not-quite-newbie comes in and I welcome them too, it doesn't look out of place
16:40:58 <ais523> rajdev5089: this is an IRC channel about esoteric programming languages
16:41:40 <ais523> why does it matter? this is IRC, there aren't any obvious international borders here
16:41:44 <ais523> (HEXHAM IS NOT A COUNTRY)
16:42:01 <elliott> esoteric prorgamming languages
16:42:22 <ais523> rajdev5089: yes; but the chat rooms are all about different subjects
16:42:37 <ais523> and if you come to one that isn't about a subject you're interested in, the conversation probably won't be too interesting for you
16:42:48 <ais523> as in, we're here because we share a common interest
16:43:03 <elliott> for some definition of professional
16:43:06 <Ngevd> I'm definitely not a software professional
16:43:21 <ais523> umm, my job involves at least some programming, does that count?
16:43:33 <Ngevd> I'm sorta a software... person who's not even very good at pretending to be any good at programming
16:43:35 <rajdev5089> then who are you people.... u said its a programming language
16:43:46 <Ngevd> We're software amateurs
16:44:11 <Ngevd> People who do things for entertainment
16:44:13 <elliott> http://en.wiktionary.org/wiki/amateur
16:44:57 <elliott> Yes, this channel is for software sexies.
16:45:00 -!- Phantom__Hoover has quit (Quit: Leaving).
16:45:09 <ais523> rajdev5089: 55, including you
16:45:42 <elliott> depends what you mean by personal :P
16:45:53 <elliott> rajdev5089: do you work on Firefox?
16:46:43 <elliott> no, we're mostly invisible
16:46:46 <elliott> I'm actually a stream of bist
16:47:02 <ais523> elliott: enjoy being locked in your matrix of solidity!
16:47:27 <elliott> rajdev5089: you have to build yourself a matrix of all your hopes and dreams, scan your brain into it, and that locks you in
16:48:08 <ais523> heh, I was about to ping fungot too, but it wasn't here
16:48:13 <HackEgo> /home/hackbot/hackbot.hg/multibot_cmds/lib/limits: line 5: exec: logs: not found
16:48:18 <HackEgo> 2011-07-31.txt:10:43:42: <coppro> learn to `on`
16:48:27 <elliott> rajdev5089: i actually flow all over the internet, i'm an AI worm
16:48:35 <elliott> currently I'm in at least 8 continents
16:48:49 <Ngevd> I'm Australian currently resident in Canada
16:49:21 <ais523> rajdev5089: you're from Bangalore, India, or at least somewhere nearby
16:49:52 <ais523> so why do you need to ask us where we live, when it's typically easy to find out?
16:50:04 <rajdev5089> how u people know that i m from banglore
16:50:17 <Ngevd> Because we know the secret
16:50:29 <elliott> rajdev5089: Because of the Cameras.
16:53:04 <elliott> rajdev5089: Your name... is rajdev5089.
16:53:57 * CakeProphet says in a cryptic voice, "your name is not registered to services."
16:54:18 * shachaf says in a hollow voice, "Fool."
16:54:43 <elliott> rajdev5089: YOU Broadband & Cable India Ltd. is dedicated to your safety.
16:56:12 <ais523> err, you misspelt his name
16:56:36 <elliott> ais523: rajdev5089 is clearly referencing some offline user
16:56:38 <CakeProphet> fizzie: help you are not fungot. no one is fungot. what is world at
16:56:47 <elliott> ais523: wow, I typo'd "elliott" as "elliot"
16:57:02 <ais523> deliberately typoing is often hard
16:57:05 <HackEgo> 2009-11-09.txt:23:31:24: <ehird> Special thanks go to Joris Huizer, Elliot Hird, Arvid Norlander,
16:57:10 <ais523> especially on a word you typo often
16:57:24 <ais523> (random fact: I typoed about eight times in that line)
16:57:50 <CakeProphet> like grrrr mad? or bhasiuhiuwehruhwer made?
16:58:17 <rajdev5089> if someone is free mean tell me clearly what happening here
16:58:46 <ais523> rajdev5089: you probably don't want to use this one, as you seem to have no idea of what it's for
17:00:11 <elliott> We know everything, rajdev5089.
17:00:43 <ais523> elliott: never say that, you attract attention from people who actually /do/ know everything
17:02:07 <CakeProphet> rajdev5089: I am a sexy sexy female software professional.
17:02:11 <elliott> rajdev5089: the owner of this channel
17:03:57 <Ngevd> A sexy sexy female software professional
17:04:47 <CakeProphet> I am Zoe Olivier and I have for the longest time been raised by foster parents, unaware of my status as a foster child. Then one day, I realized I have the power to divine through interaction with baking magicks.
17:05:27 <Ngevd> Hexham can be either
17:05:30 <CakeProphet> it is since then that I exist in my current form, fighting the evils through divination of baked goods, and making the world a happy and good justice place for all!!!
17:05:46 <elliott> rajdev5089: I feel compelled to point out that as an amorphous stream of bits, I have no gender.
17:06:57 -!- augur has quit (Remote host closed the connection).
17:07:05 <Ngevd> msg rajdev5089 Hello!
17:07:15 <ais523> Ngevd: that isn't a private message
17:09:33 -!- ChanServ has set channel mode: +o ais523.
17:09:53 <ais523> rajdev5089: I suspect you're in the wrong place, and you should probably leave
17:10:48 <ais523> because you don't understand the purpose of this channel
17:10:54 <HackEgo> 457) <Sgeo> Dear eHow: Please don't assume that my toilet works like that <Sgeo> Or, at least, my toilet looks different
17:10:54 <HackEgo> 387) <zzo38> I figured out something about C program. If you use ? : a lot then you don't need as much parentheses but it makes it more difficult to understand.
17:11:11 <HackEgo> 20) <bsmntbombdood> there is plenty of room to have two heads
17:11:11 <HackEgo> 95) <Aftran> Clearly we should be like Mumbai and get of vehicle dors. <Warrigal> Get of vehicle dors? <Warrigal> I think Aftran had a French phrase there. <Firenze> Les vehicles d'or
17:11:11 <HackEgo> 230) <zzo38> Maybe they should just get rid of Minecraft. If more people want it someone can make using GNU GPL v3 or later version, with different people, might improve slightly.
17:11:44 <elliott> ais523: hmm, I'm thinking 95; 20 can't be deleted because it would ruin the quotes after it
17:12:02 <ais523> elliott: yes, OK; 457's good for a Sgeo quote
17:12:21 <ais523> CakeProphet: ouch, don't say that
17:12:29 <HackEgo> *poof* <Aftran> Clearly we should be like Mumbai and get of vehicle dors. <Warrigal> Get of vehicle dors? <Warrigal> I think Aftran had a French phrase there. <Firenze> Les vehicles d'or
17:12:31 <ais523> I thought of saying that myself, but realised why it's a really bad idea, and you should too, ideally
17:12:38 <ais523> elliott: you want half the channel pinged?
17:12:45 <elliott> ais523: I don't think you know what /names is
17:13:07 <ais523> elliott: I do; and I know it answers in a numeric not in-channel
17:13:18 <ais523> I still nonetheless stand by my statement
17:13:42 <CakeProphet> rajdev5089: I told you my name is Zoe Olivier the Cake Prophet
17:14:20 <lambdabot> [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28...
17:14:28 <tswett> Speaking of French, qu'est-ce que l'arg est?
17:14:57 <Gregor> Life lesson for us all: http://9gag.com/gag/565257
17:16:19 -!- rajdev5089 has left.
17:17:10 <CakeProphet> poor guy. apparently really terrible at finding people to cyber with.
17:17:12 -!- ais523 has kicked ais523 there are actually quite a lot of ways to deop yourself, this is one of them.
17:17:15 -!- ais523 has joined.
17:18:41 <nys> i think he was looking for some sexy pirates
17:19:10 <ais523> nys: the funny thing is, from just "yar" and ":o" I had a good idea that you actually had a vague idea of what you were doing here
17:19:18 <ais523> which is a little surprising, really, given how content-free those lines were
17:19:29 <nys> i know what i'm doing here
17:19:33 <nys> i made some langs
17:20:13 <CakeProphet> #esotericf is a prestiguous group of eminent language designers.
17:20:19 <ais523> elliott: ":o" is a lot more encouraging than "i dont understand you elliot"
17:20:28 <nys> i like the way you rub your peg leg on my beard
17:20:41 <elliott> ais523: you realise that nys didn't just join? :)
17:20:50 * CakeProphet is the esteemed creator the dupdog programming language.
17:20:53 <elliott> CakeProphet: * Users on #esotericf: @elliott
17:20:54 <ais523> elliott: yes, from the join/part layout
17:21:06 <ais523> I hadn't seen him/her here before, but had guessed he/she'd been here for a while
17:21:13 <ais523> well, remembered so, at least
17:21:28 <ais523> there are quite a lot of people who have been here for ages but I simply haven't noticed due to being oblivious
17:21:45 <nys> i was here once around five years ago I think
17:22:27 <Ngevd> Your name seems somehow familiar...
17:22:27 <nys> but i probsably uses the nick architect1 back tshen
17:22:49 <nys> this nick is registered on this network
17:22:52 <nys> but not to me
17:23:04 <nys> so I might be unintentionally impostering someone
17:23:46 <Gregor> WILL THE REAL NYS PLEASE STAND UP
17:23:55 <nys> i am the real nys
17:24:01 <nys> but only in a different way
17:24:46 -!- elliott has quit (Quit: Leaving).
17:27:40 <Ngevd> I should have called MIBBLLII WIBBLLII
17:28:02 <nys> are there any esolangs that have been removed from the wiki because they were too useful?
17:28:27 <ais523> being useful and being esoteric aren't mutually exclusive
17:28:43 <ais523> it's just unlikely to find a language that does both at once
17:28:53 <ais523> (being eso is enough of a reason to make a language that you don't have to make it eso too)
17:29:18 -!- elliott has joined.
17:30:46 <HackEgo> Welcome to the international hub for esoteric programming language design and deployment! For more information, check out our wiki: http://esolangs.org/wiki/Main_Page
17:35:01 <ais523> oh right, I have a serious and annoying question I've been putting off all week, because I suspect the answer is "that's impossible"
17:35:48 <ais523> given some code that you're treating as black-box (that is, that you can't see the internals of the code, but can run it), that you know is a sorting algorithm, is there any way to determine if it's using mergesort or not?
17:35:58 <ais523> not 100% unfoolable, but even to make a decent guess in the common case?
17:37:09 <elliott> ais523: hmm, how much of a black box is it?
17:37:23 <elliott> ais523: if it's a function in a pure language, you can't, because all sorting algorithms are equivalent, modulo stability
17:37:31 <ais523> one I can look inside but don't really want to have to, as it'd be faster to do so by hand than write a program to do it
17:37:33 <elliott> does it take a comparison function, or are you forced to sort lists of integers?
17:37:42 <ais523> I /can/ time it, but that's just going to prove it n log n
17:37:51 <elliott> I assume you mean it's a Unix program, which means you can time it, which could be helpful
17:37:51 <ais523> and it's using OCaml's built-in compare function
17:37:55 -!- augur has joined.
17:37:59 <Gregor> ais523: If you hadn't said "not 100% unfoolable", I would have just screamed "RIIIIIICE" at you.
17:38:01 <ais523> which I think cannot compare two things equal unless they actually are equal
17:38:15 <ais523> so I can't use stability tricks
17:38:17 <elliott> ais523: yes, but you can try and get the worst case
17:38:25 <elliott> if it goes really slowly on pathological quicksort data, it's probably not mergesort
17:38:34 <ais523> the hard part is, it's not even mergesort in particular I'm meant to be checking for
17:38:40 <HackEgo> elliott: Welcome to the international hub for esoteric programming language design and deployment! For more information, check out our wiki: http://esolangs.org/wiki/Main_Page
17:38:43 <elliott> ais523: out of curiosity, what /is/ this program?
17:38:47 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/bin/?
17:38:52 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.813
17:38:53 <ais523> which is like mergesort, except that you're splitting into 3 lists not 2
17:39:07 <elliott> Gregor: You made the change in a way I don't like, I'm rewriting it :)
17:39:21 <ais523> elliott: and it's student submissions, they're meant to be marked automatically
17:39:34 <ais523> but I can't see an automatic method for determining that they're using the right algo in the sorting question
17:39:39 <ais523> (none of the questions have required a specific algo)
17:40:19 <Ngevd> Can you see how much memory it uses?
17:40:40 <ais523> but am not even sure that'd help, as OCaml is nondeterministically GCed
17:41:44 <Ngevd> I seem to remember "libertas" being latin for "for freedom"...
17:42:23 <elliott> `fetch http://sprunge.us/eYAX
17:42:24 <HackEgo> 2011-11-11 17:42:24 URL:http://sprunge.us/eYAX [268] -> "eYAX" [1]
17:42:34 <elliott> `run cd bin; patch -p1 <../eYAX
17:42:36 <HackEgo> patching file '?' \ Hunk #1 succeeded at 1 with fuzz 2.
17:42:49 <HackEgo> welcome > Gregor? ¯\(°_o)/¯
17:43:19 <elliott> There is an easy solution to this!
17:43:47 <Gregor> So have we all decided on a superior highlight character for that, by the way?
17:43:52 <ais523> elliott: please tell me it's parsing the filename of stdout to determine who to ping
17:43:57 <elliott> Gregor: `? is fine *shrug*
17:44:05 <Gregor> elliott: But it needs a space bleh >:(
17:44:12 <Gregor> elliott: It's really "`? "
17:44:23 <elliott> Gregor: I'd make it react to any lowercase word without spaces followed by ? and EOL
17:44:25 <ais523> what about ?? like #nethack uses?
17:44:27 <elliott> but others may dislike that :)
17:44:28 <Ngevd> I want a really really old computer
17:44:36 <Ngevd> With vacuum tubes and magnetic tape
17:44:40 <Gregor> ??I suspect that it will still react to ?
17:44:40 <ais523> is ?? an echo command for lambdabot?
17:44:55 <lambdabot> help <command>. Ask for help for <command>. Try 'list' for all commands
17:44:58 <lambdabot> ? executes plugin invocations in its arguments, parentheses can be used.
17:44:58 <lambdabot> The commands are right associative.
17:44:58 <lambdabot> is the same as: ? (?pl (?undo code))
17:45:44 <Ngevd> And then I will set it up
17:45:44 <Ngevd> And run Dwarf Fortress
17:45:44 <Ngevd> Generate a really long history
17:45:44 <Ngevd> And just have that in a room somewhere
17:45:50 <elliott> ais523 can't read documentation.
17:46:01 <lambdabot> @ executes plugin invocations in its arguments, parentheses can be used.
17:46:01 <lambdabot> The commands are right associative.
17:46:01 <lambdabot> is the same as: @ (@pl (@undo code))
17:46:01 <ais523> elliott: the documentation gave /one/ leading ?
17:46:08 <elliott> Wow, it actually gives different help for the @ version.
17:46:15 <elliott> ais523: yes, because it's implied to be part of a lambdabot invocation
17:46:17 <lambdabot> pointless <expr>. Play with pointfree code.
17:46:20 <lambdabot> help <command>. Ask for help for <command>. Try 'list' for all commands
17:46:22 <elliott> <lambdabot> pointless <expr>. Play with pointfree code.
17:47:05 <elliott> `fetch http://sprunge.us/OhSc
17:47:06 <HackEgo> 2011-11-11 17:47:06 URL:http://sprunge.us/OhSc [189] -> "OhSc" [1]
17:47:12 <elliott> `run mv OhSC bin/'?'; chmod +x bin/'?'
17:47:14 <HackEgo> mv: cannot stat `OhSC': No such file or directory
17:47:17 <elliott> `run mv OhSC bin/'?'; chmod +x bin/'?'
17:47:19 <HackEgo> mv: cannot stat `OhSC': No such file or directory
17:47:53 <elliott> `fetch http://sprunge.us/OhSc
17:47:54 <HackEgo> 2011-11-11 17:47:54 URL:http://sprunge.us/OhSc [189] -> "OhSc.1" [1]
17:48:00 <elliott> `run mv OhSC bin/'?'; chmod +x bin/'?'; rm OhSC.1
17:48:02 <HackEgo> mv: cannot stat `OhSC': No such file or directory \ rm: cannot remove `OhSC.1': No such file or directory
17:48:07 <elliott> `run mv OhSc bin/'?'; chmod +x bin/'?'; rm OhSc.1
17:48:14 <HackEgo> Gregor: Welcome to the international hub for esoteric programming language design and deployment! For more information, check out our wiki: http://esolangs.org/wiki/Main_Page
17:48:22 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.6308
17:48:23 <elliott> Gregor: Behold the elegance.
17:48:53 <Gregor> elliott: That's pretty genius.
17:49:06 <elliott> `run sed -i 's/f $1/f $*/g' bin/'?'; # so that you can still run it from `run sanely
17:49:23 <HackEgo> Runs arbitrary code in GNU/Linux. Type "`<command>", or "`run <command>" for full shell commands. "`fetch <URL>" downloads files. Files saved to $PWD are persistent, and $PWD/bin is in $PATH. $PWD is a mercurial repository, "`revert <rev>" can be used to revert to a revision. See http://codu.org/projects/hackbot/fshg/
17:49:41 <elliott> Gregor: I just had The Best Idea.
17:50:04 <Ngevd> Also, Pietbot's achieved sentience WHILE NOT EVEN RUNNING
17:50:13 <elliott> Gregor: Writing to /home/<nick> causes HackEgo to address what's written there to <nick>.
17:50:21 <elliott> For example: `run wisdom > ~elliott
17:50:24 <elliott> <HackEgo> elliott: [wisdom]
17:50:54 <Gregor> ... that's dumb. /home/<nick> existed for any reason it would be for actually private per-user files.
17:51:12 <elliott> Gregor: The reason to put it in /home is so that you can use ~foo :P
17:51:41 <elliott> Gregor: OK wait no I just had The Best Idea.
17:51:41 <Gregor> So I think we've all agreed on the prefix character 🐐, right?
17:52:01 <Gregor> WATCH ME @ THE NIGHT AWAY
17:52:17 <elliott> Gregor: OK here is the best idea: HackEgo functions as a @tell bot... /by using Unix mail/.
17:53:11 <elliott> It requires exactly two pieces of infrastructure from the outside: A user added whenever a new nick is spotted, and the first time a user speaks after receiving mail, HackEgo notifies them :P
17:55:23 -!- Ngevd has quit (Ping timeout: 245 seconds).
17:55:33 <Gregor> Ohhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh
17:55:44 <Gregor> I half-mostly-kinda misunderstood the request :P
17:56:04 <Gregor> Consider it under consideration.
17:58:39 <HackEgo> elliott: Welcome to the international hub for esoteric programming language design and deployment! For more information, check out our wiki: http://esolangs.org/wiki/Main_Page
17:59:04 <elliott> You're a bad person, Gregor.
17:59:14 <Gregor> To be fair, I also added back @ :P
17:59:29 <Vorpal> btw I can confirm that skyrim is buggy
17:59:33 <elliott> Yeah but @ is like so unUnixy.
18:00:02 <Gregor> elliott: foo > elliott should replace the very fiber of your being, not target the message at you.
18:00:13 <Vorpal> for example, I'm currently unable to re-equip the item in my right hand except to a two-hand weapon or the flame spell. This just happened randomly
18:00:14 <elliott> Gregor: HackEgo must live with its approximations of the ideal :P
18:00:24 <ais523> `run '?' welcome | cat <<<'elliott: ' -
18:00:26 <HackEgo> sh: Syntax error: redirection unexpected
18:00:38 <elliott> Gregor: BTW, make `run start bash, not sh, please
18:00:42 <ais523> `run bash -c "'?' welcome | cat <<<'elliott: ' -"
18:00:46 <elliott> bash goes into compatibility mode when run as sh
18:00:51 <elliott> which makes no sense for `run's interactive use
18:01:00 <elliott> ais523: what is with the trailing "?
18:01:07 * Gregor makes it start tcsh X-P
18:01:08 <ais523> elliott: because it matches the " after -c
18:02:15 <ais523> but it seems I've forgotten exactly how <<< works
18:02:28 <Vorpal> oh and this ride to another town I just hired doesn't seem to actually ever leave
18:02:28 <elliott> Gregor: BTW, I had some more thoughts about transactional semantics for HackEgo; as far as I can tell, it's simple, but there's one important caveat:
18:02:40 <elliott> Gregor: Commands all run at once, /but/ you don't get the output of any command until they /all/ finish.
18:02:45 <ais523> Vorpal: does it nonetheless arrive?
18:03:01 <elliott> Gregor: I don't think that's so terrible as to make it not worth it, though; everything still takes the same amount of time.
18:03:20 <elliott> It does mean that `sleep 30 is a bit annoying, but only Madoka-Kaname would do that, and HackEgo ignores her :P
18:04:17 <fizzie> `run bash -c "'?' welcome | cat <(echo -n 'elliott: ') -"
18:04:20 <HackEgo> elliott: Welcome to the international hub for esoteric programming language design and deployment! For more information, check out our wiki: http://esolangs.org/wiki/Main_Page
18:04:26 <Vorpal> <ais523> Vorpal: does it nonetheless arrive? <-- no
18:04:43 <Vorpal> ais523, it is just boringly plain broken.
18:04:54 <elliott> Gregor: I'm tempted to replace `?'s > support with a "to" command, but I dunno...
18:05:06 <elliott> "`? welcome > newbie" is shorter than "`run ? welcome | to newbie" :P
18:05:17 <Vorpal> ais523, I assume you know that Skyrim had a day-1 patch?
18:05:25 <elliott> I could make it `to newbie ? welcome
18:05:36 <Vorpal> ais523, so actually version 1.1 was released on the 11/11/11
18:05:39 <ais523> `run while true; do '?' `t` > t2; cat t2; mv t2 t; done
18:05:49 <elliott> ais523: that's going to be annoying...
18:05:54 <ais523> bleh, do infinite loops not produce output anyway?
18:06:09 <ais523> `run for x in `seq 1 5`; do '?' `t` > t2; cat t2; mv t2 t; done
18:06:10 <Gregor> wtf is `t` supposed to do.
18:06:11 <HackEgo> bash: t: command not found \ cat: wisdom/: Is a directory \ bash: t: command not found \ cat: wisdom/: Is a directory \ bash: t: command not found \ cat: wisdom/: Is a directory \ bash: t: command not found \ cat: wisdom/: Is a directory \ bash: t: command not found \ cat: wisdom/: Is a directory \ bash: t: command not found
18:06:13 <HackEgo> bash: t: command not found \ cat: wisdom/: Is a directory \ bash: t: command not found \ cat: wisdom/: Is a directory \ bash: t: command not found \ cat: wisdom/: Is a directory \ bash: t: command not found \ cat: wisdom/: Is a directory \ bash: t: command not found \ cat: wisdom/: Is a directory
18:06:17 <ais523> `run for x in `seq 1 5`; do '?' `cat t` > t2; cat t2; mv t2 t; done
18:06:22 <HackEgo> cat: wisdom/: Is a directory \ cat: wisdom/: Is a directory \ cat: wisdom/: Is a directory \ cat: wisdom/: Is a directory \ cat: wisdom/: Is a directory
18:06:47 <ais523> the idea's to repeatedly iterate ?
18:07:13 <ais523> so we have one ? then two ?s then three ?s, etc
18:07:18 <ais523> Gregor: it's bash, it's not Haskell
18:07:35 <elliott> Gregor: It would be kinda nice if we could revert single files...
18:08:20 <Gregor> Since HackEgo is actually running umlbox, I could make .hg present but read-only.
18:08:52 <HackEgo> /home/hackbot/hackbot.hg/multibot_cmds/lib/limits: line 5: exec: gdb: not found
18:09:02 -!- monqy has joined.
18:09:07 <elliott> Gregor: It would also be nice if we could install packages ourselves ;D
18:09:11 -!- Ngevd has joined.
18:10:09 <Gregor> `echo Did I just break everything?
18:10:09 <Ngevd> Well, Pietbot seems to work when it recieves a PRIVMSG from #esoTERiC
18:10:10 <HackEgo> Did I just break everything?
18:10:11 <HackEgo> Invalid .hg directory found.
18:10:22 <Gregor> `echo Did I just break everything?
18:10:24 <HackEgo> Did I just break everything?
18:10:55 -!- useless-fungot has joined.
18:11:49 <Gregor> OK, that didn't work, presently .hg is accessible :P
18:11:52 <useless-fungot> :S:^:S:^:S:^:S:^:S:^:S:^:S:^:S:^:S:^:S:^:S:^:S:^:S:^:S:^:S:^:S:^:S:^:S:^:S:^:S:^:S:^:S:^:S:^:S:^:S:^:S:^:S:^:S:^:S:^:S:^:S:^:S:^:S:^:S:^:S:^:S:^:S:^:S:^:S:^:S:^:S:^:S:^:S:^:S:^:S:^:S:^:S:^:S:^:S:^:S:^:S:^:S:^:S:^:S:^:S:^:S:^:S:^:S:^:S:^:S:^:S:^:S:^:S:^:S:^:S:^:S:^:S:^:S:^:S:^:S:^:S:^:S:^:S:^:S:^:S:^:S:^:S:^:S:^:S:^:S:^:S:^ ...too much output!
18:12:08 <ais523> OK, the reaction to the first one was fast enough that there's definitely a bot involved
18:12:26 <Gregor> .hg is now present but read-only.
18:12:31 <useless-fungot> :S(a)*:^:S(a)*:^a:S(a)*:^aa:S(a)*:^aaa:S(a)*:^aaaa:S(a)*:^aaaaa:S(a)*:^aaaaaa:S(a)*:^aaaaaaa:S(a)*:^aaaaaaaa:S(a)*:^aaaaaaaaa:S(a)*:^aaaaaaaaaa:S(a)*:^aaaaaaaaaaa:S(a)*:^aaaaaaaaaaaa:S(a)*:^aaaaaaaaaaaaa:S(a)*:^aaaaaaaaaaaaaa:S(a)*:^aaaaaaaaaaaaaaa:S(a)*:^aaaaaaaaaaaaaaaa:S(a)*:^aaaaaaaaaaaaaaaaa:S(a)*:^aaaaaaaaaaaaaaaaaa: ...too much output!
18:12:54 <elliott> `fetch http://sprunge.us/NLfb
18:12:55 <HackEgo> 2011-11-11 18:12:55 URL:http://sprunge.us/NLfb [179] -> "NLfb" [1]
18:13:00 <elliott> `run mv NLfb bin/'@'; chmod +x bin/'@'
18:13:04 <ais523> (note: that is /not/ a sensible way to do a loop counter in Underload)
18:13:06 <HackEgo> ais523: exec: 9: welcome: not found
18:13:15 <ais523> HackEgo: thanks for that
18:13:24 <HackEgo> ais523: Welcome to the international hub for esoteric programming language design and deployment! For more information, check out our wiki: http://esolangs.org/wiki/Main_Page
18:13:37 <HackEgo> bin \ canary \ karma \ lastquote \ lib \ paste \ quotes \ share \ wisdom
18:13:52 <Gregor> elliott: Interpolation's a bitch, eh?
18:13:59 <HackEgo> ais523: exec: 9: welcome: not found
18:14:11 <elliott> `run echo "ais523 ? welcome" | sed 's/.* //'
18:14:16 <ais523> `run @ 'elliott ? welcome'
18:14:17 <elliott> Gregor: regexp's a bitch, eh?
18:14:18 <HackEgo> elliott: exec: 9: welcome: not found
18:14:29 <ais523> nothing to do with interpolation at all
18:14:34 <ais523> but rather, splitting into args
18:14:41 <elliott> `fetch http://sprunge.us/gFYW
18:14:42 <HackEgo> 2011-11-11 18:14:42 URL:http://sprunge.us/gFYW [182] -> "gFYW" [1]
18:14:43 <ais523> `run @ elliott \? abc def
18:14:47 <HackEgo> 2009-04-28.txt:19:21:42: <AnMaster> ehird, what did you say thenm
18:14:47 <elliott> `run mv gFYW bin/@; chmod +x bin/@
18:14:59 <HackEgo> newbie: Welcome to the international hub for esoteric programming language design and deployment! For more information, check out our wiki: http://esolangs.org/wiki/Main_Page
18:15:01 <HackEgo> changeset: 949:5a502f968ae0 \ tag: tip \ user: HackBot \ date: Fri Nov 11 18:14:43 2011 +0000 \ summary: <elliott> fetch http://sprunge.us/gFYW \ \ changeset: 948:9c64676a536c \ user: HackBot \ date: Fri Nov 11 18:13:03 2011 +0000 \ summary: <elliott> run mv NLfb bin/'@'; chmod
18:15:46 <Gregor> `@ elliott @ elliott @ elliott @ elliott @ elliott @ elliott @ elliott @ elliott @ elliott @ elliott @ elliott @ elliott @ elliott @ elliott @ elliott @ elliott @ elliott @ elliott @ elliott @ elliott @ elliott @ elliott @ elliott @ elliott @ elliott echo hi
18:15:50 <HackEgo> elliott: elliott: elliott: elliott: elliott: elliott: elliott: elliott: elliott: elliott: elliott: elliott: elliott: elliott: elliott: elliott: elliott: elliott: elliott: elliott: elliott: elliott: elliott: elliott: elliott: hi
18:16:08 <HackEgo> abort: style not found: help
18:16:19 <HackEgo> `yes: exec: 9: @`: not found
18:16:31 <ais523> OK, it wouldn't have worked anyway
18:16:42 <elliott> `run hg log --style compact
18:16:44 <HackEgo> 950[tip] 9d673ce664d4 2011-11-11 18:14 +0000 HackBot \ <elliott> run mv gFYW bin/@; chmod +x bin/@ \ \ 949 5a502f968ae0 2011-11-11 18:14 +0000 HackBot \ <elliott> fetch http://sprunge.us/gFYW \ \ 948 9c64676a536c 2011-11-11 18:13 +0000 HackBot \ <elliott> run mv NLfb bin/'@'; chmod +x bin/'@' \
18:16:49 <Gregor> ais523: bash. Still not Haskell?
18:16:58 <elliott> Gregor: git log --oneline # git is more usable than hg
18:17:20 <elliott> `run hg log --template '{rev} {desc}\n'
18:17:21 <Gregor> elliott: Considering that every other command in git sucks ass, I don't know if I agree.
18:17:23 <HackEgo> 950 <elliott> run mv gFYW bin/@; chmod +x bin/@ \ 949 <elliott> fetch http://sprunge.us/gFYW \ 948 <elliott> run mv NLfb bin/'@'; chmod +x bin/'@' \ 947 <elliott> fetch http://sprunge.us/NLfb \ 946 <elliott> revert 914 \ 945 <Gregor> run touch foo ; hg add foo ; hg commit -u Blerp -m - \ 944 <Gregor> run rm -f foo foobar
18:17:53 <elliott> `run hg log --template '{author|obfuscate}'
18:17:55 <HackEgo> HackBotHackBotHackBotHackBotHackBotHackBotHackBotBlerpHackBotHackBotHackBotHackBotHac&
18:17:56 <ais523> Gregor: as in, git has one good command, or as in git commands alternate between good and bad?
18:18:01 <elliott> Gregor: hg: still sucks ass!
18:18:16 <ais523> what's the obfuscate filter's intended use?
18:18:17 <elliott> (That so counts as sucking ass, because it's so confusing :P)
18:18:26 <Gregor> ais523: git has now shown me one good command in git. The rest are, to my knowledge, terrible.
18:18:29 <elliott> Yes, hg comes with a mini templating language meant to let you us "hg log" to generate HTML pages.
18:18:41 <ais523> elliott: yes, but why would you want to do that? it doesn't really block scraping at all
18:18:46 <ais523> as HTML scrapers can generally parse HTML
18:18:52 <elliott> ais523: actually, most don't bother
18:18:58 <elliott> or at least didn't a while ago
18:19:14 <elliott> ais523: why spent five hours parsing all the various ways to obfuscate emails? people who do that won't be fooled by your spam anyway
18:19:30 <elliott> if you only scrape for emails in the most obvious format, you still get thousands upon thousands of them, and they're likely to be more gullible too
18:19:35 <Gregor> "Wait, you said TURKEY? I thought you said TURKS! Ha ha ha cannibalism."
18:20:14 <ais523> elliott: because the motive in sending spam nowadays is no longer to get people to read the spam
18:20:26 <ais523> but rather, because you've been hired to send the spam to X people
18:20:34 <ais523> people don't roll their own spambots nowadays
18:20:45 <elliott> it's still a waste of time to deal with obfuscation
18:20:46 <ais523> and the spambot owners are ripping off the spammers, just as the spammers are trying to rip off victims
18:21:01 <ais523> nah, it lets you say you're sending to, say, 2 billion targets rather than 1 billion
18:21:15 <ais523> (I'm guessing at the number of email addresses on the Internet there)
18:21:38 <elliott> ais523: why not just lie? you're not going to be sending spam to that many people anyway
18:21:57 <ais523> I, umm, honestly hadn't thought of that
18:22:24 <ais523> ah right, it's because the people who harvest the addresses aren't the same as the people who send emails nowadays
18:22:37 <ais523> and there's a bulk rate for email addresses that don't bounce on the black market
18:22:40 -!- MDude has quit (Ping timeout: 248 seconds).
18:22:44 <ais523> and you won't get paid for the same address twice
18:23:08 <elliott> let's just ask CakeProphet, he has first-hand experience!
18:26:41 <elliott> Gregor: Hmm, having .hg is kinda nice, but it'd be nice if you could write to the parts where hg stores the info for the next commit
18:26:54 <elliott> I don't know what that would let you achieve, but it sounds nice :P
18:27:09 <CakeProphet> "the people who harvest the addresses aren't the same as the people who send emails nowadays" is true as far as I can tell.
18:29:51 -!- Zuu has joined.
18:36:08 <ais523> elliott: I misinterpreted .hg as a ccTLD
18:36:18 <ais523> is it actually one of those, and if so, where?
18:36:31 <elliott> How long until +scapegoat is a ccTLD :P
18:37:03 -!- zzo38 has joined.
18:39:10 -!- augur has quit (Remote host closed the connection).
18:48:45 -!- Ngevd has quit (Ping timeout: 258 seconds).
18:53:31 <pikhq_> Is there any sense in not just treating LF, CR, *or* CR/LF as \n when reading a file?
18:54:34 <ais523> pikhq_: what if the file actually contains two consecutive newlines, one of which is CR, one of which is LF?
18:54:35 <pikhq_> Of course, when you're dealing with binary data you don't want any munging at all.
18:54:40 <CakeProphet> uh, if you're writing a program to determine what kind of system you're on based on the line endings of files. :P
18:54:55 <pikhq_> ais523: There is no platform on which this is going to come out right. :)
18:55:20 <pikhq_> CR or LF but not CR/LF as \n? Seriously, WTF?
18:56:49 <CakeProphet> oh, a program that converts line-endings of one style to another. Well, actually no that would benefit from automatic line ending stuff.
18:58:24 <elliott> CakeProphet: only if its output style was configurable
18:58:30 <elliott> as in, the functionality's
19:01:14 <elliott> Vorpal: So is Skyrim any good
19:01:26 <CakeProphet> insert-task-where-you-are-concerned-about-the-binary-representation-of-text-data.
19:01:54 <CakeProphet> elliott: he's probably too busy playing Skyrim to answer that.
19:02:01 <elliott> pikhq_: Here's a good reason: \r\n is a separate list of codepoints to \n.
19:04:21 <pikhq_> elliott: Why should that mean that on UNIX it gets rendered as ^M\n instead of \n?
19:05:06 <elliott> http://www.fileformat.info/info/unicode/char/000d/index.htm
19:05:06 <elliott> http://www.fileformat.info/info/unicode/char/000a/index.htm
19:05:13 <elliott> "Text" usually means "sequence of Unicode codepoints".
19:05:22 -!- derrik has joined.
19:05:24 <elliott> Mangling that sequence = mangling text.
19:05:34 <pikhq_> Boy, you must hate Unicode normalisation.
19:06:06 <elliott> That's a standard form of mangling :)
19:06:21 <elliott> Or rather, I just don't consider /silent/ transformation of that sequence acceptable
19:06:26 <pikhq_> *Not* rendering \r\n or \r as \n does not preserve the semantics of the text, even if it does preserve the codepoint sequence.
19:06:26 <elliott> Since it's an actual operation
19:06:49 <pikhq_> The question is, do you want to preserve the intended semantics, or the codepoint sequence?
19:06:58 <CakeProphet> elliott: is "the shit you just typed" a valid definition?
19:07:21 <pikhq_> I here note that Windows generally already *performs* a similar mangling.
19:07:31 -!- Sgeo|web has quit (Ping timeout: 265 seconds).
19:07:39 <pikhq_> The sequence "\r\n" gets handing to the program as "\n".
19:08:17 <CakeProphet> lots of things do then when opening files in text mode.
19:08:24 -!- augur has joined.
19:08:29 <elliott> pikhq_: Windows is broken, how surprising!
19:09:00 <elliott> Windows just completely unacceptably mangles bytestrings by default :)
19:10:17 <pikhq_> elliott: Per ISO C, this is completely permitted semantics for stdio. If you want no mangling, you should add "b" to your fopen.
19:10:38 <elliott> C is broken???? OH GOD YOU'RE RUINING MY HEART
19:11:19 <pikhq_> As the default for stdio is that you're reading text in the system's encoding, not binary data.
19:11:38 <pikhq_> It would be perfectly permissible for stdio to have a EBCDIC to ASCII conversion step, in fact.
19:11:49 <pikhq_> Strange as hell, but perfectly permissible.
19:12:20 <CakeProphet> elliott: uh, Python, Ruby, Perl, and Haskell all do that kind of translation in text mode as well.
19:12:21 <ais523> pikhq_: you're describing how C-INTERCAL's stdio actually works
19:12:21 <olsner> or it could just use EBCDIC as its runtime character set or whatever they call it in C
19:12:24 <pikhq_> (of course, performing this mangling is a violation of POSIX; "b" must be a no-op)
19:12:33 <ais523> (or C-INTERCAL's in CLC-INTERCAL compat mode)
19:12:52 <elliott> CakeProphet: Python and Haskell's file IO is based around Unicode strings
19:12:53 <olsner> at last I think you can, they might've made it boring and standardized on ascii nowadays
19:13:36 <CakeProphet> both ruby and perl are based on Unicode as well. (at least in newer versions of Perl 5)
19:14:03 <elliott> CakeProphet: you cannot "base a language" on Unicode
19:14:09 <ais523> elliott: Perl's Unicode is massively beautifully overengineered, it blows most languages' out of the water
19:14:14 <elliott> Ruby 1.8 called bytestrings String
19:14:17 <elliott> I don't know what 1.9 does
19:14:58 <elliott> CakeProphet: that's still not a meaningful statement
19:15:16 <elliott> bytestrings are not sequences of unicode codepoints
19:15:29 <CakeProphet> < elliott> CakeProphet: Python and Haskell's file IO is based around
19:15:35 <elliott> it is possible to have a language which reads sequences of unicode codepoints and then encodes them in another encoding and returns the resulting bytestring for file IO reading operations
19:15:35 <CakeProphet> please take this horribly mangled quote of yours
19:15:45 <elliott> CakeProphet: "Unicode" =/= "Unicode strings"
19:16:18 <elliott> no, you're just being stupid
19:16:18 -!- oerjan has joined.
19:16:54 <CakeProphet> elliott: I understand the difference between codepoints and encodings.
19:17:41 <CakeProphet> elliott: you're wasting your time trying to make a point out of it.
19:18:13 <elliott> if you seriously can't understand how "file IO being Unicode but still using bytestrings" is not a complete description
19:18:20 <elliott> and not the same thing as "file IO uses a unicode string type"
19:21:52 <CakeProphet> how does one represent Unicode without a sequence of bytes.
19:23:17 -!- pikhq has joined.
19:23:37 -!- pikhq_ has quit (Ping timeout: 255 seconds).
19:23:56 <CakeProphet> s/\./?/ here I'll even make it a question with this special little symbol.
19:24:49 <Gregor> CakeProphet: With a sequence of glyphs.
19:25:04 <elliott> CakeProphet: A sequence of... say...
19:25:18 <CakeProphet> ah. I still haven't upgraded to these codepoint-based machines.
19:26:36 <elliott> It's funny because you're pretending to be so idiotic that you think "RAM is composed of bytes" is equivalent to "there are literally no types other than 'array of bytes' and it is impossible to distinguish them".
19:26:46 <elliott> In other words, nice talking to you!
19:27:42 <CakeProphet> elliott: I'm saying there's not much distinguishing a bytestring encoded in Unicode and a sequence of codepoints
19:28:21 -!- MSleep has joined.
19:28:26 <elliott> CakeProphet: Yeah! For instance, a string consisting solely of a codepoint that takes two bytes to encode in UTF-8 OBVIOUSLY has length 2.
19:28:42 <elliott> 2 codepoints + 2 codepoints = 5 codepoints
19:28:43 -!- MSleep has quit (Client Quit).
19:28:57 <CakeProphet> elliott: okay so then Perl uses a "unicode string type"
19:28:57 -!- MSleep has joined.
19:28:57 -!- MSleep has changed nick to MDude.
19:29:27 <elliott> You cannot prove that just by checking length.
19:29:36 <elliott> length_after_decoding_utf8 is a perfectly valid operation; Perl may call it "length".
19:29:57 <elliott> Of course you can implement a Unicode string type by using an internal UTF-8 representation: the question is whether the abstraction is leaky.
19:30:15 <elliott> Since Perl had approximately a billion decades before getting Unicode support, my guess as to the probability of there being no leaks in its abstraction is 0.
19:30:31 <CakeProphet> and therefore it is "not a unicode string type"?
19:30:59 <elliott> <elliott> CakeProphet: Yeah! For instance, a string consisting solely of a codepoint that takes two bytes to encode in UTF-8 OBVIOUSLY has length 2.
19:31:14 <elliott> If length reported the length in UTF-8 bytes, it would obviously not be calculating the length of a Unicode string.
19:31:32 <elliott> (Obviously you can cheat and say that there's an implicit _after_encoding_to_utf8 suffix to any abstraction leaks.)
19:31:41 <CakeProphet> "Returns the length in characters of the value of EXPR. If EXPR is omitted, returns the length of $_ . If EXPR is undefined, returns undef."
19:31:48 <elliott> (That fails if Perl accepts, and retains, UTF-8 variants though...)
19:31:54 <elliott> (e.g. that one that has no 0 bytes.)
19:32:02 <elliott> CakeProphet: My argument extends to any operation.
19:32:14 <elliott> Anyway, this is boring, and I need to go do things.
19:32:17 -!- elliott has quit (Quit: Leaving).
19:35:33 <oerjan> <ais523> elliott: never say that, you attract attention from people who actually /do/ know everything
19:35:44 <oerjan> nah, we know that he doesn't really know everything.
19:36:49 <pikhq> Hmm. According to Unicode, conforming applications should accept the following as line terminators: U+000A U+000B U+000C U+000D (U+000D U+000A) U+0085 U+2028 U+2029.
19:38:52 <ais523> I don't recognise the other three, but didn't really expect to
19:39:34 <pikhq> Those are NEXT LINE, LINE SEPERATOR, and PARAGRAPH SEPERATOR
19:39:48 <olsner> U+0085 looks weirdest to me, it's in latin 1 but above ascii
19:40:02 <pikhq> It's from ISO-8859-1.
19:40:17 <pikhq> But not in Windows-1252.
19:41:28 <fizzie> It has a block of control codes at the same "location" than ASCII.
19:42:01 <fizzie> I'm not entirely certain the control codes are specified by ISO-8859-1 though, I'd appreciate a citation on this.
19:42:48 <pikhq> Strictly speaking they're not, there's merely defined space *for* control codes.
19:42:54 <Gregor> http://codu.org/projects/trac/ <-- behold my new and improved trac installation
19:42:59 <Deewiant> ISO 8859-1 is the standard, it doesn't specify the control codes
19:43:13 <pikhq> However, it's usually used with the C0 and C1 control code set.
19:43:14 <Deewiant> ISO-8859-1 is the preferred name for the charset which includes the control codes
19:43:28 <pikhq> C0 is the the set in ASCII.
19:43:37 <oerjan> Gregor: there is something wrong in today's logs between 17:14:19 and 17:17:57, i suspect some parts/quits and joins are missing
19:44:04 <pikhq> Yes, \r and \n technically aren't in ISO 8859-1.
19:44:06 -!- elliott has joined.
19:44:34 <oerjan> Gregor: oh hm, maybe just one part/quit (ais523)
19:44:43 <elliott> Gregor: I like the copy of gcc-bf :P
19:44:49 <ais523> oerjan: I didn't part, I kicked myself
19:45:10 <ais523> I'd needed to unstealth, and then kicked myself as a simple way of stealthing again
19:45:17 <oerjan> Gregor: STILL, MISSING INFORMATION
19:45:31 <elliott> ais523: How come you never gave me a gcc-bf tarball :P
19:45:34 <elliott> Or did you, I might have just forgotten :)
19:45:47 <ais523> elliott: I think I did
19:45:54 <ais523> oh right, it was hosted on Vorpal's server, I think
19:45:57 <ais523> no idea if it still is
19:46:11 <CakeProphet> perhaps now is a good time to chug a Coke, Monster, and Starbucks doubleshot.
19:46:59 <CakeProphet> afterwards I will link pics of my heart exploding.
19:48:23 <pikhq> elliott: 12:36 < pikhq> Hmm. According to Unicode, conforming applications should accept the following as line terminators: U+000A U+000B U+000C U+000D (U+000D U+000A) U+0085 U+2028 U+2029.
19:48:52 <fizzie> Anyhow, Perl certainly makes the Unicode attempt not too shabbily -- http://perldoc.perl.org/perlunicode.html -- the "Effects of Character Semantics" pretty much lists what they do; sadly there isn't exactly a list of what they don't do. (But they explicitly say they're not claiming any Unicode standard compliance.)
19:48:57 <elliott> pikhq: Accept, not have automatically degraded for them
19:49:08 <ais523> fizzie: I've seen a comparison of Unicode support in programming languages; Perl won
19:50:24 <CakeProphet> ais523: the results of a comparison of /painless/ Unicode support would be quite different.
19:50:43 <elliott> Unicode support cannot be "painless" because it involves thinking
19:50:59 <ais523> in character semantics, Perl's unicode support is pretty automatic
19:51:08 <ais523> you just have to realise that what you're writing is talking about characters, not bytes or codepoints
19:51:17 <fizzie> No, it's usually about codepoints.
19:51:30 <fizzie> "(The only time that Perl considers a sequence of individual code points as a single logical character is in the \X construct, already mentioned above. Therefore "character" in this discussion means a single Unicode code point.)"
19:51:30 <ais523> fizzie: in Perl, it's about characters
19:51:34 <oerjan> <elliott> ais523: if it's a function in a pure language, you can't, because all sorting algorithms are equivalent, modulo stability
19:51:38 <ais523> ah, just for \X? boring
19:51:38 <fizzie> The above is from perldoc perlunicode.
19:51:55 <oerjan> i recall toying around with passing broken comparing functions to haskell's sortBy :P
19:52:12 <Gregor> oerjan: Fixt, regenerating.
19:52:25 <oerjan> that way i could see what was compared in what order
19:52:26 <elliott> Gregor: You never responded wrt transactional HackEgo :P
19:52:34 <Gregor> elliott: I have no response.
19:52:44 <fizzie> There's of course all kinds of modules, like Unicode::Normalize, which consider characters.
19:52:51 <Gregor> 17:17:12: -!- ais523 has kicked ais523 from #esoteric: there are actually quite a lot of ways to deop yourself, this is one of them
19:52:53 <elliott> Gregor: It was a question of the form "is this acceptable"
19:52:56 <oerjan> (under the assumption no pair is compared twice)
19:53:14 <Gregor> elliott: It's less than ideal, but if you put the work into making it, err, work, then I'll accept it :P
19:53:40 <fizzie> The way Unicode defines a "character" is rather non-trivial: http://unicode.org/reports/tr29/#Grapheme_Cluster_Boundaries
19:53:41 <HackEgo> Runs arbitrary code in GNU/Linux. Type "`<command>", or "`run <command>" for full shell commands. "`fetch <URL>" downloads files. Files saved to $PWD are persistent, and $PWD/bin is in $PATH. $PWD is a mercurial repository, "`revert <rev>" can be used to revert to a revision. See http://codu.org/projects/hackbot/fshg/
19:53:50 <elliott> Gregor: It's, uh, still written in bash, right? :P
19:53:55 <ais523> fizzie: clearly we need an esolang whose only purpose is doing Unicode completely correctly
19:54:01 <fizzie> (But at least it's still a relatively simple algorithm, as long as you have the database.)
19:54:06 <ais523> come to think of it, I guess Java probably can, but nobody has figured out how
19:54:29 <elliott> Gregor: Do I... have to keep that? :P
19:54:40 <Gregor> elliott: Most languages other than Haskell are acceptable.
19:55:03 <fizzie> Java has trouble even handling non-BMP stuff the way people usually use the java.lang.String API.
19:55:20 <monqy> or is dph not considered as distinct from haskell as those
19:55:34 <elliott> DPH is just a realtively simple language extension :P
19:55:59 <elliott> Deewiant: God damn Haskell?
19:56:06 <elliott> Gregor: How are these sounding???
19:56:07 <Deewiant> elliott: Glasgow Distributed Haskell
19:56:08 <monqy> coq agda epigram what else
19:56:22 <elliott> Deewiant: Wow, didn't realise that even existed.
19:56:23 <Deewiant> elliott: It's based on GHC 5.0 IIRC
19:56:26 <pikhq> elliott: How would you feel if I called it "newline normalisation"?
19:56:35 <elliott> pikhq: Sure, just don't make it implicit
19:56:49 <elliott> pikhq: Why are you doing this anyway
19:57:03 <pikhq> elliott: I was just thinking it'd be a hell of a lot nicer than "Derp ^M\n"
19:57:50 <CakeProphet> pikhq: solution: destroy all non-unix operating systems
19:58:19 <elliott> Gregor: Why does HackEgo have DCC support...
19:58:23 <monqy> CakeProphet: rip @
19:58:25 <CakeProphet> pikhq: er, non-\n operating systems, rather.
19:58:36 <monqy> how did g get in there
19:58:44 <pikhq> CakeProphet: And then make the network newline convention \n instead of \r\n?
19:58:51 <Gregor> elliott: It ... doesn't?
19:58:56 <monqy> I should switch to a nonquerty layout so my typos are more mysterious
19:59:01 -!- Phantom_Hoover has joined.
19:59:05 <CakeProphet> pikhq: YOU WILL SEE A DRAMATIC INCREASE OF DATA THROUGHPUT
19:59:09 <Gregor> elliott: It has some leftover unused files.
19:59:14 <CakeProphet> because you're not stupidly using TWO WHOLE BYTES for lines.
19:59:27 <elliott> Gregor: maybe_dcc_chat is an unused FUNCTION in a used FILE oh snapepe!!!!
20:00:32 <CakeProphet> pikhq: we just need some kind of software apocalypse
20:00:41 <CakeProphet> so that we can redefine all of the standards so that they're sane.
20:01:11 <CakeProphet> and people won't complain about their code breaking
20:02:30 <Phantom_Hoover> I never realised the Wolfram blog was so entertaining.
20:02:30 <lambdabot> Phantom_Hoover: You have 1 new message. '/msg lambdabot @messages' to read it.
20:02:58 <Phantom_Hoover> It's all like "Oh no we want to investigate this thing but we can't do the sums, GOOD THING WE HAVE MATHEMATICA".
20:03:36 <pikhq> CakeProphet: Unicode without round-trip! YES
20:03:49 <Gregor> elliott: pola-nice is just a command name, it's implemented in lib/interp
20:03:52 <elliott> Gregor: Oh, you call it "pola-nice" even though it's umlbox >_<
20:03:53 <Gregor> elliott: The name is just olde.
20:03:58 <elliott> Gregor: That should really be umlbox-nice :P
20:04:03 <Gregor> elliott: Waaaaaaaaaaaah
20:05:09 <oerjan> oh, it doesn't use that no-width space then
20:06:01 <elliott> Gregor: What the heck is UNDO...
20:06:10 <CakeProphet> Phantom_Hoover: mathematicians discover programming languages? shocking.
20:06:54 <CakeProphet> fortunately they used the only one that can do sums.
20:07:14 <elliott> Gregor: Oh... it's like atexit but weird
20:09:35 <elliott> I don't think Gregor realises how short IRC lines are :P
20:09:39 <elliott> Oops, spoiled my SECRET RENAME
20:10:00 <elliott> Like pola-nice but not STUPIDLY NAMED
20:11:06 <olsner> let me rephrase then: what's pola-nice?
20:11:37 <olsner> like umlbox-nice but STUPIDLY NAMED?
20:11:41 <ais523> elliott: as in nice(1)?
20:12:14 <elliott> nice -n10 /usr/bin/umlbox -n -B -f /opt -f /var/irclogs -f /etc/java-6-openjdk -R3128:127.0.0.1:3128 -T 30 -tw \
20:12:14 <elliott> /hackenv . -t /hackenv/.hg .hg -f "$ORIGDIR/lib" --cwd /hackenv env PATH="$UMLBOX_PATH" \
20:12:14 <elliott> HACKENV=/hackenv http_proxy="$http_proxy" "$ORIGDIR/lib/limits" "$@"
20:13:21 <ais523> hmm, Mastermind is pretty awesome right now; the host couldn't stop asking earlier
20:13:36 <ais523> I'm not sure if it's the actual program or a parody
20:13:41 <ais523> oh, Children in Need, that makes sense
20:14:02 <CakeProphet> what's an underloved data structure in computing?
20:14:16 <elliott> ais523: I wish I was the kind of person who could watch a parody without realising it :P
20:15:07 <fizzie> The Fibonacci heap gets no love, all heap-love goes to binary/binomial heaps.
20:15:35 <CakeProphet> fizzie: can I create an entire programming language around this data structure?
20:15:43 <olsner> there's a nice law about parodies and reality being notoriously difficult to tell apart
20:15:49 <fizzie> I don't know if it'd be a very interesting language.
20:16:03 <olsner> Phantom_Hoover: sounds about right yeah
20:16:05 <fizzie> Also BLOOD FILTERS, they're like Bloom filters except you kill people. (Disclaimer: not true.)
20:16:17 <ais523> elliott: I don't think it was a parody; rather, someone had picked a plausible yet goofy specialist subject in order to trip up the host (the Transformers canon)
20:16:24 <ais523> and the audience weren't taking it seriously
20:16:27 <ais523> so nobody else could either
20:16:37 -!- someoneyouhate has quit (Ping timeout: 240 seconds).
20:16:54 <elliott> well, I mean, a not-an-actual-episode
20:18:08 <elliott> fizzie: You seem like the kind of person who knows about bash arrays.
20:18:26 <fizzie> elliott: I used them a little bit recently, but I can't say I'd *know* about them.
20:18:32 <ais523> elliott: I hadn't watched the whole thing
20:19:05 <elliott> Gregor: All HackEgo stuff is command-triggered, right
20:19:06 <olsner> I've used bash arrays once
20:19:20 <shachaf> elliott: Oh, man, bash arrays!
20:19:20 <elliott> Gregor: Does HackBot let me run any code in the background :P
20:19:24 <shachaf> Don't get me started about bash arrays.
20:19:51 <shachaf> Previously I not mad, and now I mad.
20:20:00 <elliott> shachaf: Yeah well, Gregor is a fascist and won't let me use Haskell.
20:20:20 <zzo38> Why do so many people think astrology gets the position of the Sun incorrect? That simply isn't true, and you can say a lot of valid things about astrology being wrong without having to say the position of the Sun is incorrect.
20:20:21 <lambdabot> zzo38: You have 1 new message. '/msg lambdabot @messages' to read it.
20:20:22 <fizzie> Bash arrays are this thing where you get several hammers and then use them to bash in several nails at the same time.
20:20:25 * shachaf doesn't feel like reading all this scrollback.
20:20:27 <zzo38> elliott: Won't let you to use Haskell for what purpose?
20:20:33 <zzo38> Use Haskell if you like to do so.
20:20:47 <shachaf> elliott: zzo38 has given you sage advice.
20:21:13 <zzo38> However it is true that you don't have to use Haskell for everything.
20:21:21 <oerjan> sage advice in good thyme
20:21:29 <elliott> shachaf: TECHNICALLY I could use Haskell but then Gregor wouldn't pull. :'(
20:21:40 -!- Sgeo|web has joined.
20:21:50 -!- sebbu has joined.
20:21:51 -!- sebbu has quit (Changing host).
20:21:51 -!- sebbu has joined.
20:21:53 <zzo38> What program are you trying to write?
20:21:59 <zzo38> Something for Gregor?
20:22:21 <elliott> I'm trying to make HackEgo's concurrency semantics not suck.
20:25:21 <zzo38> oerjan: Do you mean a group having everything being their own inverse is called exponent 2 group?
20:25:32 <CakeProphet> s/ =/=(?#no wait this is the best syntax)/
20:25:45 <oerjan> zzo38: yes. because it's the same as every element having order 2.
20:27:30 <zzo38> In Haskell I used: minverse = id; (as a method of the Group class)
20:29:01 <zzo38> Does this make a monoid? mempty = Equivalence (==); mappend (Equivalence f) (Equivalence g) = Equivalence $ \x y -> (x == y) /= (f x y /= g x y); I think it is a monoid, due to the XOR law.
20:29:59 <zzo38> I think it is also an exponent 2 Abelian group.
20:30:03 <oerjan> hm well it needs to be a monoid just when restricted to particular x and y...
20:30:55 <elliott> Gregor: I might not need a background process to do this, but it'd be more convenient :P
20:32:05 <oerjan> zzo38: all exponent 2 groups are abelian, btw
20:32:31 <zzo38> oerjan: O, yes, OK.
20:32:47 <Sgeo|web> CakeProphet: Did you see latest HS updates? If not, do a reaction video
20:33:04 <zzo38> It forms an exponent 2 group also due to the XOR law, I think.
20:33:20 <CakeProphet> Sgeo|web: UGH WHY DO YOU ALWAYS ASK ME THIS SHIT
20:33:49 <oerjan> it was mentioned in the same godel's letter post, although there is some bug in the tex picture for the proof, i saw it myself and someone on reddit also did
20:34:11 -!- someoneyouhate has joined.
20:34:35 * oerjan hits someoneyouhate with the saucepan ===\__/
20:34:48 <elliott> `@ someoneyouhate ? welcome
20:34:51 <HackEgo> someoneyouhate: Welcome to the international hub for esoteric programming language design and deployment! For more information, check out our wiki: http://esolangs.org/wiki/Main_Page
20:35:54 <oerjan> zzo38: it works for each pair of x,y because both XOR and EQV are group operations
20:37:15 <oerjan> so it's essentially an indexed product of such groups
20:39:26 <CakeProphet> well you could have an operation that forms a group from two groups by taking the product of the two sets and then essentially &&&ing the two operations.
20:40:17 <oerjan> with the group being (Bool, (==)) when x == y and (Bool, (/=)) when x /= y
20:40:55 <oerjan> CakeProphet: yes, that's called the direct product
20:41:12 <oerjan> but it has no corresponding inverse
20:41:55 <elliott> oerjan: why is type-hackery so hard :(
20:42:08 <CakeProphet> elliott: because you're not doing it C++. :>
20:42:16 <oerjan> because obviously you can never get the trivial group (which is the identity) by combining anything else
20:42:48 <oerjan> (just from looking at the underlying sets)
20:43:06 <CakeProphet> oerjan: combining two trivial groups could just make a trivial group or something?
20:43:12 <CakeProphet> in other words: just hack it until there's an inverse. :P
20:43:53 <oerjan> CakeProphet: two trivial groups _do_ give a trivial group. but nothing else does.
20:44:33 <oerjan> we already have x * trivial = x, that's what identity means
20:44:42 <CakeProphet> oh. maybe I should learn some group theory. :P
20:45:04 <oerjan> incidentally i am doing the obvious identification of isomorphic groups here
20:45:50 <elliott> instance x `Elem` (x :- xs) where type instance (x :- xs) `Without` x = xs
20:46:12 <elliott> ooh wait, don't need instance there
20:46:32 <oerjan> AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
20:48:20 <elliott> {-# LANGUAGE TypeOperators, TypeFamilies, GADTs, MultiParamTypeClasses, FlexibleInstances #-}
20:48:22 <elliott> I'm back in my game oerjan
20:48:39 <CakeProphet> oerjan: maybe you just need some concept of negative groups. :)
20:48:48 <CakeProphet> where combining a group with a negative group uh.... removes things.
20:48:59 <CakeProphet> so that you can get a trivial group from two inverse groups.
20:49:35 <Vorpal> I managed to break the plot in Skyrim kind of.
20:49:35 <oerjan> CakeProphet: oh and i recall an argument why you cannot actually fix it by identifying things: if you take the product of (countably) infinitely many x's, then x * (x * x * ...) = (x * x * ...) meaning all x = identity if you have inverses for everything
20:50:51 <CakeProphet> elliott: you should stop programming immediately and start your hip hop career.
20:50:53 <Vorpal> basically: Apparently it didn't expect me to kill someone that basically said he would report something back to his employer.
20:51:09 <oerjan> it's like with numbers, once you have infinity, subtracting infinity from infinity gives you a paradox.
20:51:28 <oerjan> if you assume things should be always consistent
20:51:29 <fizzie> Vorpal: One of the silliest things in Oblivion was the way those NPCs with the "plot-important" flag set just simply plain wouldn't die.
20:51:56 <Vorpal> fizzie, I haven't spotted anything like that in skyrim so far. In oblivion you got that small icon above plot important ones
20:52:20 <Vorpal> fizzie, I have to say that it would probably have been impossible to complete oblivion without the plot-important flag thingy though
20:52:42 <fizzie> Vorpal: In Morrowind you just got the awesome notice: "With this character's death, the thread of prophecy is severed. Restore a saved game to restore the weave of fate, or persist in the doomed world you have created."
20:53:10 <Vorpal> btw don't run skyrim from an ssd, you will never be able to read the hints on the loading screens that way...
20:53:23 <Deewiant> Skyrim has that same property as Oblivion
20:53:24 <elliott> oerjan: *sigh*, I need type-level sets
20:53:28 <fizzie> I don't generally go for random murdering, but the one single time I did I got that.
20:53:35 <Vorpal> Deewiant, ah. Well this one could
20:53:43 <oerjan> elliott: it's typrtles all the way up
20:53:49 <Deewiant> Yes, in Oblivion you could kill none of the peacefuls, I think?
20:53:52 <elliott> Deewiant: What do I do if I need type level sets, thx
20:53:59 <CakeProphet> elliott: aren't instances kind of sort of like typelevel sets?
20:54:41 <elliott> Deewiant: Don't wanna, the only project left is @
20:55:03 <Vorpal> <fizzie> I don't generally go for random murdering, but the one single time I did I got that. <-- I wasn't randomly murdering. If a rather nasty guy says he will report back to his employer, which I can tell will cause a lot of problems ahead, why would I /not/ try to kill him? There was no one else alive in that ruin than me and him and a lot of monsters at that time too...
20:55:06 <fizzie> Deewiant: I think it's not all peacefuls, just essential-for-the-main-quest; at least http://www.uesp.net/wiki/Oblivion:Essential_NPCs seems to suggest so, and that they become killable later if you're feeling bloodthirsty.
20:55:06 <Deewiant> Vorpal: This review of Skyrim I'm reading claims that you can't kill NPCs with children (and maybe not the children themselves either?) nor plot-important NPCs
20:55:20 <Vorpal> Deewiant, oh yeah I heard you can't kill children as well
20:55:27 <elliott> Deewiant: Can't kill NPCs with kids? Laaaaaaaaaaaaaaaame
20:55:35 <fizzie> Children are amazingly resilient in video games.
20:55:54 <Vorpal> I'm sure there will be a mod to change that
20:55:55 <Deewiant> In Fallout 2 you could freely blow them to bits, for instance
20:55:59 <CakeProphet> in my game there will be newborn babies that you can kill.
20:56:03 <elliott> Deewiant: MY KIND OF GAME.
20:56:15 <Deewiant> elliott: They often pickpocketed your stuff so it was even justified
20:56:20 <Vorpal> Deewiant, could be a Bethesda thing then? After all Fallout 3 is Bethesda
20:56:23 <fizzie> Deewiant: In Fallout 2 there was even a reputation title thing if you did it.
20:56:26 <elliott> Deewiant: I like your idea of justice
20:57:05 <Deewiant> Vorpal: I think it's more of a "games are more mainstream now so the 'think of the children' people are onto us" thing
20:57:11 <Phantom_Hoover> Deewiant, weren't you able to give them grenades or something?
20:57:28 <elliott> Deewiant: Oh wait, what I actually need is a ~/~ constraint!
20:57:33 <fizzie> Deewiant: http://images2.wikia.nocookie.net/__cb20100226092112/fallout/images/a/ab/Childkiller_Unused.jpg "This image was unused and the only Vault Boy image to ever be cut from Fallout 2. (I'm sure you can figure out why) I remember when I got the request to do a perk illustration for "Child Killer" that there would be no way to keep in from being offensive. I mean really! How do you make an illustration of "child killer" and keep it from being offensive? Any
20:57:33 <fizzie> way for some reason, I thought this was the least offensive way to do it. I have no idea what I was thinking. Even the designer who requested it realized it was a bad idea, so we fixed it. Looking back on it now, I can't believe I drew this."
20:57:39 <Deewiant> Phantom_Hoover: In Fallout 2? Yes, that's one way
20:58:43 <fizzie> Then they just went with a thoroughly rusty^Wlame http://images3.wikia.nocookie.net/__cb20050211175524/fallout/images/e/e3/Childkiller.jpg
21:02:36 <fizzie> I like it how the Unofficial Oblivion Patch contains "over 2200" bugfixes beyond the final official patch. It sure is a big game.
21:02:50 <Vorpal> okay that was disappointing, the equivalent quest line to oblivions "become arch mage" was quite a bit shorter in skyrim
21:03:58 <Phantom_Hoover> "<Cocytus> http://www.esotericphilosopher.com/about/ you're welcome back anytime. as the page states, it doesn't matter what your profession is or what your academic expertise is, a mentality is transcendent. the philosopher of man mentality."
21:06:34 <elliott> He said that to me too; thought I was special. :(
21:06:36 <elliott> (Equ [Char] [Char]) (Or (Equ [Char] Int) No)'
21:07:06 <Phantom_Hoover> elliott, so wait, do we both become philosophers of mans?
21:08:38 <elliott> oerjan: Holy shit, it WORKS.
21:08:39 * oerjan sidles away from the type madness
21:09:25 <elliott> oerjan: http://sprunge.us/CABe
21:09:45 <elliott> FullList (set denoted by separating each element by :- and terminating with ()) is a list containing one, and exactly one, value of each type
21:10:15 <elliott> any type that's A, B, or C :)
21:10:34 <elliott> Equ needs one more type parameter, standing in for a kind
21:10:41 <elliott> and prepend ABC to all the Equ lines
21:10:49 <elliott> and it'd be FullList ABC (...) instead
21:10:58 <elliott> and then it would be general
21:11:11 -!- augur has quit (Remote host closed the connection).
21:11:27 <elliott> you could just use the (A :- B :- ()) as the first parameter to Equ
21:12:05 <elliott> now oerjan gets to ask me wtf I'm doing :P
21:15:28 <elliott> oerjan: no you don't understand, i did this to solve an actual practical problem :( im becoming afraid of myself
21:17:38 <elliott> hey oerjan what do you call the addsquaretorial, f(0) = 0, f(n) = n^2 + f(n-1)
21:18:53 <elliott> oerjan: oh it's 1/6 n (n+1) (2n+1)
21:19:24 <elliott> @oeis 1, 5, 14, 30, 55, 91
21:19:25 <Vorpal> fizzie, Deewiant: there seem to be no custom spell making in Skyrim. I really liked that feature of oblivion
21:19:26 <lambdabot> Square pyramidal numbers: 0^2 + 1^2 + 2^2 +...+ n^2 = n*(n+1)*(2*n+1)/6.
21:19:26 <lambdabot> [0,1,5,14,30,55,91,140,204,285,385,506,650,819,1015,1240,1496,1785,2109,2470...
21:20:43 <Deewiant> fizzie: s/useless-fungot/fungot/
21:21:12 <oerjan> elliott: well it's obvious if you know difference calculus
21:21:19 <elliott> Deewiant: No I love him. so much.
21:21:21 -!- fungot has joined.
21:21:27 <oerjan> which we've discussed here several times
21:21:33 -!- useless-fungot has quit (Remote host closed the connection).
21:21:34 <elliott> oerjan: not saying it's non-obvious
21:21:42 <elliott> I'm just saying I expected something prettier :P
21:22:25 <oerjan> the pretty ones are when you use binomial functions
21:22:32 <elliott> ok, so this particular method only scales up to about 9 fields, whereas the more involved one can handle about 15
21:23:33 -!- Sgeo|web has quit (Quit: Page closed).
21:23:53 -!- boily has quit (Quit: WeeChat 0.3.6).
21:24:14 <elliott> oerjan: anyway, I really wish this was easier :-(
21:24:19 * elliott continues to wait for oerjan to ask wtf he's doing :P
21:24:46 <olsner> elliott: what are you doing?
21:25:20 <elliott> olsner: have you seen the code?
21:25:45 * oerjan continues to sidle away
21:26:06 <elliott> oerjan I HATE YOU JUST ASK ALREADY
21:26:37 -!- CakeProphet has changed nick to oerjanDrone1.
21:26:45 -!- oerjanDrone1 has changed nick to Kallisti.
21:26:49 -!- Kallisti has changed nick to CakeProphet.
21:27:01 <oerjan> yeah i wouldn't censor wtf
21:27:16 <elliott> oerjan: ASK ALREADY YOU ABOMINABLE PERSON
21:27:22 <oerjan> that's like, two censoring levels
21:30:58 <Vorpal> fizzie, Deewiant: other skyrim info: For alchemy you discover effects of ingredients by experimenting basically it seems. (In oblivion I believe it was based on your alchemy skill?)
21:31:40 <Deewiant> I have practically zero memory of Oblivion so I don't really care about the differences
21:32:19 <monqy> oh hey that pegasus guy made another language
21:32:35 <monqy> at least since last i've seen
21:35:19 <oerjan> wtf are you*NO CARRIER
21:35:42 <elliott> oerjan: I WILL COME TO TRONDHEIM AND END YOUR EXISTENCE
21:36:15 <elliott> oerjan: don't you mean skyrim :DDDDDDdddddddd
21:38:27 <oerjan> no skyrim wtf are you talking about
21:39:08 <elliott> Deewiant: explain the joke thankxse
21:39:28 -!- copumpkin has changed nick to RadicalFeminist.
21:39:52 <oerjan> yeah i need explanation i've been living in this cave you see..
21:40:11 <zzo38> I used this for uniform probability distributions: uniform x = WriterT $ (flip (,) $ mpnormfunc (mempty <$ x) mempty) <$> x;
21:40:39 <elliott> oerjan: wait wait wait youa sked me wtf am i talking about :DDD
21:41:02 <elliott> oerjan: ok so you know like
21:41:27 <elliott> the problem with that is that for record types, that gets (a) really long and (b) unreadable (since the field names aren't there)
21:41:31 <zzo38> I could make probability distributions without even needing numbers or division or something like that
21:41:48 <zzo38> Therefore, it is a "generalized probability distribution".
21:42:08 <elliott> oerjan: data Foo = Foo {fooA :: Int; fooB :: String; fooC :: Double}; data Foo' f = Foo' {fooA' :: f Int; fooB' :: f String; fooC' :: f Double}
21:42:12 <monqy> im guesseing idom brackets dcant do reccord typse
21:42:29 <elliott> oerjan: and then do like: runFoo' $ Foo' {fooA' = a; fooB' = b; fooC' = c}
21:42:36 <elliott> runFoo' :: Foo' f -> f Foo
21:42:44 <elliott> oerjan: BUT THE PROBLEM IS: what if you want to run b before a?
21:43:33 <elliott> oerjan: you could do lenses, and then have: data Assign t = forall v. Lens t v := v; mkFoo :: [Assign Foo] -> Foo
21:43:55 <elliott> oerjan: you could do lenses, and then have: data Assign f t = forall v. Lens t v := f v; mkFoo :: (Applicative f) => [Assign f Foo] -> f Foo
21:44:00 <elliott> oerjan: mkFoo [fooA := a, fooB := b, fooC := c]
21:44:06 -!- Phantom_Hoover has quit (Ping timeout: 240 seconds).
21:44:07 <elliott> oerjan: but then the problem is, you can just leave off a field and not even get a warning
21:44:29 <elliott> oerjan: but with /this/, you can use a FullList (Assign f Foo)
21:44:44 <monqy> have you venbtured into the dark worlds of templates hskell yet
21:44:55 <elliott> oerjan: but with /this/, you can use a FullList ((FieldA := f Int) :- (FieldB := f String) :- (FieldC := f Double) :- ())
21:44:55 <monqy> (Specifically that)
21:45:04 <elliott> oerjan: with data FieldA, FieldB, FieldC
21:45:19 <elliott> oerjan: and it all works out!
21:45:32 <elliott> assuming you define the equality to compare on the field name only etc. etc. etc.
21:45:48 <elliott> oerjan: this is kind of ugly though :( any bright ideas???????
21:45:56 -!- RadicalFeminist has changed nick to copumpkin.
21:46:20 <monqy> how ugly does it compare with th uglies
21:46:26 <elliott> monqy: how would you solve this with th
21:46:26 <monqy> or could they ugly team up together
21:46:42 <monqy> quasiquoters probably
21:46:46 <zzo38> Try using TH. It might help too
21:46:57 <zzo38> I would do it without quasiquoters, though.
21:47:25 <monqy> that works too, if it works
21:47:53 <ais523> elliott: gah, I started running a non-idempotent and hard-to-reverse script misconfigured
21:48:05 <ais523> noticed, tried to kill the process in a panic, killed the wrong process
21:48:13 -!- Phantom_Hoover has joined.
21:48:13 <zzo38> However it would be a bit difficult due to strong typing in TH quotations. There is a proposal that makes two types of quotations, strong and weak; so you can use a weak one and then make the result strongly typed instead.
21:48:16 <Phantom_Hoover> Oh my god I saw that Transformers guy on Mastermind it was hilarious.
21:48:23 <ais523> luckily, it turned out it was almost configured correctly
21:48:38 <ais523> and in particular, the error it's made is deterministic so I can fix it after the fact
21:48:46 <Phantom_Hoover> Doing it with Homestuck would be funnier still, but I doubt it'd be allowed.
21:48:51 <oerjan> elliott: well i don't even know th
21:49:13 <elliott> oerjan: i don't want to use th here and i don't think th will help
21:50:51 <Vorpal> fizzie: new twist on dark brotherhood: it seems you can become hunted by them...
21:50:54 <zzo38> Then don't use TH if you don't like it.
21:51:35 -!- FireFly has quit (Changing host).
21:51:35 -!- FireFly has joined.
21:51:42 <elliott> oerjan: http://sprunge.us/gCji
21:53:25 <oerjan> elliott: something tells me that even if you make it work, the type errors for missing fields are going to make people want to kill you.
21:53:48 <elliott> oerjan: thankfully that type error is much worse than it will be in reality
21:53:57 <elliott> all the duplications of ((A := Int) :- ((B := String) :- ((C := Double) :- ()))) will just look like ABC
21:54:44 <elliott> oerjan: hey, if you have any better ideas...
21:57:14 <elliott> Couldn't match type `Assign C :- ()' with `()'
21:57:14 <elliott> ABC (Without ABC (Assign B) (Assign B :- (Assign C :- ())))
21:57:14 <elliott> Actual type: FullList ABC ()
21:57:14 <elliott> In the second argument of `(:-)', namely `Done'
21:57:14 <elliott> In the second argument of `(:-)', namely `(B := "hello") :- Done'
21:57:19 <elliott> that's what it looks like when you omit the C field at the end
21:57:29 <elliott> the "couldn't match type" line gives the full error
21:58:44 <elliott> oerjan: meanwhile: sigh, why isn't there an infix -1
22:00:30 -!- hagb4rd has quit (Ping timeout: 240 seconds).
22:00:51 <oerjan> because once you want more than 0..9 you're going to start thinking of a better system than numbers
22:01:06 -!- wareya has joined.
22:01:13 <elliott> note to self: http://sprunge.us/hdWe
22:01:24 <elliott> oerjan: I know, I know, I just want to be able to use $ in my pseudo-literals :P
22:03:04 <zzo38> I think even like that, TH can help to make up the type instances and that kind of stuff
22:03:54 -!- Sgeo|web has joined.
22:04:47 <elliott> zzo38: yeah, that was my plan
22:04:52 <elliott> but I don't think it helps make a /nicer/ solution than this
22:04:55 <elliott> just makes using this slightly less painful
22:06:17 -!- Ngevd has joined.
22:06:18 <elliott> monqy: what would you do in my situation :'(
22:06:22 <oerjan> :t undefined { runIdentity = undefined } { runIdentity = undefined }
22:06:31 <monqy> what exactly IS your situatioateon
22:07:13 <elliott> monqy: i mexplained it above :'(
22:08:00 <elliott> monqy: from <elliott> oerjan: ok so you know like
22:08:02 <elliott> to <elliott> oerjan: this is kind of ugly though :( any bright ideas???????
22:08:16 <elliott> (i managed to clean it up from that slightly but yeah)
22:11:44 <Deewiant> 2011-11-12 00:11:12 [freenode] -RichiH(~richih@freenode/staff/richih)- [Global Notice] Hi all. We wish you a very verily merry merrily 11:11:11 11.11.11-11!
22:12:03 <elliott> Deewiant: oh wait for a second I thought it was 11pm
22:12:08 <elliott> and they were using 12 hour clock
22:12:13 <elliott> until they stopped existing
22:12:30 <monqy> you cut off a good part
22:12:37 <monqy> Crank it up to eleven and here's to hoping the world will not end in 2012; as always, thanks for flying freenode air!
22:12:42 <elliott> Deewiant: thats even worse
22:12:57 <elliott> wait Deewiant is on UTC???
22:15:47 <monqy> anyway the way i would have done it with th would be something like the the (field id, f valiue) -> f wahtever except with compiles time checking in th that there are no missing or duplicated felds. of course this is probably just as bad as type system hakcery, and type system hackery is certainly cooler.....
22:16:11 <elliott> monqy: that would be uglieir :(
22:16:29 <monqy> i will try to think of
22:17:40 <elliott> monqy: there's a part of me at this point that just wants to say
22:17:54 <elliott> but i would never forgive myself
22:18:02 <Ngevd> My lack of pop-culture knowledge has failed me again...
22:18:12 <monqy> [Assign Foo] and leave it at that is ... awufl
22:18:53 <monqy> because its type checkeD??
22:19:21 <monqy> possibility of runtime errors makes me
22:19:47 <monqy> how to unsad cleanly ;_;
22:20:34 <monqy> can't find anything about records in she's idiom brackets page
22:21:52 <elliott> monqy: like I said, that would _not_ help
22:22:02 <elliott> monqy: it's trivial to make a record with each field wrapped in f
22:22:02 <monqy> i did not see that said
22:22:07 <elliott> monqy: I showed that above
22:22:11 <elliott> the problem is controlling the /ordering/
22:22:21 <elliott> with idiom brackets you can just do like ~(flip (+)) to flip the evaluation order, even if that is ugly
22:22:26 <elliott> but you can't "flip" a record literal...
22:22:34 <ais523> whew, finished work for the day, and now I'm too tired to play NetHack
22:22:37 <ais523> help what should I do instead
22:22:38 <elliott> unless you mean it'd depend on the order you specified in the fields in
22:22:42 <elliott> in which case let me be the first to say, ewwwwwwwww
22:22:43 <monqy> yes that was my hope
22:22:46 <elliott> ais523: fail to play nethack
22:22:47 <ais523> (don't mention Feather, I'm too tired for that too)
22:22:52 <elliott> monqy: well ok it's not THAT bad but...
22:22:54 <monqy> it's ugly but....is it uglier than what you have??
22:22:56 <elliott> not sure i want to use a preprocessor
22:24:54 <oerjan> set {field1 = as value1} </\= set {field2 = as value2}
22:25:12 <Ngevd> This would probably be quicker if I started from scratch and just implemented Dijkstra's algorithm in Haskell
22:25:15 <monqy> did your cleaning up clean up Equ, becaues Equ is real gross...
22:25:29 <elliott> monqy: that would be TH-generated
22:25:45 <oerjan> chain =/\> set {field1 = as value1} </\= set {field2 = as value2}
22:25:54 <monqy> same with the rest??
22:26:10 <oerjan> where field1 are your wrapped versions...
22:26:14 <monqy> above the last -- i mean
22:27:31 <oerjan> hm that wouldn't be typesafe though...
22:27:53 <monqy> what language is this...
22:28:50 <Ngevd> No wait, I don't want Dijkstra
22:29:02 -!- augur has joined.
22:29:11 <elliott> oerjan: additionally, you'd get an "undefined record field lol" for each set...
22:29:32 <elliott> oerjan: but I can't tell what you are trying to do with just some code without even type signatures.
22:30:21 <oerjan> elliott: well set would be a value of type Foo' something
22:30:36 <elliott> more interested in chain and set and as's types
22:31:02 <Phantom_Hoover> Hmm, I've realised an even more ridiculous thing about the Apollo computers.
22:31:42 <Phantom_Hoover> A navigational computer small enough to fit on a spacecraft was built *less than fifteen years after the first silicon transistor was invented*.
22:31:43 <oerjan> hm actually =/\> and </\= don't need to be different, i think
22:33:21 <oerjan> set is a predefined record which has dummy values for each Foo' field
22:34:17 <oerjan> chain is a dummy setter that does nothing. =/\> combines a setter with another modification
22:34:32 <oerjan> the setter being something monadic that preserves order
22:35:02 <oerjan> i don't know how to make it typesafe to check if all fields are set, though
22:35:14 <elliott> oerjan: right. well that's just my [Assign Foo] situation, but ugly :P
22:35:26 <elliott> mkFoo [field1 := value1, field2 := value2]
22:35:42 -!- derrik has quit (Quit: i disappear).
22:36:05 <Ngevd> Is there a recommended way in Haskell to do Dijkstra's algorithm on a procedurally generated graph?
22:36:12 <Ngevd> Do I have any idea what I'm saying
22:36:18 <oerjan> well ideally set {field1 = as value1} should have some type that involved field1 being set, but that's going to be awkward
22:36:55 <elliott> Ngevd: you may just want to use http://hackage.haskell.org/package/astar
22:36:56 <oerjan> maybe something higher rank
22:37:18 <elliott> oerjan: oh you mean so you can't set multiple times?
22:37:24 <elliott> well record updates cannot change types, full stop.
22:37:53 <oerjan> true, but set might be polymorphic
22:39:00 <oerjan> but the scaffolding to make this actually put the fields in types is probably going to be worse than your solution :P
22:39:36 <elliott> oerjan: the boilerplate can be autogenerated by TH
22:40:36 <oerjan> elliott: well say Foo' takes type arguments that tell the type of each field, and the right argument of =/\> is required to have exactly one of them not being (), or something
22:41:10 <oerjan> and that one should be () in something corresponding in the left argument
22:41:24 <oerjan> which means =/\> must be a method, i guess
22:41:47 <elliott> oerjan: that would still change the type
22:41:53 <elliott> set{...} :: NotPolymorphic
22:42:21 <oerjan> um of course that is possible, polymorphic values are restricted all the time in haskell :P
22:42:57 <oerjan> set would have polymorphic type Foo' f a1 a2 a3
22:43:28 <elliott> oerjan: try it yourself if you don't believe me.
22:44:49 <elliott> oerjan: it works, that must have changed
22:45:26 <oerjan> :t let x = Identity undefined in (x {runIdentity = True}, x {runIdentity = LT})
22:45:27 <lambdabot> (Identity Bool, Identity Ordering)
22:46:22 <oerjan> elliott: well of course the restriction might happen _before_ the modification
22:54:31 <zzo38> What are a tropical semiring, possibilistic semiring, bottleneck semiring, truncation semiring, Lukasiewicz semiring, division semiring, formal languages semiring, etc?
22:56:19 <oerjan> clearly the answer is: no idea
22:56:35 <oerjan> well, i've got a _slight_ hunch some of those might be semirings.
22:57:33 <oerjan> we wouldn't want to leap to conclusions.
22:57:41 <zzo38> I know they are semirings (I found them in a list of semirings) but I don't know the details of them.
22:57:41 <oerjan> might fall and break something.
23:01:06 <CakeProphet> Sgeo|web: HEY SGEO HAVE YOU READ THE NEW HOMESTUCK UPDATES
23:02:03 <elliott> <lambdabot> shachaf said 25s ago: Is it?
23:02:03 <elliott> <lambdabot> CakeProphet asked 15s ago: what is @ask?
23:02:04 <shachaf> @ask elliott I don't remember how it treats them differently, though I do remember that it does.
23:02:05 <lambdabot> Sgeo|web: You have 1 new message. '/msg lambdabot @messages' to read it.
23:02:10 <elliott> Note the part where CakeProphet is an idiot!
23:02:10 <lambdabot> elliott: You have 1 new message. '/msg lambdabot @messages' to read it.
23:02:37 <CakeProphet> it is just being different with differency.
23:02:49 <elliott> Looks different to me also Gregor answer my question already.
23:03:39 <lambdabot> tell provides: tell ask messages messages? clear-messages
23:03:54 <oerjan> clearly far too few options
23:06:20 <elliott> I don't know what you're talking about. I don't speak English.
23:08:04 <CakeProphet> why is there a vine going up that staircase?
23:09:07 <CakeProphet> oh, I bet it's part of some real life MYSTIC RUINS that he desecrates frequently.
23:09:30 <Ngevd> Updates nobody told me about!
23:11:20 <elliott> monqy: no there was an update to.....esoteric
23:12:16 <monqy> i don't like libertas
23:15:01 <elliott> monqy: oH no i just thought of...........................another problem with..........m,y system
23:15:43 <monqy> worst problem? not that bad? oh no
23:17:32 <elliott> monqy: what if you want the getLine order to be
23:17:40 <elliott> how can you rearrange it to do that
23:17:47 <elliott> it only offers ordering within one mkBlah
23:18:37 <oerjan> poor elliott, once again destroyed by his own perfectionism.
23:18:48 <monqy> i can only imagine fixing it typesafely to be positiviely hideous in haskelle.
23:19:08 <elliott> oerjan: what has this got to do with perfectionism
23:19:47 -!- Madoka-Kaname has quit (Ping timeout: 258 seconds).
23:20:13 -!- Madoka-Kaname has joined.
23:20:14 -!- Madoka-Kaname has quit (Changing host).
23:20:14 -!- Madoka-Kaname has joined.
23:20:39 <oerjan> well, ask a fish what water has to do with swimming
23:20:58 <elliott> oerjan: except that this ordering problem is an actual problem I have.
23:21:00 <oerjan> and it will tell you: BLUB
23:21:17 <elliott> and none of the less-safe solutions fix it, either
23:24:32 <Sgeo|web> > fix $ const "elliott's ordering problem"
23:26:12 <Phantom_Hoover> Like, I don't think these people have actually looked at Kidby's illustrations or, in some cases, Pratchett's descriptions.
23:26:52 <Ngevd> Didn't realise you were a Pratchett fan
23:27:22 <HackEgo> /home/hackbot/hackbot.hg/multibot_cmds/lib/limits: line 5: exec: wacro: not found
23:30:00 <elliott> monqy: i think i could do this.... nomadiclaly
23:30:40 <elliott> monqy: except not proper monad
23:32:06 <elliott> monqy: oh!! it is monoid almost.
23:32:16 <monqy> almosT?? what are you DOING
23:33:26 <elliott> monqy: assign :: (FieldOf t field) => field -> f (FieldType field) -> Assign f t (field :- xs); (>>+) :: Assign f t fields -> Assign f t (field :- fields) -> Assign f t (field :- fields); run :: (Complete t fields) => Assign f t fields -> f t
23:33:35 <elliott> Complete t fields if true iff fields contains all fields of f
23:33:47 <elliott> feifeiflds here can be full lenses
23:34:01 <elliott> so you can compose them to assign submembers in different order
23:34:06 <elliott> except hmm i need infrastructure for that
23:34:18 <elliott> and it will be less awful than all of this
23:35:06 -!- sebbu2 has joined.
23:35:06 -!- sebbu2 has quit (Changing host).
23:35:06 -!- sebbu2 has joined.
23:35:21 <elliott> monqy: oh wait it's actually
23:35:31 <elliott> (>>+) :: Assign f t xs -> Assign f t ys -> Assign f t (xs :++: ys)
23:35:57 <monqy> so the magic is in Complete then??
23:38:31 -!- sebbu has quit (Ping timeout: 240 seconds).
23:39:14 <elliott> monqy: HOW DO YOU SPELL FIELD
23:39:33 <monqy> unless im typo. then it could be ANYTHING
23:39:51 <monqy> I don't think I've ever done efild
23:40:49 <EgoBot> perl (sending via DCC)
23:41:44 <monqy> wacro magic mystery
23:41:55 <elliott> oerjan: EgoBot is broken, remember
23:42:06 <oerjan> elliott: no it was fixed
23:42:13 <elliott> oerjan: um what's the length of the list of permutations of a list as long as the list itself......
23:42:19 -!- Aune has joined.
23:42:40 <lambdabot> [[a,b,c],[b,a,c],[c,b,a],[b,c,a],[c,a,b],[a,c,b]]
23:42:45 <elliott> > filter ((== 3) . length) $ permutations [a,b,c]
23:42:47 <lambdabot> [[a,b,c],[b,a,c],[c,b,a],[b,c,a],[c,a,b],[a,c,b]]
23:43:21 <elliott> oerjan: ah. so this new, simpler approach can handle... 5 fields.
23:43:31 <monqy> 5 is enough fields for anyone
23:43:33 <elliott> (actually that's not true :P)
23:43:43 <elliott> just means I'll have to get more cleverer
23:45:29 <oerjan> i cannot quite recall what was the correct syntax
23:45:36 <monqy> it was that, i think
23:46:05 <HackEgo> 2011-08-19.txt:23:36:46: <CakeProphet> !wacro
23:46:30 <EgoBot> Array found where operator expected at /tmp/input.5546 line 47, at end of line
23:47:00 <EgoBot> Installed user interpreters: acro aol austro bc bct bfbignum brit brooklyn bypass_ignore bytes chaos chiqrsx9p choo cpick ctcp dc decide drawl drome dubya echo ehird elmer fudd google graph hello id insanetemp jethro kraut lperl lsh map monqy num numberwang ook pansy pi pikhq ping pirate plot postmodern postmodern_aoler prefixes python redneck reverse rimshot rot13 rot47 sadbf sanetemp sfedeesh sffedeesh simplename slashes svedeesh swedish valspeak wacro warez
23:47:58 <elliott> monqy: oh no i ju st realised something
23:52:47 <HackEgo> /home/hackbot/hackbot.hg/multibot_cmds/lib/limits: line 5: exec: words: not found
23:52:54 <HackEgo> qiirricompos andmag abingena trospepit turvklescbitury que dra querg coneleontamonningedur andmianus svitted fuh per otran formair euoncasdationd her beanet everw zeim regafooll miarashiesubao wed nunstchi felton reriv gly antsuperditee hener munglo mming firtyciporones nclards es aslothir fee disfo cusisseo elrodous tent pu
23:54:37 * Gregor is en-masse moving projects to bitbucket.
23:54:44 <elliott> Gregor: even the bad ones?
23:54:50 <Gregor> elliott: No, only the ones that are maintained :P
23:55:00 <elliott> oerjan: why is mapM not for applicatives :'(
23:55:02 <Gregor> (For some definition of "maintained")
23:55:17 <elliott> Gregor: I'll spring my two questions on you, then!
23:55:43 -!- ais523 has quit (Ping timeout: 240 seconds).
23:55:48 <elliott> Gregor: (a) Does HackBot support running some code continuously in the background? (usually blocked on a lock or whatever) This would vastly simplify my design. (b) Are you /sure/ I can't use Haskell? You have a recent GHC in /opt!
23:56:07 -!- someoneyouhate has quit (Ping timeout: 240 seconds).
23:56:25 <Gregor> elliott: (a) As in, user code, or just some other code that's part of the infrastructure?
23:56:31 <Gregor> elliott: (b) PFFFFFFFFFFFFFFFF
23:56:53 <lambdabot> Data.Traversable traverse :: (Traversable t, Applicative f) => (a -> f b) -> t a -> f (t b)
23:56:54 <lambdabot> Data.Foldable traverse_ :: (Foldable t, Applicative f) => (a -> f b) -> t a -> f ()
23:56:54 <lambdabot> Control.Parallel.Strategies parTraverse :: Traversable t => Strategy a -> Strategy (t a)
23:57:01 <elliott> Gregor: (b) I'M HAVING TO DO FILE LOCKING IN BASH YOU SHITHEAD
23:58:03 <Gregor> elliott: I never said it had to be bash.
23:58:16 <Gregor> elliott: Latter is fine; I mean, multibot itself is running continuously of course.
23:58:53 <elliott> Gregor: (a) Yeah, but I'm not sure my soul will let me rewrite anything in a language that isn't Haskell :P (b) How do you do it, then
23:59:27 <lambdabot> Data.List mapAccumL :: (acc -> x -> (acc, y)) -> acc -> [x] -> (acc, [y])
23:59:27 <lambdabot> Data.Traversable mapAccumL :: Traversable t => (a -> b -> (a, c)) -> a -> t b -> (a, t c)
23:59:27 <lambdabot> Data.List mapAccumR :: (acc -> x -> (acc, y)) -> acc -> [x] -> (acc, [y])