00:32:52 <boily> (“not yet, I'm eating...”)
00:36:20 <quintopia> oh i need to do that soon. what's on the menu today?
00:40:53 -!- augur has quit (Remote host closed the connection).
00:42:41 <HackEgo> [wiki] [[Esoteric Operating System]] https://esolangs.org/w/index.php?diff=52554&oldid=34260 * Zseri * (+43) +File System
00:43:12 <quintopia> did you ever read the girl with the dragon tattoo
00:43:25 -!- augur has joined.
00:47:02 <boily> I should try that: spaghetti with https://www.ateriet.com/wp-content/uploads/2015/08/kalles-21-e1439029022596.png
00:47:37 <boily> you should have something edible and happiferous. hamburgers are quite good at that.
00:47:49 <boily> no, I haven't read it.
00:48:15 <boily> it's Swedish smoked roe paste. pretty good, goes well on a sandwich!
00:48:34 <quintopia> 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:34:49 <Jafet> `learn Degenerate things are those that have been featured on the Ellen DeGeneres Show.
03:34:51 <HackEgo> Learned 'degenerate': Degenerate things are those that have been featured on the Ellen DeGeneres Show.
03:35:54 <HackEgo> degenerate:Degenerate things are those that have been featured on the Ellen DeGeneres Show.
03:36:29 <shachaf> But most things are degenerate versions of the mustard version of themselves.
03:43:38 <Jafet> `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 <HackEgo> 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:37 <shachaf> Where is Jafet geographically, anyway?
03:46:28 <Jafet> oh, it's an american program
03:47:35 <shachaf> The apostrophe on olist 1085 has still not been fixed.
03:48:05 <Jafet> `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 <HackEgo> 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 <HackEgo> cat: wisdom/scowrevs: No such file or directory
03:48:31 <HackEgo> 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 <HackEgo> [wiki] [[ArnoldC]] https://esolangs.org/w/index.php?diff=52555&oldid=52552 * Oerjan * (-45) featured it is not
08:27:32 <shachaf> 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 <Jafet> it also has {{{paradigms}}}
09:04:06 <HackEgo> [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 <HackEgo> [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 <mroman> http://codepad.org/20hTMnmw
11:10:59 <mroman> it's surprisingly hard to calculate the angle between two vectors.
11:11:05 <mroman> ^- code above is broken
11:12:18 <mroman> people say you can use the dot product for that
11:12:22 <mroman> if it's negative or positive
11:13:42 <mroman> 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 <mroman> not if it's to the left or to the right in respect to the reference v1
11:14:29 <mroman> v1 is the reference vector and v2 is the vector from origin to a target point
11:14:41 <mroman> and the question is what the angle between v1 and v2 is
11:15:20 <mroman> but math.acos will give you 15deg regardless if target point is to the left of v1 or to the right
11:15:25 <mroman> so I don't know where enemies are :(
11:19:02 <mroman> I mean... the dp gives you whether the target point is to the left or right of your origin point
11:19:07 <mroman> 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 <int-e> 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 <int-e> 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 <int-e> and finally, I bet one can construct vectors such that cos_a > 1 (or < -1), causing the acos call to fail.
13:40:56 <int-e> (due to rounding errors)
13:42:36 <mroman> but you need a few ifs in there
13:43:14 <mroman> http://codepad.org/lnX67PK7 <- i finally figured it out.
13:43:30 <mroman> and yes, you can construct cos_a > 1
13:44:05 <mroman> print(cos_a); acos(cos_a); will sometimes crash with domain error
13:44:10 <mroman> but print(cos_a); will print 1.0
13:44:20 <mroman> so it prints 1.0 but the number is actually not 1.0
13:45:12 <mroman> but I don't know how it becomes bigger than 1.0
13:45:17 <mroman> probably float precision limitations
13:45:31 <mroman> http://codepad.org/eCywKVdJ <- i.e. this
13:45:36 <mroman> I didn't know print rounds.
13:46:23 <mroman> I use atan2 now to compute an "absolute" rotation angle of a vector
13:49:01 <int-e> 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 <mroman> (d in this case is the direction vector of the origin and v is the vector from origin to target)
13:54:13 <mroman> on to the next problem.
13:54:44 <mroman> let's say I optimize something
13:55:05 <mroman> 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 <mroman> http://codepad.org/C5aebGSV
13:57:16 <mroman> the problem is the optimizer is RANDOM :D
13:57:38 <mroman> 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 <mroman> 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 <int-e> https://en.wikipedia.org/wiki/Simulated_annealing may be worth a look
13:59:44 <int-e> there's a lot of stuff working with ensembles (the most prominent keyword being genetic algorithms, I guess)
13:59:45 <Jafet> is simulated annealing useful for anything other than simulated metals?
14:00:24 <int-e> I'd say it's not useful for simulated metals at all.
14:00:27 -!- doesthiswork has joined.
14:00:44 <int-e> (I know what you're saying, but the terminology has departed from the obvious meaning.)
14:01:11 <int-e> Problem is, I don't know whether you're joking.
14:01:15 <Jafet> well, I haven't seen any proofs that it is useful for anything else
14:01:32 <int-e> "works well in practice"
14:02:51 <Jafet> https://en.wikipedia.org/wiki/Simulated_annealing#The_annealing_schedule — ok, I guess it's useful for simulated metals
14:03:21 <int-e> 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 <Jafet> anyway, if you are optimising a function at random, you can use statistics to analyse the distribution of possible answers
14:05:41 <int-e> (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:13 <mroman> let's say you have 100 samples
14:28:21 <mroman> 75 should output 1.0 and 25 should output 0.0
14:28:46 <mroman> a random program const 1.0 will be fairly accurate with an error of 25
14:28:47 -!- jaboja has joined.
14:29:00 <mroman> so it's pretty much a dead point if you happen to randomly generate that
14:29:04 <mroman> and try to optimize it further :)
14:30:28 <mroman> the problem is no small modification to it will produce a better program anymore
14:31:30 <int-e> it's usually called (getting stuck at) a local optimum
14:34:36 <mroman> `learn craptimum is a non-optimal optimum
14:34:38 <HackEgo> Learned 'craptimum': craptimum is a non-optimal optimum
14:42:57 -!- erkin has joined.
14:43:51 <mroman> `learn opium is an optimum.
14:43:53 <HackEgo> Learned 'opium': opium is an optimum.
14:46:32 <int-e> `slwd craptimum//s/.*/A &./
14:46:33 <HackEgo> craptimum//A craptimum is a non-optimal optimum.
14:47:42 <Jafet> more frequently known as a suboptimum
14:48:16 <int-e> . 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 <mroman> how the fuck do you copy a variable in python
15:10:42 <mroman> in seem to be put into a closure
15:10:44 <mroman> but I don't want that.
15:10:55 <mroman> I tried (lambda lm: lambda f: f*lm)(m_)
15:11:06 <mroman> 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 <Jafet> copying in python is a deep subject
15:26:05 <Jafet> 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:42:36 <lambdabot> 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 <lambdabot> 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 <mroman> recursive lisp solves this problem
15:45:46 <Jafet> a very able language
15:46:17 <mroman> whole program is just one function
15:47:07 <Jafet> would it involve functional testing?
15:47:49 <mroman> I only do fuzzy testing.
15:49:24 <mroman> also I don't write code
15:49:30 <mroman> give it some inputs and outputs
15:49:36 <mroman> then train it until it has 0 error
15:50:01 <int-e> (what's the 'a' in 'ann'?)
15:50:10 <mroman> artificial neurotic network
15:51:10 -!- Cale has quit (Ping timeout: 246 seconds).
15:51:56 -!- Cale has joined.
15:52:06 <HackEgo> 729) <elliott_> (help why are german) <monqy> i play the german version of crawl <elliott_> i \ 694) <fizzie> fungot: Feeling scrambled after all that? <fungot> 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 <int-e> (what a logical command)
15:57:51 <HackEgo> 476) <monqy> i am out of all the fame loops <monqy> and the australien soap opera loops <monqy> 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 <HackEgo> /home/hackbot/hackbot.hg/multibot_cmds/lib/limits: line 5: exec: ⁗: not found
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 <shachaf> that would only be that annoying if builds took a very long time hth
17:49:12 <\oren\> I started this one via at at 2 am
17:51:30 <Slereah__> Is there a way to encode fractions without losing space
17:51:57 <Slereah__> 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 <Slereah__> I can't think of any non-really awkward way
17:54:50 <Slereah__> 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 <Slereah__> 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 <Slereah__> also is there a way to know how much space you'd need for each prime factor?
17:57:59 <Slereah__> To make every number under a certain value without any gaps
18:00:34 <Slereah__> 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 <Slereah__> Is there an ideal number for each prime factor so that there is no gam
18:02:07 <Slereah__> 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:27 <myname> like, between n and 2n always exists a prime
18:11:40 <Jafet> I assume you are aware that the redundancy costs less than 2 bits on average
18:11:44 <myname> which could be enough to destroy that
18:13:34 <Jafet> (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 <Slereah__> Farey sequence is indeed probably the ideal thing
18:18:28 <Jafet> `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:36 <HackEgo> 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 <Jafet> well, the stern-brocot encoding has no redundancies
18:30:44 -!- hppavilion[0] has joined.
18:31:18 -!- augur has joined.
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: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 <int-e> Jafet: is there a deeper meaning behind calling the command ⁗ ... (deeper than <\oren\> `⁗)?
19:47:51 -!- erkin has quit (Quit: Ouch! Got SIGABRT, dying...).
19:52:18 -!- One has joined.
19:53:06 <One> what is transophobics?
19:53:12 <One> ididnt undersyand
19:53:18 -!- imode has joined.
19:53:55 <One> <script>alert(1)</script>
19:56:47 <int-e> . o O ( One: What are you doing? Because I don't think you're doing what you think you're doing. )
19:58:52 <int-e> If you want to troll the channel, why don't you make an Ook! clone using Bow and wow.
19:59:49 -!- One has quit (Ping timeout: 260 seconds).
20:00:01 <Jafet> sounds pretty scow
20:00:29 <int-e> s/troll/aggrevate/. I think it could work. Just pretend it's the best thing since sliced bread. :)
20:00:43 <int-e> But I see One is gone.
20:01:12 <int-e> . o O ( /topic Waiting for Two. | ... )
20:01:53 <int-e> But it's probably too (two?) contextual.
20:09:57 -!- sleffy has joined.
20:24:56 <fizzie> int-e: I think that was god. (Zechariah 14:9.)
20:27:49 <shachaf> fizzie: Good point, though the first search result for that yielded a bad translation.
20:32:21 <int-e> Doesn't work in the Luther translation. Pity. ("... und sein Name der einzige")
20:32:37 -!- ais523 has joined.
20:32:46 <shachaf> it works in the original hth
20:33:12 -!- MrBusiness has joined.
20:33:29 <int-e> Everything works when one doesn't understand a single word.
20:34:19 <shachaf> 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 <fizzie> shachaf: I only knew that because of the Unsong book.
20:49:27 <fizzie> I don't know that, but I liked some parts of it.
21:10:39 <int-e> . o O ( As recommendations go this was rather lukewarm. )
21:25:49 -!- imode has quit (Ping timeout: 276 seconds).
21:29:45 <shachaf> 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:47 <HackEgo> 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:57 <HackEgo> 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 <HackEgo> [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 <newsham> shachaf: some contract someone wanted me to sign.
22:32:36 <newsham> just wanted to sanity check against other people
22:33:02 <newsham> i opted not to sign something that said i would never sue them for anything ever again
22:33:28 <shachaf> I'm not sure how much I should avoid arbitration.
22:33:39 <Phantom_Hoover> isn't the thing with contracts like that that they're frequently unenforcable
22:34:41 <shachaf> I think arbitration is often enforceable?
22:35:09 <shachaf> newsham: Are you signing an employment agreement?
22:35:16 <Phantom_Hoover> i can believe that, i would be less sure about never being allowed to sue them
22:35:43 <shachaf> newsham: Did you get a lawyer to look at it for you?
22:36:07 <shachaf> 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 <shachaf> 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:35 <shachaf> Not sure why technology business employees should get special treatment.
22:37:54 <newsham> shachaf: it came up in my normal job. customer wants to hire us, but requires individuals to sign contract.
22:38:05 <newsham> so the contract is basically for 3 weeks of work
22:38:19 <shachaf> Hmm, looking at the details of this Act 158 is less encouraging.
22:38:32 <newsham> but says i will only file complaints through binding arbitration forever, and no class action lawsuits
22:38:33 <shachaf> «"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 <shachaf> newsham: Is this still NCC?
22:49:31 <newsham> ncc is my employer.. not the customer who wanted me to sign thing
22:49:56 <shachaf> Yes, I meant your current employer.
22:50:00 <newsham> https://www.nccgroup.trust/us/
22:50:38 <newsham> 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 <shachaf> whoa whoa whoa, NCC is a public company?
22:52:52 <shachaf> newsham: do you have any ""good security facts for us""
22:53:31 <newsham> 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 <newsham> good security facts: complex things are harder to secure.
22:54:45 -!- imode has joined.
22:54:55 <newsham> security fact: code has bugs, some bugs are security vulnerabilities.
22:55:17 <newsham> security fact: if its not one thing, its another.
22:56:14 <shachaf> https://www.vex.net/~trebla/humour/tautologies.html
22:56:56 <shachaf> Anyway obviously I was asking for stock tips. What's the next Roper Technologies Inc.?
22:57:39 <shachaf> 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 <shachaf> Seems like it would be trickier to find gadgets for that. I guess I should see how it works.
23:02:40 <wob_jonas> "<newsham> 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 <wob_jonas> 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 <newsham> 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 <newsham> some programs have lots of indirect jumps.
23:05:30 <shachaf> Well, they need to be indirect jumps that are useful.
23:06:01 <shachaf> you should invent a good technique for exploiting ghc-generated code twh
23:06:41 <wob_jonas> 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 <newsham> shachaf: but ghc code never has bugs!
23:06:59 <wob_jonas> 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 <shachaf> Well, obviously the bug is going to come from the FFI.
23:08:26 <shachaf> Remember when we implemented unsafeCoerce in this channel?
23:09:06 <shachaf> 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 <newsham> page 15 here: https://repository.lib.ncsu.edu/bitstream/handle/1840.4/4135/TR-2010-8.pdf?sequence=1&isAllowed=y
23:09:28 <newsham> is a good way to understand the technique.. walk through the details of how that executes
23:09:50 <shachaf> Oh man, adding &isAllowed=y to the end of a URL to see a paper is the real exploit.
23:09:59 <wob_jonas> shachaf: I hear the answer is yes, unsafeCoerce is enough for that, but that's only anecdotal
23:10:07 <shachaf> wob_jonas: Hear from whom?
23:10:09 <newsham> pretty esolang relevant since you basically just build an interpretter
23:10:17 <shachaf> Certainly you can implement unsafePerformIO with unsafeCoerce.
23:10:26 <shachaf> But I'm talking about a case where you don't have IO.
23:10:28 <wob_jonas> but maybe I'm mixing up unsafePerformIO with unsafeCoerce
23:10:34 <shachaf> And, don't have, uh, ByteString.
23:11:18 <wob_jonas> 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:40 <shachaf> You can certainly get it to jump to some data pointer.
23:11:50 <shachaf> But can you construct one that will actually let you do anything?
23:11:54 <wob_jonas> I dunno, I've no idea how ghc's low level representation works
23:12:10 <wob_jonas> 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 <newsham> <insert non-constructive proof here>
23:12:16 <wob_jonas> like jump to an integer you supply
23:12:36 <wob_jonas> and that integer happens to be the address of some code, but not code you're supposed to jump to
23:12:52 <shachaf> OK, and how do you put code at that address?
23:13:05 <wob_jonas> you don't put code there, you reuse some code already in libc or the haskell runtime
23:13:15 <wob_jonas> newsham: no no, you use an already executable page
23:13:27 <wob_jonas> we don't want to mmap anything to executable here, at least not for bootstrapping
23:13:35 <shachaf> 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 <wob_jonas> and possibly pass the right arguments
23:13:45 <shachaf> So it doesn't let you import anything with IO.
23:13:54 <shachaf> But it does let you implement unsafeCoerce because of a GHC bug.
23:14:09 <wob_jonas> like, call system("rm -rf /") where system is a function from libc or that sort of thing
23:14:11 <newsham> what does attacker control? cmd line args? environment? OS settings?
23:14:45 <shachaf> Let's say the attacker submits program.hs which exports a value.
23:14:56 <newsham> 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 <shachaf> You compile it with -XSafe and import restrictions.
23:15:37 <wob_jonas> 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 <shachaf> How do you refer to system? All you have is a Haskell program.
23:17:39 <newsham> iter0) aslr is off, system is at a fixed location, you happen to figured out where and abuse it
23:18:28 <wob_jonas> shachaf: there's an easier solution
23:18:54 <wob_jonas> shachaf: you said import restrictions. but don't you still have the Prelude, which contains file IO functions like writeFile ?
23:20:13 <wob_jonas> 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 <wob_jonas> the runtime representations that is
23:20:49 <wob_jonas> 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 <shachaf> Yes, those are the details I'm interested in.
23:22:08 <shachaf> I thought about it a bit a few years ago and didn't figure out anything.
23:22:11 <wob_jonas> shachaf: you may have to ask in #haskell or #ghc or something if you don't get an answer here
23:22:15 <shachaf> But something is probably possible?
23:28:45 <wob_jonas> 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:31:04 <wob_jonas> 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 <wob_jonas> 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 <shachaf> I think you know why they're declared safe.
23:32:48 <wob_jonas> 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 <wob_jonas> 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: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 <wob_jonas> 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 <wob_jonas> 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 <quintopia> wob_jonas: perhaps they have rights the specific form they published it in, even if they main contents are public domain
23:47:34 <wob_jonas> 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:49:11 <wob_jonas> 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 <shachaf> wob_jonas: Do you like Laszlo Polgar?
23:49:54 <wob_jonas> Beautiful books, I intend to full distribute digital copy on the internets if there isn't one up there yet.
23:50:17 <wob_jonas> shachaf: no clue, I don't know much about him
23:50:48 <boily> helloochaf, wellob_jellonas.
23:52:11 <wob_jonas> 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 <wob_jonas> 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 <quintopia> wob_jonas: i bet that the copyright message itself is copyrighted to the publisher
23:53:18 <quintopia> and that fine grid pattern is copyright too
23:53:34 <wob_jonas> quintopia: hehe... but no, the copyright message itself isn't original enough for being subject to copyright
23:54:49 <wob_jonas> 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 <wob_jonas> 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 <wob_jonas> The foreword is junk by the way, I wish it was still copyrighted so that I would have an excuse to not republish it.