←2015-09-02 2015-09-03 2015-09-04→ ↑2015 ↑all
00:04:22 -!- MDream has joined.
00:07:04 -!- MDude has quit (Ping timeout: 246 seconds).
00:10:59 <oren> good eeing
00:15:36 <hppavilion[1]> Hellu
00:15:52 <oren> gragh. my aes key expansion still isn't working
00:27:56 <fizzie> Are you... reimplementing AES?
00:28:06 <oren> yes. In visual basic
00:28:55 <oren> http://hastebin.com/anopomiyay.vbs
00:29:23 <oren> thats what I have so far but the key expansion is not giving the righyt output
00:30:12 <fizzie> I thought you were going to use existing crypto.
00:30:30 <oren> bah.
00:30:51 <oren> I'll do that if this gets too frustrating
00:31:31 <oren> what's weird is only a few of the bytes of the expanded key are wrong
00:33:00 <oren> (in the particular unit test of the key 00000000000000000000000000000000)
00:33:13 <fizzie> Have you checked the iteration-by-iteration key expansion examples in the standard?
00:35:50 -!- ProofTechnique has joined.
00:36:00 <oren> that's true, I should just log the same things they did and compare...
00:36:05 <ProofTechnique> Helloren
00:37:56 <oren> ok never mind I had an off by one error
00:38:18 <oren> hi ProofTechnique
00:38:37 <oren> I'm making AES in Visual Basic
00:38:49 <ProofTechnique> I'm sorry
00:38:51 <oren> http://arin.ga/CpcwH6
00:41:53 <oren> It working! I fix it!
00:42:18 <oren> ...on one example. I should add more unit tests
00:42:51 <oren> before counting it as "done"
00:43:35 <oren> however this is a major step towards getting the ssh to work
00:45:46 <hppavilion[1]> oren: Um...
00:45:58 <hppavilion[1]> Did you just use two different links to the same thing?
00:46:37 <fizzie> I want to go on the record here that despite the suggestion, I'm in no way promoting homebrew cryptography.
00:46:37 <oren> oh. whoops
00:47:00 -!- impomatic_ has joined.
00:47:02 -!- darkl0ck_ has quit (Ping timeout: 260 seconds).
00:47:15 -!- impomatic_ has quit (Client Quit).
00:48:39 -!- darkl0ck has joined.
00:57:32 -!- clog has joined.
01:01:53 -!- mauris_ has quit (Ping timeout: 256 seconds).
01:28:03 <HackEgo> [wiki] [[Pikalang]] http://esolangs.org/w/index.php?diff=44015&oldid=41282 * 68.50.42.113 * (+26) /* Commands */
01:29:50 <HackEgo> [wiki] [[Pikalang]] http://esolangs.org/w/index.php?diff=44016&oldid=44015 * Grotr * (+3) /* External resources */
01:37:35 -!- mauris_ has joined.
01:37:35 -!- mauris_ has quit (Changing host).
01:37:35 -!- mauris_ has joined.
01:45:01 <mauris_> <fizzie> I want to go on the record here that despite the suggestion, I'm in no way promoting homebrew cryptography. <-- eh, someone's gotta brew it, right?
01:45:31 -!- darkl0ck_ has joined.
01:46:59 <mauris_> i mean, there are presumably existing, well-tested implementations of AES for visual basic, so i think it's a bit silly to write your own, but like, if oren writes their own and tests it thoroughly as well, i see no reason to trust any existing implementation more than oren's
01:48:38 -!- darkl0ck has quit (Ping timeout: 272 seconds).
01:50:02 -!- fowl has quit (Disconnected by services).
01:50:31 -!- fowl has joined.
01:50:57 <mauris_> (imo i'm not a professional cryptozoologist though so what do i know! i'm definitely interested to find out if there's more to it than "this produced the same output as an existing trustworthy implementation for a couple thousand random inputs, so it's trustworthy")
01:51:30 -!- fowl has quit (Disconnected by services).
01:52:01 -!- fowl has joined.
01:56:16 -!- fowl has quit (Disconnected by services).
01:56:31 -!- notfowl has joined.
01:59:06 -!- hppavilion[1] has quit (Ping timeout: 240 seconds).
02:02:45 -!- grotewold has joined.
02:04:36 -!- notfowl has changed nick to Guest19768.
02:06:17 -!- atslash has quit (Quit: This computer has gone to sleep).
02:08:05 -!- mauris__ has joined.
02:09:51 -!- hppavilion[1] has joined.
02:11:19 -!- mauris_ has quit (Ping timeout: 246 seconds).
02:12:22 <oren> mauris__: there are other problems, relating to the trustworthiness of VB itelf. typically crypto is written in C or even assembly so the compiler hopefully can't introduce weakness
02:13:01 -!- grotewold has quit (Quit: My Mac has gone to sleep. ZZZzzz…).
02:14:23 <oren> in other words just because my code looks right and produces the right output doesn't mean Microsoft's compiler or garabage collector or whatever isn't screwing you
02:21:05 -!- grotewold has joined.
02:22:02 <hppavilion[1]> How can I make a language which's programs are harder to hack and are more secure?
02:22:03 <hppavilion[1]> Well
02:22:31 <hppavilion[1]> 1) Provide well-tested standard libraries for security (no hacky hashing for you!)
02:22:38 <mauris__> oren: oh, like the plaintext lingering around in memory?
02:23:07 <hppavilion[1]> mauris__: Yes, like that xD
02:23:33 <hppavilion[1]> 2) Provide easy mechanisms to catch crashes so that you don't leave something open to kill it
02:24:05 -!- grotewold has quit (Client Quit).
02:24:53 <oren> 3) provide a nocache storage modifier that disables disk cahing, and a zero() function that takes such a variable and zeroes it
02:25:18 -!- grotewold has joined.
02:25:20 <Sgeo> Don't C compilers optimize stuff?
02:25:27 <Sgeo> Which is not what you need with crypto
02:25:39 <oren> (modern compilers are known to optimize out the part of an algorithm that deletes that plaintext)
02:26:00 <oren> Sgeo: yes, which is why it needs to move to assumply
02:28:38 <HackEgo> [wiki] [[Ingredients-Oriented Paradigm]] http://esolangs.org/w/index.php?diff=44017&oldid=44000 * Hppavilion1 * (+675) Added some stuff and rearranged
02:31:04 <HackEgo> [wiki] [[Ingredients-Oriented Paradigm]] http://esolangs.org/w/index.php?diff=44018&oldid=44017 * Hppavilion1 * (+313) Exception Handling
02:42:27 <hppavilion[1]> Oooh
02:42:34 <hppavilion[1]> Constraint Programming looks interesting
02:42:46 -!- grotewold has quit (Quit: My Mac has gone to sleep. ZZZzzz…).
02:44:13 -!- idris-bot has quit (Ping timeout: 246 seconds).
02:45:24 -!- Melvar has quit (Ping timeout: 264 seconds).
02:46:08 <mauris__> !tell ais523 WUUI question: "Whenever (to be precise, just after) any expression is evaluated," <-- how many expressions is, say, "x[0]/3"?
02:46:10 <EgoBot> ais523: WUUI: question:: Whenever (to be precise, just after) any expression is evaluated,: <--: how: many: expressions: is,: say,: x[0]/3?:
02:46:21 <mauris__> @tell ais523 WUUI question: "Whenever (to be precise, just after) any expression is evaluated," <-- how many expressions is, say, "x[0]/3"?
02:46:21 <lambdabot> Consider it noted.
02:46:47 <mauris__> `thanks EgoBot
02:47:02 <HackEgo> Thanks, EgoBot. ThEgoBot.
02:48:18 <hppavilion[1]> `thanks walrusman
02:48:19 <HackEgo> Thanks, walrusman. Thalrusman.
02:49:42 <oren> Ok, how is it even possible that I did the shift rows step wrong?
02:50:59 <oren> well that's solved, bu the output is still worng. back to the drawing beard
02:54:23 -!- Melvar has joined.
03:00:45 <hppavilion[1]> `thanks lllllleeeeroooooy_jenkins
03:00:45 <HackEgo> Thanks, lllllleeeeroooooy_jenkins. Theeeeroooooy_jenkins.
03:00:53 <hppavilion[1]> Interesting
03:00:56 -!- Phantom__Hoover has quit (Read error: Connection reset by peer).
03:01:47 <hppavilion[1]> I'd like to see a Programming Language which is centred around defining abstract machines (turing, kolmogorov, FSMs, etc) and letting those evaluate for you
03:02:01 <hppavilion[1]> Declarative programming in a nutshell, I suppose xD
03:02:51 <hppavilion[1]> Anyone want to define an EsoFSM?
03:04:01 <hppavilion[1]> @tell hppavilion[1] you are a walrus. Fear your wrath
03:04:01 <lambdabot> You can tell yourself!
03:04:10 <hppavilion[1]> @tell hppavilion[1] you are a walrus. Fear your wrath
03:04:10 <lambdabot> You can tell yourself!
03:04:24 <hppavilion[1]> @clear
03:04:24 <lambdabot> Maybe you meant: clear-auto-reply clear-messages clear-topic learn
03:06:06 -!- idris-bot has joined.
03:06:42 <hppavilion[1]> @help
03:06:42 <lambdabot> help <command>. Ask for help for <command>. Try 'list' for all commands
03:06:49 <hppavilion[1]> @list
03:06:49 <lambdabot> What module? Try @listmodules for some ideas.
03:06:55 <hppavilion[1]> @help list
03:06:55 <lambdabot> list [module|command]. Show commands for [module] or the module providing [command].
03:07:06 <hppavilion[1]> @list command
03:07:06 <lambdabot> No module "command" loaded
03:07:09 <hppavilion[1]> @list help
03:07:09 <lambdabot> help provides: help
03:07:18 <hppavilion[1]> @list list
03:07:18 <lambdabot> system provides: listchans listmodules listservers list echo uptime
03:07:30 <hppavilion[1]> @list echo
03:07:30 <lambdabot> system provides: listchans listmodules listservers list echo uptime
03:07:36 <hppavilion[1]> @echo "Walrus Man"
03:07:36 <lambdabot> echo; msg:IrcMessage {ircMsgServer = "freenode", ircMsgLBName = "lambdabot", ircMsgPrefix = "hppavilion[1]!~Lordofthe@133-171-58-66.gci.net", ircMsgCommand = "PRIVMSG", ircMsgParams = ["#esoteric",":@echo \"Walrus Man\""]} target:#esoteric rest:"\"Walrus Man\""
03:07:48 <hppavilion[1]> @@
03:08:18 <hppavilion[1]> @tell walrus GET OUT OF MY BODY
03:08:18 <lambdabot> Consider it noted.
03:09:09 <hppavilion[1]> @hppavilion[1]
03:09:09 <lambdabot> Unknown command, try @list
03:09:17 <hppavilion[1]> @tell tell tell
03:09:17 <lambdabot> Consider it noted.
03:09:38 <hppavilion[1]> I should stop before I make someone very powerful* angry
03:09:49 <hppavilion[1]> *(Not at all powerful)
03:10:59 <hppavilion[1]> Someone love me
03:11:43 <hppavilion[1]> oren b_jonas rdococ shachaf there are lonely people here
03:12:00 -!- shachaf has left.
03:13:24 <oren> So all the sub steps of AES are working perfectly, and yet the ouput is wrong?!! wtf is happenink here
03:13:43 <hppavilion[1]> You missed a substep perhaps?
03:13:55 <hppavilion[1]> Perhaps fungot does not will that you have encryption
03:13:55 <fungot> hppavilion[1]: ( currycpseid a b). that means there's at the very least, they did. it's in all the shitty languages out there
03:14:19 <hppavilion[1]> fungot fungot fungot <-- I wonder if this prints more than one
03:14:19 <fungot> hppavilion[1]: http://www.schemers.org/ documents/ standards/ fnord/ hallways/ etc?
03:14:22 <hppavilion[1]> Nope
03:16:42 <oren> I don't think so. In fact my main cipher() function is virtually identical to the pseudocode in the standard
03:21:20 <mauris__> @tell ais523 "An entire program is a single command." <-- I think you either forgot to put {} around the example program, or meant to write "list of commands"
03:21:20 <lambdabot> Consider it noted.
03:25:06 -!- hppavilion[1] has quit (Ping timeout: 240 seconds).
03:29:51 -!- ProofTechnique has quit (Quit: Textual IRC Client: www.textualapp.com).
03:51:14 <oren> FUUUUUUUUUUUUUUU
03:51:40 -!- hppavilion[1] has joined.
03:52:11 <oren> those... assholes who wrote the standards document store their arrays with columns in sequence!
03:52:35 <oren> What kind of fucking monster does that!
03:56:36 <hppavilion[1]> oren: What??
03:56:49 <hppavilion[1]> Which standards document?
03:57:11 <hppavilion[1]> fungot: You. Fungot. Fungotify.
03:57:11 <fungot> hppavilion[1]: i recognize that the idea of doing them like that, it means
03:57:13 <oren> http://csrc.nist.gov/publications/fips/fips197/fips-197.pdf
03:57:40 <oren> look at page 33 how the keyis loaded into the matrix
03:58:00 <oren> er, the input
03:58:28 <oren> 4 bytes of the input goes into each column
03:58:55 <tswett> So I realized that the snub cube has a problem, considered as a die.
03:59:01 <tswett> (Besides the fact that it's not fair.)
03:59:24 <hppavilion[1]> tswett: What's the problem?
03:59:33 <tswett> Now, there are three classes of faces: squares; triangles adjacent to squares ("edge triangles"); and triangles not adjacent to squares ("corner triangles").
03:59:33 <hppavilion[1]> (I love how the universe has continuity)
03:59:51 <tswett> Every square has an opposite face. Every corner triangle has an opposite face. Edge triangles do not have opposite faces.
04:00:05 <hppavilion[1]> Oh... oh god
04:00:26 <tswett> Each *pair* of edge triangles has an opposite pair of edge triangles, but the two pairs are at a 90 degree angle to each other.
04:01:05 <tswett> So if the die lands on an edge triangle, there's no top face; there's instead a top pair of faces, where one of the middle vertices is higher up than the other one.
04:01:22 <hppavilion[1]> Wouldn't it be a quartet of edge triangles?
04:01:24 <hppavilion[1]> Wait
04:01:24 <oren> So apparently those assholes should have put a Transpose(State) at the start of their pseudocode but couldn't be bothered
04:01:26 <hppavilion[1]> No it wouldn't
04:02:04 <tswett> So you could simply mark those "edge triangle pair middle vertices" with numbers instead of marking the edge triangles themselves with numbers.
04:02:16 <tswett> That's kind of inelegant.
04:02:38 <hppavilion[1]> But does it have the number of sides you wanted?
04:03:05 <hppavilion[1]> OOOOOOOOOOh
04:03:18 <hppavilion[1]> I missed the "So if..." part
04:03:36 <hppavilion[1]> "So if the die lands on an edge triangle, there's no top face; there's instead a top pair of faces, where one of the middle vertices is higher up than the other one."
04:03:41 <tswett> It does have the number of sides I want.
04:03:50 <hppavilion[1]> I figured that out
04:04:04 <hppavilion[1]> So are you going to hunt down and kill the person who suggested a snub cube?
04:04:04 <tswett> I pretty much can't imagine going with a shape that's not either a snub cube or a variant of the snub cube.
04:04:23 <tswett> No, I think the snub cube was a great suggestion, and I'm really grateful to whoever it was.
04:04:33 <tswett> I'm just going to have to alter it a little.
04:05:48 <hppavilion[1]> Well I should get around to finding out what a snub cube
04:05:49 <hppavilion[1]> is
04:05:57 <hppavilion[1]> dropped a word
04:05:58 <hppavilion[1]> there
04:07:34 <hppavilion[1]> I want 3D Animated SVG
04:07:54 <hppavilion[1]> SVOPENGLIF if you will
04:15:44 -!- haavard has quit (Read error: Connection reset by peer).
04:16:18 -!- haavard has joined.
04:17:14 -!- hppavilion[1] has quit (Ping timeout: 244 seconds).
04:34:58 -!- mauris__ has changed nick to mauris.
04:35:11 -!- mauris has quit (Changing host).
04:35:11 -!- mauris has joined.
04:59:25 <oren> It work!
05:00:25 <oren> http://arin.ga/Gd7e6L
05:00:54 <oren> (also has my very incomplete SSH class)
05:00:58 -!- Walpurgisnacht has joined.
05:02:33 <Walpurgisnacht> Explain what monads are in full depth from memory but very simply
05:04:10 <oren> Iv'e heard they're used as a way to encapsulate statefulness away from the pure functional code
05:04:40 <Walpurgisnacht> Mmm
05:04:45 <Walpurgisnacht> Sounds useful
05:08:38 <oren> However in addition Haskell represents basically all data structures as monads, for uh... reasons.
05:15:31 <mauris> Walpurgisnacht: the programming definitions: they're a way to chain computations with a certain context together
05:15:55 <Walpurgisnacht> Mmm
05:15:56 <mauris> here "context" is a very vague thing, of course!
05:18:25 <mauris> it can mean, "optionally not returning a value" (a -> Maybe b), or "optionally returning many values representing possibilities for some non-deterministic computation" (a -> List b), or "computations using IO" (a -> IO b)
05:19:42 <mauris> in each of these, a monad is essentially some fluff that lets you chain (a -> m b), (b -> m c), (c -> m d), ... together in a way that makes sense
05:20:37 <mauris> (and also, supplies an (a -> m a) computation -- one that "does nothing", but in the context in question)
05:21:08 <mauris> here's a very simple computation that can fail and not return a value:
05:21:29 <mauris> @let halve x = if even x then Just (x `div` 2) else Nothing
05:21:31 <lambdabot> Defined.
05:21:41 <mauris> > [halve 2, halve 3, halve 4, halve 5, halve 6]
05:21:43 <lambdabot> [Just 1,Nothing,Just 2,Nothing,Just 3]
05:21:58 -!- hppavilion[1] has joined.
05:22:04 <Walpurgisnacht> I see
05:22:08 <Walpurgisnacht> How useful
05:22:10 <mauris> its type is:
05:22:13 <mauris> :t halve
05:22:14 <lambdabot> Integral a => a -> Maybe a
05:22:37 <mauris> okay, haskell made that confusing. but it's (Int -> Maybe Int), essentially.
05:23:13 <mauris> now, suppose we want to halve a thing three times, but if we fail along the way there, return Nothing
05:23:48 <mauris> we can't do: halve (halve (halve 24))
05:24:04 <mauris> because halve wants an Int, not a Maybe Int!
05:24:16 <mauris> so we use the confusingly-typed:
05:24:19 <mauris> :t (>>=)
05:24:21 <lambdabot> Monad m => m a -> (a -> m b) -> m b
05:24:46 <mauris> it takes the result of some computation, and the next step to pipe that value through
05:25:17 <mauris> so this works:
05:25:34 <mauris> > halve 24 >>= halve >>= halve
05:25:37 <lambdabot> Just 3
05:25:47 -!- nisstyre has quit (Read error: Connection reset by peer).
05:27:00 <mauris> this is much nicer than what we'd have to write otherwise: https://bpaste.net/show/898533b7f3f7
05:27:29 <pikhq> grfmbl
05:28:55 <mauris> Walpurgisnacht: do you know what the type IO a means, in Haskell?
05:29:24 <Walpurgisnacht> Not really I'm still pretty new with haskell
05:30:35 <mauris> ok. it's roughly something like... a recipe for how to get a value of the type 'a' from the outside world
05:30:45 <mauris> :t getChar -- for example
05:30:47 <lambdabot> IO Char
05:31:29 <mauris> the crucial thing to understand about these is that you can't "call" them!
05:32:14 <mauris> (oh, i meant to write: "get a value of the type 'a' from the outside world, optionally doing some other stuff on the side")
05:32:35 <mauris> in fact, the only one that ever gets ran is main :: IO ().
05:34:32 <Walpurgisnacht> ah
05:34:38 <mauris> when you write a Haskell program, all you're doing is describing how the steps for "main" fit together
05:35:37 <mauris> you can never execute a sub-step (there is no function "IO a -> a"), only combine a bunch of them and call it "main". this is why Haskell is pure!
05:36:14 <oren> but then how do you interleave inputs and outputs to write an interactive program?
05:37:04 <mauris> and as you have probably read somewhere, this "chaining steps together" stuff happens using a monad
05:38:00 <mauris> oren: i'll demonstrate that in a bit
05:38:34 <mauris> the type of (>>=), the "bind" combinator we used before, in the IO monad, is: IO a -> (a -> IO b) -> IO b
05:40:13 <mauris> which means: 'given an IO computation that gets us an "a", and another IO computation that WOULD return a "b" if only we knew which "a" to use, combine them into an IO computation returning a "b"'.
05:40:36 <mauris> the second thing (a -> IO b) might be confusing, but there's a really simple example:
05:40:38 <mauris> :t readFile
05:40:39 <lambdabot> FilePath -> IO String
05:41:03 <mauris> this WOULD be an IO String, but it needs to be told which file path to read from first
05:41:07 <mauris> :t readFile "foo.txt"
05:41:08 <lambdabot> IO String
05:41:18 <mauris> ^ and now it's an IO String.
05:41:45 <mauris> so now we can combine two IO steps together where the second depends on the result of the first
05:41:57 <mauris> :t getLine -- from standard input
05:41:59 <lambdabot> IO String
05:42:36 <mauris> :t putStrLn -- to standard output, with a dummy result () (think "void" in C-like langs)
05:42:37 <lambdabot> String -> IO ()
05:43:21 <mauris> now we can write a program that reads a line and prints it by piping them together with (>>=)!
05:43:48 <mauris> :t getLine >>= putStrLn -- has the right type to be "main"!
05:43:49 <lambdabot> IO ()
05:44:20 <mauris> we still haven't done any line-getting or string-putting, here. we *only* described a program that does those steps in order -- the second depending on the result of the first
05:45:16 <mauris> :t getLine >>= readFile >>= putStrLn
05:45:18 <lambdabot> IO ()
05:45:49 <mauris> another valid program: "get a line; with the result read a file; with the result write a string."
05:47:01 <mauris> :t (getLine >>= readFile) >>= putStrLn -- for clarity
05:47:03 <lambdabot> IO ()
05:48:22 <mauris> a common case, of course, is that the second step doesn't depend on the first -- we simply want to put them in order
05:48:32 <mauris> there's an operator for that, too:
05:48:34 <mauris> :t (>>)
05:48:36 <lambdabot> Monad m => m a -> m b -> m b
05:49:42 -!- hppavilion[1] has quit (Ping timeout: 244 seconds).
05:52:07 -!- JesseH has quit (Read error: Connection reset by peer).
05:52:42 <mauris> Walpurgisnacht: oren: https://bpaste.net/show/5525a8366547 <-- here is a more complicated example
05:53:42 <mauris> "\name -> blah" is a lambda. a very common pattern is:
05:54:27 <mauris> someAction >>= (\foo -> ...) -- where ... is some other action that needs the result of the previous one -- which we've called "foo"
05:55:01 <mauris> (in the type "IO a -> (a -> IO b) -> IO b", foo is our "a")
05:55:16 <mauris> (and the whole lambda is the "(a -> IO b)")
05:57:06 <mauris> oren: the program is interactive! we chain the steps "get line; print; get line; print" together to one big "main", but when it gets executed, those steps aren't necessarily done all at once; we can perform the first step without worrying about the third one.
05:58:16 <mauris> now you're thinking: "that looks freaking awful. i don't want to write those pesky >>= and >> and lambdas everywhere! i just want to write my steps in order and be done with it."
05:59:57 <mauris> and the Haskell people agree! there's some syntactic sugar called "do-notation" that lets you do just that: https://bpaste.net/show/7df7e88f4f6e
06:00:12 <oren> Eh. >> is ; and >>= is function composition where unlike C, the functions are written in the order they are executed
06:01:00 <oren> not so awful, just uses symbols in unorthodox ways
06:01:46 <mauris> "p >> q" became "p; q" (you can put semicolons instead of newlines), and "p >>= (x -> q)" became "x <- p; q"
06:02:43 <Walpurgisnacht> Jeeze I have a lot to learn
06:02:54 <mauris> do-notation is a bit confusing, because writing "do { line <- getLine; putStrLn line }" looks a *lot* like a bit of imperative code that you can execute. but in reality it's *still* just a pretty way to describe how they fit together!
06:03:59 <mauris> anyway, i'm derailing a bit. understanding do-notation is something you can worry about separately :)
06:04:07 <oren> that seems like a meaningless distiction to me. it executes when you run main, in the order you wrote it, just like in C
06:05:13 <pikhq> oren: That's the goal. The trick is, *not everything in Haskell works like that*.
06:05:52 <oren> The parts that aren't IO don't have to be in any order, but that is ALSO true in C with modern compilers
06:06:00 <pikhq> The goal is, you write imperative code, pretty much as imperative code, and then functional code as functional code.
06:07:29 <pikhq> Also worth noting -- IO is not the only monad.
06:07:33 <pikhq> You can write your own.
06:07:41 <pikhq> So, >> is ;, but it's a programmable ;
06:07:48 <oren> still, very nice of the Haskell makers to include an algol-derivative-mode
06:08:49 <oren> if haskell tutorials started with main = do that would make haskell much more popular
06:08:56 <mauris> the goal also is: there's no way to *call* the imperative parts from the functional parts. you can only click functional parts together, or click them onto imperative parts to get bigger imperative parts
06:09:31 -!- oren has quit (Remote host closed the connection).
06:09:46 -!- oren has joined.
06:12:17 <mauris> Walpurgisnacht: if you got lost at any point, feel free to point that out!
06:12:40 <pikhq> > let foo a = do { x <- a; return (x+1) } in foo [1,2,3]
06:12:42 <lambdabot> [2,3,4]
06:12:54 <Walpurgisnacht> ok
06:13:12 <mauris> the "real" way to monad enlightenment is: write a lot of code for each individual monad and then see the overarching pattern, because it's very vague
06:13:47 <mauris> the IO and Maybe monads do very different kinds of things in one way, but they're very similar in another!
06:14:39 <pikhq> (yes, a list is also a monad)
06:14:49 <oren> :t Just 1 >> Just 3
06:14:51 <lambdabot> Num b => Maybe b
06:16:47 <oren> > Just 1 >> Just 3
06:16:49 <lambdabot> Just 3
06:17:23 <oren> :t >>=
06:17:25 <lambdabot> parse error on input ‘>>=’
06:17:35 <oren> :t `>>=`
06:17:36 <lambdabot> parse error on input ‘`’
06:17:36 <mauris> > Just 1 >>= (\valueInsideJust -> Just 3) -- equivalent
06:17:38 <lambdabot> Just 3
06:18:13 <mauris> > Just 1 >>= (\valueInsideJust -> valueInsideTheJust + 3) -- also possible, and if we don't supply a Just to start with:
06:18:15 <lambdabot> Not in scope: ‘valueInsideTheJust’
06:18:15 <lambdabot> Perhaps you meant ‘valueInsideJust’ (line 1)
06:18:22 <mauris> > Just 1 >>= (\valueInsideJust -> valueInsideJust + 3) -- also possible, and if we don't supply a Just to start with:
06:18:24 <lambdabot> No instance for (Show b0)
06:18:24 <lambdabot> arising from a use of ‘show_M889533674962114763625185’
06:18:24 <lambdabot> The type variable ‘b0’ is ambiguous
06:18:38 <mauris> ugh. lambdabottttt
06:19:01 <mauris> oh, duh.
06:19:16 <mauris> > Just 1 >>= (\valueInsideJust -> Just (valueInsideJust + 3))
06:19:19 <lambdabot> Just 4
06:19:29 <mauris> > Nothing >>= (\valueInsideJust -> Just (valueInsideJust + 3))
06:19:30 <lambdabot> Nothing
06:20:06 <mauris> for >>= in Maybe, if we start with a failed computation, that failure gets propagated; else we continue with the result.
06:21:19 <mauris> > Just "heya" >>= Just >>= Just >>= Just >>= (\x -> Nothing) >>= Just >>= Just
06:21:22 <lambdabot> Nothing
06:21:39 <mauris> if *any* of the steps go wrong, the whole chain fails
06:22:13 <mauris> (Just is simply (\x -> Just x), so it's a valid right-hand operand to >>=)
06:26:06 <ashl> yay, a monad tutorial
06:26:42 <ashl> the thing to remember is that monads are a lot like burritos
06:39:33 <ashl> here's something depressing:
06:39:38 <ashl> "When the Java 8 library team was designing Optional there was some opposition to the idea that it should contain some useful methods (essentially Optional.map and Optional.flatMap) on the somewhat spurious grounds that they didn't want their Optional to be a Monad."
06:42:38 <oren> The Java team is always trying to restrict what sort of code can be written
06:45:03 <oren> they in particular loathe functions
06:53:29 <ashl> why did they add lambdas then
07:01:15 <izabera> how do i test if $myprogram is faster than $otherprogram if the disk io is the bottleneck?
07:01:39 -!- Walpurgisnacht has quit (Quit: Fuck me).
07:01:49 <izabera> uhm, i need a fast way to generate pseudorandom crap
07:02:30 <izabera> like a few gb
07:02:34 <izabera> any ideas? <.<
07:03:07 -!- shachaf has joined.
07:04:08 <shachaf> another pleasant interjection from our clear wire friend
07:09:16 -!- oerjan has joined.
07:10:46 <oren> umtry dd if=/dev/urandom of=temp bs=1048576 count=%nunmber of megabytes%
07:11:01 -!- AnotherTest has joined.
07:12:15 <izabera> that's saving it to disk
07:12:32 <izabera> how do i feed it to my programs without disk being the bottleneck?
07:14:18 -!- zadock has joined.
07:15:05 <ashl> prog </dev/urandom :P
07:15:32 <oerjan> <izabera> Great repository names are short and memorable. Need inspiration? How about strident-rutabaga. <-- sorry, but my heart long since decided on "reactive banana" hth
07:15:36 -!- zadock has quit (Remote host closed the connection).
07:16:41 <oerjan> wait yours doesn't exist, cheater!
07:17:01 -!- PinealGlandOptic has quit (Ping timeout: 244 seconds).
07:17:39 <izabera> i must admit that reactive banana is memorable
07:23:32 <Jafet> `` cc $'#include <stdio.h>\n#include <stdlib.h>\nmain() { srand(time(0)); for(;;) putchar(rand()); } | dd of=/dev/null bs=1M count=1K
07:23:33 <HackEgo> bash: -c: line 0: unexpected EOF while looking for matching `'' \ bash: -c: line 1: syntax error: unexpected end of file
07:23:38 <Jafet> `` cc $'#include <stdio.h>\n#include <stdlib.h>\nmain() { srand(time(0)); for(;;) putchar(rand()); } | dd of=/dev/null bs=1M count=1K
07:23:40 <HackEgo> bash: -c: line 0: unexpected EOF while looking for matching `'' \ bash: -c: line 1: syntax error: unexpected end of file
07:23:41 <Jafet> Oops
07:25:33 <izabera> well thanks
07:25:35 <Jafet> `` cc $'#include <stdio.h>\n#include <stdlib.h>\nmain() { srand(time(0)); for(;;) putchar(rand()); }' | dd of=/dev/null bs=1K count=100K 2>&1
07:25:43 <HackEgo> 102400+0 records in \ 102400+0 records out \ 104857600 bytes (105 MB) copied, 6.6342 s, 15.8 MB/s
07:25:47 <Jafet> That's unusually slow
07:26:10 <izabera> i wouldn't say "unusually"...
07:27:03 <izabera> you're throwing away most of the data you get from rand and you're printing one character at a time
07:32:05 <Jafet> `` cc $'#include <stdio.h>\n#include <stdlib.h>\nmain() { char buf[4096]; for(;;) fwrite(buf, sizeof buf, 1, stdout); }' | dd of=/dev/null bs=4K count=100K 2>&1
07:32:11 <HackEgo> 102400+0 records in \ 102400+0 records out \ 419430400 bytes (419 MB) copied, 5.78028 s, 72.6 MB/s
07:33:38 <Jafet> Oh, syscall overhead
07:33:50 -!- stalem has joined.
07:33:50 <Jafet> `` cc $'#include <stdio.h>\n#include <stdlib.h>\nmain() { char buf[1<<20]; for(;;) fwrite(buf, sizeof buf, 1, stdout); }' | dd of=/dev/null bs=1M count=1K 2>&1
07:33:52 <HackEgo> dd: warning: partial read (4096 bytes); suggest iflag=fullblock \ 469+555 records in \ 469+555 records out \ 782241792 bytes (782 MB) copied, 0.911976 s, 858 MB/s
07:34:02 <Jafet> `` cc $'#include <stdio.h>\n#include <stdlib.h>\nmain() { char buf[1<<20]; for(;;) fwrite(buf, sizeof buf, 1, stdout); }' | dd iflag=fullblock of=/dev/null bs=1M count=1K 2>&1
07:34:04 <HackEgo> 1024+0 records in \ 1024+0 records out \ 1073741824 bytes (1.1 GB) copied, 1.17474 s, 914 MB/s
07:50:45 <fizzie> putchar() doesn't really print "one character at a time" unless you specifically get an unbuffered stream.
07:52:11 <izabera> well there's the function call overhead
07:52:58 <fizzie> And HackEgo's performance characteristics aren't probably very good if you're looking for something "normal", since UML.
07:53:21 <izabera> what's that cc ?
07:55:03 -!- AnotherTest has quit (Ping timeout: 252 seconds).
07:55:42 <oerjan> `cat bin/cc
07:55:44 <HackEgo> ​#!/bin/sh \ echo "$@" | sed 's/\\/\n/g' >/tmp/a.c && gcc -w -Wfatal-errors -std=c11 -O2 /tmp/a.c -o /tmp/a.out && /tmp/a.out
07:56:18 -!- PinealGlandOptic has joined.
07:59:20 <stalem> that's pretty convenient
08:00:21 <fizzie> I don't like it using a useless temporary file for the source.
08:00:43 <oerjan> !show tell
08:00:43 <EgoBot> sh xargs printf "%s: "; sed 's/.*# *//g' interps/$1
08:01:01 <stalem> fizzie: what would you have it use instead?
08:01:38 * stalem suddenly remembers show n tell
08:02:10 <oerjan> i'm not sure we have/had that in norway
08:02:27 <stalem> be glad you didn't/don't
08:02:59 <fizzie> `` sed -I 's{>/tmp/a.c &&}{|};s|/tmp/a.c|-x c -|' bin/cc
08:03:00 <HackEgo> sed: invalid option -- 'I' \ Usage: sed [OPTION]... {script-only-if-no-other-script} [input-file]... \ \ -n, --quiet, --silent \ suppress automatic printing of pattern space \ -e script, --expression=script \ add the script to the commands to be executed \ -f script-file, --file=script-file \
08:03:11 <fizzie> `` sed -e 's{>/tmp/a.c &&}{|};s|/tmp/a.c|-x c -|' bin/cc
08:03:12 <HackEgo> sed: -e expression #1, char 37: unterminated `s' command
08:03:13 <stalem> i don't even get the whole point of it. 'look at my stuff, this is what i own'?
08:03:22 <stalem> ugh
08:03:44 <fizzie> `` sed -e 's,>/tmp/a.c &&,|,;s|/tmp/a.c|-x c -|' bin/cc
08:03:44 <HackEgo> ​#!/bin/sh \ echo "$@" | sed 's/\\/\n/g' | gcc -w -Wfatal-errors -std=c11 -O2 -x c - -o /tmp/a.out && /tmp/a.out
08:03:57 <fizzie> `` sed -i -e 's,>/tmp/a.c &&,|,;s|/tmp/a.c|-x c -|' bin/cc
08:04:00 <HackEgo> No output.
08:05:56 <oerjan> stalem: wikipedia suggests it's to "teach public speaking", which is admittedly something no one ever taught me afair.
08:06:04 <fizzie> `cc #include <stdio.h> \ main(){puts("you ok?");}
08:06:06 <HackEgo> you ok?
08:06:08 <oerjan> so maybe i should regret we didn't have it
08:06:17 <fizzie> I'd use that instead.
08:06:43 <stalem> fizzie: haha good point!
08:07:15 <stalem> oerjan: that's a pretty valid reason, but then again i must be the exception to the rule or that system doesn't work
08:07:34 <stalem> imo there are far better ways to teach public speaking than showing off material things your parents got you
08:09:17 -!- AnotherTest has joined.
08:12:49 <fizzie> Our `cc is much less convenient than ##c's candide's ,cc, which does all kinds of intelligent stuff, like having an automated list of includes, handling #include <x> without manual newlines, wrapping a main automatically if not present (even extracting other functions out of the wrapper if you have mixed functions and code), supporting input, automatically printing local variables and the last ...
08:12:55 <fizzie> ... statement's value if you don't output anything, and so on and so forth.
08:12:58 <fizzie> I mean, compare `cc #include <stdio.h> \ int main(void) { printf("%zu", sizeof (int)); } vs ,cc size_t s = sizeof (int); which adds includes, wraps in main and auto-prints s.
08:13:24 <ashl> how is candide implemented?
08:13:24 <shachaf> fizzie: you should improve it twh
08:14:00 <oerjan> @tell hppavilion[1] <hppavilion[1]> I should stop before I make someone very powerful* angry <-- maybe too late, according to /whois, walrus has a redhat cloak.
08:14:00 <lambdabot> Consider it noted.
08:14:02 <fizzie> I don't think we need all of that, but maybe I could add the "automatically include standard headers" + main-wrapping parts.
08:14:15 <shachaf> `cat bin/cc
08:14:16 <HackEgo> ​#!/bin/sh \ echo "$@" | sed 's/\\/\n/g' | gcc -w -Wfatal-errors -std=c11 -O2 -x c - -o /tmp/a.out && /tmp/a.out
08:14:34 <fizzie> ashl: Huge gobs of Perl parsing code with regexps + lots of plumbing to run the stuff in a separate qemu VM.
08:14:42 <ashl> :|
08:14:52 <fizzie> Oh, and gdb for the "print locals and last statement" parts.
08:15:16 <fizzie> (You can also call into gdb from the code, to e.g. print types and such.)
08:15:34 <shachaf> Can't we just have candide join this channel?
08:15:42 <shachaf> That's what we do with all the other bots.
08:16:21 <oerjan> fizzie: `interp's cc already does a lot of that stuff, doesn't it?
08:16:34 <oerjan> `! cc printf("hi")
08:16:34 <HackEgo> ​/hackenv/bin/!: 4: exec: ibin/cc: not found
08:16:40 <oerjan> `! gcc printf("hi")
08:16:40 <HackEgo> ​/hackenv/bin/!: 4: exec: ibin/gcc: not found
08:16:47 <oerjan> `! c printf("hi")
08:16:50 <HackEgo> hi
08:17:13 <fizzie> oerjan: Badly, but it does make an attempt, yes.
08:18:31 <fizzie> It broke for some things, although I don't exactly remember what.
08:20:04 <fizzie> `! c main(){ printf("%d", f(42)); } /* at least for this, though I guess you quite rarely need an explicit main */
08:20:06 <HackEgo> Does not compile.
08:20:20 <fizzie> It's supposed to try to compile both with and without the wrappings, but there was something wrong about that.
08:20:27 <fizzie> Oh, and the error messages are atrocious.
08:21:21 <oerjan> yes, what's wrong is that gcc these days supports putting essentially anything inside main, so the test for an error doesn't work
08:21:43 <oerjan> and there's no option to disable this
08:22:31 <oerjan> ! c main(){ printf("%d", f(42)); }
08:22:39 <oerjan> !c main(){ printf("%d", f(42)); }
08:22:42 <EgoBot> Does not compile.
08:22:45 <fizzie> Oh, I forgot the f() in there.
08:22:50 <fizzie> Well, *that* wouldn't compile anyway.
08:22:56 <fizzie> (It was left from an earlier test.)
08:23:06 <oerjan> !c main(){ printf("%d", 42); }
08:23:07 <EgoBot> 42
08:23:15 <fizzie> Huh, would you look at that.
08:23:19 <oerjan> `! c main(){ printf("%d", 42); }
08:23:21 <HackEgo> 42
08:23:22 <fizzie> Although it's still probably using the wrapper.
08:23:44 <fizzie> Also I have no idea how to use preprocessor directives with !c, since I don't know how to make a newline in it.
08:23:45 <oerjan> maybe we found some workaround that i've forgotten
08:24:56 <oerjan> doesn't it also use the \n trick
08:25:48 <oerjan> !c #include <stdio.h> \n int main(void) { printf("%zu", sizeof (int)); }
08:25:48 <EgoBot> No output.
08:26:08 <oerjan> !c int main(void) { printf("%zu", sizeof (int)); }
08:26:09 <EgoBot> No output.
08:26:20 <oerjan> `! c #include <stdio.h> \n int main(void) { printf("%zu", sizeof (int)); }
08:26:22 <HackEgo> 4
08:26:31 <oerjan> apparetnly not
08:28:05 <fizzie> Yeah, I remember getting "No output." from it quite often.
08:29:10 <shachaf> !help
08:29:10 <zemhill__> shachaf: I do !zjoust; see http://zem.fi/bfjoust/ for more information.
08:29:10 <EgoBot> ​help: General commands: !help, !info, !bf_txtgen. See also !help languages, !help userinterps. You can get help on some commands by typing !help <command>.
08:29:36 <oerjan> is zemhill__ still broken
08:29:43 <shachaf> !zjoust []
08:29:43 <zemhill__> shachaf: "!zjoust progname code". See http://zem.fi/bfjoust/ for documentation.
08:29:51 <shachaf> !zjoust hi []
08:30:08 <fizzie> Doesn't look so good.
08:30:09 <oerjan> looks like
08:31:06 <fizzie> "SyntaxError: Unexpected end of input" on the web. Should probably look into fixing it.
08:31:23 <shachaf> spot of the SyntaxError, governor?
08:32:35 <fizzie> "shachaf.hi" did end up in the hill log.
08:32:49 * oerjan does an oots spot check
08:32:58 <fizzie> Maybe I'll just restart it.
08:32:59 <oerjan> n`olist
08:33:06 -!- zemhill__ has quit (Remote host closed the connection).
08:33:23 <fizzie> bfjoust@selene:~/bfjoust$ ./zhillbot.rb hill
08:33:23 <fizzie> /usr/bin/env: ruby: No such file or directory
08:33:31 <shachaf> `? twh
08:33:32 <HackEgo> twh would help, but is an hth derivative. hth. twh. hand.
08:33:55 <oerjan> fizzie: someone stole your precious minerals?
08:34:34 <shachaf> oerjan: what's your latest olist predicton
08:34:45 <oerjan> i predict 1002 hth
08:34:55 <fizzie> oerjan: I'm confused. There's no sign of ruby on the system, but it's worked before.
08:35:03 <oerjan> fizzie: fiendish
08:35:34 <oerjan> are you sure you didn't move servers
08:37:12 -!- Patashu has joined.
08:38:20 <shachaf> oerjan: this vampire gaze thing seems p. powerful
08:38:21 <fizzie> I'm pretty sure, because I just ^c'd the bot and tried to run the same command from the bash history.
08:38:35 <shachaf> oerjan: apparently the only thing you can do is succeed in a will save
08:38:48 <shachaf> so maybe the vampire will keep using it every turn until it works
08:38:50 <fizzie> I did upgrade Debian releases, I think it lost ruby 1.9 and I had explicitly asked for that, so it didn't install 2.1 instead.
08:38:54 <shachaf> would make for a good storyline
08:41:36 <shachaf> oerjan: whoa whoa whoa, running water is anti-vampire
08:41:50 <fizzie> On the positive side, in the meanwhile the matrix library I was using (that kepts segfaulting etc.) has graduated from version numbers 0.0.x to 0.2.0, which maybe might make it not crash any more.
08:42:40 -!- zemhill has joined.
08:43:02 <fizzie> !zjoust hi []
08:43:03 <zemhill> fizzie.hi: points -31.05, score 3.57, rank 47/47
08:43:13 <fizzie> Well, that was easy.
08:43:35 <oerjan> yay
08:43:51 <fizzie> I remember spending hours and doing a really crazy distcc trick to get the matrix lib installed on the previous server, because it didn't have enough memory to compile the native parts.
08:44:06 <fizzie> At least this one has fully half a gig.
08:44:19 <fizzie> That's, like, one sixth of my phone's RAM.
08:45:26 <oerjan> fancy
08:45:57 <shachaf> Your phone has 3GB RAM?
08:46:00 <oerjan> shachaf: i keep wondering if anything could happen to free the trapped real durkon
08:46:25 <shachaf> who's to say what's real hth
08:46:28 -!- hppavilion[1] has joined.
08:46:31 <fizzie> shachaf: I think so, yes. It seems like a strange but popular number.
08:46:40 <fizzie> Wikipedia claims it does.
08:46:55 <shachaf> Is it a Nexus 6?
08:46:59 <fizzie> Surprisingly, yes.
08:47:25 <oerjan> and also i'm still wondering if the other priests will assist somehow
08:47:40 <fizzie> Although people at work have been recommending we'd explicitly not get Nexus devices for normal phone use, because our alpha test population is really skewed compared to the rest of the world.
08:48:01 <myname> huh?
08:48:05 <oerjan> and the freak probability of belkar showing up once more
08:49:17 <fizzie> What was the 'huh?' about?
08:49:31 <oerjan> hm, i never found that azure city new year celebration
08:49:43 <shachaf> ?
08:51:16 <oerjan> oh hm maybe...
08:53:06 <oerjan> right there http://www.giantitp.com/comics/oots0315.html
08:54:25 <shachaf> ?
08:55:13 <oerjan> !
08:57:45 <shachaf> not sure what you're getting at twh
09:00:25 -!- shikhin has quit (Read error: Connection reset by peer).
09:00:29 -!- heddwch has quit (Read error: Connection reset by peer).
09:00:29 -!- FireFly has quit (Read error: Connection reset by peer).
09:00:44 <oerjan> shachaf: the calendar thing
09:01:02 <shachaf> ah
09:01:06 -!- heddwch has joined.
09:01:36 <shachaf> what about it
09:03:42 <shachaf> oerjan: whoa whoa whoa, http://www.giantitp.com/comics/oots0326.html
09:03:48 <shachaf> evidence that the world won't be destroyed
09:03:54 <oerjan> well still not much. it doesn't exactly say how long after solstice it is
09:04:41 -!- shikhin has joined.
09:04:47 -!- FireFly has joined.
09:08:21 <oerjan> shachaf: OKAY
09:10:14 <shachaf> oerjan: hmm, durkon still needs to return home posthumously
09:10:23 <shachaf> so it seems unlikely that he'd be resurrected
09:10:43 <shachaf> though i suppose you could count everything as posthumous, even after resurrection
09:10:50 <oerjan> hm
09:11:36 <shachaf> but he also needs to bring death and destruction when he returns home
09:11:43 <shachaf> all signs point to vampire
09:14:34 <fizzie> ^8ball vampire
09:14:34 <fungot> No.
09:14:39 <fizzie> Sorry, that sign doesn't
09:15:00 <oerjan> what death and destruction
09:15:38 <oerjan> i do not recall that part.
09:15:57 <shachaf> that was the prophecy in book 0
09:16:14 <shachaf> now available for the first time in digital pdf format from gumroad
09:16:15 <shachaf> hth
09:16:34 <fizzie> Do you get a cut or something?
09:16:59 <shachaf> ^8ball
09:16:59 <fungot> No.
09:17:21 <shachaf> admittedly it wasn't an oracle prophecy in particular
09:17:25 <oerjan> i will have none of your fake prophecies
09:18:12 <oerjan> i shall define canon as "only what i don't need to pay for" hth
09:18:53 <HackEgo> [wiki] [[SPBCL]] N http://esolangs.org/w/index.php?oldid=44019 * Notjohnconway * (+1815) Created page with "'''Simple program-based computing language''' (SPBCL) is a Turing-complete [[esoteric programming language]] developed by [[User:Notjohnconway]] that are based off of the simp..."
09:19:27 <shachaf> oerjan: what about all the time investment hth
09:20:13 <oerjan> not relevant to my bank account hth
09:20:39 -!- rdococ has quit (Read error: Connection reset by peer).
09:32:22 -!- rdococ has joined.
09:32:22 -!- rdococ has quit (Read error: Connection reset by peer).
09:33:23 <oerjan> GG prediction: finding that doctor will require Agatha to go to martellus's grandmother's party
09:35:57 <mauris> ^8ball is this always No.
09:35:57 <fungot> No.
09:36:13 <oerjan> fungot: thanks for clearing that up.
09:36:14 <fungot> oerjan: well, except fnord ( heh) hi yome! how's going the work on threading in gambit, but i prefer things to be potentially confused about. introduce it only after you are certain that they are not
09:37:21 -!- mauris_ has joined.
09:37:21 -!- mauris_ has quit (Changing host).
09:37:21 -!- mauris_ has joined.
09:40:24 -!- rdococ has joined.
09:40:36 -!- mauris has quit (Ping timeout: 264 seconds).
09:46:01 -!- mauris has joined.
09:46:02 -!- mauris has quit (Changing host).
09:46:02 -!- mauris has joined.
09:49:07 -!- mauris_ has quit (Ping timeout: 246 seconds).
10:00:35 <b_jonas> how do I ask git to tell me the names of config files it uses?
10:04:17 -!- mauris_ has joined.
10:07:31 -!- mauris has quit (Ping timeout: 244 seconds).
10:28:20 -!- rdococ_ has joined.
10:28:37 -!- rdococ has quit (Read error: Connection reset by peer).
10:36:57 -!- rdococ_ has quit (Ping timeout: 244 seconds).
10:37:44 -!- rdococ has joined.
10:42:30 -!- rdococ has quit (Ping timeout: 260 seconds).
10:46:15 -!- rdococ has joined.
10:46:21 -!- fowl has quit (Quit: http://quassel-irc.org - Chat comfortably. Anywhere.).
10:46:59 -!- Guest19768 has changed nick to fowl.
10:47:02 -!- fowl has quit (Changing host).
10:47:02 -!- fowl has joined.
10:47:02 -!- fowl has quit (Changing host).
10:47:02 -!- fowl has joined.
10:53:00 <fizzie> ^8ball is completely deterministic.
10:53:00 <fungot> No.
10:53:13 <fizzie> ^8ball And I mean more by that than just saying it's always no.
10:53:13 <fungot> Yes.
10:53:20 <fizzie> There we go.
10:53:29 <fizzie> Anecdotally, it seems a bit no-biased.
11:01:15 -!- heddwch has quit (Read error: Connection reset by peer).
11:01:22 -!- heddwch has joined.
11:03:18 <oerjan> ^8ball Yes.
11:03:19 <fungot> Yes.
11:03:22 <oerjan> ^8ball No.
11:03:23 <fungot> Yes.
11:03:40 <oerjan> i detect a unique fixpoint hth
11:09:38 -!- atslash has joined.
11:14:12 -!- atslash has quit (Ping timeout: 255 seconds).
11:15:07 -!- atslash has joined.
11:27:26 <stalem> ^8ball has a Maybe answer?
11:27:27 <fungot> No.
11:28:01 <stalem> can i pipe arguments to `c? and if so how?
11:28:50 <stalem> e.g. `c main(args){...} | args...
11:29:05 <fizzie> There's no `c -- there's !c and `cc.
11:29:08 <oerjan> i don't think so.
11:29:13 <fizzie> I don't think either supports command line arguments.
11:29:14 -!- Phantom_Hoover has joined.
11:29:17 <fizzie> Or standard input, for that matter.
11:29:21 <fizzie> They could easily, though.
11:29:35 <oerjan> you have gcc itself, anyway.
11:30:23 <fizzie> Candide ,cc lets you do -input=[...] at the end of the line, and the rest of the line will become the stdin. If not specified, stdin reads from `fortune`.
11:30:24 <stalem> hmm i thought `c was used earlier today, as short notation for `cc, but maybe that was !c?
11:30:57 <fizzie> Discounting spaces, digits, punctuation etc. (because all these letter frequency tables omit them), it looks like the ^8ball yes/no distribution should be 56.832% vs. 43.168% biased against one or another.
11:31:28 <oerjan> EgoBot's !c supports standard input if you use the !addinterp mechanism.
11:31:38 <oerjan> or should, at least.
11:31:39 <stalem> hm ok tyfh
11:32:25 <stalem> there's a lot of commands and options and fun in this channel
11:32:25 <oerjan> stalem: that was probably `! c which is a port from EgoBot to HackEgo
11:32:33 <stalem> my brain is going to overload
11:32:39 <stalem> oic
11:33:23 <fizzie> ^thanks bots
11:33:23 <fungot> Thanks, bots. Thots.
11:33:52 <fizzie> That's a port of `thanks from HackEgo to fungot.
11:33:52 <fungot> fizzie: uh, sorry, i'll give you that
11:34:07 <fizzie> fungot: No, no, it's cool.
11:34:07 <fungot> fizzie: i can fnord on?" fnord fnord" fnord" fnord worried that there were more
11:34:15 <stalem> hah, soon i'm gonna need to write down a cheat sheet
11:34:16 <fizzie> fungot: You seem to be fnording on quite well.
11:34:16 <fungot> fizzie: hey bitwize :) good luck :) yeah, well, hrmm. i don't
11:35:32 -!- oerjan has quit (Quit: Later).
11:35:34 <stalem> `thanks hanks
11:35:35 <HackEgo> Thanks, hanks. Thanks.
11:36:37 <stalem> hm so we have two bots, having multiple commands doing the same thing
11:36:43 <fizzie> ^thanks tanks
11:36:43 <fungot> Thanks, tanks. Thanks.
11:36:44 <fizzie> Yes.
11:37:01 <stalem> fun!
11:37:11 <fizzie> Some of them were added as backups when one or the other bot was down/away.
11:37:11 <stalem> ^thanks tom thanks
11:37:11 <fungot> Thanks, tom thanks. Thom thanks.
11:37:45 <stalem> ah yes, backups are always a good option i reckon
11:37:56 <fizzie> ^prefixes
11:37:57 <fungot> Bot prefixes: fungot ^, HackEgo `, EgoBot !, lambdabot @ or ?, thutubot +, metasepia ~, idris-bot ( , jconn ) , blsqbot !
11:37:58 <fizzie> `prefixes
11:37:59 <HackEgo> Bot prefixes: fungot ^, HackEgo `, EgoBot !, lambdabot @ or ?, thutubot +, metasepia ~, idris-bot ( , jconn ) , blsqbot !
11:38:01 <fizzie> !prefixes
11:38:02 <EgoBot> Bot prefixes: fungot ^, HackEgo `, EgoBot !, lambdabot @ or ?, thutubot +, metasepia ~, idris-bot ( , jconn ) , blsqbot !
11:38:12 <stalem> it'd be fun getting them to talk to eachother
11:38:18 <stalem> damn that's quite a handful
11:38:36 <fizzie> Of those, thutubot, metasepia, blsqbot probably aren't here any more.
11:38:40 <myname> the bots prefix messages with a zero width nonbreaking space
11:38:48 <fizzie> myname: Well, some of them.
11:39:02 <fizzie> E.g. fungot doesn't, it just has a hardcoded ignore list.
11:39:02 <fungot> fizzie: be a dear and pass on a multiple-values value in a range of ways to make the wings grow, i heard the name.
11:39:06 <fizzie> ^ignore
11:39:06 <fungot> ^(EgoBot|HackEgo|toBogE|Sparkbot|optbot|lambdabot|oonbotti|metasepia|ruddy|preflex|evalj|idris-bot|passwordBOT|jconn|applybot|blsqbot|fnordbot)!
11:39:14 <fizzie> Botloops are a proud tradition of the channels.
11:39:28 <myname> wtf passwordBOT?
11:39:30 <stalem> nice
11:40:20 <fizzie> That ignore list is even more out of date.
11:40:58 <stalem> well, there's really no reason to clean it up innit?
11:41:09 <fizzie> No, I just keep appending to it.
11:41:15 <stalem> and if nothing else, it can serve as a piece of nostalgia
11:41:25 <stalem> ^ignore
11:41:38 <stalem> (imagine list here)
11:41:39 <fizzie> It's an owner-only command, since it also allows modifying it.
11:41:42 <stalem> aaah the good old times
11:41:44 <fizzie> It's technically not a list, it's a single regex.
11:41:58 <stalem> a regex with a list of matches?
11:42:04 <stalem> regex consisting*
11:42:11 <fizzie> Yes. So I guess it's still a list.
11:42:26 <stalem> hm but now you got me thinking is it really?
11:42:41 -!- llue has quit (Ping timeout: 250 seconds).
11:42:46 <fizzie> Hard to say. The ! is part of the regex, and certainly not list-like.
11:42:51 <stalem> isn't it more of a boolean expression? or maybe it doesn't become that until the items are matched against the test string
11:43:20 <stalem> i think you were right the first time; it's simply just a regex!
11:51:15 -!- jix has quit (Remote host closed the connection).
11:52:54 -!- jix has joined.
12:20:04 -!- Patashu has quit (Ping timeout: 272 seconds).
12:28:05 -!- ais523 has joined.
12:39:08 -!- rdococ has quit (Changing host).
12:39:08 -!- rdococ has joined.
12:47:06 -!- Frooxius has quit (Quit: *bubbles away*).
12:58:27 -!- Frooxius has joined.
13:00:05 -!- ais523 has quit (Quit: meeting).
13:19:30 -!- `^_^v has joined.
13:47:04 -!- J_Arcane has left.
13:47:31 -!- rdococ has quit (Read error: Connection reset by peer).
13:47:42 -!- rdococ has joined.
13:47:42 -!- rdococ has quit (Changing host).
13:47:42 -!- rdococ has joined.
13:54:46 -!- rdococ_ has joined.
13:54:47 -!- rdococ has quit (Read error: Connection reset by peer).
13:54:49 -!- rdococ_ has quit (Changing host).
13:54:49 -!- rdococ_ has joined.
13:54:56 -!- rdococ_ has changed nick to rdococ.
13:59:42 -!- grotewold has joined.
14:00:17 -!- grotewold has quit (Max SendQ exceeded).
14:01:54 -!- grotewold has joined.
14:02:30 -!- grotewold has quit (Max SendQ exceeded).
14:03:04 -!- TieSoul has joined.
14:04:05 -!- grotewold has joined.
14:04:40 -!- grotewold has quit (Max SendQ exceeded).
14:06:18 -!- grotewold has joined.
14:07:50 -!- TieSoul has quit (Ping timeout: 260 seconds).
14:08:35 -!- TieSoul has joined.
14:09:13 -!- rdococ has quit (Read error: Connection reset by peer).
14:27:00 -!- TieSoul has quit (Remote host closed the connection).
15:06:15 <tswett> ^8ball Yes.
15:06:15 <fungot> Yes.
15:06:18 <tswett> ^8ball No.
15:06:18 <fungot> Yes.
15:06:38 <tswett> ^8ball vampire
15:06:38 <fungot> No.
15:06:40 <tswett> ^8ball
15:06:40 <fungot> No.
15:06:44 <tswett> ^8ball hth
15:06:44 <fungot> No.
15:07:33 <tswett> I think that the ^8ball command is completely deterministic.
15:08:07 <tswett> Indeed, I know for a fact that the ^8ball command is completely deterministic if and only if the Riemann hypothesis is true.
15:08:12 <tswett> Hth.
15:10:51 <coppro> deterministic with respect to what inputs?
15:21:45 -!- x10A94 has joined.
15:23:25 -!- JesseH has joined.
15:32:19 -!- AnotherTest has quit (Ping timeout: 260 seconds).
15:34:39 <Taneb> ^8ball Am I Taneb?
15:34:39 <fungot> No.
15:34:47 <Taneb> huh
15:34:49 <Taneb> ^8ball Am I Taneb?
15:34:49 <fungot> No.
15:34:55 <Taneb> Also huh
15:42:20 <int-e> ^8ball did Taneb invent the 8ball?
15:42:20 <fungot> No.
15:42:30 <Taneb> There you go
15:42:40 <int-e> ^8ball Or did Taneb invent the 8ball?
15:42:40 <fungot> Yes.
15:43:03 <int-e> I just remembered... it uses the parity of the length of the input string.
15:43:40 -!- MDream has changed nick to MDude.
15:44:25 <Taneb> So, the Riemann hypothesis is true?
15:44:46 <int-e> It depends on how you ask, and how much meaning you attach to fungot's answers...
15:44:46 <fungot> int-e: when i go out to dinner with me? 3 messages in 36 seconds is too many.' will always be than o(1) vector access?
15:44:58 <int-e> fungot: deep
15:44:58 <fungot> int-e: i find both topics fnord expect more topics like befunge than sex/ gender/ tg ones...
15:45:05 <int-e> fungot: never mind
15:45:05 <fungot> int-e: something like 3 euros.
15:45:15 -!- TieSoul has joined.
15:45:58 -!- int-e has set topic: The fnord never strikes twice in the same phrase | https://dl.dropboxusercontent.com/u/2023808/wisdom.pdf http://codu.org/logs/_esoteric/ http://tunes.org/~nef/logs/esoteric/ | http://esolangs.org/.
15:48:47 <stalem> it's always a nice surprise when your code doesn't do what you expected, but the results are great anyway http://imgur.com/a/JDEar#3
15:49:30 * stalem goes on to turn it into a proper gif
15:52:54 <stalem> fungot: what do you think, is it a good idea?
15:52:54 <fungot> stalem: are we trying to do with the repl? why does it take to get scheme48 support :) then i love it
15:53:15 <stalem> fungot: glad to hear
15:53:16 <fungot> stalem: ( i.e. flatt)) is cadr
16:08:39 <shachaf> `olist 1002
16:08:40 <HackEgo> olist 1002: shachaf oerjan Sgeo FireFly boily nortti
16:20:43 -!- TieSoul_ has joined.
16:23:38 -!- TieSoul has quit (Ping timeout: 260 seconds).
16:23:46 -!- hppavilion[1] has quit (Ping timeout: 240 seconds).
16:26:41 -!- hppavilion[1] has joined.
16:26:58 -!- grotewol_ has joined.
16:28:15 -!- grotewold has quit (Read error: Connection reset by peer).
16:30:28 -!- hppavilion[1]_ has joined.
16:31:24 -!- hppavilion[1] has quit (Ping timeout: 244 seconds).
16:31:53 -!- grotewol_ has quit (Quit: My Mac has gone to sleep. ZZZzzz…).
16:37:34 <stalem> fungot: do you enjoy coffee?
16:37:34 <fungot> stalem: nothing should be imposed upon other programmers due to the negative connotations associated with the word made ( though whether or not an rdbms, you're going to release next cfunge very soon.
16:37:51 <stalem> fungot: whoa ok nvm i asked
16:37:51 <fungot> stalem: which gets executed from the ram, spamd, mysqld and apache eat the rest argument list?
16:47:51 -!- APic has quit (Ping timeout: 265 seconds).
16:48:34 <hppavilion[1]_> Google has a new logo
16:48:37 <hppavilion[1]_> I do not like it
16:48:39 <hppavilion[1]_> -.-
16:48:45 <hppavilion[1]_> They should've consulted me first
16:50:34 <stalem> i find i'm quite ambivalent towards it. at least it's modern
16:51:56 <stalem> plus nowadays their doodles are quite entertaining
16:52:10 <stalem> like the minimoog one on moog's birthday iirc
16:55:15 -!- Slereah__ has quit.
16:55:59 <Taneb> `quote natural numbers
16:56:01 <HackEgo> 395) <oklofok> god created the natural numbers, the rationals were done by man and the work was finally completed (topologically) by satan himself
16:57:24 <int-e> `quote kronecker
16:57:25 <HackEgo> No output.
16:58:09 -!- grotewold has joined.
16:58:11 -!- atslash has quit (Quit: This computer has gone to sleep).
16:59:18 <int-e> ("God made the integers, all else is the work of man." - Leopold Kronecker)
16:59:41 <int-e> (But of course he didn't say it in English. Are translated quotes still quotes?)
17:00:20 -!- hppavilion[1]_ has quit (Ping timeout: 244 seconds).
17:01:28 <int-e> `quote never
17:01:29 <HackEgo> 6) <oerjan> what, you mean that wasn't your real name? <Warrigal> Gosh, I guess it is. I never realized that. \ 57) <fungot> ehird: every set can be well-ordered. corollary: every set s has the same diagram used from famous program talisman with fnord windows to cascade, someone i would never capitalize " i" \ 123) <cpressey> Never ever use a quot
17:02:05 <int-e> `quote never ever
17:02:06 <HackEgo> 123) <cpressey> Never ever use a quote which contains both the words "aloofness" and "gel" (verb). \ 560) <monqy> never ever do bacon floats or i will hunt you down and kill you augh my leg
17:05:45 -!- TieSoul_ has changed nick to TieSoul.
17:27:02 -!- quietello has quit (Remote host closed the connection).
17:40:30 -!- oerjan has joined.
17:41:52 -!- atslash has joined.
17:46:00 <tswett> ^8ball Am I Taneb?
17:46:00 <fungot> No.
17:46:04 <tswett> ^8ball Am I tswett?
17:46:04 <fungot> Yes.
17:46:19 <Taneb> ^8 Are you Taneb?
17:47:06 <tswett> `quote translated
17:47:07 <HackEgo> 1174) <shachaf> pippi långstrump's name is translated as "gilgi" or "bilbi" usually <ion> Does she have a ring of power?
17:47:21 <tswett> `quote onion
17:47:22 <HackEgo> No output.
17:47:38 <oerjan> power she has. if it's from a ring she hides it well.
17:48:30 <Taneb> ^8ball Are you Taneb?
17:48:30 <fungot> No.
17:48:45 <tswett> The fact that there are no quotes about onions is flamingly unacceptable.
17:49:39 <shachaf> oerjan: new olist hth
17:53:52 <oerjan> tdnh i've got logs
17:54:38 <oerjan> tswett: does it bring tears to your eyes?
17:56:27 <shachaf> lumberjan
17:56:36 <oerjan> fungot: EgoBot!
17:56:36 <fungot> oerjan: sounds odd. i can't use
17:56:53 <oerjan> oh wait it has to be first in the privmsg
17:57:35 <shachaf> ^8ball sines point to
17:57:35 <fungot> Yes.
17:58:04 <oerjan> ^8ball signs point to
17:58:04 <fungot> Yes.
17:58:20 -!- grotewold has quit (Quit: My Mac has gone to sleep. ZZZzzz…).
17:58:35 <oerjan> i guess the oracular geometry is the same, regardless of spelling
17:59:22 <shachaf> the first one is oracular trigonometry
18:00:52 -!- grotewold has joined.
18:01:28 <oerjan> <int-e> I just remembered... it uses the parity of the length of the input string. <-- i don't think it's length...
18:01:35 <oerjan> ^8ball yes
18:01:35 <fungot> Yes.
18:01:39 <oerjan> ^8ball yet
18:01:40 <fungot> No.
18:05:52 <oerjan> ah looks like the priests won't be helping.
18:05:59 -!- Thisbe has joined.
18:08:11 <shachaf> oerjan: oh, http://www.giantitp.com/comics/oots0874.html is the other honorable soul thing i was looking for hth
18:13:16 -!- APic has joined.
18:18:05 -!- bb010g has joined.
18:29:47 -!- atrapado has joined.
18:32:59 <nortti> idea: esoteric chat protocol. character encoding should be ita2 (with NUL) padding. thought about having even stuff like backspaces sent real-time, but then discovered ITA2 has no backspace/DEL char
18:33:34 <shachaf> `? nortti
18:33:35 <HackEgo> nortti boy. very nortti boy.
18:33:36 -!- hppavilion[1]_ has joined.
18:33:55 * puckipedia remembers something like that
18:33:57 <myname> lol
18:34:01 <puckipedia> (as in, the idea from nortti)
18:34:31 <nortti> also thought about limiting communication to half-duplex so it could be implemented over some rather fun systems, and having either all clients in a network, or just servers, be connected in a ring topology
18:34:54 <nortti> so, if one drops, all communication dies
18:35:11 <hppavilion[1]_> Hellu
18:35:17 -!- hppavilion[1]_ has changed nick to hppavilion[1].
18:35:44 <myname> so you cannot add clients?
18:36:08 <nortti> you can, but you must have two other clients agree to add you between them, and a network downtime
18:36:30 <myname> i like it
18:37:42 <myname> sending realtime together with token ring would basically make using it impossible
18:37:49 <myname> how do you deal.with that?
18:38:01 <tswett> ^8ball x
18:38:02 <fungot> No.
18:38:03 <tswett> ^8ball xx
18:38:03 <fungot> No.
18:38:12 <fizzie> tswett: spoiler it's parity
18:38:21 <tswett> Of the sum of the characters or something?
18:38:24 <fizzie> Yes.
18:38:52 <nortti> myname: maybe have it have something like "block channel until message has been sent" or like?
18:38:57 <quintopia> ^8ball Does this work by finding the parity of the character sum?
18:38:57 <fungot> Yes.
18:39:08 <quintopia> ^8ball Does this work by finding the parity of the sum of characters?
18:39:09 <fungot> Yes.
18:39:18 <tswett> Hey, let's get these out of the way.
18:39:26 <tswett> ^8ball Does he love me?
18:39:26 <fungot> Yes.
18:39:29 <tswett> ^8ball Does she love me?
18:39:29 <fungot> No.
18:39:32 <myname> nortti: maybe a ring without a token may be possible
18:39:35 <tswett> ^8ball Do they love me?
18:39:35 <fungot> No.
18:39:40 <tswett> ^8ball Does it love me?
18:39:40 <fungot> Yes.
18:39:52 <tswett> ^8ball Does ey love me?
18:39:52 <fungot> No.
18:39:53 <quintopia> ^8ball Is the answer to this question "No"?
18:39:53 <fungot> No.
18:40:03 <tswett> ^8ball Do I love me?
18:40:03 <fungot> Yes.
18:40:07 <tswett> ^8ball Do we love me?
18:40:07 <fungot> No.
18:40:12 <tswett> ^8ball Do you love me?
18:40:12 <fungot> Yes.
18:40:56 <tswett> Now for the SGNPPs.
18:41:25 <tswett> ^8ball Does e love me?
18:41:25 <fungot> Yes.
18:41:29 <tswett> ^8ball Does hu love me?
18:41:29 <fungot> Yes.
18:41:36 <tswett> ^8ball Does peh love me?
18:41:36 <fungot> Yes.
18:41:39 <tswett> ^8ball Does per love me?
18:41:39 <fungot> Yes.
18:41:44 <tswett> ^8ball Does thon love me?
18:41:44 <fungot> Yes.
18:41:52 <tswett> ^8ball Does jee love me?
18:41:53 <fungot> No.
18:41:53 <myname> it's basically only a matter of time until somebody writes a script to reformulate sentences to get the desired answer
18:41:59 <tswett> ^8ball Does ve love me?
18:41:59 <fungot> Yes.
18:42:01 <tswett> ^8ball Does xe love me?
18:42:01 <fungot> Yes.
18:42:06 <tswett> ^8ball Does ze love me?
18:42:06 <fungot> Yes.
18:42:08 <tswett> ^8ball Does zhe love me?
18:42:08 <fungot> Yes.
18:42:10 <myname> stop it
18:42:10 -!- grotewold has quit (Quit: My Mac has gone to sleep. ZZZzzz…).
18:42:13 <tswett> Done.
18:42:32 <quintopia> you forgot ree
18:42:32 <tswett> Man, there are a lot of SGNPPs.
18:43:12 <myname> so basically every "even" letter is neutral
18:43:41 -!- grotewold has joined.
18:43:51 <quintopia> but "s" is not even, so "he" is better than "she"
18:44:21 <myname> yeah. also, 0 seems to be no
18:44:31 <myname> hence the missing difference between x and xx
18:45:05 <myname> so "she" should be no
18:45:13 <myname> ^8ball she
18:45:13 <fungot> No.
18:45:18 <myname> great
18:46:33 <myname> ^8ball ?
18:46:33 <fungot> Yes.
18:46:45 <myname> relevant
18:47:15 <quintopia> ^8ball she?
18:47:16 <fungot> Yes.
18:47:49 -!- Sprocklem has quit (Ping timeout: 244 seconds).
18:48:22 <quintopia> so no script necessary. if you don't get the answer you want, add another ?
18:48:33 <myname> indeed
18:48:51 <myname> ^8ball Are you sure?
18:48:51 <fungot> Yes.
18:49:09 <hppavilion[1]> *Sigh*
18:49:10 <myname> so, you ask that with two question marks and you are fine
18:49:11 <hppavilion[1]> No one is on
18:49:30 <tswett> ^8ball Why?
18:49:30 <fungot> Yes.
18:49:42 <tswett> ^8ball
18:49:42 <fungot> No.
18:49:49 -!- Phantom__Hoover has joined.
18:49:50 <myname> ^8ball
18:49:50 <fungot> No.
18:50:05 <myname> well, space is 32
18:50:56 <tswett> ^8ball ​
18:50:56 <fungot> Yes.
18:51:13 <tswett> `unidecode ​
18:51:13 <HackEgo> ​[U+200B ZERO WIDTH SPACE]
18:51:57 <tswett> hth
18:52:00 -!- Phantom_Hoover has quit (Ping timeout: 250 seconds).
18:52:04 <myname> it's pretty hard to type, though
18:52:19 <myname> i like the question mark better
18:58:45 -!- zzo38 has joined.
19:01:15 -!- `^_^v has quit (Ping timeout: 265 seconds).
19:02:14 -!- `^_^v has joined.
19:11:39 -!- atslash has quit (Quit: This computer has gone to sleep).
19:18:10 -!- hppavilion[1] has quit (Ping timeout: 240 seconds).
19:22:57 <myname> https://play.google.com/store/apps/details?id=com.onemanband.thesequence looks like it qualifies as a bullying automaton
19:25:31 <HackEgo> [wiki] [[J--]] http://esolangs.org/w/index.php?diff=44020&oldid=43931 * Oerjan * (+281) wikify
19:33:03 <Phantom__Hoover> remind me what distinguishes a bully automaton from a ca
19:33:28 <HackEgo> [wiki] [[Hack VM]] http://esolangs.org/w/index.php?diff=44021&oldid=43524 * Oerjan * (-2784) Undo revision 43524 by [[Special:Contributions/Phase|Phase]] ([[User talk:Phase|talk]]) (Copyvio: I can find no evidence the web page is public domain)
19:34:16 <HackEgo> [wiki] [[Special:Log/delete]] revision * Oerjan * Oerjan changed visibility of revisions on page [[Hack VM]]: Copyright violation
19:35:48 <oerjan> Phantom__Hoover: iirc a bully automaton can have long-distance effects in one step
19:36:09 <Phantom__Hoover> and by 'long' you mean 'unbounded', right?
19:36:38 <HackEgo> [wiki] [[Special:Log/delete]] delete * Oerjan * deleted "[[Jolf]]": Author request: content before blanking was: "A planned [[pyth]] variant in pure javascript for code golfing. --[[User:JayCampbell|JayCampbell]] ([[User talk:JayCampbell|talk]]) [[Category:Languages]] [[Category:2015]] [[Category:Unimplemented]]"
19:36:53 <oerjan> well obviously
19:38:50 <HackEgo> [wiki] [[ℒight]] http://esolangs.org/w/index.php?diff=44022&oldid=43528 * Oerjan * (+6) add some required darkness
19:42:21 -!- stalem has quit (Ping timeout: 246 seconds).
19:43:29 <HackEgo> [wiki] [[List of ideas]] http://esolangs.org/w/index.php?diff=44023&oldid=44009 * Oerjan * (+0) /* Partially Silly Ideas */ grm
19:46:08 -!- TieSoul_ has joined.
19:47:07 -!- TieSoul has quit (Ping timeout: 260 seconds).
19:50:19 -!- TieSoul_ has changed nick to TieSoul.
19:50:38 <HackEgo> [wiki] [[Special:Log/delete]] delete * Oerjan * deleted "[[K]]": Copyright violation: Most of the content from the KONA Github. Also, not technically esoteric.
19:51:48 <oerjan> am i going to have to double check Phase's edits...
19:56:33 -!- grotewold has quit (Quit: My Mac has gone to sleep. ZZZzzz…).
20:00:35 -!- grotewold has joined.
20:02:11 <HackEgo> [wiki] [[User talk:Phase]] http://esolangs.org/w/index.php?diff=44024&oldid=43328 * Oerjan * (+479) /* Copyright */ new section
20:02:33 -!- Phantom_Hoover has joined.
20:04:23 -!- mauris_ has changed nick to mauris.
20:04:55 -!- Phantom__Hoover has quit (Ping timeout: 246 seconds).
20:13:12 -!- bb010g has quit (Quit: Connection closed for inactivity).
20:15:57 <HackEgo> [wiki] [[Tangle bracket language]] http://esolangs.org/w/index.php?diff=44025&oldid=43566 * Oerjan * (+10) case, rephrase
20:16:04 -!- AnotherTest has joined.
20:17:12 -!- Thisbe has quit (Ping timeout: 244 seconds).
20:28:30 -!- x10A94 has quit (Read error: Connection reset by peer).
20:28:45 -!- heddwch has changed nick to chikhin.
20:28:52 -!- chikhin has changed nick to heddwch.
20:37:16 -!- ProofTechnique has joined.
20:37:21 -!- atslash has joined.
20:41:18 -!- grotewold has quit (Quit: My Mac has gone to sleep. ZZZzzz…).
20:41:45 -!- atslash has quit (Ping timeout: 250 seconds).
20:42:41 -!- atslash has joined.
20:47:43 -!- hppavilion[1] has joined.
20:53:25 -!- hppavilion[1] has quit (Ping timeout: 246 seconds).
20:54:12 -!- APic has quit (Ping timeout: 250 seconds).
20:58:37 -!- TieSoul has quit (Read error: Connection reset by peer).
21:01:57 <b_jonas> Question on notation. Who or what introduced the notation in mathematical formulas where simultanously the bitwise and operator is written as & and the bitwise xor operator is written as ⊕ ?
21:02:40 <zzo38> I don't know
21:02:52 <b_jonas> This is used in, I believe, Knuth volume 4, and Warren: Hacker's delight,
21:05:00 <b_jonas> and I like the idea, because it puts together the strengths of two notation: the one from C where they're written as & and ^ resp, and the old one where they're written as ∧ and ⊕, or ∧ and ∧overline resp.
21:05:09 <b_jonas> What's the unicode for ∧overline?
21:05:18 -!- ProofTechnique has quit (Quit: My Mac has gone to sleep. ZZZzzz…).
21:05:46 <b_jonas> hmm wait, maybe it's not ∧overline, but something similar
21:06:05 <b_jonas> let me look it up
21:06:39 -!- Patashu has joined.
21:08:40 <b_jonas> ok, whatever, so ∧ and ⊕
21:09:01 <zzo38> ?messages-loud
21:09:01 <lambdabot> shachaf asked 1d 14h 30m 32s ago: Have any improvements been made to Potion of Confusing since I last played it?
21:09:24 <zzo38> shachaf: I am not sure actually
21:10:43 -!- hppavilion[1] has joined.
21:16:43 <zzo38> My new Dungeons&Dragons character has both blindsense and darkvision. The rules about blindsense says that it cannot be used to read stuff, does not subject you to gaze attacks, does not remove concealment miss chance, and that you do not generally have to make a Spot or Listen check to notice something that you cannot see, but some things are not explained including interaction with spells and with objects/creatures behind you and so on.
21:22:44 <b_jonas> zzo38: does he also have normal vision?
21:22:58 <zzo38> Yes
21:23:02 <zzo38> And also low-light vision
21:23:06 <myname> boring
21:23:15 <b_jonas> behind you?
21:23:25 <b_jonas> does D&D even have such a thing
21:24:43 <zzo38> The way we play it can matter.
21:25:18 <Taneb> One D&D game I'm in the DM forgot that most of the party could see in the dark
21:25:36 <b_jonas> Just to be sure, low-light vision just means good eyes with large lens so it's more sensitive to low light, darkvision is some sort of active light-based sensing that lets you see in what would be pitch black but in a way similar to vision (possibly somewhat lower frequencies), and blindsense is what many eyeless creatures have so they can tell where to attack even if you're not adjacent, right?
21:25:51 <zzo38> All character have normal vision too by default. It seems unusual to have both blindsense and darkvision, as everything else I have checked in the book does not have both, but the rules seems to say that my character does have both
21:26:20 <zzo38> b_jonas: I don't know actually
21:26:25 <b_jonas> zzo38: are there many monsters that have both blindsense and normal vision in first place?
21:26:36 <zzo38> b_jonas: I don't know that either.
21:27:02 <b_jonas> I thought blindsense was mostly for eyeless monsters, though they _could_ coexist if you really want to.
21:27:57 <zzo38> I know that darkvision does not let you to see colors and does not work in magical darkness, but it does subject you to gaze attacks, and I expect allows reading too. You can still see colors in daylight though
21:28:20 <b_jonas> zzo38: I think that's because darkvision works in the infrared frequency range
21:28:24 <b_jonas> so the colors are very different
21:28:37 -!- Sgeo_ has joined.
21:28:39 <zzo38> Yes, I thought of that too
21:28:58 -!- Phantom__Hoover has joined.
21:29:10 -!- Phantom_Hoover has quit (Ping timeout: 272 seconds).
21:30:07 -!- hppavilion[1] has quit (Ping timeout: 265 seconds).
21:30:22 <zzo38> Taneb: That almost had happened once I think, although it was a game where I was the only player (no other players are available) and none of the NPCs in my party could see in dark
21:30:31 -!- Sgeo has quit (Ping timeout: 246 seconds).
21:31:04 <b_jonas> maybe darkvision just lets you detect the thermal emissions in some of the near infrared range
21:31:12 <b_jonas> dunno
21:31:31 <zzo38> Darkvision seem clearly enough in this game.
21:32:36 <zzo38> The limitations of blindsense aren't quite clear enough though, although it says some things, such as you cannot read and miss chance for concealment still applies.
21:33:52 <zzo38> But I would assume, blindsense can still be used while blindfolded but darkvision does not work while blindfolded
21:35:37 -!- oerjan has quit (Quit: leaving).
21:35:45 <b_jonas> zzo38: yes, I think darkvision is in your eyes, blindsense is on most of whole skin
21:36:02 <b_jonas> or most of the body surface, whatever it's made of
21:36:16 <b_jonas> or... I dunno for incorporal monsters
21:37:19 <Taneb> zzo38, the DM was had a great idea for this horrifying session
21:37:23 <Taneb> And it was a great idea
21:37:30 <zzo38> It says blindsense allows noticing things that you cannot see, and can be based on such thing as hearing and smell and so on
21:37:34 <zzo38> Taneb: What idea is that?
21:37:36 <zzo38> Do you know?
21:37:39 <Taneb> Yeah
21:38:07 <Taneb> Very dark mansion, with something attacking us and running away before we could work out what it was
21:38:30 <Taneb> But because the barbarian and paladin could both see in the dark, it was like "Oh, it's a minotaur"
21:38:45 <Taneb> Which is still frightening, when you're level 2
21:38:50 <Taneb> But not actually horrifying
21:38:55 <Taneb> In quite the same way
21:40:20 <Taneb> Turns out the minotaur was someone wearing a cursed helmet
21:40:36 <Taneb> Which I almost wound up with
21:42:11 <Taneb> Well, I did wind up with it
21:42:14 <Taneb> I almost put it on
21:42:21 <Taneb> And had to struggle to get rid of it
21:43:06 -!- Patashu has quit (Ping timeout: 240 seconds).
21:43:33 -!- Phantom_Hoover has joined.
21:43:43 -!- Phantom__Hoover has quit (Ping timeout: 250 seconds).
21:43:49 -!- AnotherTest has quit (Ping timeout: 246 seconds).
21:43:57 -!- `^_^v has quit (Quit: This computer has gone to sleep).
21:44:46 -!- ProofTechnique has joined.
21:45:29 <b_jonas> Taneb: ah right... I think the rule in nethack is that minotaurs can wear helmets of soft materials (eg. leather or cloth), but not of hard materials (metal or wood), because of their horns
21:46:00 <b_jonas> still, a minotaur with a helmet sounds strange to me
21:46:11 <b_jonas> wouldn't that make it difficult for him to use his horn?
21:46:13 <b_jonas> oh right, cursed
21:46:21 <b_jonas> he doesn't _want_ to wear it, probably
21:46:54 <Taneb> b_jonas, it was a polymorph curse
21:47:10 <b_jonas> ouch!
21:47:33 <b_jonas> I mean, D&D has some pretty nasty cursed equipment, even ones that are worse than that, but still
21:47:48 <b_jonas> does it at least polymorph you to something that can wear a helmet?
21:48:00 <Taneb> No, into a minotaur
21:48:02 <myname> i'd be fine being a minotaur
21:48:17 <b_jonas> ah, specifically a minotaru
21:48:22 <b_jonas> with its horns covered
21:48:24 <b_jonas> interesting
21:52:20 <Taneb> It's got some mental cursey things too
21:52:36 <Taneb> iirc the horns were part of the helmet
21:52:37 <zzo38> A minotaur is a large size though, sometimes it mean you cannot fit somewhere else
21:53:00 <b_jonas> zzo38: exactly, and you can't fit in your body armor
21:53:02 <zzo38> So it can sometimes cause problems.
21:53:12 <b_jonas> which can _really_ hurt some characters who rely on it
21:53:19 <b_jonas> for others, it won't matter
21:54:02 <zzo38> There are many kind of curses and I have had some of my own kind of idea too
21:54:24 <b_jonas> zzo38: can you tell some?
21:55:17 <zzo38> One I have seen in a book though is that a hit by a blessed crossbow bolt instantly kills whoever wears this item (this does not prevent the item from being removed normally though).
21:55:50 -!- stalem has joined.
21:55:52 <zzo38> But one of my idea can be, like in many computer game, a cursed item being worn cannot be removed; it must be uncursed or destroyed in order to remove it, but otherwise it is normal item.
21:56:40 <b_jonas> zzo38: how do you identify such a curse?
21:56:46 <b_jonas> like, that crossbow bolt one
21:56:48 <zzo38> But I thought of a further variant of that; in addition, the curse also improves the item's durability while it is being worn, making it more difficult to destroy (although the improved durability can be an advantage too, it can also be disadvantageous)
21:57:42 <zzo38> b_jonas: The one with crossbow I expect only if you can figure it out with a spell or something like that, or if you create the item with the curse so that in case anyone steals it you can kill them with a blessed crossbow bolt.
21:59:03 <b_jonas> zzo38: if you created such a thing, wouldn't you make it so you can kill them with a use-once password instead? or would that cost more to create?
22:00:08 <zzo38> I don't know; possibly.
22:01:09 <zzo38> But even if they can identify it, then they might not know that you have a crossbow, and maybe you also have a spell or something else to protect you from a crossbow
22:01:20 <b_jonas> zzo38: one of the curses that I like is one that reverses the magic of the item from an advantage to a drawback, eg. a ring of protection that would normally give you +2 AC is cursed so it gives you -2 AC, but if it's rare enough kind of magic, it can be cheaper to uncurse that ring than to acquire a new similar uncurse ring.
22:02:39 <b_jonas> someone who has ready access to uncurse spells could even trap their own magic items, so that if they're removed from their inventory, they're cursed. then if someone steals them or takes them in a battle, they're cursed, but their magic isn't lost, he can uncurse them if he gets them back.
22:04:51 -!- grotewold has joined.
22:05:18 <zzo38> There are also many curses listed in Arms and Equipment guide which includes the one with the crossbow mentioned above; another, for items that must be activated, is sometimes it uses up two charges instead of just one; sometimes both charges functions but sometimes only one charge function and one is wasted
22:06:51 <zzo38> Another idea is a flaw that you can select, if you select this one then magic item don't work so well for you, such as only one wearable magic item at a time and activated magic items have a 5% chance to fail each time it is activated, and -2 to Use Magic Device.
22:08:35 <b_jonas> zzo38: there's also vain items, ones that don't let you use other items of the same class while they're in your inventory (or at least gives a high penalty when you're using them), eg. a cursed sword that doesn't let you use other melee weapons, so if you meet the one kind of monster against which the sword doesn't work well, you have a problem
22:09:06 <b_jonas> This is easiest for weapons, because many characters want to have two weapons with them.
22:09:55 <zzo38> If it does not also have a curse to prevent you from removing it, then you could try to throw it out, but then you won't have it anymore
22:10:23 <b_jonas> zzo38: sure, but you might meet multiple monsters at once
22:10:30 <b_jonas> if you throw it out, something could happen with it
22:10:31 <zzo38> Yes that is possible
22:11:54 <b_jonas> Munchkin has a sword that I think is somewhat overpowered, which has only one drawback, namely that you can't fight an octopus with it (you must run away if you meet one)
22:12:02 <b_jonas> or squid or something
22:12:07 <b_jonas> some very rare kind of monster
22:13:02 -!- atrapado has quit (Quit: Leaving).
22:13:41 <b_jonas> This seems a very weak drawback compared to other equipment with a comparable bonus. Those other equipment typically take up too many slots (eg. they're two-handed or large) or are restricted to a class or race.
22:16:59 <b_jonas> There's also something like that backwards, a vorpal sword that insta-kills monsters whose names start with "J".
22:17:53 <zzo38> Another kind of curse, for activated items only, can be when activated you take -2 AC for 1 minute, or something like that.
22:18:15 <b_jonas> could work, sure
22:18:26 -!- Froox has joined.
22:18:33 <b_jonas> a worse version is one that paralyzes you for some time after you activate it
22:18:54 <zzo38> Yes, although either way the effect otherwise still works
22:19:10 -!- Frooxius has quit (Ping timeout: 246 seconds).
22:23:27 <izabera> is there any utf8 expert here?
22:23:39 <zzo38> izabera: What is it that you need?
22:24:03 <izabera> well i have 4 different wc's (one of which i wrote) that report 4 different number of utf8 characters for the same file
22:24:37 <mauris> i can think of many reasons why that would happen
22:24:48 <zzo38> izabera: I would just not count bytes in the range 0x80 to 0xBF, that is a simple way
22:25:29 <izabera> well that's chopping away a lot of characters
22:25:38 <b_jonas> what?
22:26:20 <zzo38> Some flaws given in this book include: Feeble = -2 to Str/Dex/Con ability checks and skill checks; Frail = -1 HP per level; Inattentive = -4 Listen, -4 Spot; Meager Fortitude = =3 Fortitude; Noncombatant = -2 melee attack roll; Slow = half of your base land speed; Vulnerable = -1 AC.
22:26:54 <zzo38> I would want to make up some of my own too, one which make you cannot use magic items so effectively, is one of my idea.
22:26:58 -!- grotewold has quit (Quit: My Mac has gone to sleep. ZZZzzz…).
22:27:20 <mauris> zzo38: some would argue that \x61 \xCC \x81 is one UTF-8 character á
22:28:00 <fizzie> Some would argue that wc would be expected to count code points.
22:28:27 <mauris> it's all really messy! why are people so interested in "the length of a string" anyway imo
22:28:55 <zzo38> I would expect you should need a different program for counting codepoints as for counting bytes anyways, such as "wcutf8" instead of just "wc" can be used.
22:28:56 <izabera> `` printf '\x61\xCC\x81' | wc -m
22:28:56 <HackEgo> 2
22:29:45 <fizzie> `` unidecode $(printf '\x61\xCC\x81')
22:29:46 <HackEgo> ​[U+0061 LATIN SMALL LETTER A] [U+0301 COMBINING ACUTE ACCENT]
22:30:35 <zzo38> Maybe "wc -m" is also locale-specific though; it seem that with C locale it is 3
22:31:03 <zzo38> But you could also use "utftovlq 18 | wc -c" to count UTF-8 codepoints.
22:31:07 <fizzie> izabera: Anyway, zzo38's method succeds in counting code points because all UTF-8 code point encodings are either (a) one byte between 0x00..0x7f, or (b) multiple bytes, of which exactly one (the first one) is 0xc0 or higher.
22:31:29 -!- grotewold has joined.
22:31:40 <izabera> i'll try
22:32:50 <izabera> do i have to include 0x80 and 0xBF ?
22:32:55 <izabera> i mean do i count them?
22:33:17 <zzo38> No you do not count them
22:33:28 <izabera> ok thanks
22:33:35 <zzo38> All bytes 0x80 up to 0xBF inclusive are not counted.
22:33:45 <mauris> this method breaks for invalid utf-8 strings, but honestly, what doesn't?
22:34:50 <zzo38> Yes, although if it is invalid then what you have to do depend much on what you are trying to make anyways, so it doesn't matter here.
22:34:57 <zzo38> Use separate program to verify if you need it
22:35:37 <stalem> now soothe your souls with https://vimeo.com/138247957 , my way of friday fun
22:36:00 <izabera> that broke everything
22:36:40 -!- Froox has quit (Ping timeout: 244 seconds).
22:37:44 <mauris> import sys; print(len(sys.stdin.buffer.read().decode('utf-8'))) # wcutf8.py
22:38:05 -!- Phantom__Hoover has joined.
22:38:19 <zzo38> Yes that is another way, if you are using Python
22:38:21 <mauris> please use something like that instead of a nasty byte-level hack :<
22:38:58 <mauris> (oh yeah, it's python 3, specifically; i don't think it will work on python 2)
22:39:25 <zzo38> I just used "utftovlq 18 | wc -c" to count UTF-8 codepoints, it is a hack too but can use an existing program (although not a common one; it is one I wrote)
22:39:46 -!- Phantom_Hoover has quit (Ping timeout: 240 seconds).
22:42:16 -!- Froox has joined.
22:44:06 -!- grotewold has quit (Quit: My Mac has gone to sleep. ZZZzzz…).
22:46:17 <zzo38> Also how much memory would your Python program use though?
22:48:58 <mauris> oh, .read() does make a big byte string, probably a bad idea for very huge files
22:50:26 -!- hppavilion[1] has joined.
22:50:30 -!- APic has joined.
22:50:44 <hppavilion[1]> Test
22:50:47 <hppavilion[1]> So
22:50:51 <hppavilion[1]> oren: You on?
22:50:54 <zzo38> Yes it is why, I used the other way instead.
22:51:28 <hppavilion[1]> What is why you used what other way instead of what?
22:51:38 <zzo38> It is a program I wrote for a different purpose but now we can use for this purpose too.
22:51:48 <zzo38> hppavilion[1]: See the recent logs in case you do not know the context
22:54:43 <hppavilion[1]> zzo38: I'm finding the logs hard to read
22:54:57 <hppavilion[1]> Can you just give me a brief description of what you're making?
22:55:09 <hppavilion[1]> I got the rest of it from what I did read
22:56:04 <zzo38> Counting how many UTF-8 character of input.
22:56:39 <zzo38> I used "utftovlq 18 | wc -c" since it is program I already have.
22:57:36 <izabera> ( ⌒‿⌒)
22:57:36 <idris-bot> (input):1:1: error: expected: ":",
22:57:36 <idris-bot> dependent type signature,
22:57:36 <idris-bot> end of input
22:57:36 <idris-bot> ⌒‿⌒)<EOF>
22:57:36 <idris-bot> ^
23:00:18 <hppavilion[1]> Ah
23:10:04 <mauris> (shachaf: i don't think this scow idiom exists outside of "things shachaf says on irc" :( are they remarkably shitty boats?)
23:10:28 <shachaf> I didn't invent it.
23:10:42 <mauris> maybe it's from hebrew twei
23:10:43 <shachaf> But the origin is related to https://en.wikipedia.org/wiki/Garbage_scow
23:10:50 <shachaf> tdnei
23:11:18 <shachaf> "the scow of X" means something like "the worst specimen of X"
23:11:29 <shachaf> Something can be a scow, or it can just be scow. Or utter scow.
23:11:45 <shachaf> I shouldn't be saying this in a logged channel.
23:12:01 <shachaf> Don't want it in Google search results.
23:12:04 <shachaf> Oh well, too late.
23:12:35 <zzo38> Then program the robots.txt of the logs to not be use with Google, if that is how you want
23:12:56 <shachaf> I'm not the one keeping the logs.
23:13:57 <mauris> i found one result on google for "the scow of" that i *think* uses it in that sense, from the 50s
23:14:21 <shachaf> Unlikely. That sense was invented in 2013 as far as I know.
23:16:13 <mauris> where'd you pick it up from? (also is this stuff top secret, twewydwiigsr)
23:17:22 -!- grotewold has joined.
23:19:47 -!- |f`-`|f has quit (Ping timeout: 256 seconds).
23:20:56 -!- |f`-`|f has joined.
23:22:04 -!- lemurian has joined.
23:27:19 <oren> good eevning
23:28:05 <oren> hppavilion[1]: I'm home now
23:28:19 <hppavilion[1]> Hi
23:28:33 <hppavilion[1]> So
23:28:41 <hppavilion[1]> I brought this up a few days a go
23:28:44 <hppavilion[1]> *ago
23:28:56 <hppavilion[1]> But I don't /think/ I ever got an answer
23:29:10 <hppavilion[1]> If one were to create a language in which one can define a potentially infinite FSM
23:29:16 <hppavilion[1]> Could that language be TC?
23:29:26 <hppavilion[1]> Just the FSM generated by the language, I mean
23:29:44 -!- grotewold has quit (Quit: My Mac has gone to sleep. ZZZzzz…).
23:30:15 <mauris> do you know what the F in FSM stands for
23:31:48 <mauris> also, that sounds plausibly TC, yeah, every possible tape state for a TM corresponding to a state in the state machine
23:32:07 <shachaf> mauris: flying hth
23:32:43 -!- Froox has quit (Quit: *bubbles away*).
23:34:41 <hppavilion[1]> mauris: Oh right xD
23:37:31 -!- Wright has joined.
23:46:18 -!- ProofTechnique has quit (Quit: My Mac has gone to sleep. ZZZzzz…).
23:46:26 <hppavilion[1]> mauris: It's "Finite", right?
23:46:35 <hppavilion[1]> "Finite Spaghetti Monster"
23:50:30 <hppavilion[1]> So
23:50:39 <hppavilion[1]> BANCStar is the worst thing ever invented
23:52:11 <HackEgo> [wiki] [[Graph rewriting]] N http://esolangs.org/w/index.php?oldid=44026 * Hppavilion1 * (+112) Created Page
23:52:45 <HackEgo> [wiki] [[Graph rewriting]] M http://esolangs.org/w/index.php?diff=44027&oldid=44026 * Hppavilion1 * (+0) Fixed a link
23:55:18 <hppavilion[1]> No one on?
23:55:20 <hppavilion[1]> :,(
23:56:49 -!- Phantom__Hoover has quit (Ping timeout: 252 seconds).
23:57:13 <stalem> just me, but i was just about to head to sleep
23:57:26 <mauris> "Rewriting denotes a form of computation where a data structure is replaced by a modified form of itself, sometimes repeatedly."
23:58:04 <mauris> that sounds vague! i mean isn't that all computations on a tape ever, in a way
23:59:29 -!- Phantom_Hoover has joined.
←2015-09-02 2015-09-03 2015-09-04→ ↑2015 ↑all