00:02:37 <FireFly> Have you been stalking me recently
00:04:44 -!- tromp_ has joined.
00:05:26 -!- Yurume has joined.
00:09:13 -!- tromp_ has quit (Ping timeout: 252 seconds).
00:09:49 -!- XorSwap has joined.
00:19:55 -!- hppavilion[2] has joined.
00:23:31 -!- hppavilion[1] has quit (Ping timeout: 252 seconds).
00:23:36 -!- hppavilion[2] has changed nick to hppavilion[1].
00:25:19 <Sgeo> Agora still exists afaik
00:26:03 <coppro> I unsubbed from the mailing lists last year
00:26:05 <oerjan> it does. there's even been some activity lately.
00:26:15 <coppro> I'll probably get back in at some point
00:31:30 -!- lleu has quit (Quit: That's what she said).
00:33:05 -!- Treio has quit (Ping timeout: 250 seconds).
00:42:39 -!- hppavilion[1] has quit (Quit: Leaving).
00:43:04 -!- hppavilion[1] has joined.
00:45:43 -!- oerjan has quit (Quit: Nite).
00:59:24 -!- mad has joined.
01:01:56 -!- mad has quit (Read error: Connection reset by peer).
01:15:52 -!- Sprocklem has joined.
01:24:41 <hppavilion[1]> I just went to agora and looked at a random judicial case
01:24:55 <hppavilion[1]> Players: A lambda-nomic has "players", individual beings or groups of beings who participate in the game
01:24:55 <hppavilion[1]> Rules: A lambda-nomic has "rules", statements about what players of the game can and cannot do.
01:24:55 <hppavilion[1]> How to play: A game is played by players following the rules to arbitrary pedanticness.
01:24:55 <hppavilion[1]> Rule Proposal: At any time, a player can propose a new rule, an addendum to a rule, an edit to a rule, or the deletion of a rule. Players then vote on the rule by saying "yea" or "nay", and if there are more "yea"s than "nay"s the rule, addendum, edit, or deletion is enacted. All future moves are based on this rule.
01:34:50 -!- lynn_ has quit (Ping timeout: 244 seconds).
01:37:56 -!- tromp_ has joined.
01:41:01 -!- vodkode has joined.
01:44:00 -!- adu has joined.
02:00:22 -!- AlexR42 has joined.
02:03:02 -!- boily has joined.
02:03:20 <lambdabot> CYUL 250100Z 03022G27KT 4SM -FZRA BKN006 OVC010 M00/M01 A2963 RMK SF6SF2 PRESFR SLP036
02:03:36 <boily> Freezing Cow Weather.
02:05:42 -!- tromp_ has quit (Remote host closed the connection).
02:08:50 -!- Phantom_Hoover has quit (Read error: Connection reset by peer).
02:15:07 <boily> aubergine? online?
02:15:30 <fungot> boily: " tackled" in what sense? not to be a web page
02:15:35 <quintopia> purple is too, but ubergenes needs securing
02:19:40 <boily> I'm back home after a spicy Chinese supper.
02:20:08 <boily> sure! I just have to be home Friday.
02:20:19 <hppavilion[1]> quintopia: Do you own http://tryitonline.net/ ? Or is that a major website I haven't noticed yet?
02:21:00 <quintopia> boily: just be on steam and ill ping you
02:21:20 <quintopia> hppavilion[1]: sure! everyone should know dennis!
02:22:02 <quintopia> he's the most golfiest of golfers on ppcg
02:22:11 -!- mad has joined.
02:23:41 <shachaf> hppavilion[1]: did you `list yet hth
02:23:54 <HackEgo> lambdabot: ?? (?metar CYUL) \ (?metar ENVA) \ (?metar ESSB) \ (?metar KOAK)
02:23:57 <lambdabot> CYUL 250200Z 03021G31KT 5SM -FZRA BKN006 OVC012 M00/M01 A2957 RMK SF6SF2 PRESFR SLP016 \ ENVA 250120Z 27015KT 9999 SCT009 BKN015 02/00 Q0999 RMK WIND 670FT 28015KT \ ESSB 250150Z AUTO 23006KT 9999 NCD M03/M05 Q0998 \ KOAK 250153Z 31007KT 10SM FEW200 17/08 A3010 RMK AO2 SLP194 T01670083
02:24:11 <HackEgo> b_jonas boily a`a`a`a`jo7as a`a`a`a`jo8as a`a`a`a`jo3as a`a`a`a`jo6as a`a`a`a`jo5as a`a`a`a`jo4as a`a`a`a`jo2as a`a`a`a`jo1as a`a`a`a`jonas0 a`a`a`a lambdabot chicken_jonas myname
02:24:21 <shachaf> quintopia: feel free to add it hth
02:24:44 <shachaf> hppavilion[1]: It's a list of nicks.
02:25:05 <shachaf> And now you're on the list.
02:25:15 <HackEgo> hppavilion[1] b_jonas boily a`a`a`a`jo7as a`a`a`a`jo8as a`a`a`a`jo3as a`a`a`a`jo6as a`a`a`a`jo5as a`a`a`a`jo4as a`a`a`a`jo2as a`a`a`a`jo1as a`a`a`a`jonas0 a`a`a`a lambdabot chicken_jonas myname
02:25:38 * boily pat pat pat hppavilion[1]
02:25:42 <HackEgo> list is a fun program that HackEgo has! Run it with `list and join the fun!
02:25:51 <boily> hppavilion[1]: don't worry, it only hurts once.
02:26:15 <boily> shachaf: is there any way to make lambdie answer with multiple messages?
02:26:27 <boily> that way we'd cover all the most important metars.
02:26:39 -!- tromp_ has joined.
02:27:04 <hppavilion[1]> quintopia: So I take it that tryitonline executes on the server?
02:29:17 <hppavilion[1]> I'm trying yet again to make a pan-unicode programming language
02:29:39 <mad> neo-apl? :D
02:30:15 <boily> hppavilion[1]: as long as it features ¨ on egregious glyphs, and that multiocular O.
02:30:28 <boily> mad: o hai. are you mad, or madbr?
02:30:44 <mad> mad=madbr=madbrain
02:30:44 <HackEgo> This wisdom entry was censored for being too accurate.
02:31:00 <mad> it's just an alt nick ;)
02:33:07 <boily> `le/rn madbr/He alternates between making sense, and being logical. He doesn't monetize the brotherhood scheme.
02:35:36 <quintopia> hppavilion[1]: sounds pointless :p
02:36:33 -!- andrew has joined.
02:36:59 <HackEgo> quintopia is our resident tl;dr generator. He is flooded by thundercats and thunderdogs.
02:37:10 <HackEgo> hppavilion[1] se describe en las notas al pie. ¿Porqué no los dos? Nadie lo sabe.
02:37:49 <quintopia> hppavilion[1]: are you? most folks here are a lot lazier than that
02:39:10 <boily> time to hit the sack and understand the inherent properties of my pillow.
02:39:27 <boily> hppavilionne nuit[1].
02:39:48 <boily> mad: eeeeh... bonne nuit toéssi. m'a toujours bin trouver de quoi avec ton nick demain qui fitte avec bonne nuit.
02:40:10 -!- boily has quit (Quit: KERNEL CHICKEN).
02:42:43 -!- mad has quit (Read error: Connection reset by peer).
02:46:52 -!- tromp_ has quit (Remote host closed the connection).
02:49:16 <^v> i was pinge
02:49:19 <^v> i was pinged*
02:49:25 <^v> <b_jonas> although I'm not really sure how you'd noping "^v". maybe like "↑v" (which is two extra bytes, not only one).
02:49:28 -!- adu has quit (Ping timeout: 255 seconds).
02:58:03 -!- hppavilion[1] has quit (Ping timeout: 244 seconds).
03:04:43 -!- mad has joined.
03:05:32 <mad> got a strange cpu design which seems pretty balanced on paper
03:06:23 <mad> instructions come in 4-instruction groups (32bits each, so each group is 128bits, always aligned)
03:06:38 <mad> 2 go to the "front end", 2 go to the "back end"
03:07:15 <mad> front end is basically a classic MIPS
03:07:41 <mad> except one of the registers is a "queue input" ie every time an instruction writes there, the value is queued to the back-end
03:08:29 -!- AlexR42 has quit (Remote host closed the connection).
03:08:54 <mad> also one of the variants of 'store' doesn't specify the data to store and simply protects the memory address from loading/storing until the back-end queues an output value
03:09:49 <mad> the back end is also similar to a MIPS but one of the registers is a 'queue input', which pops one value coming in from the front end
03:10:30 <mad> and the result of an alu operation can be queued to the memory output queue
03:10:59 <mad> also the back end only has ALU operations, no load/store
03:11:12 <deltab> how is an address protected?
03:11:29 <mad> the address is added to the write queue
03:11:49 <mad> every time a value is loaded/stored, it's compared to all the addresses in the write queue
03:12:26 <mad> if any matches, it stalls until the matching write in the write queue is executed
03:13:41 <mad> most CPUs these days do this actually
03:13:48 <mad> it's just that they don't expose it
03:20:22 -!- Alcest has joined.
03:22:09 -!- tromp_ has joined.
03:22:25 -!- hppavilion[1] has joined.
03:36:44 -!- adu has joined.
03:38:00 -!- mihow has quit (Quit: mihow).
03:47:20 <\oren\> omg why did i put landing legs on my communication satellite?
03:47:37 <int-e> because they're cool
03:48:07 <int-e> or maybe you want to land on a death star.
03:55:48 <mad> so that it can stand upright as ppl work on it?
03:56:08 <mad> though I guess you'd remove the legs before sending it to space
03:57:50 <int-e> (the reason why I chose the death star is that the satellite isn't going to change its speed much, so most of the approach navigation will have to be done by the object it's going to land on)
03:58:45 -!- XorSwap has quit (Quit: Leaving).
04:02:33 -!- lambda-11235 has quit (Ping timeout: 240 seconds).
04:19:07 <adu> hppavilion[1]!
04:19:53 <HackEgo> quintopia is our resident tl;dr generator. He is flooded by thundercats and thunderdogs.
04:20:10 <adu> hppavilion[1]: what's happening with my nick?
04:20:25 <adu> hppavilion[1]: I just had a power outage for 1 hour
04:20:51 <adu> hppavilion[1]: we lit like 50 candles, and then blew out 50 candles when the power came on again
04:21:01 <adu> it was fun
04:21:15 <adu> hppavilion[1]: is that the proof about Peano?
04:21:27 <adu> hppavilion[1]: or PCRE-based proofs?
04:21:37 <adu> hppavilion[1]: Yes
04:22:07 <adu> hppavilion[1]: are you having a power outage?
04:22:56 <adu> and what's with the ZWSP?
04:23:09 <adu> ¯\(°_o)/¯
04:24:01 <adu> in my font, looks like ¯\(°[ZWSP])/¯
04:24:45 <adu> I'm trying to figure out what it's supposed to look like
04:25:27 <adu> then what is it?
04:25:45 <adu> hppavilion[1]: what does it look like on your screen?
04:26:29 <int-e> hppavilion[1]: myndzi is awol
04:26:44 <adu> I see the arms, I don't see the face
04:27:02 <adu> hppavilion[1]: I have a special font that renders unicode spaces
04:27:11 <adu> hppavilion[1]: seen what?
04:27:27 <adu> I've seen butt face: (_|_)
04:27:30 <int-e> `? questionable content
04:27:31 <HackEgo> questionable content? ¯\(°_o)/¯
04:27:35 <hppavilion[1]> adu: I think that oerjan was doing something with ping prevention
04:27:42 <adu> hppavilion[1]: is that a 4chan thing?
04:28:00 * adu doesn't do 4chan
04:28:08 <adu> looks like katakana
04:28:28 <adu> prooftechnique: that's better :)
04:28:55 <adu> prooftechnique: looks like zim or grr making *whaaa* or *wheee* face
04:29:22 * adu likes zim and grr
04:29:26 * adu doesn't like 4chan
04:30:07 <hppavilion[1]> adu: Nobody likes 4chan. They all moved to infinitychan.
04:31:49 <adu> I can't wait until they make racist fonts
04:32:11 <adu> http://unicode.org/reports/tr51/
04:33:48 <adu> Sorry, not "racist", I meant "FITZPATRICK TYPE"
04:34:29 <int-e> `learn 4chan is twice as loud as stereo.
04:34:32 <HackEgo> Learned '4chan': 4chan is twice as loud as stereo.
04:34:48 <hppavilion[1]> adu: Unicode discriminates against purple people with ultraviolent pokadots
04:34:57 <adu> hppavilion[1]: lol
04:35:18 <hppavilion[1]> Pokadots that will rip you to shreds given the chance
04:36:57 <adu> you know how some people want to go back in time and kill hitler?
04:37:18 <adu> I want to go back in time and kill 4chan, and gif, and compuserve
04:38:01 <adu> shachaf: tell that to PNG, and JPEG2000
04:38:09 <hppavilion[1]> adu: It also discriminates against black gas pumps
04:38:11 <int-e> adu: none of which were around in 1989
04:38:33 <int-e> adu: gif is *old*. it was great at the time.
04:38:38 <adu> int-e: well, maybe I'll publish a paper on DWTs in 1972
04:39:02 <int-e> much better than PCX, for example
04:39:09 <hppavilion[1]> http://unicode.org/reports/tr51/#Subject_Emoji_Modifiers
04:39:26 <prooftechnique> I feel like getting a negative Erdős number would be a productive use of a time machine
04:39:36 <adu> hppavilion[1]: that's the same link
04:39:44 <adu> oh, you did an anchor
04:40:48 <adu> prooftechnique: you can't publish -1 papers with Erdos
04:41:05 <int-e> adu: really, don't kill gif. kill the netscape navigator authors who came up with the blink tag and thought displaying animanted gives was a bright idea, if you must kill somebody.
04:41:41 <prooftechnique> adu: No, but you could be the primary author on his first paper
04:41:44 <hppavilion[1]> It is beyond the scope of Unicode to provide an encoding-based mechanism for representing every aspect of human appearance diversity that emoji users might want to indicate.
04:41:53 <adu> I would be willing to kill <blink>, but not netscape
04:42:01 <hppavilion[1]> I think I found a new niche for character encodings
04:42:23 <adu> netscape gave birth to mozilla, and mozilla gave birth to Rust, and I am madly in love with Rust
04:42:23 <int-e> adu: whatever was wrong with mosaic ;)
04:42:45 <int-e> we had rust before we had computers...
04:42:55 <hppavilion[1]> adu: A character encoding with ALL the possible emoji in it
04:42:59 <adu> int-e: not rust, "Rust"
04:43:00 <prooftechnique> I'd go back in time and fix the mess that is User-Agent
04:43:10 <adu> https://www.rust-lang.org/
04:43:11 <int-e> (these newfangled language names that are common words really annoy me)
04:43:41 <int-e> (Go is the worst offender, but neither "rust" nor "swift" are much better)
04:44:03 <adu> at first, I thought Rust was the same as Dylan, Delphi, Julia, Nim, you know the new compiled langs
04:44:29 <adu> but then it grew on me, and I learned about the borrow, oh, the borrow
04:44:56 <hppavilion[1]> int-e: It's funny that google named their language Go, knowing full well googling "go" will probably get the word excluded from the search
04:45:08 <adu> Go and Swift are tinker toys, I don't really consider them compiled languages
04:45:17 <int-e> hppavilion[1]: they were in the position to "fix" that
04:45:24 <prooftechnique> I'm surprised there isn't a Rust library called Arrietty, yet
04:45:58 <adu> Go and Swift are not really architecturally different than Cython or GCJ, just different names for stuff
04:46:09 <prooftechnique> adu: I think the presence and use of a compiler is what makes them compiled languages. :/
04:46:30 <adu> prooftechnique: is Cython compiled? is GCJ compiled? no
04:46:37 <mad> adu : how do go/swift/cython/gcj work architecturally?
04:46:50 <adu> they're slight optimizations of a fundamentally interpreted model
04:47:25 <prooftechnique> So "compiled" means "compiled to machine code" for you
04:48:06 <adu> prooftechnique: no, compiled is a philosophy, which you can't get by optimizing the interpreted, garbage collected, extremely RTTI-dependant model
04:48:28 <adu> hmm, perhaps I meant statically typed
04:49:04 <mad> my usual classification is (I)static-typed-manual-mem-alloc (C++, asm, pascal...), (II)static-type-globally-garbage-collected (Java, C#), (III) dynamic-typed-globally-garbage-collected (perl, python, lua, javascript...)
04:50:28 <mad> I haven't touched go/swift/etc... but my really murky understanding was that they were somewhere between category (I) and (II)
04:51:15 <adu> one is "I am assembling an efficient binary with as few key presses as possible", and the other is "I'm playing with ideas, to see what happens without a compilation step"
04:52:05 -!- idris-bot has quit (Quit: Terminated).
04:52:25 <mad> like, my classification is based on speed grades: you can get java to run pretty fast, but you can never prevent the garbage collector from stopping the world once in a while, which is why people who need speed grade (I) have never moved to java or C# (video games, pro audio)
04:52:41 -!- idris-bot has joined.
04:53:35 <mad> this is also why asm.js exists: javascript is in speed grade (III) and cannot be moved from there, so they had to come up with something new for a faster speed grade
04:54:02 <adu> mad: Go is similar to Cython in the sense that the Go runtime is pretty much all of Plan9, but you get a binary from it so it's "compiled", Swift is Objective-C with a different syntax, Cython compiles your Python to C using libpython, so all the slowness of Python can still creep up on you, and GCJ compiles Java
04:54:30 <adu> mad: sometimes speed and philosophy are incompatible
04:56:05 <mad> well, yeah, this is why speed grades exist
04:56:18 <adu> prooftechnique: for BC/IR I would use "precompiled"
04:56:39 <adu> prooftechnique: because there's still a lot of work to do
04:56:50 <mad> basically this is "given a perfect compiler/interpreter what's the fastest it can go"
04:57:43 <adu> mad: there are many stop-free GCs, Go just switched to one recently, iirc
04:58:47 <mad> adu: I'll believe that when I see it
04:59:07 <adu> https://talks.golang.org/2015/go-gc.pdf
04:59:19 <mad> oh, also, generally grade (III) languages can't be threaded (except for lame workarounds like worker objects)
05:00:20 <adu> https://golang.org/doc/go1.5
05:00:26 -!- jaboja has joined.
05:00:36 <mad> and languages in the same speed grade can generally be linked together (like asm and c++ in the same project)
05:01:06 <mad> whereas c++ and java together means you get to use the horribly clunky JNI
05:01:37 <mad> "virtuous cycle"
05:01:47 <adu> mad: well, with your speed grades, I would put Go/Swift in (II) and Rust in (I)
05:02:44 <adu> Go has a clunky FFI because it uses a completely incompatible calling convention
05:03:06 <mad> adu: I remember reading somewhere in rust documentation about one guy proposing to literally remove garbage collected objects so I guess that works there
05:03:11 <adu> Rust uses the clang calling convention, which iirc, is the same as gcc
05:03:37 <adu> mad: there is no gc in rust
05:04:13 <adu> mad: there is a library, which no one uses, which provides a Gc<T> generic type
05:05:16 <adu> mad: I think rust-0.1-alpha had gc builtin, but that was way before 1.0 was released
05:06:12 <mad> "GC pause [graph has points from about 0.2ms to 2.8ms]"
05:07:13 -!- hppavilion[1] has quit (Ping timeout: 244 seconds).
05:07:45 <mad> that's probably fast enough for video games (not for pro audio tho ;) )
05:10:01 <mad> "[LATENCY] [50 miliseconds]: Perceptual Causality (cursor response threshold)"
05:10:46 <mad> that's like 3 frames
05:11:09 <mad> people can see and feel 3 frames
05:13:22 <adu> mad: source?
05:13:23 <mad> also it's impossible to play a synthesizer with 50ms latency
05:13:42 <mad> adu : add a 3 frame lag to a video game
05:13:51 <adu> mad: link?
05:13:54 <mad> guaranteed people will see it
05:14:01 <adu> mad: reference?
05:15:23 <mad> just play minecraft and you'll see
05:15:38 <adu> mad: minecraft is not written in Rust
05:15:55 <mad> the game has small lags all the time (which is probably inevitable considering how it works)
05:16:40 <adu> mad: so your claim is that a certain lag is perceptible, not that Rust has gc
05:16:53 <adu> I was confused
05:17:09 <mad> I thought you were saying that lag wasn't perceptible :o
05:17:22 <adu> I thought you were saying that Rust had gc
05:17:28 -!- tromp_ has quit (Remote host closed the connection).
05:17:30 <mad> ha of course not
05:18:07 <adu> my favorite FFI is Haskell's
05:18:33 <mad> if Rust is in speed grade (I) then it has a bright future
05:19:15 <mad> if it was in speed grade (II) then I'd say it has to be better than C# or java... if it's in grade (I) it only has to be better than C++ :D
05:19:24 <adu> "foreign puts :: CString -> IO ()", almost every FFI function has "IO a" as it's return type, there's something beautiful about that
05:19:58 <mad> adu : considering how haskell reorders everything, it pretty much has to, no? :D
05:20:43 <adu> mad: I don't think its so much about reordering as purity
05:21:04 <mad> both come together
05:21:11 <adu> C is "impure", and in order for Haskell to use it, it must be in the IO monad, which contains impurity
05:21:21 <mad> if you don't have purity then you can't reorder anything
05:21:51 <mad> you can only do small scale reorderings
05:21:58 <mad> (which is what GCC and LLVM do)
05:22:41 <adu> I once saw a presentation about reordering in Sun's HotSpot JVM, and how it spawned a JCP community around it
05:22:41 <mad> if you increase the scale of the reordering the potential interactions grow way too quickly which is why you can only do small local reorderings
05:23:12 <adu> which then led to the official definition of "concurrent java"
05:23:39 <mad> java is also a fundamentally impure language
05:24:19 <mad> and since you have referrences all over the place.. :3
05:24:27 <adu> yeah, and I know that java has had sync primitives from the beginning
05:24:59 <mad> sync is different
05:25:04 <mad> sync is just a mutex
05:26:21 <mad> basically when something is pure, that means it doesn't have referrences
05:27:03 <mad> it's like you can only have one of these two things in a language
05:27:41 <adu> mad: if you're interesting it was something like this: http://www.slideshare.net/alexandermartens/the-java-memory-model
05:27:45 * Sgeo thinks of Rust as a mostly improved but sometimes weakened Haskell-lite
05:27:53 <adu> but I'm pretty sure that's not the exact presentation
05:29:44 <adu> Sgeo: I wouldn't put Rust and Haskell on the same page
05:29:55 <adu> Sgeo: but their type systems are similar
05:30:20 <mad> adu : some of those "atomicity" rules are basically just going with what they implemented on CPUs
05:30:22 <adu> their stance on purity, of course, different
05:31:04 <mad> "Access to variables of primitive types (excluding long and double) and reference variables are atomic."
05:31:12 <Sgeo> &mut is pretty much ... similar to either State or ST, not sure which
05:31:16 <mad> notice the (excluding long and double)
05:31:52 <adu> mad: or maybe it was http://www.slideshare.net/michalwarecki/java-memory-model-23207253
05:32:32 <adu> Sgeo: I never understood State or ST, my haskell programming carrer has been in the IO, List sandbox
05:33:27 <Sgeo> State is take a T, give back a T
05:33:39 <Sgeo> (And another value)
05:34:02 <adu> Sgeo: can I show off my haskell packages?
05:34:20 <Sgeo> Sure, but I'm more obsessed with Rust at the moment
05:34:56 <adu> Sgeo: then can I show off my rust packages?
05:35:14 <adu> https://github.com/andydude/rust-sha
05:38:13 -!- jaboja has quit (Ping timeout: 244 seconds).
05:38:52 -!- hppavilion[1] has joined.
05:39:14 <Sgeo> My packages: https://github.com/Sgeo/take_mut and https://github.com/Sgeo/hlist
05:39:26 <adu> Sgeo: I'm pretty sure it's the only SHA-3 implementation in Rust
05:39:53 <adu> heterogeneous list? are you insane?
05:40:14 <Sgeo> With type-directed lookup reliant on type inference
05:40:27 <mad> kinda wondering
05:40:39 <hppavilion[1]> Functions are things that take [0, infinity) values and produce exactly 1 value
05:40:44 <adu> hppavilion[1]: you missed my showing off of my rust package: https://github.com/andydude/rust-sha
05:40:59 <hppavilion[1]> Antifunctions take exactly one value and return [0, infinity) values
05:41:15 <adu> hppavilion[1]: that sounds like category theory
05:41:42 <hppavilion[1]> adu: How about Complex Fuzzy Bag typing (or just normal Fuzzy Bag typing)?
05:42:12 <Sgeo> adu, I also have an anonymous sum type. It feels like playing with water, it just expands to fill its container
05:42:18 <hppavilion[1]> A type can be thought of like a set of possible values; a complex fuzzy bag type can be thought of as a set-like thing where values have a complex number representing how many times they appear in a set
05:43:05 <Sgeo> Water IS a gas *pretends that's what he had in mind*
05:43:48 <adu> hppavilion[1]: you know what would sound even more category theory? co-functions
05:43:56 <Sgeo> https://gist.github.com/Sgeo/ecee21895815fb2066e3
05:44:21 <adu> hppavilion[1]: lolol
05:44:27 <adu> hppavilion[1]: just how you described
05:44:29 -!- mad has quit (Ping timeout: 240 seconds).
05:44:31 <hppavilion[1]> What happens with the multiple values they return?
05:44:59 <adu> hppavilion[1]: "functions" are co-injective, so "co-functions" are just injective
05:46:07 <adu> but "injective" generally implies a function, so you have to specify "injective mapping"
05:47:01 <adu> hppavilion[1]: it probably works the same way the Haskell List monad does
05:47:14 <hppavilion[1]> adu: The internet will not tell me anything about co-injective
05:47:26 <adu> if you do x <- xs; return (f x)
05:47:37 <adu> that's pretty much the same as a for-loop
05:47:58 <adu> ys = []; for x in xs: xs.append(f(x))
05:48:11 <adu> my idea is ruined
05:48:32 <adu> hppavilion[1]: it's kind of like a block, or { ... } thingy that runs on each element of the list
05:49:08 <adu> hppavilion[1]: if you're really interested you should learn about Monads
05:49:27 <adu> hppavilion[1]: there are only 2 operations defined on a monad: join and return
05:49:44 <Sgeo> adu, you need fmap too
05:50:06 <adu> hppavilion[1]: "The Haskell Monad" f*cks it up a bit and only defined 2 methods: bind and return
05:50:17 <adu> but other than that "The Haskell Monad" and the mathematical monad are the same
05:51:01 <adu> hppavilion[1]: the List monad makes it easy to see, join :: [[a]] -> [a], and return :: a -> [a]
05:51:08 <hppavilion[1]> adu: So I'm trying to implement a category theory python library
05:51:28 <adu> hppavilion[1]: you can do whatever your heart desires, within reason
05:51:29 <shachaf> adu: The "mathematical monad" is perfectly fine to define in terms of (>>=) and return.
05:51:39 <adu> shachaf: ah, my bad
05:51:47 <shachaf> People do it all the time.
05:51:52 <shachaf> With the Kleisli category or something.
05:51:58 <shachaf> I don't remember what it was called.
05:52:08 <shachaf> The Kleisli category isn't it.
05:52:24 <adu> hppavilion[1]: oh, and bind is pronounced (>>=) in Haskell
05:54:55 <hppavilion[1]> THE _get_morphism_composition() METHOD FOR CATEGORY OBJECTS WORKS!
05:56:16 <hppavilion[1]> (what it does is it looks for pairs of morphisms (f: x -> y, g: y -> z), and creates a new morphism f . g: x -> z
05:56:30 <adu> composition?
05:56:37 <hppavilion[1]> (It uses the composition function the category is endowed with upon creation to compose them)
05:57:01 <adu> I prefer "equipped"
05:57:11 <adu> I used to do math
05:57:21 <adu> but then I got a job in I.T.
05:57:42 <adu> hppavilion[1]: I'm not sure what that means IRL
05:58:20 <adu> hppavilion[1]: you know what my favorite mem is?
05:58:37 <hppavilion[1]> adu: SO am I doing it right so far? It also autogenerates identify morphisms for objects when added
05:58:51 <adu> https://en.wikipedia.org/wiki/Metameme
05:59:10 <adu> identify -> identity?
05:59:36 <adu> hppavilion[1]: and now that I've told you about the metameme, you've just been infected with the meta-meta-meme
06:02:09 <hppavilion[1]> Also, objects must all be of the same "sort"- graph, group, category, etc.
06:02:38 <hppavilion[1]> Probably I should just github the code and let you go through it, but that would be too easy xD
06:02:45 <adu> hppavilion[1]: do these identity morphisms take up lots of RAM?
06:02:59 <hppavilion[1]> adu: If you have a big category, almost certainly.
06:03:28 <adu> hppavilion[1]: there's something very theraputic/cathartic/Turingesque about learning things through black-box-questioning
06:03:28 <hppavilion[1]> Then again, a morphism only takes up 128 bits IIANAI
06:05:05 <adu> IIANAI = ?
06:05:33 <adu> I think the proper term is IIRC
06:06:05 <hppavilion[1]> I'm guessing that python only uses 64 bits to reference an already-existing object
06:06:11 <adu> "I don't count sheep, I lie down, and try to remember things I've never remembered before"
06:07:01 -!- andrew has quit (Ping timeout: 255 seconds).
06:07:16 -!- andrew has joined.
06:07:38 <hppavilion[1]> adu: So, you can add objects to the category, which will add them and an identity morphism, and you can add morphisms by supplying a domain, a codomain, and a function that represents the transformation
06:08:12 <hppavilion[1]> Adding new morphisms will then make the program check for nontrivial compositions and add them to the list of morphisms.
06:08:25 <adu> http://www.comedy.co.uk/guide/tv/qi/episodes/13/9/ --- well, um, some kind of hashtag for the part about "Tommy's father"
06:08:57 <adu> part -> parts
06:09:03 <adu> s/part/parts/
06:09:21 <adu> sometimes I forget I'm talking to geeks
06:10:38 <adu> hppavilion[1]: stacktraces
06:11:36 <adu> what? stacktraces are important
06:11:53 <hppavilion[1]> adu: I think python will do the stacktraces for me
06:12:02 <adu> oh, right, nm
06:12:29 <adu> I think the most import part of any python library is 1 or 2 well-chosen decorators
06:13:28 <adu> for example, the Celery python library has @task for distinguishing between tasks and functions, and the AsyncIO python3 library has @coroutine for distinguishing between coroutines and functions
06:14:05 <adu> and, for example, my work has something called @try_requests which wraps an HTTP request with lots of status_code checking
06:14:34 <hppavilion[1]> adu: This isn't a library for other people to use, just a thing for me to understand kittygory theory
06:14:46 <hppavilion[1]> (I'm in close proximity to a kitty, don't blame me for my puns)
06:15:10 <adu> hppavilion[1]: well, I'm sorry for revealing a trade secret
06:15:57 <adu> hppavilion[1]: http://docs.python-requests.org/en/master/
06:16:19 <adu> that's the trade secret, now you know
06:16:37 <hppavilion[1]> adu: I'm not asking what I need for the library, I'm asking what to do to have a working category theory library, which I'm making so that I can understand /what/ category theory is like. To make things clear.
06:17:13 <adu> hppavilion[1]: so you have morphisms, identity morphisms, objects, categories, and functors?
06:17:30 <adu> do you have the https://en.wikipedia.org/wiki/Yoneda_lemma
06:17:37 <hppavilion[1]> adu: Functors- functors are just morphisms in a category category, right?
06:18:05 <adu> hppavilion[1]: yes, for an object O, morphisms are (:: O -> O)
06:18:10 <shachaf> It's certainly not "just" true.
06:18:24 <adu> hppavilion[1]: functors are (O, C) -> (O2, C2)
06:18:52 <adu> for all O in C and for all O2 in C2
06:19:13 <shachaf> A functor F : C -> D maps each arrow in C to an arrow in D such that F1 = 1 and Ff.Fg = F(f.g)
06:19:15 <adu> hppavilion[1]: a functor must be structure-preserving
06:19:41 <hppavilion[1]> I just remembered why I don't understand category theory
06:19:52 <hppavilion[1]> And I have to close down the computer and watch something soon
06:19:55 <adu> hppavilion[1]: i.e. if O is a terminal object in C, then O2 must be a terminal object in C2
06:20:17 <hppavilion[1]> adu: So morphisms are the arrows in categories, right? Please tell me I got that right?
06:20:22 <adu> hppavilion[1]: NOOOOOOOOOOOOO
06:20:29 <adu> hppavilion[1]: yes
06:20:37 <adu> hppavilion[1]: but functors are not just arrows
06:20:56 <adu> hppavilion[1]: functors are a mapping between categories, in a way that all of the sub-arrows make sense
06:21:42 <adu> hppavilion[1]: my "NO" was to your leaving me alone
06:24:32 <adu> hppavilion[1]: you know I was joking, right?
06:25:50 <adu> hppavilion[1]?
06:26:47 -!- hppavilion[1] has quit (Ping timeout: 244 seconds).
06:27:28 <adu> wow, hppavilion thought I was serious...
06:32:44 -!- adu_ has joined.
06:35:27 -!- adu has quit (Ping timeout: 276 seconds).
06:35:27 -!- adu_ has changed nick to adu.
06:48:58 <b_jonas> how the heck did I end up on the one list?
06:50:07 <izabera> you searched pictures of isis
06:50:42 <shachaf> `` hg log share/conscripts | grep '<b_jonas>'
06:51:18 <b_jonas> huh... but I thought I reverted something else
06:51:32 <shachaf> I guess bin/list can restrict to culprits that actually ran `list
06:51:44 <b_jonas> ok, whatever, I'll have to dos myself out of the list with other nicks
06:54:18 <shachaf> `` hg log | grep -P 'summary: <[^\s>]+> list$' | awk '{print substr($2,2,length($2)-2)}' | sed 's/.$/\x0F&/' | xargs
06:54:21 <HackEgo> hppavilion[1] hppavilion[1] boily a`a`a`a`jo7as a`a`a`a`jo8as a`a`a`a`jo3as a`a`a`a`jo6as a`a`a`a`jo5as a`a`a`a lambdabot chicken_jonas myname chicken_jonas boily boily tswett metasepia Ngevd oklopol nortti Phantom_Hoover monqy Sgeo_ pikhq monqy Sgeo elliott Taneb elliott boily cuttlefish Taneb elliott boily ais52
06:54:49 <shachaf> `` hg log | grep -P 'summary: <[^\s>]+> list$' | awk '{print substr($2,2,length($2)-2)}' | sed 's/.$/\x0F&/' | awk '!x[$0]++' | xargs
06:54:52 <HackEgo> hppavilion[1] boily a`a`a`a`jo7as a`a`a`a`jo8as a`a`a`a`jo3as a`a`a`a`jo6as a`a`a`a`jo5as a`a`a`a lambdabot chicken_jonas myname tswett metasepia Ngevd oklopol nortti Phantom_Hoover monqy Sgeo_ pikhq Sgeo elliott Taneb cuttlefish ais523
06:55:33 <shachaf> This one even works with the original implementation.
06:57:03 <b_jonas> hehe, grep -P instead of just putting it inside the awk statement
06:57:39 <shachaf> Look, I built it a piece at a time and copied from culprits.
06:57:47 <shachaf> Which, uh, does the same thing.
06:57:53 <shachaf> Look, I don't really know awk.
06:57:57 <shachaf> Not that you need awk here.
06:57:57 <b_jonas> doesn't that exclude thosee nicks where I invoked the command with an argument?
06:58:10 <shachaf> `` hg log | grep -P 'summary: <[^\s>]+> list' | awk '{print substr($2,2,length($2)-2)}' | sed 's/.$/\x0F&/' | awk '!x[$0]++' | xargs
06:58:12 <HackEgo> hppavilion[1] boily a`a`a`a`jo7as a`a`a`a`jo8as a`a`a`a`jo3as a`a`a`a`jo6as a`a`a`a`jo5as a`a`a`a`jo4as a`a`a`a`jo2as a`a`a`a`jo1as a`a`a`a`jonas0 a`a`a`a lambdabot chicken_jonas myname tswett metasepia Ngevd oklopol nortti Phantom_Hoover monqy Sgeo_ pikhq Sgeo fungot elliott Taneb cuttlefish ais523 olsner
06:58:17 <shachaf> `` hg log | grep -P 'summary: <[^\s>]+> list\s?' | awk '{print substr($2,2,length($2)-2)}' | sed 's/.$/\x0F&/' | awk '!x[$0]++' | xargs
06:58:20 <HackEgo> hppavilion[1] boily a`a`a`a`jo7as a`a`a`a`jo8as a`a`a`a`jo3as a`a`a`a`jo6as a`a`a`a`jo5as a`a`a`a`jo4as a`a`a`a`jo2as a`a`a`a`jo1as a`a`a`a`jonas0 a`a`a`a lambdabot chicken_jonas myname tswett metasepia Ngevd oklopol nortti Phantom_Hoover monqy Sgeo_ pikhq Sgeo fungot elliott Taneb cuttlefish ais523 olsner
06:58:29 <b_jonas> the \s? doesn't do anything you know
07:04:17 <b_jonas> ``` hg log | awk '/summary: <[^\s>]+> list(\s|$)/{n=substr($2,2,length($2)-2);if(!f[n]++)printf"%s ",sub(n,/.$/,"\x0F&")}'
07:04:31 <HackEgo> awk: line 1: syntax error at or near &
07:04:41 <shachaf> You can use <(^\s>]+)> or something.
07:04:52 <b_jonas> well, it would be easier to use perl...
07:04:56 -!- hppavilion[1] has joined.
07:05:08 <b_jonas> especially since I don't speak enough awk
07:05:12 <HackEgo> changeset: 7005:3c723dce4e7b \ tag: tip \ user: HackBot \ date: Thu Feb 25 04:34:31 2016 +0000 \ summary: <int-e> learn 4chan is twice as loud as stereo. \ \ changeset: 7004:4c654b530cd9 \ user: HackBot \ date: Thu Feb 25 04:20:01 2016 +0000 \ summary: <hppavilion[1]> le/rn adu/Bye! \ \ changeset:
07:05:17 <adu> hppavilion[1]: wut
07:05:36 <HackEgo> summary: <int-e> learn 4chan is twice as loud as stereo. \ summary: <hppavilion[1]> le/rn adu/Bye! \ summary: <boily> le/rn madbr/He alternates between making sense, and being logical. He doesn\'t monetize the brotherhood scheme. \ summary: <hppavilion[1]> list \ summary: <hppavilion[1]> list \ summary: <shachaf> le/rn weath
07:05:44 <adu> hppavilion[1]: wut
07:06:06 <adu> hppavilion[1]: I don't speak LOL
07:06:37 <b_jonas> ``` awk 'BEGIN{print"left\x0Fright";exit}' | cat -v
07:06:43 <adu> hppavilion[1]: I wanted you amuse ppl, that's all
07:06:49 <b_jonas> um, then what was the syntax error
07:07:24 <b_jonas> I think this might be simpler if I directly asked hg to put something more suitable
07:08:22 <izabera> although s// and s/// do something different in ed
07:08:38 <hppavilion[1]> adu: So what exactly is the mathematical definition of "making sense"?
07:08:51 <adu> hppavilion[1]: non-contradiction
07:08:55 <hppavilion[1]> I am currently laying on a blanket on top of a bare mattress pad
07:09:03 <b_jonas> ``` hg log --template "{author} " culprits
07:09:07 <hppavilion[1]> adu: In the context of functors having to map arrows in a way that "makes sense"
07:09:18 <b_jonas> ``` hg log --template "{author} " bin/list
07:09:20 <HackEgo> HackBot HackBot HackBot HackBot HackBot HackBot HackBot HackBot HackBot HackBot HackBot HackBot HackBot HackBot HackBot HackBot HackBot HackBot HackBot HackBot HackBot HackBot HackBot HackBot HackBot HackBot HackBot HackBot HackBot HackBot HackBot HackBot HackBot HackBot HackBot HackBot HackBot HackBot HackBot HackBot HackBot HackBot HackBot HackBo
07:09:22 <HackEgo> #!/bin/bash \ TIMEFORMAT="real: %lR, user: %lU, sys: %lS" \ shopt -s extglob globstar \ eval -- "$1"
07:09:23 <b_jonas> what file does list touch?
07:09:39 <b_jonas> ``` hg log --template "{desc} " bin/list
07:09:40 -!- Jakeey802 has joined.
07:09:40 <HackEgo> <shachaf> ` sed -i \'s/sort -u/awk \'\\\'\'!x[$0]++\'\\\'\'/\' bin/list <ais523> ` sed -i \'s!$! | xargs -n 1 | sort -u | xargs!\' bin/list <oerjan> ` sed -i \'s!conscripts!share/conscripts!g\' bin/list <shachaf> mkx bin/list//date > conscripts; culprits conscripts <shachaf> mkx bin/list//echo $(($(cat conscripts)+1)) > conscripts; culprits cons
07:09:51 <b_jonas> ``` hg log --template "{desc}\n" bin/list
07:09:52 <HackEgo> <shachaf> ` sed -i \'s/sort -u/awk \'\\\'\'!x[$0]++\'\\\'\'/\' bin/list \ <ais523> ` sed -i \'s!$! | xargs -n 1 | sort -u | xargs!\' bin/list \ <oerjan> ` sed -i \'s!conscripts!share/conscripts!g\' bin/list \ <shachaf> mkx bin/list//date > conscripts; culprits conscripts \ <shachaf> mkx bin/list//echo $(($(cat conscripts)+1)) > conscripts; culpr
07:10:21 <adu> hppavilion[1]: if O, Q in C, and M(O) == Q, and O2, Q2 in C2, then M2(O2) must be Q2
07:10:23 <b_jonas> ``` hg log --template "{desc}\n" conscripts
07:10:23 -!- Jakeey802 has quit (Client Quit).
07:10:37 <HackEgo> ls: cannot access conscripts: No such file or directory
07:11:02 <adu> hppavilion[1]: I might have put the "if"s in the wrong place
07:11:02 <b_jonas> ``` hg log --tempalte "{desc}\n" share/conscripts
07:11:04 <HackEgo> hg log: option --tempalte not recognized \ hg log [OPTION]... [FILE] \ \ show revision history of entire repository or files \ \ options: \ \ -f --follow follow changeset history, or file history across \ copies and renames \ -d --date DATE show revisions matching date spec \ -C --copies
07:11:09 <adu> hppavilion[1]: decorators
07:11:18 <b_jonas> ``` hg log -l 512 --template "{desc}\n" share/conscripts
07:11:19 <HackEgo> <hppavilion[1]> list \ <hppavilion[1]> list \ <b_jonas> revert \ <boily> list \ <a`a`a`a`jo7as> list \ <a`a`a`a`jo8as> list \ <a`a`a`a`jo3as> list \ <a`a`a`a`jo6as> list \ <a`a`a`a`jo5as> list \ <a`a`a`a`jo4as> list soon the too many nick changes rule will trigger on freenode \ <a`a`a`a`jo3as> list everypony \ <a`a`a`a`jo2as> list me too \ <a`a`
07:11:45 <b_jonas> well, it's a side-effect of the list
07:12:04 <hppavilion[1]> adu: No, I mean how do I check that that is true? that O, Q...
07:12:30 <shachaf> b_jonas: If you use hg log instead of hg log share/conscripts, it'll find other uses of `list
07:12:41 <shachaf> I think part of the spirit of `list is that once you've done it once, it's unescapable.
07:13:08 <HackEgo> date > share/conscripts; culprits share/conscripts | xargs -n 1 | awk '!x[$0]++' | xargs
07:13:40 <b_jonas> ``` hg log -l 512 --template "{desc}\0" share/conscripts | perl -0ne '/^<([^>]*)> list[\s\0]/ and print$1'
07:13:41 <HackEgo> hppavilion[1]hppavilion[1]boilya`a`a`a`jo7asa`a`a`a`jo8asa`a`a`a`jo3asa`a`a`a`jo6asa`a`a`a`jo5asa`a`a`a`jo4asa`a`a`a`jo3asa`a`a`a`jo2asa`a`a`a`jo1asa`a`a`a`jonas0a`a`a`alambdabotchicken_jonaschicken_jonaschicken_jonasmynamechicken_jonasboilyboily
07:13:49 <adu> hppavilion[1]: the way that Haskell does it is that the theorems and properties are clearly documented, and any time you disobey them, they call it "Unspecified Behaviour" and scare people
07:13:53 <HackEgo> cat: culprits: No such file or directory
07:13:57 <HackEgo> hg log --removed "$1" | grep summary: | awk '{print substr($2,2,length($2)-2)}' | sed "s/.$/\x0F&/" | xargs
07:14:10 <b_jonas> ``` hg log -l 512 --template "{desc}\0" share/conscripts | perl -0ne '/^<([^>]*)> list[\s\0]/ and print$1'
07:14:12 <HackEgo> hppavilion[1]hppavilion[1]boilya`a`a`a`jo7asa`a`a`a`jo8asa`a`a`a`jo3asa`a`a`a`jo6asa`a`a`a`jo5asa`a`a`a`jo4asa`a`a`a`jo3asa`a`a`a`jo2asa`a`a`a`jo1asa`a`a`a`jonas0a`a`a`alambdabotchicken_jonaschicken_jonaschicken_jonasmynamechicken_jonasboilyboily
07:14:18 <b_jonas> ``` hg log -l 512 --template "{desc}\0" share/conscripts | perl -0ne '/^<([^>]*)> list[\s\0]/ and print"$1 "'
07:14:20 <HackEgo> hppavilion[1] hppavilion[1] boily a`a`a`a`jo7as a`a`a`a`jo8as a`a`a`a`jo3as a`a`a`a`jo6as a`a`a`a`jo5as a`a`a`a`jo4as a`a`a`a`jo3as a`a`a`a`jo2as a`a`a`a`jo1as a`a`a`a`jonas0 a`a`a`a lambdabot chicken_jonas chicken_jonas chicken_jonas myname chicken_jonas boily boily
07:14:31 <adu> hppavilion[1]: if you want a system that enforces it, I suggest Coq, and no, that's not sexual
07:14:48 <b_jonas> ``` hg log -l 512 --template "{desc}\0" share/conscripts | perl -0ne '/^<([^>]*)> list[\s\0]/ and!$t{$1}++and print"$1 "'
07:14:49 <HackEgo> hppavilion[1] boily a`a`a`a`jo7as a`a`a`a`jo8as a`a`a`a`jo3as a`a`a`a`jo6as a`a`a`a`jo5as a`a`a`a`jo4as a`a`a`a`jo2as a`a`a`a`jo1as a`a`a`a`jonas0 a`a`a`a lambdabot chicken_jonas myname
07:14:54 <adu> Coq means chicken in some language
07:14:57 <hppavilion[1]> adu: So I just make a Functor class (possibly a subclass of Morphism) that raises an exception if you violate the GRAND PROPERTIES OF FUNCTORS
07:15:04 <b_jonas> ``` hg log -l 512 --template "{desc}\0" share/conscripts | perl -0ne '/^<([^>]*)>/ and!$t{$1}++and print"$1 "'
07:15:05 <HackEgo> hppavilion[1] b_jonas boily a`a`a`a`jo7as a`a`a`a`jo8as a`a`a`a`jo3as a`a`a`a`jo6as a`a`a`a`jo5as a`a`a`a`jo4as a`a`a`a`jo2as a`a`a`a`jo1as a`a`a`a`jonas0 a`a`a`a lambdabot chicken_jonas myname
07:15:10 <adu> hppavilion[1]: French, figures
07:16:15 <adu> hppavilion[1]: I'm just attempting to provide bibliographic references in case you want to write a paper about it
07:17:14 <hppavilion[1]> adu: So again, do I implement functors by making the functor class, which throws an exception when you don't functor properly?
07:17:35 <b_jonas> `perl -e-e($o="bin/culprits-ng") and die; open$O,">",$o or die; print $O qq{#!/bin/sh\n},q{exec hg log -l 512 --template "{desc}\0" -- "$@" | perl -0ne '/^<([^>]*)>/ and!$t{$1}++and print"$1 "'}; close$O;chmod 0755,$o or die;
07:17:40 <shachaf> No, you don't implement these things in Python at all.
07:17:41 -!- tromp_ has joined.
07:17:50 <b_jonas> `culprits-ng share/conscripts
07:17:51 <HackEgo> hppavilion[1] b_jonas boily a`a`a`a`jo7as a`a`a`a`jo8as a`a`a`a`jo3as a`a`a`a`jo6as a`a`a`a`jo5as a`a`a`a`jo4as a`a`a`a`jo2as a`a`a`a`jo1as a`a`a`a`jonas0 a`a`a`a lambdabot chicken_jonas myname
07:17:54 <adu> hppavilion[1]: there's a thing I did to wrap every function everywhere
07:18:00 <adu> hppavilion[1]: let me see if I can find it
07:18:15 <b_jonas> `culprits-ng wisdom/oerjan
07:18:17 <HackEgo> shachaf oerjan elliott Bike FreeFull ais523
07:19:28 <HackEgo> /hackenv/bin:/opt/python27/bin:/opt/ghc/bin:/usr/bin:/bin
07:19:31 <adu> hppavilion[1]: http://pastie.org/10736764
07:20:07 <b_jonas> `perl -e-e($o="bin/list-ng") and die; open$O,">",$o or die; print $O "#!/bin/sh\nexec culprits-ng ~/share/conscripts\n"; close$O;chmod 0755,$o or die;
07:20:26 <b_jonas> ``` echo > bin/culprits-ng
07:20:45 <shachaf> b_jonas: Wait, usually you don't want culprits to uniq
07:20:49 <shachaf> That's only relevant for `list
07:21:01 <adu> hppavilion[1]: debug_wrap_module() wrapps every function in a module to do something before and after the function, similar to "aspect-oriented programming"
07:21:15 <adu> hppavilion[1]: using "functools" you can probably do something similar
07:21:15 <b_jonas> `perl -e-e($o="bin/culprits-ng") and die; open$O,">",$o or die; print $O "#!/bin/sh\n",q{exec hg log -l 512 --template "{desc}\0" -- "$@" | perl -0ne '/^<([^>]*)>/ and!$t{$1}++and print"$1 "'},"\n"; close$O;chmod 0755,$o or die;
07:21:22 <b_jonas> shachaf: it shouldn't uniq? ok
07:21:34 <b_jonas> `perl -e($o="bin/culprits-ng"); open$O,">",$o or die; print $O "#!/bin/sh\n",q{exec hg log -l 512 --template "{desc}\0" -- "$@" | perl -0ne '/^<([^>]*)>/ and!$t{$1}++and print"$1 "'},"\n"; close$O;chmod 0755,$o or die;
07:21:40 <HackEgo> shachaf ais523 oerjan elliott Sgeo Phantom_Hoover tswett boily metasepia Ngevd oklopol nortti monqy Sgeo_ pikhq fungot Taneb cuttlefish Jafet Bike
07:22:00 <adu> hppavilion[1]: also, decorators are a great way to do something before and after a function
07:22:26 <hppavilion[1]> adu: OK, but this doesn't help me with functors xD
07:22:48 <b_jonas> `perl -e($o="bin/culprits-ng"); open$O,">",$o or die; print $O "#!/bin/sh\n",q{exec hg log -l 512 --template "{desc}\0" -- "$@" | perl -0ne '/^<([^>]*)>/ and print"$1 "'},"\n"; close$O;chmod 0755,$o or die;
07:22:58 <HackEgo> shachaf ais523 oerjan shachaf shachaf elliott Sgeo Phantom_Hoover elliott elliott tswett tswett elliott tswett boily boily metasepia tswett Ngevd oerjan elliott oerjan elliott Sgeo oklopol nortti elliott shachaf elliott Phantom_Hoover Phantom_Hoover Phantom_Hoover Phantom_Hoover monqy elliott Sgeo_ pikhq oerjan shachaf elliott shachaf elliott monqy
07:23:04 <HackEgo> b_jonas b_jonas b_jonas b_jonas
07:23:06 <b_jonas> `culprits-ng wisdom/oerjan
07:23:06 <HackEgo> shachaf shachaf oerjan shachaf oerjan shachaf oerjan elliott Bike FreeFull shachaf shachaf ais523 ais523 elliott FreeFull oerjan FreeFull oerjan shachaf
07:23:24 <Sgeo> Any chance you could do this in privmsg?
07:23:43 -!- adu has quit (Quit: adu).
07:24:06 <shachaf> I'm kind of interested in the EgoHacks.
07:24:13 <shachaf> But I guess it's pretty noisy.
07:24:29 <Sgeo> Maybe put a zero-width space between every character?
07:24:38 <b_jonas> it needs to noping them people
07:26:31 <b_jonas> #`perl -e($o="bin/culprits-ng"); open$O,">",$o or die; print $O "#!/bin/sh\n",q{exec hg log -l 512 --template "{desc}\0" -- "$@" | perl -0ne 'if(/^<([^>]*)>/){$n=$1;}'},"\n"; close$O;chmod 0755,$o or die;
07:26:41 <b_jonas> ``` chmod 644 bin/culprits-ng
07:26:54 <b_jonas> but I'll need to implement proper noping for it
07:27:00 <b_jonas> which is mor than I can do right now
07:27:21 <b_jonas> if you don't want to see it here, I can do it in private message (or some other channel)
07:27:57 <HackEgo> rm: cannot remove `bin/list-ng': No such file or directory
07:28:28 <HackEgo> hppavilion[1] b_jonas boily a`a`a`a`jo7as a`a`a`a`jo8as a`a`a`a`jo3as a`a`a`a`jo6as a`a`a`a`jo5as a`a`a`a`jo4as a`a`a`a`jo2as a`a`a`a`jo1as a`a`a`a`jonas0 a`a`a`a lambdabot chicken_jonas myname
07:29:12 <hppavilion[1]> Weird that there's some strange character between 1 and ]
07:31:13 <b_jonas> hppavilion[1]: that's because the actual list command does a noping
07:31:56 -!- tromp_ has quit (Remote host closed the connection).
07:48:48 <^v> so i was looking for an easy way to get the maximum amount of entropy out of a floating point value
07:49:27 <^v> right now what i do is divide the float by two until its less or equal to 1 then multiply it by 0xFFFFFFF
07:52:15 -!- jaboja has joined.
07:52:18 <^v> so idk if theres anything short of getting the raw mantissa and exponent of it
08:32:25 -!- tromp_ has joined.
08:36:59 -!- tromp_ has quit (Ping timeout: 244 seconds).
08:58:01 -!- jaboja has quit (Ping timeout: 255 seconds).
09:50:54 -!- lynn has joined.
10:00:03 -!- andrew has quit (Remote host closed the connection).
10:12:34 -!- hppavilion[1] has quit (Ping timeout: 244 seconds).
10:20:39 -!- jaboja has joined.
10:23:40 -!- AnotherTest has joined.
10:33:14 -!- tromp_ has joined.
10:37:35 -!- tromp_ has quit (Ping timeout: 250 seconds).
10:42:04 -!- jaboja has quit (Ping timeout: 240 seconds).
10:44:38 -!- noncom has joined.
10:55:27 -!- jaboja has joined.
11:16:07 -!- lynn has quit (Ping timeout: 244 seconds).
11:25:09 -!- augur has quit (Remote host closed the connection).
11:34:03 -!- boily has joined.
11:37:53 <lambdabot> CYUL 251131Z 01010KT 2 1/2SM -RA BR OVC003 00/M00 A2912 RMK SF8 -RA INTMT SLP863
11:38:07 <boily> what was that shachafweathercommand again...
11:38:19 <HackEgo> lambdabot: ?? (?metar CYUL) \ (?metar ENVA) \ (?metar ESSB) \ (?metar KOAK)
11:38:21 <lambdabot> CYUL 251131Z 01010KT 2 1/2SM -RA BR OVC003 00/M00 A2912 RMK SF8 -RA INTMT SLP863 \ ENVA 251120Z 32005KT 9999 VCSH FEW015 SCT025CB BKN049 02/00 Q0999 NOSIG RMK WIND 670FT 30006KT \ ESSB 251120Z 24006KT CAVOK 01/M04 Q0998 R30/19//56 \ KOAK 251053Z 32004KT 10SM CLR 13/09 A3011 RMK AO2 SLP195 T01280089
11:38:45 <boily> yup. No Cow Weather indeed.
11:48:04 <lambdabot> EGLL 251120Z AUTO 32005KT 290V350 9999 BKN015 04/M01 Q1018
11:48:08 <lambdabot> EFHK 251120Z 20014KT 9999 BKN015 02/M01 Q0997 TEMPO BKN014
11:48:17 <fizzie> Well, that's not a big difference.
12:18:15 -!- benderpc_ has joined.
12:19:00 -!- boily has quit (Quit: WEEKLY CHICKEN).
12:19:39 -!- benderpc_ has quit (Changing host).
12:19:39 -!- benderpc_ has joined.
12:19:53 -!- benderpc_ has changed nick to bender|.
12:19:55 -!- bender| has changed nick to bender.
12:31:23 -!- lynn has joined.
12:50:07 -!- J_Arcane has quit (Ping timeout: 244 seconds).
12:57:52 -!- ais523 has joined.
13:03:54 -!- tromp_ has joined.
13:08:12 -!- tromp_ has quit (Ping timeout: 244 seconds).
13:19:02 -!- lleu has joined.
13:42:49 -!- jaboja has quit (Ping timeout: 244 seconds).
13:43:59 -!- ais523 has quit (Ping timeout: 240 seconds).
13:50:15 -!- jaboja has joined.
14:26:15 -!- jaboja has quit (Ping timeout: 244 seconds).
14:35:31 -!- earendel has joined.
14:46:37 <lambdabot> KSFO 251356Z 00000KT 10SM CLR 11/09 A3012 RMK AO2 SLP200 T01110089 $
14:51:15 -!- Treio has joined.
14:56:04 -!- Treio has quit (Client Quit).
15:00:38 -!- lambda-11235 has joined.
15:23:35 -!- llue has joined.
15:23:46 -!- llue has quit (Changing host).
15:23:46 -!- llue has joined.
15:26:58 -!- lleu has quit (Read error: Connection reset by peer).
15:26:59 -!- Alcest has quit (Ping timeout: 240 seconds).
15:33:33 -!- bender has quit (Ping timeout: 250 seconds).
15:47:53 -!- jaboja has joined.
15:55:36 -!- jaboja has quit (Ping timeout: 244 seconds).
15:57:13 -!- lambda-11235 has quit (Quit: Bye).
16:42:31 -!- tromp_ has joined.
16:46:55 -!- tromp_ has quit (Ping timeout: 255 seconds).
16:56:06 -!- Lord_of_Life has quit (Excess Flood).
16:59:37 -!- Lord_of_Life has joined.
17:15:52 -!- AlexR42 has joined.
17:22:05 <HackEgo> [U+0F16 TIBETAN LOGOTYPE SIGN LHAG RTAGS]
17:37:39 -!- nisstyre_ has quit (Ping timeout: 248 seconds).
17:45:50 -!- mihow has joined.
17:47:36 -!- erdic has quit (Quit: leaving).
17:49:17 -!- erdic has joined.
18:05:58 -!- nisstyre_ has joined.
18:06:00 -!- lambda-11235 has joined.
18:06:24 -!- earendel has quit (Ping timeout: 276 seconds).
18:22:28 -!- hppavilion[1] has joined.
18:25:57 -!- atslash has joined.
18:33:04 -!- hppavilion[1] has quit (Ping timeout: 252 seconds).
18:46:32 -!- Phantom_Hoover has joined.
19:04:43 <lambdabot> KOAK 251853Z 24005KT 8SM SCT160 SCT200 16/11 A3017 RMK AO2 SLP215 T01610106
19:04:45 <lambdabot> KSFO 251856Z 03004KT 9SM BKN200 16/14 A3016 RMK AO2 SLP214 T01560144 $
19:05:03 <lambdabot> KSJC 251853Z 00000KT 10SM FEW100 SCT130 19/08 A3016 RMK AO2 SLP212 T01890083
19:25:03 -!- nisstyre_ has quit (Ping timeout: 276 seconds).
19:25:16 -!- hppavilion[wc] has joined.
19:33:58 <lambdabot> KBTV 251854Z 31015G23KT 10SM -RA OVC048 08/02 A2909 RMK AO2 RAB43 SLP853 P0000 T00830017
19:37:11 -!- earendel has joined.
19:38:53 -!- hppavilion[wc] has quit (Quit: Page closed).
19:43:50 -!- hppavilion[1] has joined.
19:52:39 -!- nisstyre_ has joined.
20:06:21 -!- lambda-11235 has quit (Read error: Connection reset by peer).
20:19:07 -!- ais523 has joined.
20:39:50 -!- gde33|2 has joined.
20:42:16 -!- gde33 has quit (Ping timeout: 255 seconds).
21:04:34 -!- vodkode has quit (Ping timeout: 240 seconds).
21:05:03 -!- vodkode has joined.
21:16:25 -!- augur has joined.
21:20:05 -!- I has joined.
21:20:28 -!- I has changed nick to Guest16721.
21:22:10 -!- atslash has quit (Ping timeout: 244 seconds).
21:22:19 -!- mihow has quit (Ping timeout: 255 seconds).
21:24:20 -!- augur has quit (Remote host closed the connection).
21:28:28 -!- oerjan has joined.
21:29:49 -!- augur has joined.
21:29:55 <HackEgo> [U+006F LATIN SMALL LETTER O] [U+0065 LATIN SMALL LETTER E] [U+0072 LATIN SMALL LETTER R] [U+006A LATIN SMALL LETTER J] [U+0061 LATIN SMALL LETTER A] [U+006E LATIN SMALL LETTER N]
21:30:34 * oerjan swats b_jonas for pinging him all over the logs -----###
21:32:54 <HackEgo> #!/bin/sh \ exec hg log -l 512 --template "{desc}\0" -- "$@" | perl -0ne '/^<([^>]*)>/ and print"$1 "'
21:33:53 <b_jonas> oerjan: don't use that one, it currently doesn't have noping
21:34:00 <b_jonas> I'd like to implement a proper noping, and then add it in
21:34:17 <oerjan> b_jonas: well that's why i swatted you
21:34:51 <oerjan> i just wanted to see if there was some broken attempt at it
21:36:16 <shachaf> oerjan: So what does ?A do in linear logic?
21:36:29 <shachaf> I think ?A = _|_ & A & A#A & A#A#A & ...
21:36:36 <shachaf> But now I need to understand #
21:36:43 <shachaf> Which is a superpower only you possess.
21:36:57 <oerjan> shachaf: well, logically that should be true (assuming that's the dual of the obvious !A expansion)
21:37:35 <shachaf> ?A = _|_ + A + A#A + A#A#A + ...
21:37:57 <shachaf> oerjan: The obvious !A expansion being !A = 1 & A & AxA & AxAxA + ...?
21:38:14 <oerjan> probably. assuming 1 is right there
21:38:30 <oerjan> which it should be iirc
21:39:20 <oerjan> so with + you don't get to decide which term you get to use
21:40:07 <oerjan> so you need to be able to handle any
21:40:49 <oerjan> i understand # mostly as wrapping x in de morgan and letting negation be continuations...
21:41:02 <oerjan> i hope that's right enough
21:42:32 <oerjan> ~A was A -> _|_, then...
21:42:36 <b_jonas> So if I wrote a noping utility for HackEgo, but its implementation was mildly obfuscated and so hard to understand or maintain, this channel wouldn't consider that a bug, right?
21:42:56 <b_jonas> Because this is typically the kind of string manipulation stuff where unreadable perl code excels.
21:44:16 <shachaf> b_jonas: It would be as if oerjan taught a class about linear logic, but used a simplified version of one of the unusual connectives to make it easier to understand.
21:44:26 <shachaf> b_jonas: Which is to say, it would be par for the course.
21:44:59 <oerjan> @tell boily shachaf needs a mapoling hth
21:45:10 -!- augur has quit (Remote host closed the connection).
21:46:21 <oerjan> now, someone needs to explain to me how (A -> _|_) -> _|_ can manage to always be A
21:47:03 <oerjan> *now, someone needs to explain to me how (A -o _|_) -o _|_ can manage to always be A
21:47:28 <oerjan> in fact, i think in some sense that _is_ the central question of making sense of # and negation in linear logic
21:47:35 <b_jonas> perl -eprint unpack "x*(a*\@0X)*(a*@)*", "hello\n";
21:47:40 <b_jonas> `perl -eprint unpack "x*(a*\@0X)*(a*@)*", "hello\n";
21:47:41 <HackEgo> \ o \ lo \ llo \ ello \ hello \ ello \ llo \ lo \ o
21:47:47 <oerjan> because -o seems perfectly logical, as do &, + and x
21:47:53 <b_jonas> `perl -eprint unpack "x*(a*\@0X)*", "hello\n";
21:48:01 <shachaf> Something is messing up my terminal.
21:48:04 <b_jonas> `perl -eprint unpack "(a*@)*", "hello\n";
21:48:05 <HackEgo> hello \ ello \ llo \ lo \ o
21:48:20 <b_jonas> shachaf: what? I don't think it was me this time
21:48:20 <oerjan> shachaf: presumably HackEgo
21:48:34 <shachaf> I mean, is b_jonas printing some evil characters?
21:48:42 <b_jonas> not intentionally at least
21:49:04 <oerjan> b_jonas: whenever HackEgo prints a line starting with a non-alphanum, it inserts the char that bothers shachaf
21:49:18 <b_jonas> That one simply computes all the suffixes of a string. Pity there's no such easy way to generate all prefixies.
21:49:35 <b_jonas> You can still generate all prefixes, but it's much uglier.
21:49:52 <b_jonas> oerjan: which char is that?
21:49:53 <shachaf> b_jonas: map reverse . suffixes . reverse hth
21:50:06 <b_jonas> shachaf: yes, that's the basic idea. and you can reverse with unpack IIRC
21:50:35 <shachaf> oerjan: how can -o be logical if # isn't logical hth
21:50:55 <oerjan> shachaf: because the illogicality comes from _|_ or negation
21:51:05 <b_jonas> shachaf: different notation. -o is logical or in find, but it's linear implication in linear logic.
21:51:21 <b_jonas> totally different operations, people just happened to name them the same
21:51:43 <b_jonas> it's like how ^ can mean logical and, bitwise xor, power
21:52:03 <oerjan> wait, are you interpreting "logical" as a technical term, bad move
21:52:38 <b_jonas> ... I'm waiting for that stick figure bot to print the third line
21:53:00 <shachaf> That only happens for LOGICAL CHRISTMAS TREE
21:53:11 <b_jonas> don't we have that bot running?
21:53:26 <shachaf> The "bot" is a person, myndzi, who's been gone for a long time.
21:53:44 <b_jonas> sure, most bots are persons.
21:53:50 <shachaf> We need to find a replacement who's as fast a typist.
21:53:59 <fungot> \o| c.c \o/ ಠ_ಠ \m/ \m/ \o_ c.c _o/ \m/ \m/ ಠ_ಠ \o/ c.c |o/
21:54:11 <shachaf> That command should be renamed to ^decapitate
21:54:44 <shachaf> oerjan: I think -o might still be odd without _|_ and #
21:55:21 <b_jonas> ais523: here's yet another experimental newly developped distributed version control system I hadn't heared about before: http://pijul.org/
21:55:51 <ais523> b_jonas: I haven't seen that one either
21:56:10 <b_jonas> I don't know what it does or whether it's any good
21:56:30 <ais523> it looks like a rewrite of darcs
21:56:33 <ais523> using the same principles
21:56:41 <HackEgo> [U+003E GREATER-THAN SIGN] [U+0020 SPACE] [U+200B ZERO WIDTH SPACE] [U+0020 SPACE] [U+005C REVERSE SOLIDUS]
21:58:12 <b_jonas> I don't know why that would mess up shachaf's terminal though
21:58:42 <ais523> huh, interesting license choice
21:59:07 <ais523> it's AGPL in an attempt to stop someone making a CVCS out of it
21:59:52 <b_jonas> huh? what's "AGPL", as opposed to just GPL 3 (Gnu general public license version 3)?
21:59:55 <oerjan> b_jonas: well, it does.
22:00:25 <ais523> b_jonas: AGPL is basically GPL with an extra case: if you let people use the software over a network, you have to give them source
22:02:12 <b_jonas> ais523: ah, it says “At the time of this writing (version 0.2), files are all treated as text, and patches are mostly concerned with lines.” – exactly what I don't want from a vcs
22:03:10 -!- hppavilion[1] has quit (Ping timeout: 252 seconds).
22:05:02 <oerjan> 1 is the sanest identity, it's basically () from haskell
22:06:49 <oerjan> all the others look impossible to construct or use...
22:06:56 <oerjan> well, at least one way each
22:09:29 <oerjan> 0 and ^|^ are like Void a bit
22:09:55 <oerjan> 0 is the option that the constructor cannot give
22:10:04 -!- AlexR42 has quit (Quit: My Mac has gone to sleep. ZZZzzz…).
22:10:05 <oerjan> ^|^ is the option that the consumer cannot choose
22:13:24 <shachaf> + is a lot more like Either than & is
22:13:43 <oerjan> they're continuations of each other
22:16:29 <shachaf> http://llwiki.ens-lyon.fr/mediawiki/index.php/Sequent_calculus
22:18:48 -!- AnotherTest has quit (Quit: ZNC - http://znc.in).
22:20:56 -!- hppavilion[1] has joined.
22:25:17 -!- augur has joined.
22:25:22 <shachaf> myname: because it makes no sense hth
22:27:28 <lambdabot> Maybe you meant: yow list let docs do
22:30:22 <oerjan> <shachaf> `? weather <-- fancy
22:31:01 -!- augur has quit (Remote host closed the connection).
22:33:26 <oerjan> ?. ?? ?run var$("(?metar "++).(++") \ ")=<<["CYUL","ENVA","ESSB","KOAK"]
22:33:27 <lambdabot> Plugin `compose' failed with: Unknown command: "??"
22:33:34 <oerjan> ?. ? run var$("(?metar "++).(++") \ ")=<<["CYUL","ENVA","ESSB","KOAK"]
22:33:41 <lambdabot> lexical error in string/character literal at character '"'
22:34:13 <oerjan> ?run var$("(?metar "++).(++") \ ")=<<["CYUL","ENVA","ESSB","KOAK"]
22:34:19 <lambdabot> lexical error in string/character literal at character '"'
22:34:29 <oerjan> possibly that's not quite right
22:35:32 <oerjan> ?. ? run var$("(?metar "++).(++") \\ ")=<<["CYUL","ENVA","ESSB","KOAK"]
22:35:39 <lambdabot> CYUL 252200Z 26011KT 12SM -SN FEW008 BKN018 OVC030 01/M01 A2915 RMK SF2SF3SC3 SLP875 \ ENVA 252220Z 00000KT 5000 -SN VV009 M00/M01 Q0998 RMK WIND 670FT VRB02KT \ ESSB 252220Z AUTO 26007KT 9999 NCD M01/M06 Q0999 \ KOAK 252153Z 25006KT 10SM FEW160 19/09 A3010 RMK AO2 SLP194 T01940094 \
22:36:55 <oerjan> `` echo -n " "; \? weather
22:36:56 <HackEgo> lambdabot: ?? (?metar CYUL) \ (?metar ENVA) \ (?metar ESSB) \ (?metar KOAK)
22:42:43 <hppavilion[1]> The red button panel in http://www.smbc-comics.com/index.php?id=3440 is actually really cool.
22:48:32 <lambdabot> Wrapped s => (Unwrapped s -> s) -> s -> Unwrapped s
22:50:29 <shachaf> @@ @? @run var$("(?metar "++).(++") \\ ")=<<words @show CYUL ENVA ESSB KOAK
22:50:36 <lambdabot> CYUL 252237Z 26012KT 2 1/2SM -SN BKN010 OVC025 01/M01 A2917 RMK SN3SF4SC1 SLP882 \ ENVA 252220Z 00000KT 5000 -SN VV009 M00/M01 Q0998 RMK WIND 670FT VRB02KT \ ESSB 252220Z AUTO 26007KT 9999 NCD M01/M06 Q0999 \ KOAK 252153Z 25006KT 10SM FEW160 19/09 A3010 RMK AO2 SLP194 T01940094 \
22:53:26 <shachaf> Not as long as @metar KOAK\n...@metar CYUL\n... etc.
22:54:15 <oerjan> that looks a little irresponsive
22:54:26 <shachaf> @@ @@ (@where test) CYUL KOAK
22:54:31 <lambdabot> CYUL 252237Z 26012KT 2 1/2SM -SN BKN010 OVC025 01/M01 A2917 RMK SN3SF4SC1 SLP882 \ KOAK 252153Z 25006KT 10SM FEW160 19/09 A3010 RMK AO2 SLP194 T01940094 \
22:56:26 <shachaf> @@ @where+ weather (@where test)
22:57:20 <shachaf> `le/rn weather/lambdabot: ?? ?? (?where weather) CYUL ENVA ESSB KOAK
22:57:29 <HackEgo> lambdabot: ?? ?? (?where weather) CYUL ENVA ESSB KOAK
22:57:56 <lambdabot> ?? ?@ ?run var$("(@metar "++).(++") \\ ")=<<words ?show
22:58:08 <oerjan> i think you may have overclevered
22:58:12 <lambdabot> EGBB 252250Z 19003KT 9999 OVC045 03/M02 Q1014
22:58:27 <shachaf> @@ @@ (@where weather) CYUL KOAK
22:58:37 <lambdabot> CYUL 252237Z 26012KT 2 1/2SM -SN BKN010 OVC025 01/M01 A2917 RMK SN3SF4SC1 SLP882 \ KOAK 252253Z 27006KT 9SM FEW160 21/09 A3009 RMK AO2 SLP189 T02060094 \
22:58:42 <lambdabot> @@ executes plugin invocations in its arguments, parentheses can be used.
22:58:44 <lambdabot> The commands are right associative.
22:58:48 <lambdabot> is the same as: @@ (@pl (@undo code))
22:59:18 <HackEgo> lambdabot: ?? ?? (?where weather) CYUL ENVA ESSB KOAK
22:59:38 <lambdabot> ?? ?@ ?run var$("(@metar "++).(++") \\ ")=<<words ?show
22:59:45 <shachaf> oerjan, ais523: Oh, by the way, that bot loop detection the other day was just me doing @part and @join.
22:59:58 * oerjan swats shachaf -----###
23:00:28 <oerjan> i suspected you the first time, but not that much persistence
23:00:47 <ais523> shachaf: that's genius
23:00:58 <ais523> I was a bit suspicious that the timing was different each time
23:01:09 <ais523> but thought it was simply that I hadn't spammed with consistent timing
23:01:40 <oerjan> shachaf: your punishment is to make lambdabot actually have that feature hth
23:02:18 <shachaf> oerjan: I'll implement it by writing a lambdabot watchdog that sends it @part and @join when it detects a loop.
23:02:33 <shachaf> More bots are always better.
23:05:00 <oerjan> `where+ weather ???run var$("(@metar "++).(++") \\ ")=<<words ?show
23:05:01 <HackEgo> /home/hackbot/hackbot.hg/multibot_cmds/lib/limits: line 5: exec: where+: not found
23:05:08 <oerjan> ?where+ weather ???run var$("(@metar "++).(++") \\ ")=<<words ?show
23:05:20 <HackEgo> lambdabot: ?? ?? (?where weather) CYUL ENVA ESSB KOAK
23:05:22 -!- hppavilion[1] has quit (Ping timeout: 255 seconds).
23:05:44 <lambdabot> ???run var$("(@metar "++).(++") \\ ")=<<words ?show
23:06:13 <oerjan> ?where+ weather ?? ?run var$("(@metar "++).(++") \\ ")=<<words ?show
23:06:23 <HackEgo> lambdabot: ?? ?? (?where weather) CYUL ENVA ESSB KOAK
23:06:45 <oerjan> um needs reconsideration
23:07:18 <oerjan> ?where+ weather ?run var$("(@metar "++).(++") \\ ")=<<words ?show
23:07:44 <oerjan> ?where+ weather ?run var$("(?metar "++).(++") \\ ")=<<words ?show
23:07:50 <HackEgo> lambdabot: ?? ?? (?where weather) CYUL ENVA ESSB KOAK
23:08:41 <oerjan> ?where+ weather ?run var$("(@metar "++).(++") \\ ")=<<words ?show
23:09:13 <oerjan> `le/rn weather/lambdabot: ?? ?@ (?where weather) CYUL ENVA ESSB KOAK
23:09:21 <HackEgo> lambdabot: ?? ?@ (?where weather) CYUL ENVA ESSB KOAK
23:09:41 <oerjan> WELL IT'S STILL NOT WORKING
23:09:43 <shachaf> What was wrong with the thing I did above?
23:10:04 <shachaf> @@ @@ (@where test) ENVA KSJC
23:10:07 <oerjan> maybe ?? is too clever about recursion...
23:10:09 <lambdabot> ENVA 252250Z 00000KT 5000 -SN VV009 M00/M01 Q0998 RMK WIND 670FT 25002KT \ KSJC 252253Z 26003KT 10SM FEW090 SCT150 24/08 A3008 RMK AO2 SLP184 T02440078 \
23:10:11 <shachaf> lambdabot: @@ @@ (@where test) ENVA KSJC
23:10:15 <lambdabot> ENVA 252250Z 00000KT 5000 -SN VV009 M00/M01 Q0998 RMK WIND 670FT 25002KT \ KSJC 252253Z 26003KT 10SM FEW090 SCT150 24/08 A3008 RMK AO2 SLP184 T02440078 \
23:10:16 <shachaf> `echo lambdabot: @@ @@ (@where test) ENVA KSJC
23:10:17 <HackEgo> lambdabot: @@ @@ (@where test) ENVA KSJC
23:10:40 <oerjan> lambdabot: @@ @@ (@where test) ENVA KSJC
23:10:46 <lambdabot> ENVA 252250Z 00000KT 5000 -SN VV009 M00/M01 Q0998 RMK WIND 670FT 25002KT \ KSJC 252253Z 26003KT 10SM FEW090 SCT150 24/08 A3008 RMK AO2 SLP184 T02440078 \
23:10:56 <shachaf> Did HackEgo put a special character in front of that one?
23:11:21 <oerjan> `echo lambdabot: @run 2
23:12:25 <shachaf> Did int-e add the bot loop protection you asked for?
23:12:52 <shachaf> lambdabot hasn't been restarted...
23:13:31 <oerjan> i asked for him to add more spaces in front, that shouldn't affect this...
23:13:43 <oerjan> at least not without breaking it as much for us as for HackEgo
23:14:16 <lambdabot> ?run var$("(@metar "++).(++") \\ ")=<<words ?show
23:14:39 <HackEgo> lambdabot: ?? ?@ (?where weather) CYUL ENVA ESSB KOAK
23:14:42 <lambdabot> (@metar CYUL) \ (@metar ENVA) \ (@metar ESSB) \ (@metar KOAK) \
23:14:53 <shachaf> I guess someone put HackEgo on the ignore list.
23:16:19 <shachaf> Oh, and lambdabot did restart.
23:16:43 <shachaf> @@ @where+ weather (@where test)
23:16:59 <shachaf> @@ @@ (@where weather) KOAK KSJC KSFO
23:17:04 <lambdabot> KOAK 252253Z 27006KT 9SM FEW160 21/09 A3009 RMK AO2 SLP189 T02060094 \ KSJC 252253Z 26003KT 10SM FEW090 SCT150 24/08 A3008 RMK AO2 SLP184 T02440078 \ KSFO 252256Z 02005KT 9SM SCT200 18/13 A3009 RMK AO2 SLP188 T01830128 $ \
23:17:22 <shachaf> what's the trailing \ all about
23:17:25 <lambdabot> ?? ?@ ?run var$("(@metar "++).(++") \\ ")=<<words ?show
23:18:05 <oerjan> intercalate is so long
23:20:41 <oerjan> @tell boily <boily> hppavilion[1]: as long as it features ¨ on egregious glyphs, and that multiocular O. <-- ¨ on multiocular O, check
23:21:39 <HackEgo> He alternates between making sense, and being logical. He doesn't monetize the brotherhood scheme.
23:21:56 <oerjan> `` sed -i 's/He/madbr/' wisdom/madbr
23:23:02 <shachaf> ?? ?@ ?run var$intercalate " \\ " . map (\x -> "(@metar "++x++")") . words $ ?show ENVA KOAK
23:23:08 <lambdabot> ENVA 252250Z 00000KT 5000 -SN VV009 M00/M01 Q0998 RMK WIND 670FT 25002KT \ KOAK 252253Z 27006KT 9SM FEW160 21/09 A3009 RMK AO2 SLP189 T02060094
23:23:11 <shachaf> @where+ weather ?? ?@ ?run var$intercalate " \\ " . map (\x -> "(@metar "++x++")") . words $ ?show
23:23:19 <HackEgo> lambdabot: ?? ?@ (?where weather) CYUL ENVA ESSB KOAK
23:23:25 <ais523> `unicode multiocular o
23:23:28 <HackEgo> U+A66E CYRILLIC LETTER MULTIOCULAR O \ UTF-8: ea 99 ae UTF-16BE: a66e Decimal: ꙮ \ ꙮ \ Category: Lo (Letter, Other) \ Bidi: L (Left-to-Right)
23:23:34 <HackEgo> lambdabot: ?? ?@ (?where weather) CYUL ENVA ESSB KOAK
23:23:43 <lambdabot> CYUL 252300Z 26013KT 2 1/2SM -SN BKN009 OVC014 00/M01 A2919 RMK SN2SF4SF2 SLP887 \ ENVA 252250Z 00000KT 5000 -SN VV009 M00/M01 Q0998 RMK WIND 670FT 25002KT \ ESSB 252250Z AUTO 26008KT 9999 NCD M01/M06 Q0999 \ KOAK 252253Z 27006KT 9SM FEW160 21/09 A3009 RMK AO2 SLP189 T02060094
23:23:59 <shachaf> This is definitely the least noisy way to find out the weather.
23:24:08 <ais523> `unicode combining umlaut
23:24:27 <shachaf> `unicode combining diaeresis
23:26:28 <oerjan> `` echo -n ꙮ;unicode combining diaeresis
23:26:30 <HackEgo> ꙮU+0308 COMBINING DIAERESIS \ UTF-8: cc 88 UTF-16BE: 0308 Decimal: ̈ \ ̈ \ Category: Mn (Mark, Non-Spacing) \ Bidi: NSM (Non-Spacing Mark) \ Combining: 230 (Above) \ \ U+0324 COMBINING DIAERESIS BELOW \ UTF-8: cc a4 UTF-16BE: 0324 Decimal: ̤ \ ̤ \ Category: Mn (Mark, Non-Spacing) \ Bidi: NSM (Non-Spacing Mark) \ Combining: 2
23:27:05 <oerjan> `` echo -n ꙮ;unicode 'combining diaeresis'
23:27:49 <oerjan> @tell boily MWꙮ̈Hꙮ̈Hꙮ̈Hꙮ̈
23:28:26 <shachaf> how did we get sidetracked from linear logic tdnh
23:28:32 <shachaf> you were about to tell me what _|_ meant
23:29:01 <oerjan> like a deep, bottomless void
23:29:18 <shachaf> http://llwiki.ens-lyon.fr/mediawiki/index.php/Intuitionistic_linear_logic
23:29:33 <shachaf> "The connectives #, _|_ and ? are not available anymore, but the linear implication -o is."
23:29:37 <shachaf> i'm guessing you're a fan hth
23:29:58 -!- adu has joined.
23:30:28 <oerjan> i dunno, there's something deeply mysterious about truly self-dual linear logic
23:30:36 <shachaf> i think the duality is p. important
23:30:42 <shachaf> without duality what do you even have
23:30:43 <oerjan> maybe it's the secret of quantum mechanics twh
23:31:16 <shachaf> oh i figured out the secret to the speed of light the other day
23:34:03 <shachaf> Oh, http://llwiki.ens-lyon.fr/mediawiki/index.php/Translations_of_classical_logic
23:34:06 <shachaf> http://llwiki.ens-lyon.fr/mediawiki/index.php/Translations_of_intuitionistic_logic
23:45:34 <shachaf> Well, I don't know if it actually makes sense.
23:46:06 <shachaf> I should talk to someone who knows about physics about it.
23:46:24 <shachaf> It's more of an analogy, really.
23:46:37 <oerjan> i do know some physics.
23:47:05 <shachaf> ok then can you explain the speed of light twh
23:48:53 <oerjan> well it's basically the fundamental speed of relativity theory
23:49:42 <shachaf> Anyway there's this thing called "volume time".
23:50:27 <shachaf> I mean in the sense of trading volume. Each time someone buys or sell something the volume time of that thing increases.
23:50:41 <shachaf> Well, in particular, one person buys and the other person sells.
23:50:53 -!- hppavilion[1] has joined.
23:51:01 * oerjan sees a financial person with a hammer
23:51:13 <hppavilion[1]> I think teams of scientists should design video game stat systems
23:51:25 <shachaf> oerjan: take that back twh
23:51:39 <shachaf> This has nothing to do with physics anyway, I was just thinking about volume time.
23:51:52 <shachaf> Measuring things in volume time rather than clock time can make all sorts of things more well-behaved.
23:51:56 <oerjan> shachaf: was it _that_ insulting
23:52:23 <tswett> hppavilion[1]: what do you mean by a video game stat system, exactly?
23:52:36 <shachaf> So you might say "my position is X, and by volume time T, I want to have position X+D"
23:53:11 <hppavilion[1]> For example, the material scientist adds TGH (toughness), HRD (hardness), STR (strength), DUC (ductility), CRS (corrosion resistance), TMB (temperature-based behavior), WRS (wear resistance)
23:53:31 <shachaf> Well, from time T to time T', you go from position X to position X'
23:53:36 <tswett> So the "volume time" is essentially the number of share-trades that have happened so far?
23:53:38 <shachaf> So your "speed" -- called "participation rate" -- is (X'-X)/(T'-T)
23:53:49 <hppavilion[1]> tswett: I think we should spend the next hour making science/video game jokes about obscure traits characters could have
23:53:56 <shachaf> Anyway the interesting thing about this system is that time and position are measured in the same sort of unit.
23:53:58 <tswett> hppavilion[1]: I like that idea.
23:54:09 <shachaf> It never makes sense to have a speed greater than 1. It doesn't matter how fast you trade.
23:54:20 <oerjan> shachaf: there is a concept in relativity known as "proper time", which is the time a particular object observes.
23:54:21 <tswett> hppavilion[1]: reminds me of Dwarf Fortress. It's a really really sophisticated simulation.
23:54:24 <hppavilion[1]> tswett: And, perhaps, loving what we come up with so much that we make a browser game out of it
23:54:50 <hppavilion[1]> RAD- radioactivity- how much ambient long-term damage you do to your opponents (comes at a HLTH cost)
23:55:18 <shachaf> Anyway there does come up some thing in physics where time and position are measured using the same sort of unit, right?
23:55:40 <shachaf> And where in some sense it's nonsensical to talk about changing position faster than the speed 1?
23:55:59 <tswett> shachaf: yeah, I mean, you just assume that the speed of light is equal to unitless 1.
23:56:21 <oerjan> shachaf: it is common to set the speed of light to 1, which is essentially that
23:56:23 <tswett> I think it's still meaningful to talk about changing position faster than 1. It's just that nothing does that.
23:56:35 <tswett> STN - steinfulness. It determines your, uh...
23:56:37 <shachaf> Sure, but the idea that you can't change position faster than some speed, no matter how much you try, seems kind of odd given the usual notion of speed.
23:56:43 <tswett> Most people have a steinfulness of 0.
23:56:46 <shachaf> But in this volume time context it makes perfect sense.
23:56:50 <shachaf> So maybe physics is like that.
23:57:06 <tswett> There's a certain famous theoretical physicist, now deceased, who had a steinfulness of 1.
23:57:25 <tswett> I'm not aware of anyone who has ever had a steinfulness of 2 or greater.
23:57:33 <shachaf> Well, it's "meaningful" to talk about going from position 0 to position 100 in volume time 50.
23:57:47 <shachaf> But you can't get there by buying.
23:58:17 <oerjan> Dr. Zweistein, i presume
23:58:37 <hppavilion[1]> tswett: Also STN- Berenstain: Sensitivity to interuniversal travel
23:59:11 <tswett> TDC - Tardicity. Determines how large the interior is compared to the exterior.
23:59:48 <tswett> So, Wikipedia says you can use transfinite induction to define a function on the ordinal numbers like so.