00:24:14 did you get it? 00:32:42 *munch*... 00:32:52 (“not yet, I'm eating...”) 00:36:20 oh i need to do that soon. what's on the menu today? 00:40:07 I got spaghotti. 00:40:53 -!- augur has quit (Remote host closed the connection). 00:41:52 oh 00:42:02 spaghetti with ghoti sauce? 00:42:14 what should i get? 00:42:41 [wiki] [[Esoteric Operating System]] https://esolangs.org/w/index.php?diff=52554&oldid=34260 * Zseri * (+43) +File System 00:43:12 did you ever read the girl with the dragon tattoo 00:43:25 -!- augur has joined. 00:47:02 I should try that: spaghetti with https://www.ateriet.com/wp-content/uploads/2015/08/kalles-21-e1439029022596.png 00:47:37 you should have something edible and happiferous. hamburgers are quite good at that. 00:47:48 smoked roe? 00:47:49 no, I haven't read it. 00:48:15 it's Swedish smoked roe paste. pretty good, goes well on a sandwich! 00:48:34 well, judging by the packaging, ellen degeneres enjoys it, so I probably would too! 01:05:47 -!- Warrigal_ has joined. 01:32:56 -!- augur has quit (Remote host closed the connection). 01:33:50 -!- augur has joined. 01:33:55 -!- augur has quit (Remote host closed the connection). 01:39:53 -!- imode has joined. 02:37:02 -!- boily has quit (Quit: GAPING CHICKEN). 02:48:57 -!- Warrigal_ has quit (Ping timeout: 240 seconds). 02:52:24 -!- augur has joined. 02:56:20 -!- augur has quit (Remote host closed the connection). 02:56:33 -!- augur has joined. 03:07:54 -!- augur has quit (Remote host closed the connection). 03:16:03 -!- augur has joined. 03:20:12 -!- imode has quit (Ping timeout: 260 seconds). 03:22:34 `w degener 03:22:36 That's not wise. 03:34:49 `learn Degenerate things are those that have been featured on the Ellen DeGeneres Show. 03:34:51 Learned 'degenerate': Degenerate things are those that have been featured on the Ellen DeGeneres Show. 03:35:46 `grWp degener 03:35:54 degenerate:Degenerate things are those that have been featured on the Ellen DeGeneres Show. 03:36:29 But most things are degenerate versions of the mustard version of themselves. 03:43:38 `learn_append degenerate The subjects of the sui degeneris programme include spaghoti sauce, talking spheres of zero volume, and watches without mustard. 03:43:40 Learned 'degenerate': Degenerate things are those that have been featured on the Ellen DeGeneres Show. The subjects of the sui degeneris programme include spaghoti sauce, talking spheres of zero volume, and watches without mustard. 03:45:23 "programme"? 03:45:37 Where is Jafet geographically, anyway? 03:46:28 oh, it's an american program 03:47:35 The apostrophe on olist 1085 has still not been fixed. 03:47:49 `revert 03:47:50 Done. 03:48:05 `learn_append degenerate The subjects of this sui degeneris program include spaghoti sauce, talking spheres of zero volume, and watches without mustard. 03:48:07 Learned 'degenerate': Degenerate things are those that have been featured on the Ellen DeGeneres Show. The subjects of this sui degeneris program include spaghoti sauce, talking spheres of zero volume, and watches without mustard. 03:48:22 `cat wisdom/scowrevs 03:48:22 cat: wisdom/scowrevs: No such file or directory 03:48:26 uh 03:48:30 `cat share/scowrevs 03:48:31 121:122 \ 194:196 \ 770:771 \ 1000:1001 \ 1493:1497 \ 2112:2114 \ 3341:3343 \ 4530:4531 \ 5136:5137 \ 5642:5643 \ 5894:5897 \ 8669:8678 \ 9070:9071 \ 9074:9075 03:55:21 -!- hppavilion[0] has quit (Ping timeout: 240 seconds). 05:05:39 -!- imode has joined. 05:10:01 -!- doesthiswork has quit (Quit: Leaving.). 05:17:27 -!- doesthiswork has joined. 05:21:52 -!- sheshiresat has joined. 05:24:27 -!- sleffy has quit (Ping timeout: 260 seconds). 05:31:03 -!- adu has joined. 06:04:48 -!- sleffy has joined. 06:32:01 -!- sheshiresat has quit (Remote host closed the connection). 06:46:00 -!- erkin has joined. 06:50:02 -!- adu has quit (Quit: adu). 07:01:09 -!- FreeFull has quit. 07:36:56 -!- hppavilion[0] has joined. 07:57:27 -!- sleffy has quit (Ping timeout: 240 seconds). 08:03:53 -!- augur has quit (Remote host closed the connection). 08:18:39 -!- doesthiswork has quit (Quit: Leaving.). 08:24:58 [wiki] [[ArnoldC]] https://esolangs.org/w/index.php?diff=52555&oldid=52552 * Oerjan * (-45) featured it is not 08:27:32 oerjan: "featured" just means it has features hth 08:37:05 -!- hppavilion[0] has quit (Ping timeout: 240 seconds). 08:41:35 -!- AnotherTest has joined. 08:55:53 it also has {{{paradigms}}} 09:04:06 [wiki] [[Ly]] https://esolangs.org/w/index.php?diff=52556&oldid=52532 * LyricLy * (+396) 09:08:43 -!- imode has quit (Ping timeout: 276 seconds). 09:15:29 [wiki] [[Ly]] https://esolangs.org/w/index.php?diff=52557&oldid=52556 * LyricLy * (+96) 09:47:19 -!- erkin has quit (Remote host closed the connection). 09:47:38 -!- erkin has joined. 09:55:30 -!- erkin has quit (Quit: Ouch! Got SIGABRT, dying...). 10:54:30 -!- erkin has joined. 10:57:29 -!- augur has joined. 10:59:23 -!- Mayoi has joined. 10:59:45 -!- erkin has quit (Disconnected by services). 11:02:12 -!- augur has quit (Ping timeout: 260 seconds). 11:09:38 -!- AnotherTest has quit (Ping timeout: 268 seconds). 11:10:33 -!- mroman has joined. 11:10:50 http://codepad.org/20hTMnmw 11:10:59 it's surprisingly hard to calculate the angle between two vectors. 11:11:00 somehow. 11:11:05 ^- code above is broken 11:12:18 people say you can use the dot product for that 11:12:22 if it's negative or positive 11:12:23 but nope 11:12:26 doesn't work either. 11:12:42 try the dot division 11:13:42 dot product just says whether the target point is to the left or to the right of the origin in respect to the y axis 11:14:03 not if it's to the left or to the right in respect to the reference v1 11:14:29 v1 is the reference vector and v2 is the vector from origin to a target point 11:14:41 and the question is what the angle between v1 and v2 is 11:15:20 but math.acos will give you 15deg regardless if target point is to the left of v1 or to the right 11:15:25 so I don't know where enemies are :( 11:19:02 I mean... the dp gives you whether the target point is to the left or right of your origin point 11:19:07 but not in the way I actually want :D 11:35:50 -!- boily has joined. 12:21:14 -!- AnotherTest has joined. 12:22:32 -!- jaboja has joined. 12:27:34 -!- boily has quit (Quit: WAITING CHICKEN). 12:39:42 -!- xkapastel has quit (Quit: Connection closed for inactivity). 12:40:54 -!- jaboja has quit (Ping timeout: 268 seconds). 12:44:02 -!- jaboja has joined. 13:29:05 -!- jaboja has quit (Ping timeout: 240 seconds). 13:30:03 -!- jaboja has joined. 13:37:53 mroman: this may be naive but why don't you compute atan2 for the two vectors and take the difference of the two results? (there's some care needed because the computation is modulo 2pi, but overall that should be simpler than your current code) 13:38:42 -!- jaboja has quit (Read error: No route to host). 13:38:59 -!- jaboja has joined. 13:39:36 mroman: also the way you disambiguate between -a and a looks dubious because it only depends on the direction of one of the two vectors. 13:40:19 and finally, I bet one can construct vectors such that cos_a > 1 (or < -1), causing the acos call to fail. 13:40:56 (due to rounding errors) 13:42:28 int-e: yeah 13:42:31 atan2 - atan2 works 13:42:36 but you need a few ifs in there 13:43:14 http://codepad.org/lnX67PK7 <- i finally figured it out. 13:43:30 and yes, you can construct cos_a > 1 13:43:49 somehow 13:43:51 the funny thing is 13:44:05 print(cos_a); acos(cos_a); will sometimes crash with domain error 13:44:10 but print(cos_a); will print 1.0 13:44:20 so it prints 1.0 but the number is actually not 1.0 13:45:12 but I don't know how it becomes bigger than 1.0 13:45:17 probably float precision limitations 13:45:31 http://codepad.org/eCywKVdJ <- i.e. this 13:45:36 I didn't know print rounds. 13:46:23 I use atan2 now to compute an "absolute" rotation angle of a vector 13:46:25 then subtract those 13:46:41 and then correct them 13:49:01 mroman: diff = math.pi-(abs(diff)-math.pi) <-- here abs(diff) = diff, so that is essentially diff -= 2*math.pi, similarly, the next abs(diff) = -diff, so that assignment is essentially diff += 2*math.pi. 13:51:35 (d in this case is the direction vector of the origin and v is the vector from origin to target) 13:54:13 on to the next problem. 13:54:44 let's say I optimize something 13:55:05 but there are "pits" you can fall into at which no further optimization is better 13:56:32 -!- Mayoi has quit (Quit: Ouch! Got SIGABRT, dying...). 13:57:11 http://codepad.org/C5aebGSV 13:57:16 the problem is the optimizer is RANDOM :D 13:57:38 if it takes a wrong turn (which you don't really know if it's a wrong turn, you just know "this turn produces a better output than the last version") 13:58:11 but it can get stuck due to taking turns that will put it into a state where no modification _probably_ will get you anywhere 13:58:53 https://en.wikipedia.org/wiki/Simulated_annealing may be worth a look 13:59:10 also restarts 13:59:44 there's a lot of stuff working with ensembles (the most prominent keyword being genetic algorithms, I guess) 13:59:45 is simulated annealing useful for anything other than simulated metals? 13:59:55 Jafet: ... 14:00:24 I'd say it's not useful for simulated metals at all. 14:00:27 -!- doesthiswork has joined. 14:00:44 (I know what you're saying, but the terminology has departed from the obvious meaning.) 14:01:11 Problem is, I don't know whether you're joking. 14:01:15 well, I haven't seen any proofs that it is useful for anything else 14:01:32 "works well in practice" 14:02:51 https://en.wikipedia.org/wiki/Simulated_annealing#The_annealing_schedule — ok, I guess it's useful for simulated metals 14:03:21 I suppose you can also prove that as you slow down cooling you increase the probability of finding a maximum close to the global one under fairly mild assumptions. Disclaimer, this idea is based in intuition, not in any theory. 14:04:27 anyway, if you are optimising a function at random, you can use statistics to analyse the distribution of possible answers 14:05:25 s/ensemble/swarm/ 14:05:41 (I just remembered what the name I saw was) 14:06:35 -!- PinealGlandOptic has quit (Ping timeout: 240 seconds). 14:19:14 -!- PinealGlandOptic has joined. 14:26:57 -!- jaboja has quit (Read error: Connection reset by peer). 14:28:05 well. 14:28:13 let's say you have 100 samples 14:28:21 75 should output 1.0 and 25 should output 0.0 14:28:46 a random program const 1.0 will be fairly accurate with an error of 25 14:28:47 -!- jaboja has joined. 14:29:00 so it's pretty much a dead point if you happen to randomly generate that 14:29:04 and try to optimize it further :) 14:30:28 the problem is no small modification to it will produce a better program anymore 14:31:30 it's usually called (getting stuck at) a local optimum 14:31:40 I call it craptimum. 14:34:25 `? craptimum 14:34:33 craptimum? ¯\(°​_o)/¯ 14:34:36 `learn craptimum is a non-optimal optimum 14:34:38 Learned 'craptimum': craptimum is a non-optimal optimum 14:42:57 -!- erkin has joined. 14:43:38 `? opium 14:43:39 opium? ¯\(°​_o)/¯ 14:43:51 `learn opium is an optimum. 14:43:53 Learned 'opium': opium is an optimum. 14:45:41 hmm, no? 14:45:53 `revert 14:45:54 Done. 14:46:32 `slwd craptimum//s/.*/A &./ 14:46:33 craptimum//A craptimum is a non-optimal optimum. 14:47:42 more frequently known as a suboptimum 14:48:16 . o O ( I'm a suboptimist! ) 14:50:17 -!- pikhq has quit (Ping timeout: 260 seconds). 15:02:52 -!- pikhq has joined. 15:10:36 how the fuck do you copy a variable in python 15:10:42 in seem to be put into a closure 15:10:44 but I don't want that. 15:10:55 I tried (lambda lm: lambda f: f*lm)(m_) 15:11:06 but it seems lm in lambda f still receives modification to m_ 15:13:49 -!- pikhq has quit (Ping timeout: 258 seconds). 15:14:39 -!- pikhq has joined. 15:25:41 copying in python is a deep subject 15:26:05 oh, the module is just named copy now 15:27:24 -!- jaboja has quit (Ping timeout: 255 seconds). 15:29:50 -!- AnotherTest has quit (Ping timeout: 240 seconds). 15:34:50 -!- erkin has quit (Quit: Ouch! Got SIGABRT, dying...). 15:40:05 but it's a float 15:42:06 Jafet: deep, eh. 15:42:36 @quote no.varia 15:42:36 cjs says: I have to explain this shit to people. I mean, I start out right, "Hey, you know how you always have these bugs because what you thought was in the variable is not there?" And I get all of 15:42:36 these nods of agreement. "Well, I've found a new language that solves that problem." Audience: "Ooooh! How?" Me: "There's no variables!" And then they all start moving away from me slowly.... 15:45:02 recursive lisp solves this problem 15:45:07 no variables 15:45:09 just arguments 15:45:46 a very able language 15:46:13 and it's easy to test 15:46:17 whole program is just one function 15:47:07 would it involve functional testing? 15:47:46 nah 15:47:49 I only do fuzzy testing. 15:49:24 also I don't write code 15:49:27 I just write an ann 15:49:30 give it some inputs and outputs 15:49:36 then train it until it has 0 error 15:49:39 then you're done 15:49:48 a? 15:50:01 (what's the 'a' in 'ann'?) 15:50:05 artificial 15:50:10 artificial neurotic network 15:50:14 fair enoigh 15:50:30 `' neuro 15:50:31 No output. 15:50:37 `grwp neuro 15:50:51 No output. 15:51:10 -!- Cale has quit (Ping timeout: 246 seconds). 15:51:56 -!- Cale has joined. 15:52:06 `" 15:52:06 729) (help why are german) i play the german version of crawl i \ 694) fungot: Feeling scrambled after all that? fizzie: but it's much like new zealand, in my stone-age country, we still like you even if you're only using the new fnord 15:52:21 (what a logical command) 15:57:50 `' 15:57:51 476) i am out of all the fame loops and the australien soap opera loops so much loop / s omcuh 16:00:06 -!- `^_^v has joined. 16:01:49 -!- mroman has quit (Ping timeout: 260 seconds). 16:21:41 -!- doesthiswork has quit (Quit: Leaving.). 16:40:50 -!- AnotherTest has joined. 16:53:33 -!- `^_^v has quit (Quit: This computer has gone to sleep). 16:54:19 -!- augur has joined. 17:05:27 -!- `^_^v has joined. 17:22:04 <\oren\> `⁗ 17:22:04 ​/home/hackbot/hackbot.hg/multibot_cmds/lib/limits: line 5: exec: ⁗: not found 17:22:08 <\oren\> bah 17:33:53 -!- augur has quit (Remote host closed the connection). 17:45:24 <\oren\> AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 17:46:58 <\oren\> the build failed because of a stupid email address being malformed?!?!?!?! AAAAAAAAAAAAAAAAAAAAAAAA 17:47:53 that would only be that annoying if builds took a very long time hth 17:48:30 <\oren\> builds take 6 hours 17:49:12 <\oren\> I started this one via at at 2 am 17:51:30 Is there a way to encode fractions without losing space 17:51:57 That is, a way of putting the fraction (1,2) without also having to lose space because (2,4) is the same fraction 17:52:05 -!- ^v has joined. 17:53:50 I can't think of any non-really awkward way 17:54:50 Like writing the prime factors of the numerator and then the prime factors of the denominator but in the set of primes that doesn't contain the primes of the numerator 17:56:05 So that 2/3 would be written ([1],[1]), for 2^1 and p^1 for the first prime that isn't in the numerator 17:57:30 also is there a way to know how much space you'd need for each prime factor? 17:57:59 To make every number under a certain value without any gaps 18:00:34 That is, for every number up to 2, you only need 1 bit, to generate 2^0 and 2^1, but if you have 1 bit for 2 and 1 bit for 3, then you can generate 6 but not 5 18:01:02 Is there an ideal number for each prime factor so that there is no gam 18:01:05 gap 18:02:07 probably not known in general since the distribution of primes isn't known but does it work for a small enough value 18:10:32 -!- FreeFull has joined. 18:11:15 plenty is known 18:11:27 like, between n and 2n always exists a prime 18:11:40 I assume you are aware that the redundancy costs less than 2 bits on average 18:11:44 which could be enough to destroy that 18:13:34 (the length of the farey sequence f_n, for all fractions with denominator up to n, is asymptotically 3/π^2×n^2) 18:14:36 -!- erkin has joined. 18:15:38 Farey sequence is indeed probably the ideal thing 18:18:28 `mkx bin/⁗//cc 'int i,r,n;main(){for(;n<1e5;n++,r*=2){for(i=2;i*i<=n;i++)if(n%i==0&&r--)break;r++;if((r&511)==325)printf("%d,%d,%d,%d%c",n-8,n-6,n-2,n,10);}}' 18:18:30 bin/⁗ 18:18:35 `⁗ 18:18:36 5,7,11,13 \ 11,13,17,19 \ 101,103,107,109 \ 191,193,197,199 \ 821,823,827,829 \ 1481,1483,1487,1489 \ 1871,1873,1877,1879 \ 2081,2083,2087,2089 \ 3251,3253,3257,3259 \ 3461,3463,3467,3469 \ 5651,5653,5657,5659 \ 9431,9433,9437,9439 \ 13001,13003,13007,13009 \ 15641,15643,15647,15649 \ 15731,15733,15737,15739 \ 16061,16063,16067,16069 \ 18041,18043, 18:22:45 well, the stern-brocot encoding has no redundancies 18:30:44 -!- hppavilion[0] has joined. 18:31:18 -!- augur has joined. 18:34:45 Jafet++ 18:41:32 -!- augur has quit (Remote host closed the connection). 18:43:36 -!- sftp has quit (Ping timeout: 255 seconds). 19:04:18 -!- augur has joined. 19:08:46 -!- augur has quit (Read error: Connection reset by peer). 19:15:49 -!- Phantom_Hoover has joined. 19:22:34 <\oren\> Scaramucci's fandango is quite entertaining! so far it isn't very very frightening though. 19:24:20 joke got old fast 19:28:00 -!- augur has joined. 19:31:48 -!- carado has left ("WeeChat 1.7.1"). 19:38:07 -!- `^_^v has quit (Quit: This computer has gone to sleep). 19:39:59 -!- `^_^v has joined. 19:41:57 Jafet: is there a deeper meaning behind calling the command ⁗ ... (deeper than <\oren\> `⁗)? 19:44:14 Yes. 19:44:21 `unidecode ⁗ 19:44:22 ​[U+2057 QUADRUPLE PRIME] 19:47:51 -!- erkin has quit (Quit: Ouch! Got SIGABRT, dying...). 19:52:18 -!- One has joined. 19:52:23 hi 19:52:33 m/f 19:52:49 that's transphobic 19:53:06 what is transophobics? 19:53:12 ididnt undersyand 19:53:18 -!- imode has joined. 19:53:55 19:54:41 * int-e yawns. 19:55:10 ./pm One 19:56:47 . o O ( One: What are you doing? Because I don't think you're doing what you think you're doing. ) 19:58:52 If you want to troll the channel, why don't you make an Ook! clone using Bow and wow. 19:59:06 * int-e runs for cover. 19:59:49 -!- One has quit (Ping timeout: 260 seconds). 20:00:01 sounds pretty scow 20:00:29 s/troll/aggrevate/. I think it could work. Just pretend it's the best thing since sliced bread. :) 20:00:43 But I see One is gone. 20:01:12 . o O ( /topic Waiting for Two. | ... ) 20:01:53 But it's probably too (two?) contextual. 20:09:57 -!- sleffy has joined. 20:24:56 int-e: I think that was god. (Zechariah 14:9.) 20:25:17 Or Godot. 20:27:49 fizzie: Good point, though the first search result for that yielded a bad translation. 20:29:12 Aha. 20:32:21 Doesn't work in the Luther translation. Pity. ("... und sein Name der einzige") 20:32:37 -!- ais523 has joined. 20:32:46 it works in the original hth 20:33:12 -!- MrBusiness has joined. 20:33:29 Everything works when one doesn't understand a single word. 20:34:19 http://www.mechon-mamre.org/p/pt/pt2314.htm hth 20:39:54 -!- `^_^v has quit (Quit: This computer has gone to sleep). 20:41:35 -!- `^_^v has joined. 20:44:43 -!- ais523 has quit. 20:48:28 shachaf: I only knew that because of the Unsong book. 20:49:09 Should I read that? 20:49:27 I don't know that, but I liked some parts of it. 21:09:14 Do you recommend it? 21:10:39 . o O ( As recommendations go this was rather lukewarm. ) 21:25:49 -!- imode has quit (Ping timeout: 276 seconds). 21:29:45 newsham: whoa whoa whoa, what's this about arbitration? 21:35:50 -!- quintopia has quit (Remote host closed the connection). 21:43:53 -!- Remavas has joined. 21:55:29 -!- sleffy has quit (Ping timeout: 248 seconds). 22:14:19 -!- Remavas has quit (Quit: Leaving). 22:21:56 -!- `^_^v has quit (Quit: This computer has gone to sleep). 22:23:42 `5 w 22:23:47 1/2:post-turing machine//A post-Turing machine is a machine from the post-Turing era. \ thyme//Thyme itself is only an abstract approximation of oregano. \ ism//Isms are philosophies, religions or ideologies that have branched off from older ones, such as Leninism or Buddhism. Etymologically "ism" is a backformation from portmanteaus on "schism". \ 22:23:56 `n 22:23:57 2/2: galaxy//A galaxy is a star that feeds its litter with milk. \ lifthrasiir's font//lifthrasiir's font is https://github.com/lifthrasiir/unison/ https://lifthrasiir.github.io/unison/sample.png 22:24:10 [wiki] [[Numberwang (brainfuck derivative)]] https://esolangs.org/w/index.php?diff=52558&oldid=50516 * Conor O'Brien * (+665) 22:25:20 -!- AnotherTest has quit (Ping timeout: 240 seconds). 22:32:26 shachaf: some contract someone wanted me to sign. 22:32:36 just wanted to sanity check against other people 22:33:02 i opted not to sign something that said i would never sue them for anything ever again 22:33:28 I'm not sure how much I should avoid arbitration. 22:33:39 isn't the thing with contracts like that that they're frequently unenforcable 22:34:41 I think arbitration is often enforceable? 22:35:09 newsham: Are you signing an employment agreement? 22:35:16 i can believe that, i would be less sure about never being allowed to sue them 22:35:43 newsham: Did you get a lawyer to look at it for you? 22:36:07 I had a lawyer look at the last employment agreement I signed and propose amendments and so on, and I think it was worthwhile. 22:37:12 whoa whoa whoa, On June 26, 2015, Hawaii’s governor David Ige signed Act 158 which voids any “noncompete clause or a nonsolicit clause in any employment contract relating to an employee of a technology business.” 22:37:16 tg 22:37:35 Not sure why technology business employees should get special treatment. 22:37:54 shachaf: it came up in my normal job. customer wants to hire us, but requires individuals to sign contract. 22:38:02 Ah. 22:38:05 so the contract is basically for 3 weeks of work 22:38:19 Hmm, looking at the details of this Act 158 is less encouraging. 22:38:32 but says i will only file complaints through binding arbitration forever, and no class action lawsuits 22:38:33 «"Noncompete clause" means a clause in an employment contract that prohibits an employee from working in a specific geographic area for a specific period of time after leaving employment with the employer.» 22:47:36 newsham: Is this still NCC? 22:49:31 ncc is my employer.. not the customer who wanted me to sign thing 22:49:42 they will remain nameless 22:49:44 whats an ncc 22:49:56 Yes, I meant your current employer. 22:50:00 https://www.nccgroup.trust/us/ 22:50:10 trust/us, huh? 22:50:38 trust in me, just in me, close your eyes, and trust in me.. slide into silent slumber, sail on silvery mist, slowly but surely your senses will cease to exist... 22:52:15 whoa whoa whoa, NCC is a public company? 22:52:52 newsham: do you have any ""good security facts for us"" 22:53:07 what's the next ROP 22:53:16 JOP 22:53:31 https://www.comp.nus.edu.sg/~liangzk/papers/asiaccs11.pdf 22:54:06 -!- augur has quit (Read error: Connection reset by peer). 22:54:40 good security facts: complex things are harder to secure. 22:54:45 -!- imode has joined. 22:54:55 security fact: code has bugs, some bugs are security vulnerabilities. 22:55:17 security fact: if its not one thing, its another. 22:56:14 https://www.vex.net/~trebla/humour/tautologies.html 22:56:56 Anyway obviously I was asking for stock tips. What's the next Roper Technologies Inc.? 22:57:39 So this thing relies on indirect jumps? 22:57:43 -!- wob_jonas has joined. 22:58:13 -!- Phantom_Hoover has quit (Remote host closed the connection). 22:59:41 -!- augur has joined. 22:59:42 Seems like it would be trickier to find gadgets for that. I guess I should see how it works. 23:02:40 " i opted not to sign something that said i would never sue them for anything ever again" => hmm wait, let me check what exactly the clause about arbitration in that contract I had signed says 23:03:05 <\oren\> http://www.newyorker.com/news/ryan-lizza/anthony-scaramucci-called-me-to-unload-about-white-house-leakers-reince-priebus-and-steve-bannon OH SHIT HAHAHAHAHHAHAHAHAHAHAHAAHAHA 23:04:03 I did ask the company to change the phrasing of certain other clauses in that contract, but not of the arbitration clause. 23:05:03 shachaf: yah, indirect jumps. thats not the best paper on the subject but i had a hard time finding the other one in a few minutes google search 23:05:11 some programs have lots of indirect jumps. 23:05:30 Well, they need to be indirect jumps that are useful. 23:06:01 you should invent a good technique for exploiting ghc-generated code twh 23:06:10 so many jumps 23:06:41 Here it is. It says that a certain court of arbitration will decide disputes about the contract, but only "all disputes arising from or in connection with the provisions on intellectual property rights regulated in this agreement, their breach, termination, validity or interpretation". 23:06:55 shachaf: but ghc code never has bugs! 23:06:56 ;-) 23:06:59 It doesn't say that I can't sue them, and definitely doesn't even try to suggest that this applies "for anything" as opposed to only for intellectual property rights. 23:07:13 Well, obviously the bug is going to come from the FFI. 23:08:26 Remember when we implemented unsafeCoerce in this channel? 23:08:34 It was TG. 23:09:06 newsham: Puzzle: Given unsafeCoerce, in GHC code, but no arbitrary imports (so e.g. no access to any IO), can you execute arbitrary code? 23:09:12 page 15 here: https://repository.lib.ncsu.edu/bitstream/handle/1840.4/4135/TR-2010-8.pdf?sequence=1&isAllowed=y 23:09:28 is a good way to understand the technique.. walk through the details of how that executes 23:09:50 Oh man, adding &isAllowed=y to the end of a URL to see a paper is the real exploit. 23:09:59 shachaf: I hear the answer is yes, unsafeCoerce is enough for that, but that's only anecdotal 23:10:07 wob_jonas: Hear from whom? 23:10:09 pretty esolang relevant since you basically just build an interpretter 23:10:15 shachaf: the internets 23:10:17 Certainly you can implement unsafePerformIO with unsafeCoerce. 23:10:26 But I'm talking about a case where you don't have IO. 23:10:28 but maybe I'm mixing up unsafePerformIO with unsafeCoerce 23:10:34 And, don't have, uh, ByteString. 23:11:18 shachaf: could you just cast some data pointer to something that will get interpreted as a function pointer, to try to jump to some code that the program doesn't expect to jump to? 23:11:29 Can you? 23:11:40 You can certainly get it to jump to some data pointer. 23:11:50 But can you construct one that will actually let you do anything? 23:11:54 I dunno, I've no idea how ghc's low level representation works 23:11:55 Please advise. 23:11:58 shachaf: yes. 23:12:07 How? 23:12:10 shachaf: no, don't just jump to some data pointer, but say jump to some number that wasn't proven to be a pointer 23:12:12 23:12:16 like jump to an integer you supply 23:12:32 OK, and then what? 23:12:36 and that integer happens to be the address of some code, but not code you're supposed to jump to 23:12:52 OK, and how do you put code at that address? 23:13:03 heap spraying? 23:13:05 you don't put code there, you reuse some code already in libc or the haskell runtime 23:13:15 newsham: no no, you use an already executable page 23:13:27 we don't want to mmap anything to executable here, at least not for bootstrapping 23:13:31 we just use existing code 23:13:35 The sort of situation I'm proposing is, say, some online Haskell evaluation service that relies on the type system for security. 23:13:45 and possibly pass the right arguments 23:13:45 So it doesn't let you import anything with IO. 23:13:54 But it does let you implement unsafeCoerce because of a GHC bug. 23:13:57 What can you do? 23:14:09 like, call system("rm -rf /") where system is a function from libc or that sort of thing 23:14:11 what does attacker control? cmd line args? environment? OS settings? 23:14:45 Let's say the attacker submits program.hs which exports a value. 23:14:56 wob: if you control a jump, you'll also have to manage to pont the stack pointer to something that looks like an activation frame with a pointer to the "rm -rf /" string as an arg 23:15:23 You compile it with -XSafe and import restrictions. 23:15:37 newsham: yes, so it doesn't need to be the system function in particular, and I imagine you'd call it without a valid return address 23:17:02 How do you refer to system? All you have is a Haskell program. 23:17:39 iter0) aslr is off, system is at a fixed location, you happen to figured out where and abuse it 23:17:42 iter1) .... 23:18:22 wait 23:18:28 shachaf: there's an easier solution 23:18:54 shachaf: you said import restrictions. but don't you still have the Prelude, which contains file IO functions like writeFile ? 23:19:09 Those aren't in scope. 23:19:16 Custom prelude. 23:19:20 ah 23:20:13 in that case, I really don't know, because the details probably depend on how ghc internally represents haskell stuff, and I'm not familiar with that 23:20:22 the runtime representations that is 23:20:49 because you'll abuse unsafeCoerce by trying to use a value that represents one thing as if it represented another thing 23:21:01 -!- PattuX has joined. 23:21:49 Yes, those are the details I'm interested in. 23:22:08 I thought about it a bit a few years ago and didn't figure out anything. 23:22:11 shachaf: you may have to ask in #haskell or #ghc or something if you don't get an answer here 23:22:15 But something is probably possible? 23:28:45 I still don't understand is why the rust standard libraries declare the file open and system functions as safe functions (in the rust sense, that is, directly callable from rust without unsafe code). 23:29:23 Why not? 23:31:04 The system function lets you run arbitrary commands, and those commands could then do anything, including rudely write into your rust process's memory, which violates the memory safety guarantees that safe rust code is supposed to have. 23:31:25 -!- boily has joined. 23:31:43 The file open functions, at least the ones for writing files, also usually let you execute arbitrary commands indirectly, because you can overwrite config files that other programs trust. 23:32:16 I think you know why they're declared safe. 23:32:48 My guess is that it's for stupid marketing reasons: they try to pretend that you can write basically any useful program in just safe rust. 23:33:40 And yes, I know that we can't change them now, for historical compatibility: making them unsafe or removing them now would break too many programs. 23:34:23 -!- quintopia has joined. 23:34:39 -!- quintopia has quit (Changing host). 23:34:39 -!- quintopia has joined. 23:35:02 helloily 23:39:13 -!- hppavilion[1] has joined. 23:41:26 -!- Lord_of_Life has quit (Excess Flood). 23:41:42 -!- quintopi1 has joined. 23:41:50 -!- deltab has quit (Write error: Broken pipe). 23:41:50 -!- heroux has quit (Write error: Broken pipe). 23:41:51 -!- alercah_ has joined. 23:41:56 -!- ybden has quit (Excess Flood). 23:41:58 In this fac-simile edition of an old book, of which all three authors are long dead so all the content is in public domain, why did they write "All rights reserved" together with copyright notices naming only the republisher with the year 2016? 23:41:58 Isn't that minor fraud, them misrepresenting the copyright? 23:41:58 -!- quintopia has quit (Remote host closed the connection). 23:42:06 -!- molum has joined. 23:42:18 -!- atehwa_ has joined. 23:42:20 -!- pikhq_ has joined. 23:42:26 -!- heroux has joined. 23:42:28 -!- Lord_of_Life has joined. 23:42:43 -!- jix has quit (Write error: Broken pipe). 23:42:46 -!- relrod has quit (Excess Flood). 23:42:48 -!- atehwa has quit (Write error: Broken pipe). 23:42:49 -!- lambdabot has quit (Remote host closed the connection). 23:42:50 -!- pikhq has quit (Remote host closed the connection). 23:42:59 -!- relrod_ has joined. 23:43:00 -!- relrod_ has quit (Changing host). 23:43:00 -!- relrod_ has joined. 23:43:25 -!- hppavilion[0] has quit (Remote host closed the connection). 23:43:28 -!- alercah has quit (Remote host closed the connection). 23:44:00 -!- jix has joined. 23:44:05 -!- quintopi1 has changed nick to quintopia. 23:44:25 -!- quintopia has quit (Changing host). 23:44:25 -!- quintopia has joined. 23:45:00 -!- relrod_ has changed nick to relrod. 23:45:18 -!- Lord_of_Life has quit (Changing host). 23:45:18 -!- Lord_of_Life has joined. 23:45:19 -!- heroux has quit (Changing host). 23:45:19 -!- heroux has joined. 23:46:30 wob_jonas: perhaps they have rights the specific form they published it in, even if they main contents are public domain 23:46:38 wob_jonas: which book is it btw 23:47:34 quintopia: it's a fac-simile edition, so the layout of each page is exactly the same as that in the old book, so no. I believe none of the contributions they added establishes new copyright. 23:48:04 -!- deltab has joined. 23:48:30 QUINTHELLOPIA! 23:49:11 quintopia: ''Arany János Balladái Zichy Mihály rajzaival”, foreword by Riedl Frigyes, (2016) Kossuth Kiadó, MTA Könyvtár és Információs Központ – Országos Széchényi Könyvtár, ISBN: 978-963-09-8596-3. Based on books of same title (vols. I–IV.), Budapest, Ráth Mór, 1895–1898. 23:49:52 wob_jonas: Do you like Laszlo Polgar? 23:49:54 Beautiful books, I intend to full distribute digital copy on the internets if there isn't one up there yet. 23:50:05 wow 23:50:17 shachaf: no clue, I don't know much about him 23:50:48 helloochaf, wellob_jellonas. 23:52:11 Though I may have to get my hands on the originals, or at least some other edition between the two, rather than this edition: not for intellectual property reasons, but for technical quality reasons: 23:52:23 the new edition is printed with digital tech that makes all the images have a fine grid pattern, which might cause some ugly Moiré patterns when scanned or photographed. 23:52:33 wob_jonas: i bet that the copyright message itself is copyrighted to the publisher 23:52:35 helloily 23:53:18 and that fine grid pattern is copyright too 23:53:34 quintopia: hehe... but no, the copyright message itself isn't original enough for being subject to copyright 23:54:49 And by the way, the front cover is also copying the cover of the old books, so no, that's not what the copyright is about either 23:58:01 Maybe the three pages of foreword isn't fac-simile, but retyped and printed in a new layout and new font, and they're asserting their copyright over the font? 23:59:23 The foreword is junk by the way, I wish it was still copyrighted so that I would have an excuse to not republish it.