00:03:51 http://upload.wikimedia.org/wikipedia/commons/8/8a/Birgus_latro_%28Bora-Bora%29.jpg 00:05:03 ooh, it's like a beefier spider crab 00:07:34 coconut crab 00:07:35 huge 00:08:06 -!- asiekierka has quit (Excess Flood). 00:08:18 http://en.wikipedia.org/wiki/File:Japanese_spider_crab.jpg A Good Species 00:11:18 uh what about http://en.wikipedia.org/wiki/File:Giant_isopod.jpg 00:12:02 good isopods 00:12:14 -!- asiekierka has joined. 00:12:39 isopods are the best 00:13:09 invertible pods 00:13:21 especially slaters 00:13:31 don't have lungs, but they're not going to let that stop them 00:13:46 -!- Arc_Koen has left. 00:14:38 -!- epicmonkey has quit (Ping timeout: 255 seconds). 00:18:31 isopodism 00:19:29 sacculina is just weird 00:25:07 Hulu wants me to watch Coronation Street. "Don't miss all the drama rife with Britishisms" it says 00:26:11 you should watch it! 00:26:45 @hoogle lexeme 00:26:45 Text.Read.Lex data Lexeme 00:26:45 Text.Read data Lexeme 00:26:45 Text.Parsec.Token lexeme :: GenTokenParser s u m -> forall a. ParsecT s u m a -> ParsecT s u m a 00:27:29 -!- ogrom has quit (Quit: Left). 00:28:49 yes kmc 00:28:51 watch coronation street 00:35:17 why 00:35:41 um 00:35:44 watch first ask questions later 00:42:33 i don't know what a british soap opera is like 00:42:36 hm, this is interesting http://valerieaurora.org/review/hash.html (looked around the site where synthesis HTML is hosted) 00:42:40 american soap operas are... dumb 00:42:46 elliott, you might be interested in that 00:43:01 elliott, it discusses using hash as a unique key, like git does 00:43:19 pretty sure the paper predates git though 00:46:15 using a hash as a unique key is pretty obvious, really 00:46:18 it's how hash tables work 00:46:57 ais523, except you then compare the value in the bucket to make sure it actually is the key you wanted 00:47:05 yes 00:47:08 ais523, with git or venti you don't 00:47:12 if you had an infinitely large hash table this wouldn't be a problem 00:47:15 you trust the sha1 is unique 00:47:25 if it isn't. Well shit 00:47:26 such as a filesystem 00:47:51 ais523, the sha1 is not unique though, due to the pidgeon hole principle. 00:48:50 yeah, but it's unique in the sense of "if there's a collision, the collision itself will be more valuable than whatever it is you're working on" 00:49:00 ais523, hah 00:49:25 also in the sense of 'random bit flip error in hardware is vastly more likely' 00:49:30 but the paper says maybe not? 00:49:30 ais523, but that is not the point. I do think http://valerieaurora.org/review/hash.html makes some interesting points. 00:49:33 but i didn't read it 00:49:40 what are the interesting points 00:50:32 kmc, yes that is true, but that is over a random data. The paper points out that most data stored in a file system is not random, and thus those calculations can not necessarily be used straight away. 00:52:21 kmc, for example, consider shb1(x) = { if x > 0 : sha1(x); if x = 0 : sha(1) }. That is has almost the same properties as sha1() here, almost the same risk of collision given two random inputs, but would be vastly less useful than sha1 for actual practical non-random data 00:53:34 mm 00:53:39 because it collides 0 and 1 00:53:45 kmc, of course, sha1 doesn't do anything as stupid as that, but the point is that "chance of two random inputs colliding" does not necessarily equal "chance of two file system blocks/commits colliding" 00:54:01 because the latter is highly non-random 00:54:04 sure 00:54:17 i mean, i have md5 collisions on my disk :) 00:54:25 but everyone agrees this means md5 is broken 00:54:31 kmc, ah that nicely brings us to another point 00:55:26 kmc, sha1 is cryptographically secure (or was at the point of writing that paper anyway, in 2003). md5 was suspected of being insecure, but wasn't yet really broken 00:56:31 kmc, who knows if it will be trivial to find collisions for sha1 is 10 years time? You might still have your git repo around then. While for crypo applications, it doesn't matter if a key created today isn't secure any more then. It is probably no longer in use by then anyway 00:57:06 yeah, it's very bad that Git doesn't have any hash upgrade path 00:57:37 and even if it had, what would you do if someone snuck in a collision before you had time to fix it. You would be pretty much screwed 00:58:15 kmc, the same applies to venti, hg (I assume?, I don't know if hg is as stupid as git here) and so on 00:58:22 if you are relying on git for cryptographic assurances, yes 00:59:00 kmc, if you are relying on git for just being able to identify commits uniquely 00:59:00 obviously in many projects using git, if someone can 'sneak in' malicious commits then you are in trouble anyway 00:59:16 Vorpal: if you are relying on git for being able to identify commits uniquely in an adversarial model 00:59:24 well yeah 00:59:56 this doesn't mean git is 'stupid' 01:00:00 is there an adversarial model of revision control 01:00:01 kmc: have yo uwatched coronation street yet 01:00:09 it means git fails to deliver a particular security guarantee that VCSes often don't deliver 01:00:25 kmc, what about rsync? 01:00:25 it fails in proportion to how much SHA-1 fails 01:00:45 people do talk about git as if it has this guarantee, and it sort of does, as long as SHA-1 is okay 01:00:47 kmc, can you know your two sets of files are actually the same? 01:01:10 but yeah, I would not rely on a Git hash to take the place of code signing against a determined attacker who may have broken a world cryptographic hash standard 01:01:13 big fuckin deal 01:01:21 calling Git "stupid" because of that is ridiculous hyperbole 01:01:36 kmc, in the long run, it will most likely become, if not trivial, at least achievable, to generate SHA-1. The technological development is pretty rapid. 01:01:42 yes 01:01:50 git is stupid for unrelated reasons 01:01:53 and then we should upgrade to a new version of Git that uses a better hash 01:01:56 elliott, well yes, as well 01:02:17 kmc, what about deduplicating file systems like venti though 01:02:18 if I sign my code with RSA then in the long run someone will break RSA too 01:02:20 what's your point 01:03:39 can we take this long term and assert that privacy as a concept will only even exist in like one and a half centuries max, and afterwards we'll all be flinging unsigned poo at each other 01:04:23 kmc, my point is that file systems and version control systems, especially file systems, are in for the long run. In crypto applications you are usually not 01:05:09 Bike, you believe civilisation will collapse that soon? 01:05:24 "yes" 01:05:28 fair enough 01:06:03 i guess i could read that three np worlds paper again and then pretend to have a thought-out opinion 01:06:24 Bike, oh? 01:07:44 Impagliazzo's 01:08:02 http://cseweb.ucsd.edu/users/russell/average.ps 01:10:17 Vorpal: not sure re: crypto applications not being for the long run 01:10:34 if da police image my hard drive, I might care that they can decrypt it 15 years later 01:10:44 likewise with any incriminating emails I may have sent 01:10:54 SSH sessions that may have been recorded 01:10:55 etc 01:11:01 kmc, well okay it depends, but the most common applications of message signing and such where you use hashes are not relevant 15 years later 01:11:12 i don't agree 01:11:38 Bike: no no, we will all merge into a highly technological group mind etc.; admittedly still no privacy. 01:11:41 kmc, and a symmetric block cipher such as AES do not involve hashes generally 01:11:46 I wonder if a statute of limitations extension argument from crypto will ever be made. 01:11:51 oerjan: you're blowing my mind man. 01:11:51 if anything I think the VCS is in a better position 01:12:12 if you think nobody has broken SHA-1 yet, but they will soon, you can re-hash all your Git objects with SHA-3 and then refuse to deal with SHA-1 going forward 01:12:34 whereas you can't go back in time and make the police's image of your encrypted hard drive no longer valid 01:13:27 kmc, true, but that is not a hash. That is a different situation. And I meant hashes in cryptography in this context 01:13:27 and i don't know what your point is re: AES not involving hashes 01:13:32 hashes aren't the only things that can be broken 01:13:38 ok 01:13:49 kmc, quite so. But the discussion was about hashesh 01:13:51 hashes* 01:16:22 kmc, my point was that, for the most part, in crypographic contexts, it isn't interesting if, for example, the SHA-1 checksum for the SSL cert is broken 10 years down the line. 01:17:58 hashes in cryptography is generally for signing stuff, so you can verify it. Apart from using it for document signing, I don't see much of an use many years down the line 01:20:17 and nobody is going to care in 15 years if a given document is authentic? 01:20:17 good night 01:20:28 kmc, I said, apart from document signing 01:20:31 oh 01:20:35 yes I do realise that is a problem 01:21:43 -!- carado has quit (Ping timeout: 246 seconds). 01:21:45 kmc, but for the grand majority of the applications, it is not such a major issue. 01:21:54 and now I need to sleep, pretty late over here 01:24:42 'night 01:26:16 -!- monqy has joined. 01:27:49 I can understand how (CoYoneda IORef) makes a read-only reference. You can see what it makes when you use IORef with other Kan extensions 01:31:12 zzo38: What does it make? 01:36:21 I try to think of it. 01:53:53 -!- sirdancealot7 has quit (Ping timeout: 256 seconds). 02:02:51 Do you know what I think is the benefit of chiromancy (palmistry)? 02:06:35 Picking up chicks? 02:06:56 No! 02:09:42 Picking up pigeons? 02:10:08 Ooh, can I change my guess? 02:10:30 Yes, you can change your guess. 02:10:46 Picking up pigeons is also incorrect. 02:11:45 Aww. 02:11:50 Ok, I give up, what is the benefit? 02:12:14 To name all the lines on your hand and shape of your hand. 02:12:31 (Even if they don't have anything to do with what they are named after) 02:12:45 I guess it could be kind of useful for external anatomy... 02:23:19 Speicherzugriffsfehler 02:23:38 Ошибка сегментирования 02:31:49 Szegmentálási hiba 02:34:27 I'd probably still be programming lots of C if that was the error 02:34:41 which one 02:34:53 i'd probably still be programming lots of C 02:35:04 if by "programming" you mean "smoking" and by "C" you mean "crack" 02:35:51 honestly all of them 02:35:59 polish is my wife in the celestial plane 02:36:08 that's hungarian 02:36:15 FUCK 02:36:25 polish is: 02:36:25 Naruszenie ochrony pamięci 02:36:34 Ok that's good too. 02:36:46 What the hell is "naruszenie"? None of these things look very cognate. 02:36:58 surprising that hu has the en cognate in this case 02:38:11 means "violation" apparently 02:38:42 nice 02:39:06 somehow i have a feeling of seeing that word before 02:39:11 (naruszenie does i mean) 02:39:16 maybe i was violated by a pole once 02:40:02 Why do I see "sz" and guess polish. that's like, the hungarian giveaway 02:40:25 because it's _also_ the polish giveaway. 02:40:46 `addquote maybe i was violated by a pole once 02:40:51 949) maybe i was violated by a pole once 02:41:00 oh i thought the polish giveaway was things like "zenie" 02:41:06 the á's are more specific to hungarian i think 02:41:10 (wow do i have a shallow view of languages or what) 02:41:18 I thought the Polish giveaway was rz. 02:41:23 the best hungarian giveaway is ő or ű ;P 02:41:43 polish is just english with about 5 extra consonants in each word 02:41:44 Bike: polish and hungarian both use s and sz. in opposite ways. hth. 02:41:45 let's be realistic 02:41:59 can we just have every language use its own orthography 02:42:29 Bike: although perhaps the best way to put it: hungarian uses the sz for something that's obviously a foreign borrowed "s" 02:42:41 what really 02:42:43 -!- Phantom_Hoover has quit (Remote host closed the connection). 02:42:45 it's not only in loanwords is it 02:42:48 have i been so wrong 02:42:49 no 02:42:56 no translation in sq_AL.UTF-8 :( 02:43:02 is my whole life a lie 02:43:03 but that's how you can see Szegmentálási is hungarian 02:43:12 kmc: scots? actually no i have no idea 02:43:31 is there a locale for klingon 02:43:31 albanian aka shqipe 02:43:49 wow i know nothing about albanian. is it IE at least? 02:43:53 yes it is. 02:44:00 is it internet explorer? 02:44:00 They speak a whole other language in Albany? *takes a bow* 02:44:22 oh wow it's an isolate within IE 02:44:32 mountains have some fuckin crazy languages huh 02:45:00 Száz is pretty native 02:45:18 although "Originally borrowed from an Indo-Iranian language" 02:46:34 also most of the country lost their savings in ponzi schemes in 1997 02:46:45 resulting in the overthrow of the government 02:46:55 which, albania? 02:46:57 yes 02:47:26 the thing i mostly know about albania is the bunkers 02:47:32 and also that "hoxha" is a pretty great name 02:48:24 "an average of 24 bunkers for every square kilometre of the country" 02:48:41 albanian sex bunkers 02:49:29 i've heard they are pretty popular for losing your virginity in 02:49:51 the other thing about albania is that every car is a 90s mercedes which is probably stolen 02:50:25 these are some good things 02:51:22 "Visit Albania, your car is already here!" 02:52:00 i guess this same joke is made about Poland and Montenegro 02:52:06 that fits in with the common claim that albanian has more highways than norway 02:53:16 oerjan: that's a common claim? 02:53:26 I guess it's more likely to be made if you live in albania or norway 02:53:55 you don't say 02:54:13 or maybe it's that albania is building more. 02:54:45 well it's a common claim whenever we complain about norwegian infrastructure investments 02:55:08 albania also has more derelict concrete pyramids than norway 02:55:12 yeah, but why albania? 02:56:59 because they're the poorest country in europe and are _still_ beating us 02:58:27 i think moldova is poorer 02:59:16 hm supposedly they'll soon at twice as much as norway 02:59:31 *have twice 02:59:57 norway has more hostile terrain for road-building than albania, I'd imagine 03:01:53 that _may_ be true, but the main issue is probably crippling norwegian bureaucracy for infrastructure projects 03:02:36 it takes decades to decide to build something 03:03:16 hearing about european politics makes me think american politics should be more interesting. european politics and reading giger's suggestion to build a system of subways in the shape of a pentagram topped by pyramid arcologies 03:05:15 and what _is_ built is frequently decided by minor interests getting political favors 03:05:29 Bike: and cthulu lives inside it? 03:06:10 kmc: no, but poor people are set to work moving sludge around and it mutates them 03:06:12 like, any politician coming from a remote location needs to get a road built there 03:06:27 he wrote this whole multi-page explanation and illustrated it, and then sent it off to the swiss prime minister 03:06:55 and a bridge/tunnel, if it is an island. 03:06:57 or whatever switzerland has 03:07:42 * oerjan needs to get his monologues more world domination related 03:07:54 "federal chancellor". dull. 03:08:06 fckin democracies. 03:08:38 i learned recently that switzerland doesn't have a general, except in emergencies 03:09:07 and parliament has to declare it 03:10:10 -!- copumpkin has quit (Remote host closed the connection). 03:10:30 -!- copumpkin has joined. 03:10:57 Bike: hey remember, hitler started as chancellor. 03:11:31 yes and weimar germany was pretty boring as a democracy 03:12:41 it had a lot of electoral violence 03:12:43 that's un-boring 03:13:32 -!- TwilightSpockle has changed nick to Applejacques. 03:13:37 i think Westminster system is pretty interesting 03:13:48 given how the executive branch has an axe hanging over their heads at all times 03:13:59 maybe this is colored by me having just watched all of The Thick of It 03:14:02 isn't it traditionally a sword 03:14:07 maybe 03:36:03 I thought Hitler started as a Catholic. 03:36:29 catholicism is more of a parafederation, wouldn't you say 03:37:51 I don't know what a "parafederation" is. 03:39:44 hitler was literally worse than hitler 03:39:47 more of an orthofederation or a metafederation 03:42:04 I don't know much about Catholic organization but it seems somewhat federalist (dioceses, etc.) but it's spread throughout nations instead of beig its own. Maybe Orthodoxy would be better for that though. 03:49:46 -!- evincar has joined. 04:02:04 -!- Nisstyre-laptop has joined. 04:06:02 With a program compiled with GCC, can you check for resources on Windows, and extra ELF sections or whatever on Linux, and similar things on other operating systems? 04:06:36 like readelf? 04:07:51 -!- oerjan has quit (Quit: leaving). 04:08:18 I also want to load the resource or whatever as a read-only SQLite database if it exists. The program can still work, and start up differently, with the lack of that resource, though. 04:10:54 zzo38: with Linux / glibc you can use dlopen(NULL) to get a handle to already loaded stuff, which can be passed to dlsym() 04:11:34 so you could just ensure that your extra ELF section is loadable and has a symbol pointing at it 04:12:22 Is it possible to add a ELF section to the program which is already compiled? 04:12:43 I know that you can with Windows resources. 04:13:59 -!- monqy has quit (Quit: hello). 04:14:02 you can also use dl_iterate_phdr() to iterate over all loaded ELF objects, and do whatever other parsing you like 04:14:04 And, do you know if it is possible to open such sections as read-only SQLite database? 04:14:40 zzo38: you can add sections with objcopy --add-section 04:15:04 and as for SQLite you would have to see if the SQLite library supports opening an arbitrary piece of memory as a database 04:15:56 huh, so can you like, use objcopy to turn an elf into a mach-o? 04:16:26 theoretically 04:17:01 what formats practically? 04:17:05 i don't know 04:17:12 whatever BFD can do without shitting itself 04:19:55 the objcopy 'binary' format is particularly useful 04:19:56 http://www.linuxjournal.com/content/embedding-file-executable-aka-hello-world-version-5967 04:22:14 nice. 04:24:35 Maybe there is a VFS to load memory as SQLite database, or if it isn't, it could be written 04:30:24 btw the argument for -B on x86_64 is i386:x86-64 04:30:34 i always forget, because it makes no sense 04:35:20 -!- Bike has quit (Quit: Reconnecting). 04:35:41 -!- Bike has joined. 04:38:16 had to source dive BFD again to discover it 04:38:21 the things i do for this club 05:25:38 Is it harmful to send resume and cover letter to positions that I'm not likely to get? 05:26:13 A number of hours ago, applied for a "Mid-Senior level" position. Scala stuff although knowing Scala was not a requirement, just being willing to learn it 05:26:35 oh boy, scala 05:27:06 -!- FreeFull has quit (Ping timeout: 245 seconds). 05:27:24 On cover letter mentioned how it seemed to have interesting features like implicit conversions 05:28:03 why would that be harmful 05:28:38 The HR people could escape from their caves, tearing him limb from limb on the mere suspicion of him not being a Ruby nina. 05:28:41 ninja. 05:28:44 ruby nina 05:29:32 At least this one is in a reasonable locatio 05:29:34 location 05:29:58 Although Transcriptic is probably more helpful to society 05:30:10 They still haven't gotten back to me :( 05:31:40 helpful to society? 05:33:46 -!- FreeFull has joined. 05:33:53 Transcriptic is some sort of lab that does... stuff with samples that scientists send in. Allow for monitoring of ... whatever it is they do, etc. 05:34:12 Sounds like you're on the ball! 05:35:16 Oh, they make plasmids. That is pretty cool. 05:36:16 Bioinformatics is cool. Apparently plos has a semi-book on it. 05:37:22 http://www.ploscollections.org/article/browse/issue/info%3Adoi%2F10.1371%2Fissue.pcol.v03.i11 05:37:26 I think I kind of hate plos's urls. 05:37:45 This is easy to understand http://pandodaily.com/2012/12/13/transcriptics-wild-seed-round-the-internet-was-just-trying-to-throw-money-at-us/ 05:37:52 I feel like a derp for forgetting about the robotic aspect 05:38:33 o.O I actually talked to the founder of the company 05:38:35 I feel small now 05:39:10 Well, it's a startup, right? The founder probably isn't, like, a demigod. 05:42:17 The founder of a startup talked to me, and probably thinks I'm an asshole for sending horrible Tcl code 05:42:49 Yeah, my main criterion for "this dude's an asshole" is reading their shitty Tcl. 05:42:50 On the phone I should have said something like that wasn't my best work, suggested something else, in an actually functional language, but I didn't :( 05:45:42 Bike: pretty sure startup founders are all demigods 05:45:49 why do you think kmc is so frazzled 05:46:04 Intermittent lightning strikes? That would make sense... 05:49:16 i'm not a founder 05:49:21 just employee numero uno 05:51:13 kmc: of course not 05:51:41 are you saying slaves to demigods are not frazzled??? 05:52:02 :3 06:00:08 -!- RodgerTheGreat has quit (Quit: RodgerTheGreat). 06:57:01 void*open(const char*format,const unsigned char*blob,unsigned int size,SDL_AudioSpec*spec); void close(void*handle); void reset(void*handle,Uint8 track); void frame(void*handle,Uint8*stream,int len); void poke(void*handle,Uint16 address,Uint8 data); 06:57:41 Is there the libraries for playing the music that can be used with such a format (even if not directly, such that one can be written easily)? 06:59:09 Oops, I forgot the volume void frame(void*handle,Uint8*stream,int len,Uint32 volume); 07:00:23 Oh hey HPMOR has a chapter called "Interlude with the Confessor" 07:00:32 Going to be interesting when I get to it probably 07:01:01 Is that a book about how to be a pastor? 07:01:29 Harry Potter and the Methods of Rationality 07:01:52 Three Worlds Collide also had an "Interlude with the Confessor" 07:03:32 haha yudkowsky 07:05:43 What's wrong with Yudkowsky? 07:09:43 You know I'm honestly not sure how to answer that. Does the usual "CS nerds claiming to have a futurological insight historians don't based on unmarked graphs with curves on them" thing suffice? 07:11:29 Don't entirely know if I agree with any conclusion that something might happen in our lifetimes, but I don't know if he really draws that conclusion, and, at any rate, it is something I hope for, even if I don't know how likely it is 07:12:41 You don't think the guy who founded the singularity institute really draws that conclusion. 07:13:30 Working to make something happen does not imply a belief that it will happen within our lifetimes 07:13:39 Just that we should try to make it happen 07:14:44 Yeah I'm sure he's working hard on that. 07:14:50 There's also this whole everything. http://lesswrong.com/lw/qa/the_dilemma_science_or_bayes/ 07:18:04 -!- epicmonkey has joined. 07:41:59 I have added the feature in Internet Quiz Engine for the total that a variable is out of to itself be variable. 07:45:09 Do any music engines have a poke function? 07:45:16 Poke? 07:46:15 I mean for example, if it is playing .NSF then it would be able to write the RAM and memory-mapped registers of the VM. 07:47:01 (Depending on the format, the poke command might mean something different, or it might not do anything.) 07:50:26 This might be used to speed up the music at some point during the game, or to mute a channel temporarily, or to play sound effects which are included in the music file, or for other things. 07:51:17 Well there are plenty of systems that allow you to mess with things at playback time. 07:52:16 The functions I mentioned above would be a part of a C structure, and their implementation depends on the format, so depending on what things they have, the poke function would be implemented to use those things. 07:52:37 However I have not seen the NSF player which does what I have said. 07:52:47 Do you know if there is such things? 07:52:49 I don't think music people doing live DJing usually do it in C. 07:53:24 But I don't mean live DJing; I mean music that might be used in a computer game. 07:54:13 PureData has a C(++?) API that can be used to do whatever you want at runtime. I think Spore used it. 07:55:49 I have used PureData, although I find Csound is much better. Still, neither of those is the kinds of things I am looking for. 07:56:23 I don't know of any music systems that just run everything flatly in a separate virtual machine, is the problem 07:57:50 Even that one guy's demoscene VM does visual and audio in the same machine. 07:59:28 -!- ais523 has quit. 08:00:11 That isn't wnat I mean either. I mean such as, a .MOD player, a .IT player, a .NSF player, whatever, which may be made wrappers using the function declarations above, and then loaded using a C code. 08:02:27 I haven't a clue, then, other than that seems pretty specific. 08:03:20 I may write the wrappers myself if the C libraries exists for such things, for which such wrapper functions can be written to do. 08:21:35 -!- asiekierka has quit (Excess Flood). 08:29:45 -!- asiekierka has joined. 08:31:47 -!- Bike has quit (Quit: warning). 08:32:01 -!- evincar has left. 09:05:18 -!- glogbackup has joined. 10:13:30 -!- Jafet has joined. 10:18:32 -!- oonbotti has quit (Ping timeout: 252 seconds). 10:21:40 I should learn to read time zones 10:22:02 Thought Facebook Hacker Cup Round 1 was 10am my time, it's 10AM PST so 1PM my time 10:22:06 Yay I get more sleep 10:22:55 I should express times in PDT during the winter/PST during the summer. 10:23:05 Teach people to pay attention. 10:36:58 -!- DHeadshot has joined. 10:38:17 -!- Nisstyre-laptop has quit (Quit: Leaving). 10:41:37 help rather than sleeping I picked up my Nook again and am continuing the reread of HPMOR 10:42:14 Instead of reading that, read something good. 10:42:21 Is HPMOR not good? 10:42:27 I don't know. 10:42:51 Have you considered reading _Three Men in a Boat_? 10:43:11 are books monoids :D 10:43:30 Sgeo: How's Ada going? 10:43:32 Some books are not easy. 10:43:51 I still want to understand Ada concurrency 10:43:58 I still have not taken a real look at it 10:44:29 They have the task thing, right? 10:44:32 How does it work exactly? 10:45:54 Like I said, I haven't taken a real look at it yet 10:46:05 Fake looks are OK? 10:48:31 I love reading. It is so easy. 10:48:57 Sgeo: dont you think thats a bit worn out by now.............................................................. 10:50:59 I searched scrollup to try to prove recent use, but couldn't 10:51:06 I love this joke. It is so easy. 10:51:29 -!- carado has joined. 10:51:43 help carado please slap Sgeo and ion 10:52:08 I love slapping. 10:52:26 @slap Sgeo 10:52:26 * lambdabot smacks Sgeo about with a large trout 10:52:28 @slap ion 10:52:28 * lambdabot secretly deletes ion's source code 10:52:32 oh no 10:52:36 fortunately ion is a quine 10:52:45 hion 10:52:49 haf 10:52:58 ^rot13 haf 10:52:58 uns 10:53:01 ^rot13 half 10:53:01 unys 10:53:22 what ? 10:53:25 hi carado 10:53:29 `wehlcohme carado 10:53:30 hello 10:53:34 cahrahdo: Wehlcohme to the ihntehrnahtiohnahl huhb fohr ehsohtehrihc prohgrahmmihng lahnguahge dehsihgn ahnd dehployhmehnt! Fohr mohre ihnfohrmahtiohn, chehck ouht ouhr wihki: http://ehsohlahngs.ohrg/wihki/Maihn_Pahge. (Fohr the ohthehr kihnd ohf ehsohtehrihca, try #ehsohtehrihc ohn ihrc.dahl.neht.) 10:56:46 thahts quhite thhe whelchome 10:57:41 http://9to5mac.com/2013/02/01/dont-type-this-phrase-on-your-mac-unless-you-like-crashing-it-file/ 11:17:18 -!- zzo38 has quit (Remote host closed the connection). 11:18:10 -!- oonbotti has joined. 11:30:03 -!- Phantom_Hoover has joined. 11:36:50 - Knowledge of the following technologies: Nginx, thin, AWS 11:36:57 thin is a technology. 11:48:24 hm interesting, ethernet PAUSE frames on my network 11:48:31 `run f=bin/hyphenate.fi;echo 'H4sIAOD8DFEAA0WPQU7DMBBF9z2FCRFtEakbVpWqSkisWbGssnDDNDFNMmkcNzWa4+QMvoAvxpgNiy/7vfka2Y8P8qQ7aeoF3KEUPQyNyN4/RfZhx/NOZP0EYtm69IbT4TrIowKN1oU5+ELqPQ9K7P4Gp/LrXNXfl6bt+utgxtt0/4mVfKp1A8LIVdwR68/rVTwirmWaZ+mrrP5rCkghKUcqzBxPoAiQgAmYtCKNpJk0EypCIHSELJCFVWSBrCPLwrJwihyQQ3KW+NkUZsUBDnIsxZ9Q8Cw9S8/Ss/Rhlq17MwfTN3pMkpf0aZ+a47bYJFmy4VteSKiWi1/gJQHkPgEAAA=='|base64 -d|zcat>$f;chmod 755 11:48:33 $f; cat $f 11:48:36 chmod: missing operand after `755' \ Try `chmod --help' for more information. 11:48:42 probably related to copying 8 GB of music over NFS from a computer with gbit ethernet to one with 100mbit 11:48:45 `run chmod 755 bin/hyphenate.fi; cat bin/hyphenate.fi 11:48:49 ​#!/bin/sh \ exec perl -CS -Mutf8 -pwe 'my$vow=qr/[aeiouyäö]/i;my$con=qr/[bcdfghjklmnpqrstvwxz]/i;1while s/($vow$con*)($con$vow)/$1-$2/g;1while s/ae|ao|ay|aä|aö|ea|eo|eä|eö|ia|io|iä|iö|oa|oe|oy|oä|oö|ua|ue|uy|uä|uö|ya|ye|yo|yu|yä|äa|äe|äo|äu|äö|öa|öe|öo|öu|öä/my@s=split"",$&;$s[0]."-".$s[1]/eg' 11:48:57 `run welcome kakka | hyphenate.fi 11:49:00 kak-ka: Wel-co-me to the in-ter-na-ti-o-nal hub for e-so-te-ric prog-ram-ming lan-gu-a-ge de-sign and dep-lo-y-ment! For mo-re in-for-ma-ti-on, check out our wi-ki: http://e-so-langs.org/wi-ki/Main_Pa-ge. (For the ot-her kind of e-so-te-ri-ca, try #e-so-te-ric on irc.dal.net.) 11:49:57 and at the same time I was also syncing 2 GB or so of data between two computers with gbit connections (one of the computers was involved in both transfers though...) 11:55:07 `run welcome shachaf | dahl | hyphenate.fi 11:55:09 bash: dahl: command not found 11:55:17 `run welcome shachaf | h | hyphenate.fi 11:55:19 shahc-hahf: Wehl-coh-me to the ihn-tehr-nah-ti-oh-nahl huhb fohr eh-soh-teh-rihc prohg-rahm-mihng lahn-gu-ah-ge deh-sihgn ahnd dehp-lo-yh-mehnt! Fohr moh-re ihn-fohr-mah-ti-ohn, chehck ouht ouhr wih-ki: http://eh-soh-lahngs.ohrg/wih-ki/Maihn_Pah-ge. (Fohr the oht-hehr kihnd ohf eh-soh-teh-rih-ca, try #eh-soh-teh-rihc ohn ihrc.dahl.neht.) 11:55:30 `run welcome shachaf | hyphenate.fi | h 11:55:32 shahc-hahf: Wehl-co-me to the ihn-tehr-na-ti-o-nahl huhb fohr e-so-te-rihc prohg-rahm-mihng lahn-gu-a-ge de-sihgn ahnd dehp-lo-y-mehnt! Fohr mo-re ihn-fohr-ma-ti-ohn, chehck ouht ouhr wi-ki: http://e-so-lahngs.ohrg/wi-ki/Maihn_Pa-ge. (Fohr the oht-hehr kihnd ohf e-so-te-ri-ca, try #e-so-te-rihc ohn ihrc.dahl.neht.) 12:00:36 `run sed -i -re 's,/eg,/egi,' bin/hyphenate.fi && cat bin/hyphenate.fi 12:00:39 ​#!/bin/sh \ exec perl -CS -Mutf8 -pwe 'my$vow=qr/[aeiouyäö]/i;my$con=qr/[bcdfghjklmnpqrstvwxz]/i;1while s/($vow$con*)($con$vow)/$1-$2/g;1while s/ae|ao|ay|aä|aö|ea|eo|eä|eö|ia|io|iä|iö|oa|oe|oy|oä|oö|ua|ue|uy|uä|uö|ya|ye|yo|yu|yä|äa|äe|äo|äu|äö|öa|öe|öo|öu|öä/my@s=split"",$&;$s[0]."-".$s[1]/egi' 12:01:36 `run welcome hello | hyphenate.fi | hyphenate.fi | hyphenate.fi 12:01:39 hel-lo: Wel-co-me to the in-ter-na-ti-o-nal hub for e-so-te-ric prog-ram-ming lan-gu-a-ge de-sign and dep-lo-y-ment! For mo-re in-for-ma-ti-on, check out our wi-ki: http://e-so-langs.org/wi-ki/Main_Pa-ge. (For the ot-her kind of e-so-te-ri-ca, try #e-so-te-ric on irc.dal.net.) 12:01:44 ion: I want a refund 12:01:58 elliott: I’m sorry it works correctly. 12:03:19 `run ln -s hyphenate.fi bin/hyfinate 12:03:22 No output. 12:06:33 `run welcome | rot13 | hyfinate | rot13 12:06:39 No output. 12:06:49 help 12:06:52 Oh. 12:07:17 `run welcome | tr a-zA-Z n-za-mN-ZA-M | hyfinate | tr a-zA-Z n-za-mN-ZA-M 12:07:20 Welcome to the int-er-nati-on-al h-ub for esoteric pro-gramm-ing l-anguage design and deploym-ent! For more inf-ormati-on, check out our wiki: http://esol-angs.org/wiki/Main_Page. (For the oth-er kind of esoterica, try #esoteric on irc.dal.net.) 12:07:49 `cat bin/rot13 12:07:50 echo "$@" | tr a-zA-Z n-za-mN-ZA-M 12:10:59 `run f() { tr a-zA-Z b-zaB-ZA | hyphenate.fi; }; welcome|f|f|f|f|f|f|f|f|f|f|f|f|f|f|f|f|f|f|f|f|f|f|f|f|f|f 12:11:18 ion what have you done 12:11:21 We-lc-o-m-e to t-he in-te-r-n-a-ti-on-al h-ub f-or e-s-o-t-er-ic p-ro-gr-a-mm-i-ng l-an-g-u-a-g-e de-s-i-gn an-d d-ep-lo-y-m-en-t! F-or m-o-re in-f-o-rm-a-ti-on, ch-e-ck o-ut o-ur w-i-k-i: h-tt-p://e-s-o-la-ng-s.o-rg/w-i-k-i/M-ain_Pa-g-e. (F-or t-he ot-h-er k-in-d of e-s-o-t-er-ic-a, t-ry #e-s-o-t-er-ic on i-rc.d-al.n-et.) 12:13:11 shachaf: Procrastinated on IRC mainly. 12:13:24 don't do it ion 12:14:25 `which hyphenate.fi 12:14:27 ​/hackenv/bin/hyphenate.fi 12:18:06 nice bot youve got. 12:18:49 it would be a shame if anything were to happen to it 12:20:06 surely, its things-happening-to-it-proof 12:20:33 Yeah, we bought bot insurance from two very nice Italian gentlemen. 12:34:03 Is it just me or is Scala one of the more commonly used functional languages in industry? 12:34:37 I think you are one of the more commonly functional languages in industry indeed. 12:38:39 `hyfinate beaky 12:39:10 No output. 12:39:23 SCALA HAS DELIMITED CONTINUATIONS 12:39:27 ?!??! 12:39:27 Unknown command, try @list 12:39:43 I like it better already :D 12:40:23 Wait, not if it's Haskell style "Oh, code that uses it has to be in monadic style" 12:41:53 are you depriving #yfl of these insights...... 12:42:13 oh 12:42:14 you didnt' 12:42:21 imo elliott makes a good point 12:42:37 What’s #yfl? 12:42:45 dont ask 12:42:55 What’s #yfl? 12:43:19 dont ask 12:43:41 sudo what’s #yfl? 12:45:40 `run sudo -l 12:45:42 bash: sudo: command not found 12:48:08 `run quote | hyphenate.fi 12:48:10 834) `wel-co-me Raw-lie * zzo38 has joi-ned #e-so-te-ric thank y-ou Y-ou're wel-co-me. 12:51:09 Sgeo: edwardk uses Scala and he keeps complaining about it. 12:51:19 Sgeo: You should go back to Ada. 12:51:28 What are his complaints? 12:51:38 I don't remember. 12:51:54 I bet you could find it on his Twitterthing. 12:54:20 Seems one of the complaints, at least from this log I found, has to do with complexity of types? 12:54:24 https://gist.github.com/3190574 12:54:41 `run sed -i -re 's,/ae\|.*\|öä/,/a[eoyäö]|e[aoäö]|i[aoäö]|o[aeyäö]|u[aeyäö]|y[aeouä]|ä[aeouö]|ö[aeouä]/,' bin/hyphenate.fi && cat bin/hyphenate.fi 12:54:44 ​#!/bin/sh \ exec perl -CS -Mutf8 -pwe 'my$vow=qr/[aeiouyäö]/i;my$con=qr/[bcdfghjklmnpqrstvwxz]/i;1while s/($vow$con*)($con$vow)/$1-$2/g;1while s/a[eoyäö]|e[aoäö]|i[aoäö]|o[aeyäö]|u[aeyäö]|y[aeouä]|ä[aeouö]|ö[aeouä]/my@s=split"",$&;$s[0]."-".$s[1]/egi' 12:56:01 `run echo Ääliö, älä läiky. öykkäri komea hioa lauantai aion | hyphenate.fi 12:56:03 ​Ää-li-ö, ä-lä läi-ky. öyk-kä-ri ko-me-a hi-o-a lau-an-tai ai-on 12:58:51 Sgeo: Are Ada tasks preëmptice or coöperative or what? 12:58:56 s/c/v/ 12:59:05 Are they like threads? 12:59:09 Or are they like coroutines? 12:59:12 Or are they like something else? 12:59:53 From a quick googling, seems like it depends on the compiler (for preemptive vs. cooperative) 13:01:53 How does preëmption work? 13:03:23 I should probably try to get some sleep 13:03:47 Nah, you should learn Ada. 13:11:47 -!- copumpkin has quit (Ping timeout: 252 seconds). 13:12:18 -!- copumpkin has joined. 13:30:28 -!- oonbotti has quit (Ping timeout: 248 seconds). 14:00:07 -!- oerjan has joined. 14:04:14 -!- ogrom has joined. 14:12:50 -!- md_5 has quit (Ping timeout: 256 seconds). 14:14:17 You know I'm honestly not sure how to answer that. Does the usual "CS nerds claiming to have a futurological insight historians don't based on unmarked graphs with curves on them" thing suffice? 14:14:35 oerjan: do you know about subtyping................................. 14:14:44 i thought that was kurzweil et al's shtick, not so much yudkowsky 14:15:05 bike isn't even here oerjan.............. 14:15:20 @ask Bike good morning 14:15:20 Consider it noted. 14:15:21 -!- md_5 has joined. 14:15:35 and that his was "when (and it _will_ be when) we invent superhuman intelligent ai, if we don't get it _precisely_ right, we are all fucked. 14:15:40 " 14:16:13 shachaf: not that much 14:16:30 elliott: i know i just wanted to quibble 14:17:12 -!- oonbotti has joined. 14:17:54 oerjan: if a quibble falls in the forest and nobody is around to hear it... 14:18:43 bah i need Bike like a fish needs... 14:18:53 water? 14:19:05 * oerjan swats Phantom_Hoover -----### 14:19:09 water? but she made perfect sense! 14:19:17 shachaf, "she"? 14:19:20 Phantom_Hoover is female now? 14:19:37 maybe 14:19:37 ... 14:19:50 I don't know? 14:19:52 * oerjan swats shachaf -----### 14:20:31 Whew. 14:21:00 * oerjan recovers from his near-whoosh experience 14:24:10 Vorpal may not be so fortunate. 14:24:25 * impomatic wonders why JavaScript regular expressions don't support look behind (?< 14:24:37 shachaf: he was traumatized by them years ago 14:25:04 shachaf, I'm naturally immune to them 14:25:13 shachaf: and is now in denial 14:25:30 "shachaf uses whoosh on Vorpal" "It is not effective" 14:26:03 immune like a burnt down house is immune to fire 14:26:28 * shachaf uses MonadicFold on Vorpal 14:26:46 ouch, that was super effective 14:26:50 oerjan: elliott is not a fan of my monologues on subtyping. 14:26:59 monads are all about effects duh 14:27:36 shachaf: he probably thinks they are too invariant 15:20:21 -!- copumpkin has quit (Ping timeout: 276 seconds). 15:21:20 -!- copumpkin has joined. 15:25:23 -!- sebbu has quit (Ping timeout: 248 seconds). 15:33:32 -!- RodgerTheGreat has joined. 15:47:43 -!- sebbu has joined. 15:47:43 -!- sebbu has quit (Changing host). 15:47:43 -!- sebbu has joined. 15:57:17 -!- Taneb has joined. 15:58:11 O_o 15:58:24 what's the matter 15:59:01 there's a Taneb in the premises 15:59:12 It happens occasionally 15:59:22 wow 16:00:33 *on 16:01:07 so what's up guys 16:03:25 hey Taneb did you fix that problem you had 16:03:37 oerjan did 16:03:47 good for him 16:03:53 * oerjan wonders if Phantom_Hoover is talking about the same problem 16:04:05 i simply assumed Taneb had a problem 16:04:07 he normally does 16:04:19 Yes, it's a problem I have 16:04:21 ah. in that case i guess i did. 16:04:30 oerjan: What's cosubtyping? 16:04:44 shachaf: well it's mplicated 16:04:53 some sort of fusion of cosplay and type theory? 16:04:58 oerjan: We think "a" is a cosubtype of "(a,b)" 16:05:08 wat 16:05:11 Or maybe the other way around. 16:05:31 oerjan: Well, in a sense "a" is a subtype of "Either a b", right? 16:05:42 `addquote oerjan: What's cosubtyping some sort of fusion of cosplay and type theory? 16:05:46 950) oerjan: What's cosubtyping some sort of fusion of cosplay and type theory? 16:05:46 oops 16:05:48 `revert 16:05:51 `addquote oerjan: What's cosubtyping? some sort of fusion of cosplay and type theory? 16:05:51 Done. 16:05:55 950) oerjan: What's cosubtyping? some sort of fusion of cosplay and type theory? 16:06:01 right. set theoretically there's an injection, so presumably you'd want something with a surjection for the co- 16:06:10 and \(a,b) -> a fits 16:06:29 Hmm. 16:06:31 (or monic/epic in CT language) 16:06:46 What does it mean for something to be a cosubtype? 16:06:58 and of course Either a b is the direct sum of a and b, while (a,b) is the direct product 16:07:12 s/sum/coproduct/, possibly 16:07:46 Right. 16:07:53 A subtype gives you a prism, more or less. 16:08:09 So a cosubtype should give you a lens. 16:08:16 well there you go then. 16:08:31 But what does it mean? 16:08:51 If A <: B, you have |A| <= |B|, right? 16:09:35 well (a,b) can delegate to a, can't it. maybe there's something OO in there. 16:09:45 Delegate? 16:09:54 or is a field... 16:09:58 Sure. 16:10:08 Every cosubtype acts like a field in some sense, I think. 16:10:19 Just like every subtype acts like a summand 16:11:15 and both give Functors, no? 16:11:47 or hm 16:12:03 shachaf: I think the problem is you're going "aha, subtypes are [prisms] but cosubtypes are [lenses]!" 16:12:10 Which doesn't teach you anything about (co)subtyping. 16:12:18 elliott: That's my point. 16:12:18 It just teaches you about lenses or prisms under a different name. 16:12:28 I'm trying to figure out a different way of looking at cosubtypes. 16:12:45 shachaf: I think T and _|_ are worth thinking about there? 16:12:55 Probably 16:12:58 And "f a"/"f b" given "a b" 16:13:07 Since you could deduce subtyping based on co/contavariance for subtyping of a,b there. 16:13:45 So for all x, ⊥ <: x, and x <: ⊤ 16:14:25 In lens terms you have a Prism x _|_ and a Prism T x 16:14:27 if a is a subtype of b then (a,c) is a subtype of (b,c), Either a c is a subtype of Either b c, and (b -> c) is a subtype of (a -> c). what are the similar rules for cosubtypes? 16:14:38 But you also have a Lens _|_ x and a Lens x T 16:15:13 What's our symbol for cosubtyping? 16:15:20 I'll just use ;> 16:15:46 If you have A ;> B and B ;> C, then you have A ;> C 16:16:37 If you have A ;> B then (A,X) ;> (B,X)? Is that valid? 16:16:50 elliott: That's alongside l id, isn't it? 16:16:56 For lenses. 16:17:41 I guess? 16:17:43 Sure, yes. 16:17:49 So that's valid. 16:17:56 Do we have alongside for Either? 16:18:22 Maybe? 16:18:26 No, Either. 16:18:50 If you have A ;> B then do you have Either A C ;> Either B C? 16:18:52 I don't think so. 16:19:22 elliott: Hah, that operation looks a lot like Choice. 16:19:30 Sure. 16:19:33 Because Prism = Choice etc. 16:19:36 Right. 16:19:50 Lens' a b -> Lens' (Either a c) (Either b c)? 16:19:55 I don't think you can do that. 16:20:00 It'd be a traversal. 16:20:05 Wait. 16:20:07 No, I think you can do that? 16:20:32 Extract the "b" out of the "a" for viewing, and leave "c"s untouched. 16:20:43 Then when you put a Left back in, put it back into the original "a". 16:20:50 What if you have a Right? 16:20:55 If you put back a different branch, then change the branch entirely? 16:20:59 Does that follow the laws? 16:21:06 Oh, never mind. 16:21:06 You can't change the branch. 16:21:08 You don't have an a 16:21:38 shachaf: What about Lens' (EIther a c) (Either b c) -> Lens' a b? 16:21:42 It's, like, contravariant. 16:22:06 What about functions? 16:22:19 I gave you a function rule already! 16:22:28 a ;> b => (a -> r) <: (b -> r) 16:22:35 oerjan says that if A <: B, then (B -> C) <: (a -> C) 16:22:42 Do we have that prism? 16:22:56 Yes 16:23:13 It's in lens. 16:23:21 What's it called? 16:23:26 It's in .Prism 16:23:36 Or .Lens 16:23:45 Oh, we have 16:23:45 inside :: ALens s t a b -> Lens (e -> s) (e -> t) (e -> a) (e -> b) 16:23:47 outside :: APrism s t a b -> Lens (t -> r) (s -> r) (b -> r) (a -> r) 16:23:49 Right 16:24:19 So you get a subtype either way. 16:24:25 Er, a supertype? 16:24:34 Wait, this thing turns either a lens or a prism into a lens. 16:24:41 Your rule turns a lens into a pris. 16:24:48 * elliott is confused. 16:24:56 08:22 a ;> b => (a -> r) <: (b -> r) 16:25:05 That's like a function that turns a lens into a prism. 16:25:09 16:22:35 oerjan says that if A <: B, then (B -> C) <: (a -> C) 16:25:23 ? 16:25:25 Contravariant f => Prism' a b -> Prism' (f b) (f a) 16:25:58 * elliott is too tired. 16:26:16 You can't do that, can you? 16:26:45 You need f b -> Either (f b) (f a) 16:26:49 Which is like costrength. 16:27:04 (b -> r) -> Either (b -> r) (a -> r)? 16:27:08 That makes no sense. 16:27:09 Is oerjan lying? 16:27:28 I think shachaf is lying? 16:27:35 Might be. 16:27:35 Do you need that? 16:27:44 Need what? 16:27:51 ...i just showed some ordinary variance rules for ordinary subtyping... 16:27:55 You said 08:25 Contravariant f => Prism' a b -> Prism' (f b) (f a) 16:28:06 I'm not sure where that comes from. 16:29:04 08:14 if a is a subtype of b then (a,c) is a subtype of (b,c), Either a c is a subtype of Either b c, and (b -> c) is a subtype of (a -> c). what are the similar rules for cosubtypes? 16:29:47 Prism b a -> Prism (Either b c) (Either a c) 16:30:14 elliott: Oh, that's just composition. 16:30:20 (_Left . p) 16:31:10 oerjan: I CAN'T TRUST ANYONE 16:31:26 Prism b a -> Prism (a -> c) (b -> c) 16:31:30 Is that true? 16:31:58 elliott: i should point out i have not recently made claims about either prisms (which i basically don't really know) or lenses. 16:32:03 One half is (a -> b) -> (b -> c) -> a -> c 16:32:08 -!- ogrom has quit (Quit: Left). 16:32:12 oerjan: We're extrapolating here! 16:32:38 (b -> Maybe a) -> (a -> c) -> Maybe (b -> c) 16:32:41 @djinn (b -> Maybe a) -> (a -> c) -> Maybe (b -> c) 16:32:42 f _ _ = Nothing 16:32:44 thank's 16:32:53 Anyway that's obviously impossible. 16:33:27 oerjan: Do you know anything about subtyping with < instead of <=? 16:33:34 perhaps there's something going on similar to the distinction between summand and submodule in module categories. in which case maybe i should mention the definition of summand. although there's no distinction in the category Set, maybe there is one in Hask. 16:33:37 oerjan: I should point out I'm really tired and not serious about any of this. 16:33:45 elliott: O KAY 16:34:07 I think we might get farther if we use < 16:34:22 so you ban a -> a. 16:34:33 Right, it's irreflexive. 16:34:36 if i could just _remember_ the definition of summand. 16:35:08 -!- epicmonkey has quit (Ping timeout: 245 seconds). 16:35:27 Hmm. 16:35:38 maybe it requires kernels, in which case it can probably not be transfered to non-abelian categories 16:35:56 just use Linux 16:36:30 So what does <: mean? It doesn't mean <=, right? 16:36:42 a <= b ----> c^b <= c^a -- doesn't seem right 16:36:51 oh wait duh in module categories product = coproduct. bah. 16:38:40 Let's say Foo = {A,B}, Bar = {A,B,C} 16:38:41 and that's why they have summands. hm i guess a module summand is something which is in some sense _both_ a subobject and a cosubobject. 16:38:51 So Foo <: Bar 16:38:52 in a compatible way. 16:39:09 (Bar -> X) <: (Foo -> X)? 16:40:35 so to go back to my basic idea, what's the relation of a -> c to (a,b) -> c, if any. 16:40:48 oh hm 16:41:11 (a,b) -> c is of course isomorphic to b -> (a -> c) 16:41:20 I think my intuition with cardinality can't be right. 16:41:27 although that's specific to products 16:41:48 shachaf: cardinality is not subtyping hth 16:41:50 oerjan: I think all cosubtypes would be product-like. 16:41:59 oerjan: Sure, but I thought A <: B ----> |A| <= |B| 16:42:03 I guess that's not true. 16:42:38 shachaf: it's not true for subtypes either, i think 16:42:54 or wait, <: is subtype 16:42:57 Right.. 16:43:40 well i think you must have <=, but it can be == even if not identical types 16:44:03 Wait, you must have <=? 16:44:14 or wait hm 16:44:22 Foo <: Bar ----> (Bar -> X) <: (Foo -> X), right? 16:44:33 oh ... now i see. 16:44:52 no, you must not. 16:45:08 So it's something more subtle than <= of the cardinality. :-( 16:45:15 What is it? 16:45:25 simply, even if Foo is a direct _subset_ of Bar, (Bar -> X) is not a direct subset of (Foo -> X). 16:45:39 it's just something which can be _used_ as a (Foo -> X). 16:45:48 Sure. 16:45:54 Can you write a prism for it? 16:46:23 but two different (Bar -> X) can correspond to the same (Foo -> X), so subtyping is not an injection, and therefore need not increase cardinality. 16:47:31 Prism s t a b = (b -> t, s -> Either t a) 16:47:41 Prism' s a = (a -> s, s -> Maybe a) 16:47:53 ic 16:48:06 i think the s -> Maybe a is going to hit the halting problem. 16:48:10 Yes. 16:48:27 elliott: I knew it wouldn't work! 16:55:50 oerjan: Update: I mixed everything up. 16:56:03 Foo = {A,B}, Bar = {A,B,C} 16:56:08 Bar <: Foo, not the other way around. 16:56:21 oh wait hm it won't hit the halting problem if you have a prism to start with 16:56:39 :k Prism' 16:56:41 Top level: 16:56:41 Type synonym Prism' should have 2 arguments, but has been given none 16:56:41 In a type in a GHCi command: Prism' 16:56:55 sheesh 16:57:04 VERY USEFUL GHC 16:57:10 It's a type synonym. 16:57:43 But it would just be * -> * -> * 16:58:21 :k Prism' Int Bool 16:58:23 * 16:59:08 something tells me your definitions above are not the ones actually used 16:59:13 in lens 16:59:43 type Prism s t a b = (Choice p, Applicative f) => p a (f b) -> p s (f t) 16:59:50 CLOSE ENOUGH 17:05:58 tr :: Prism Bar Foo -> Prism (Foo -> X) (Bar -> X); tr (f2b,b2Mf) = (\b2x -> b2x . f2b, \f2x -> Just $ \b -> ...nah we can only get another Maybe in here, and no way to pull it outside the $ 17:06:21 Right. 17:06:24 You need a sort of costrength. 17:06:26 Or something. 17:06:41 ok later -> 17:06:45 -!- oerjan has quit (Quit: leaving). 17:08:04 are there any good co- jokes left i wonder 17:19:05 -!- Bike has joined. 17:39:45 The energy stored in a spring is proportional to the square of its loading force, right? 17:43:37 -!- Bike has quit (Quit: Lost terminal). 17:44:22 -!- Bike has joined. 17:44:42 -!- ogrom has joined. 17:54:10 tswett, ye...s 17:54:31 yes 18:02:01 -!- DHeadshot has quit (Remote host closed the connection). 18:31:20 So: Try to do this Facebook thing when I'm too tired to think properly, or write a blog post that could in theory make an impression on employers 18:34:33 or sleep 18:34:47 write a sleep deprived nonsensical blog post that could in theory make an impression on employers 18:34:52 also what is facebook thing 18:37:45 i'm imagining an employer hiring whoever first helps them with farmville 18:37:46 Bike: You have 1 new message. '/msg lambdabot @messages' to read it. 18:38:59 @ask shachaf evening 18:38:59 Consider it noted. 18:39:24 @tell Bike thank'se 18:39:24 Consider it noted. 18:39:32 @clear-messages 18:39:32 Messages cleared. 18:39:49 @clear-messages 18:39:49 Messages cleared. 18:40:54 @clear-messages 18:40:55 Messages cleared. 18:45:10 kmc, Facebook Hacker Cup 18:46:20 is this more of an esr hacker cup or a pg hacker cup tho 18:46:26 important distinction 18:48:47 fuck that guy 18:58:42 -!- monqy has joined. 19:05:03 Bike, which one? 19:08:26 fb brogrammer cup 19:10:54 -!- Phantom_Hoover has quit (Ping timeout: 264 seconds). 19:12:01 -!- Nisstyre-laptop has joined. 19:17:33 esr, haven't you heard about the new pbuh 19:17:38 oh he left. 19:21:45 -!- hublao has joined. 19:22:26 Hello,I was looking at brainfuck language and I've minor confusion about ']' instruction 19:23:37 Correct me if I am wrong: If ']' is encountered, jump to the matching '[' and check if the value at that array is 0.If it is 0, jump to the instruction after ']' else go to next instruction after '['. 19:25:13 There are a few equivalent ways to describe what [ and ] do. But you need to incorporate some sort of check into the action that happens when you encounter [ 19:25:32 If you hit [ and the current cell is 0, it does need to skip past the matching ] somehow 19:27:18 yeah true 19:27:33 But what I said is also true , right Sgeo ? 19:28:27 Looks good, I think 19:28:28 the fuck just happened. I switched from a the xfce terminal emulator to xchat, and a bit of the terminal ended up overlaying the bottom fifth of the window. Stretched. Like you had stretched a texture over there. 19:28:38 so bizarre 19:28:48 Except I'd be more inclined to leave the checking for 0 bit as part of what happens due to [ 19:28:52 -!- Phantom_Hoover has joined. 19:29:18 I guess I'll blame the closed source AMD graphics drivers 19:31:17 hublao, you could describe [ ... ] as while(*dataPtr) { ... } pretty much (in C) 19:31:44 True Sgeo but someone might not decrement the location associated with '[', hence I asked. 19:31:58 iirc that is what my compiler would generate when it couldn't figure out any way to optimize the loop 19:32:07 Vorpal, true.I am trying to write a sinple interpreter for it but I am finding a way to implement nested [ ] 19:32:16 hublao, locations in source code don't correspond to locations on tape 19:32:28 hublao, you could do that by recursion surely 19:32:38 hublao, I assume you parse it into a tree structure? 19:33:02 not really Vorpal. Since I am new to it, I've used a stack and simple switch statement 19:33:17 like (instr,data,ptrNext), and with a "down"-link to the content of the loop 19:33:32 hublao: [] works with the current tape pointer, it's not saved. >+>+>+[-<] works 19:33:35 wait a sec, I'll show you with what I've come up with 19:34:03 hublao, well I only ever wrote compilers for brainfuck iirc, but what I did was simply parse it into a linked list, with a pointer to another linked list of the content of the loop 19:34:32 brainfuck may be one of the few languages where it's easier to write a compiler (to C, say) than an interpreter 19:34:33 then you could run it by simple recursion 19:34:41 (parsing is already really easy with recursion) 19:34:50 bbl, need to leave for half an hour or so, will be back later. 19:35:02 well it's not like having [] in interpretation search for their match is all that hard 19:37:03 http://pastie.org/private/hhomcydflvr4fnkd3th4mq 19:37:15 Would like to have suggestions about how I should go next 19:39:33 well you can search ahead in the [ case easily 19:40:33 um I don't get it Bike . Search ahead what? another [ ? 19:40:34 int depth = 1; while (depth) { if buf[i] == '[' ++depth; else if buf[i] == ']' --depth; ++i; } or so 19:40:40 search for where to jump to 19:41:46 But there are only 2 possible places to jump right ? If value is 0,jump to instruction after ']' which i=pop(&stack)+1 does 19:42:04 else , I just have to go to next instruction , which is i++ 19:42:19 I thought the stack kept track of where [ is, not ]. 19:42:31 I'm looking at the "// have to add stuff here" bit. 19:42:54 oh sorry, my bad 19:43:01 I keep track of only [ Bike 19:43:17 Right, so when you get to a [ to skip you have to look ahead. 19:44:00 ah gotcha! 19:44:13 and you might encounter another '[' so you've to save that too? 19:44:35 Well, if you have [...[...]...] you have to skip to the second ] and not the first. 19:44:46 yep 19:50:37 Bike, do you think it'd be easier/better if I use 2 stacks to save [ and ] location info ? 19:52:47 precomputing where everything jumps to would be fastest, i guess 20:01:07 But stack wouldn't be appropriate data structure if I precompute the location Bike 20:02:17 no, it wouldn't be. 20:11:40 back 20:12:48 hublao, I wouldn't run directly on a text string myself, rather I would parse and apply some basic optimisation (i.e. turn +++ into "add 3", or >> into "move 2 right") 20:12:59 and then run the linked list that resulted 20:13:34 I am making pretty basic version at the moment Vorpal . Will keep your suggestions in mind! 20:13:37 hublao, this also easily allows skipping a loop that is never entered 20:13:52 just do not follow the pointer to the loop-list 20:13:59 but go to the instruction after the loop 20:14:41 -!- zzo38 has joined. 20:15:22 Um.Now I am kinda confused.Did you look at my code Vorpal ? 20:15:32 hublao, not yet 20:15:33 hm, looks like my dumb one just searched for the [] every time, and then i skipped straight from that to a compiler 20:15:39 hublao, I just suggested a general way 20:15:44 then of course you can apply more advanced optimisations, such as observing that [-] is a "set to 0", thus you now know the value of that cell and can turn any further use of that cell in the current balanced block (that is, a section of code with no loops that move the pointer between the start and the end) 20:15:45 okay 20:15:58 that is, a loop like [>+<] is balanced, but [>+>] is not 20:16:04 hm itrekkie isn't here, that's right 20:16:08 Vorpal, all that will possibly in v2.0 ;p let me get a basic one working yet! 20:16:14 the latter really harms optimising, since you lose track of where you are 20:16:23 dude in ##asm's been learning the ins and outs of x86 from brainfuck of all things 20:16:26 hublao, my main interest in brainfuck is optimising :) 20:16:57 nice Vorpal ! But since this is my first attempt , my main interest is making a simple interpreter ;p 20:18:05 Making a very naive interpreter will give you fairly slow results. But, then, who cares. It's not like Brainfuck needs to be fast. 20:18:30 hmm pikhq .Once I get naive one working , I can improve upon it. 20:18:35 hublao, fair enough 20:19:18 hublao, anyway writing a simple recursive parser for brainfuck that puts it into a linked list, then writing a recursive execution function working on that list is probably the easiest way to run it IMO 20:19:42 and it makes it easy to apply optimisation further down the line 20:20:04 -!- oerjan has joined. 20:20:17 note to self: actually rewrite the wiki brainfuck spec one day 20:20:26 Phantom_Hoover, oh? What is wrong with it? 20:20:41 no concept of syntax 20:20:42 that sounds kinda complicated to me atm Vorpal . 20:20:51 hm okay 20:20:57 hublao, which bit of it? 20:21:09 Vorpal, whole recursion thing 20:21:17 uh 20:21:25 hublao, what bit of recursion is an issue? 20:21:25 I am focussing on fixing the code I've written atm 20:23:18 hublao, when you find a [ you do something like currentNode.type = LOOP; currentNode->codeInLoop = myParser(myFILE, currentLoopDepth+1); You use the loop depth variable to detect if a [ is missing a matching ] or vice verse. 20:23:53 hmm , I kinda get it 20:23:57 hublao, then when you detect a ] you check that the loop depth is not 0 (in that case you have more ] than [) and return the code linked list you generated so far 20:24:34 hublao, and when you get end-of-file you check that your loop depth *is* 0 (otherwise you have more [ than ]) and return your linked list 20:24:48 I see 20:26:31 hublao, as a result you have a linked list with structs along the lines of struct codeNode { InstructionType type; codeNode* next; codeNode* codeInLoop; } (the last member being a null pointer for non-loops) 20:27:25 hublao, of course from there you can easily extend it, like adding a "count" field, for add/subtract so that you can merge +++ into "add 3" as I mentioned above. And so on. 20:28:33 hublao, this representation is easy to do basic optimisation on (you might want something different if you go for really advanced stuff), easy to generate code from, if you want to compile. And easy to interpret. 20:30:12 hublao, when you find a loop, you just do something like: switch (curNode->type) { ... case LOOP: while (*dataPtr) { interpret(curNode->codeInLoop); } break; ... } 20:30:52 and after the switch statement you have curNode = curNode->next; at the end of the outer loop 20:31:51 Okay Vorpal .Thanks for all the info.Also check PM. 20:36:01 -!- ogrom has quit (Quit: Left). 21:11:23 * Sgeo decides to make a rough outline of what his blog post will be 21:12:15 a rectangle? 21:31:09 -!- DHeadshot has joined. 21:46:40 rectangle? damn near killtangle! 21:47:31 -!- azaq23 has joined. 21:47:39 -!- azaq23 has quit (Max SendQ exceeded). 21:47:45 -!- hublao has quit (Quit: Leaving). 21:50:34 `quote metaturing 21:50:36 No output. 21:50:40 :O 21:51:16 -!- Arc_Koen has joined. 21:51:43 `run echo "This wisdom entry was crushed by a falling anvil." >wisdom/metaturing 21:52:04 was that in wisdom then? 21:52:05 No output. 21:52:17 `? metaturing 21:52:19 This wisdom entry was crushed by a falling anvil. 21:54:01 it does not appear to have previously existed. 21:54:13 assuming i understand http://codu.org/projects/hackbot/fshg/index.cgi/file/23c726e07478/wisdom/metaturing 21:54:56 wtf 21:55:03 did it get deleted in a quote purge then 21:55:32 -!- impomatic has quit (Ping timeout: 248 seconds). 21:56:37 `run hg export 0:tip | grep -i metaturing 21:57:08 No output. 21:57:16 Well. 21:57:18 That didn't work. 21:57:41 `run hg export 0:tip | head 21:57:44 ​# HG changeset patch \ # User HackBot \ # Date 1329421352 0 \ # Node ID e037173e0012bed0fece931395ef4a22f213632a \ # Parent 0000000000000000000000000000000000000000 \ Initial import. \ \ diff -r 000000000000 -r e037173e0012 .hg_archival.txt \ --- /dev/nullThu Jan 01 00:00:00 1970 +0000 \ +++ b/.hg_archival.txtThu Feb 16 19:42:32 2012 +0000 21:57:53 No idea why that didn't work. 22:00:17 Applejacques: Gregor has occasionally wiped the repository history 22:00:41 as you might conceivably know 22:01:04 * oerjan should learn to recognize these weird nicks some day 22:01:45 and also to suspect foul when Gregor doesn't tab complete. 22:05:15 lul 22:05:32 I haven't wiped the history since transactions came in. 22:05:35 Not necessary any more. 22:05:38 OKAY 22:05:38 `run du -h .hg/ 22:05:41 7.0M.hg/store/data/bin \ 2.1M.hg/store/data/lib \ 37M.hg/store/data/paste \ 12M.hg/store/data/share/_word_data \ 20K.hg/store/data/share/lua/5.2/luarocks/build \ 28K.hg/store/data/share/lua/5.2/luarocks/fetch \ 8.0K.hg/store/data/share/lua/5.2/luarocks/fs/unix \ 8.0K.hg/store/data/share/lua/5.2/luarocks/fs/win32 \ 36K.hg/store/data/share/l 22:05:45 >_> 22:05:49 `run du -hc .hg/ 22:05:51 7.0M.hg/store/data/bin \ 2.1M.hg/store/data/lib \ 37M.hg/store/data/paste \ 12M.hg/store/data/share/_word_data \ 20K.hg/store/data/share/lua/5.2/luarocks/build \ 28K.hg/store/data/share/lua/5.2/luarocks/fetch \ 8.0K.hg/store/data/share/lua/5.2/luarocks/fs/unix \ 8.0K.hg/store/data/share/lua/5.2/luarocks/fs/win32 \ 36K.hg/store/data/share/l 22:05:54 >_< 22:05:56 `run du -hs .hg/ 22:05:59 147M.hg/ 22:07:21 `run ls -ld .hg 22:07:24 drwxr-xr-x 3 5000 5000 4096 Feb 2 21:52 .hg 22:07:53 should that really be writable from the sandbox? 22:08:00 or is it just a copy 22:08:16 (and if so, isn't it expensive to make a copy each time) 22:09:38 or wait hm 22:09:44 `run whoami 22:09:49 whoami: cannot find name for user ID 5000 22:09:58 yeah it is the same user 22:10:36 Applejacques: couldn't someone mess up the repository by modifying .hg ? 22:10:44 `ls -l .hg 22:10:45 ​/bin/ls: invalid option -- ' ' \ Try `/bin/ls --help' for more information. \ /bin/ls: invalid option -- ' ' \ Try `/bin/ls --help' for more information. 22:10:49 `run ls -l .hg 22:10:50 total 308 \ -rw-r--r-- 1 5000 5000 57 Feb 16 2012 00changelog.i \ -rw-r--r-- 1 5000 5000 8 Feb 2 21:52 branch \ -rw-r--r-- 1 5000 5000 95 Feb 2 21:51 branchheads.cache \ -rw-r--r-- 1 5000 5000 134592 Feb 2 21:52 dirstate \ -rw-r--r-- 1 5000 5000 84 Feb 2 21:52 last-message.txt \ -rw-r--r-- 1 5000 5000 23 Feb 16 2012 requi 22:11:38 hm oh 22:12:16 `run touch .hg/HURRHURR 22:12:18 touch: cannot touch `.hg/HURRHURR': Read-only file system 22:12:24 EEK 22:12:30 OKAY THEN 22:22:38 -!- DHeadshot has quit (Read error: Connection reset by peer). 22:22:59 -!- DHeadshot has joined. 22:32:50 `fetch http://zzo38computer.org/esoteric/Arc_Koen/fueue.c 22:32:53 2013-02-02 22:32:52 URL:http://zzo38computer.org/esoteric/Arc_Koen/fueue.c [16242/16242] -> "fueue.c" [1] 22:33:01 `gcc fueue.c 22:33:15 sorry I did not ask for zzo38 to update it 22:33:20 yet 22:33:25 hm... 22:33:25 No output. 22:33:26 hey zzo38 are you busy at the moment? 22:33:37 Arc_Koen: I can update it if you have the thing to update. 22:33:43 cool 22:35:26 hmm I was looking for your emaila ddress but then I received a text message from an unknown number with not very nice things included 22:35:42 I don't have email 22:35:51 well I don't have gopher! 22:36:20 You don't need to use gopher you can use the IRC to send it to me. 22:36:33 `run mv a.out bin/fueue 22:36:37 No output. 22:37:06 `fueue 72 101 108 108 111 44 32 119 111 114 108 100 33 10 H 22:37:10 Hello, world! 22:37:52 `fueue 48 ~!~)): [[48 [)):] [~!~)):] ~~) !][49 [~!~)):] [)):] )~]] 22:37:53 01101001100101101001011001101001100101100110100101101001100101101001011001101001011010011001011001101001100101101001011001101001100101100110100101101001100101100110100110010110100101100110100101101001100101101001011001101001100101100110100101101001100101101001011001101001011010011001011001101001100101101001011001101001011010011001011010010110011010 22:38:43 `ls interp 22:38:46 ​/bin/ls: cannot access interp: No such file or directory \ /bin/ls: cannot access interp: No such file or directory 22:38:50 `ls 22:38:51 ​= 0 \ bin \ canary \ dbg.out \ egobot.tar.xz \ etc \ factor \ factor-linux-x86-64-0.95.tar.gz \ foo \ foo.err \ foo.out \ fueue.c \ ibin \ interps \ karma \ lib \ paste \ quines \ quotes \ quotese \ run~ \ share \ test \ u \ wisdom \ zalgo.hs 22:38:54 `ls interps 22:38:57 1l \ 2l \ adjust \ axo \ befunge \ bfjoust \ bf_txtgen \ boof \ build.sh \ cfunge \ c-intercal \ clc-intercal \ dimensifuck \ egobch \ egobf \ fukyorbrane \ gcccomp \ gforth_quit \ ghc \ glass \ glypho \ kipple \ lambda \ lazyk \ linguine \ Makefile \ malbolge \ pbrain \ qbf \ rail \ rhotor \ sadol \ sceql \ trigger \ udage01 \ underload \ unlambda 22:39:13 zzo38: did I just send you a file named fueue.c? 22:39:32 via dcc 22:39:33 I have to receive it 22:40:04 -!- asiekierka has quit (Excess Flood). 22:40:45 OK, I have done 22:41:15 -!- asiekierka has joined. 22:41:40 Arc_Koen: The DCC SEND message was received twice somehow, but I managed to download it using netcat anyways without the problem 22:44:01 yeah from my side it definitely looks like it'snot working properly 22:44:32 aaaand here's fueue.ml 22:45:00 so you don't have email? you're probably the first person I meet who doesn't 22:45:36 (well, for some values of "meet" and not counting kids) 22:54:49 `fetch http://zzo38computer.org/esoteric/Arc_Koen/fueue.c 22:54:53 2013-02-02 22:54:51 URL:http://zzo38computer.org/esoteric/Arc_Koen/fueue.c [16311/16311] -> "fueue.c.1" [1] 22:55:10 OK, now I have fueue.ml 22:55:25 thank you a lot 22:55:41 `run mv fueue.c.1 fueue.c 22:55:45 I should probably go to bed now, I'm in the middle of a go tournament 22:55:49 No output. 22:55:54 today I had to play against the strongest player 22:55:59 `run sed -i s/1000/10000/ fueue.c #Whistles innocently 22:56:03 No output. 22:56:11 I think normally he'd give me three or four stones 22:56:22 `run gcc -o bin/fueue fueue.c 22:56:29 No output. 22:57:28 `run echo "72\n101\n108\n108\n111\n44\n32\n119\n111\n114\n108\n100\n33\n10\nH" 22:57:30 72\n101\n108\n108\n111\n44\n32\n119\n111\n114\n108\n100\n33\n10\nH 22:57:38 sheesh. 22:58:06 `ls 22:58:13 ​= 0 \ bin \ canary \ dbg.out \ egobot.tar.xz \ etc \ factor \ factor-linux-x86-64-0.95.tar.gz \ foo \ foo.err \ foo.out \ fueue.c \ ibin \ interps \ karma \ lib \ paste \ quines \ quotes \ quotese \ run~ \ share \ test \ u \ wisdom \ zalgo.hs 22:59:38 `printf 72\n101\n108\n108\n111\n44\n32\n119\n111\n114\n108\n100\n33\n10\nH 22:59:39 72 \ 101 \ 108 \ 108 \ 111 \ 44 \ 32 \ 119 \ 111 \ 114 \ 108 \ 100 \ 33 \ 10 \ H 22:59:59 `run fueue $(printf "72\n101\n108\n108\n111\n44\n32\n119\n111\n114\n108\n100\n33\n10\nH") 23:00:01 Error: fueue received too many arguments. The Hello world program \ Hello, world! 23:00:06 hmph 23:00:33 `run fueue "$(printf '72\n101\n108\n108\n111\n44\n32\n119\n111\n114\n108\n100\n33\n10\nH')" 23:00:35 Hello, world! 23:02:51 -!- impomatic has joined. 23:35:33 -!- Arc_Koen has left. 23:37:21 -!- asiekierka has quit (Excess Flood). 23:40:16 -!- asiekierka has joined. 23:46:16 -!- Phantom_Hoover has quit (Ping timeout: 245 seconds). 23:53:03 `list 23:53:05 Taneb atriq Ngevd Fiora nortti Sgeo ThatOtherPerson alot 23:53:50 oh wow. Taneb is under 50% of that list 23:58:18 -!- sirdancealot7 has joined.