00:02:15 -!- adu has quit (Quit: adu). 00:14:15 -!- oerjan has joined. 00:20:37 oerjan: hellørjan. linguistics question: is your "yes" ingressive? 00:21:42 http://blog.northhighland.com/wp-content/uploads/2014/12/Features-300x250.png 00:22:33 http://1.bp.blogspot.com/-P3BJ_eMmNjs/Uh-S0FjnG3I/AAAAAAAAAN8/-jIWn91Hnl8/s1600/Success+Content+Diagram+For+Blog.jpg 00:23:18 nys: those are profundly uninformative. 00:23:22 boily: the ingressive yes is at least commonplace in (some parts of) Sweden 00:23:45 :t \x -> x >> modify (+1) 00:23:46 (MonadState s m, Num s) => m a -> m () 00:23:52 the Features one reminds me of the metaclasses diagram in the smalltalk-80 guide 00:24:01 -!- allen has left ("Leaving"). 00:24:16 boily: not usually, i think 00:25:23 i don't think it's common in my dialect region 00:25:29 olsner: I stumbled upon a short video about ingressive yes in Umeå the other day. 00:25:37 oerjan: oh well. tfth. 00:26:10 umeå is iirc quite far from norway 00:26:17 i have a feeling it may be more common in oslo 00:27:10 olsner: wikipedia lists examples of ingressives, without specifying regions or dialects. Norway was in there. 00:27:30 * boily adds Oslo to his places-to-visit. 00:29:52 doesnt tell me much, no constraints imposed by "modify"? <-- that's a bit disappointing, and it's not lambdabot cutting it off either. although you can use a lambda like above. 00:30:02 I use ingressive yes a lot, but it's not really in my dialect (or the dialect around here) 00:43:16 -!- ais523 has quit (Read error: Connection reset by peer). 00:43:28 -!- ais523 has joined. 00:47:26 -!- AndoDaan has joined. 00:49:41 -!- jbkcc has joined. 00:56:57 -!- skj3gg has quit (Ping timeout: 245 seconds). 01:12:24 -!- CrazyM4n has quit (Remote host closed the connection). 01:14:04 -!- Froox has joined. 01:14:13 -!- Sprocklem has quit (Ping timeout: 244 seconds). 01:14:38 int-e: shachaf: it's even worse to fix https://ghc.haskell.org/trac/ghc/ticket/9858#comment:9 01:18:03 -!- Frooxius has quit (Ping timeout: 264 seconds). 01:34:46 -!- Tritonio has quit (Remote host closed the connection). 01:35:19 -!- Tritonio has joined. 01:36:30 also works without promoted data kinds. 01:37:01 @tell int-e btw the exploits works with just {-# LANGUAGE AutoDeriveTypeable, TypeFamilies, RankNTypes #-} 01:37:01 Consider it noted. 01:37:45 hm editing trac posts may not be such a good idea 01:37:54 * oerjan only changed Constraint to * -> *, though 01:38:06 *comments 01:39:25 > Proxy :: Proxy Constraint 01:39:26 Not in scope: type constructor or class ‘Constraint’ 01:39:26 Perhaps you meant ‘Contains’ (imported from Control.Lens) 01:39:53 > Proxy :: Proxy (Proxy :: * -> *) 01:39:54 Proxy 01:40:40 > Proxy :: Proxy (Proxy :: Bool -> *) 01:40:41 Illegal kind: ‘GHC.Types.Bool’ 01:40:42 Perhaps you intended to use DataKinds 01:42:59 @tell int-e i see you are missing the first one :P 01:42:59 Consider it noted. 01:50:38 -!- jbkcc has quit (Ping timeout: 246 seconds). 01:55:59 poor int-e 01:58:07 split from his evil twin... 01:58:49 i am not sure whether i should ask someone to remove lambdabot until int-e awakes 01:59:10 (i got around his countermeasure) 02:00:35 it might be overly paranoid though 02:00:42 unless lambdabot poses a blatant security risk and tries to overtake the world, I guess we're kinda safe with him there. 02:00:51 (we still have Sir Fungellot to protect us, too.) 02:01:03 @metar CYUL 02:01:03 CYUL 170100Z 30016G23KT 15SM DRSN FEW035 M16/M24 A3016 RMK CF1 CF TR SLP215 02:01:12 see, nothing to frette about. 02:02:33 i mean, i modified shachaf's exploit from earlier today so it still works on lambdabot 02:03:18 otoh presumably there are few people here intelligent enough to guess how _and_ mean enough to mess things up. 02:04:04 * oerjan optimist 02:06:21 it's looking quite awkward to fix the GHC bug now, basically Typeable reps would need to start including kind info 02:07:28 Phyrexian Generator {4} Artifact === {(W/P)(U/P)(B/P)(R/P)(G/P)}, {T}: Add {WUBRG} to your mana pool. 02:07:51 -!- augur has quit (Ping timeout: 252 seconds). 02:11:33 zzo38: 4? 02:12:10 -!- yukko_ has quit (Quit: Reconnecting). 02:12:21 -!- yukko has joined. 02:12:58 oh. I misread the {WUBRG}. it produces all of it at the same time. 02:13:41 (hm... with some mana-doubling stuff it becomes strangely easy to sneak in a Progenitus and/or a few Emrakuls...) 02:14:29 Maybe the cost of the artifact, or of the ability, may be wrong though 02:14:49 Maybe both of them should be increased by {1} 02:15:48 Or only one of them should be; I'm not sure 02:16:59 Well, with a lot of life and the ability to copy or untap the artifact, you could earn a lot of mana. 02:18:57 life is overrated. it's only another expendable resource. 02:19:31 (for the record, only MtG life. I value my own, tyvm hth.) 02:19:56 Yes, but you do start with only 20 life points and can also lose them due to being damaged. 02:20:27 Still it is something that is usable; for now I decided probably to increase both costs by {1} 02:21:20 `addquote life is overrated. it's only another expendable resource. 02:21:30 you know it had to be done. 02:21:32 1230) life is overrated. it's only another expendable resource. 02:21:44 bon, maudit. encore une fois... 02:22:05 * boily is reminded that he still needs to fix that damned Greek LaTeX problem... 02:22:52 zzo38: starting with 20 HP means you have 19 at your disposition. 02:23:28 (it's a gamble. unless you're playing against a red-deck-wins, it works pretty much all the time.) 02:24:32 [wiki] [[Special:Log/newusers]] create * Dotamaria1 * New user account 02:24:39 example: I have a few Lashwrithes in my monoblack deck. 02:25:10 lambdabot: @quit 02:25:10 Not enough privileges 02:25:14 -!- elliott_ has changed nick to elliott. 02:25:29 -!- elliott has quit (Quit: Reconnecting). 02:25:35 -!- elliott has joined. 02:25:39 lambdabot: @quit 02:25:39 -!- lambdabot has quit (Quit: requested). 02:25:43 -!- elliott has changed nick to Guest1017. 02:25:45 pretty sure int-e would want that 02:25:50 uhhhh what 02:25:59 -!- Guest1017 has quit (Client Quit). 02:26:08 -!- elliott_ has joined. 02:26:38 why is sasl broken... 02:26:45 Of course it also depend what other cards you have as well as depending whether you play Constructed or Limited 02:27:03 elliott_: it's broken for you too? 02:27:11 well, it doesn't seem to be authenticating me. 02:27:14 If it is Limited then you might not get more than one copy of some card. 02:27:16 zzo38: tough choice... 02:27:39 (I always play Limited) 02:28:05 oerjan: whoa 02:28:08 I oscillate. we play modern during lunch, with the occasional about-monthly draft. 02:28:12 -!- elliott_ has changed nick to elliott. 02:28:14 oerjan++ 02:28:15 -!- elliott has quit (Changing host). 02:28:15 -!- elliott has joined. 02:29:03 I was heading in that direction earlier but I stopped when I found the DataKinds things. 02:29:09 since lambdabot is now gone i might just as well link it: http://oerjan.nvg.org/ExploitForIntE.hs 02:29:25 * shachaf is on phome, will look later 02:29:25 oerjan: no, it's not :( 02:29:28 it's rejoining channels 02:29:33 elliott: oops 02:29:41 I need to make it quick again because int-e helpfully made it reconnect unless it quits twice in quick succession 02:29:53 which may not even be possible given how long it takes to respond to a @quit after connecting? 02:30:06 okay it disconnected now at least 02:30:06 -!- augur has joined. 02:30:34 oerjan: uhm... I fail to understand the exploit. I guess it puts me in the very mean category... 02:30:43 boily: OKAY 02:31:39 * boily doesn't want to be mean. (except in coop boardgames :D) 02:32:49 oerjan: of course now someone will notice the missing lambdabot in #haskell and spin up a replacement instance on their personal machine, as their normal user account... 02:32:51 boily: haskell has this Typeable class which is supposed to give you safe dynamical typing by allowing casts between types that are actually equal, based on a reified type representation. but there's a bug that allows you to get types with identical representation by using kind polymorphism 02:32:57 and get owned far worse 02:33:06 bah 02:33:18 :p 02:33:34 elliott: I ain't be running no cephalopods. 02:33:53 oerjan: and? it's a typecast. so what? 02:34:30 boily: so you can cast IO () to something you can call in pure code 02:34:58 oh. 02:35:00 boily: this cast is supposed to be safely enough checked that you can use it Safe mode for running untrusted code, which lambdabot does. 02:35:05 oh dear fungot. 02:35:06 boily: he was in the vale of pnath, and the waves of our bidding encompassed all the land of inquanok and saw against the stars, whose course exactly paralleled that of his own two-year-old son, who had hastily translated a few high spots as they came, and he speaks her fnord but he knew his room was fnord in that carven vestige of an older dwelling and which at times almost rose to the intensity of the dreams and legends, this 02:35:35 quite the interesting bug, I say. 02:35:58 I like how "GHC 0-days" are a thing 02:36:45 shachaf's original exploit used the fact that certain "datakind promotion" can give you two types that have the same name in a way that isn't distinguished in the typerep. 02:36:46 -!- callforjudgement has joined. 02:36:55 -!- ais523 has quit (Disconnected by services). 02:36:56 -!- callforjudgement has changed nick to ais523. 02:37:11 time for me to have a few nightmares. 'night all! 02:37:15 -!- boily has quit (Quit: UNFINISHED CHICKEN). 02:37:31 i then modified it to use instead the fact that types can depend on kinds in such a way that the kind doesn't show up in the typerep at _all_. 02:41:35 -!- Lilax has joined. 02:44:07 shachaf: i was intrigued to try this by the fact that int-e's suggested fix in that other ghc trac thread seemed to simple to work 02:44:15 *too 02:51:51 I like math kinda 02:53:16 Kinda? 02:53:42 * Lilax nods head 02:53:45 Kinda 02:56:18 Kinda is not good enough. 02:58:19 How about 02:58:27 97.6 02:58:39 % of liking 03:03:34 -!- Phantom_Hoover has quit (Ping timeout: 245 seconds). 03:07:15 class Kindable (Proxy :: k -> *) where ... 03:07:39 oerjan: lowercase p, surely 03:07:39 that's not a word /o/ 03:07:39 | 03:07:39 /| 03:07:49 elliott: no 03:07:52 thank you myndzi 03:07:59 oerjan: that works...? 03:08:02 elliott: it's supposed to parametrize over the kind, not the type 03:08:10 ok but it's not valid :P 03:08:14 elliott: well maybe proxy works 03:08:24 oerjan: k -> 1 would be best 03:08:28 for the obvious definition of 1 03:08:28 elliott: i'm just thinking about what they'll need to _really_ fix that bug 03:08:49 because you need kinds in typereps 03:08:57 * elliott nods 03:09:02 it sounds like a mess. 03:09:12 they just redid Typeable to be all polykinded, too... 03:09:31 yeah but kinds arent't poly-(sorted?) yet 03:10:09 the dependent typing investigations will unify types and kinds, though 03:10:25 That sounds 03:10:31 Interesting 03:10:36 it is 03:12:19 Ive finally made a play bot 03:13:26 -!- Tritonio has quit (Remote host closed the connection). 03:13:36 good, good 03:16:11 i suspect int-e will have to disable type families, iirc gadts are safer because there's still a dynamic check remaining 03:16:49 what happened? 03:16:49 well i guess he could refrain from importing cast, but maybe there are ways to sneak around that with other things using Typeable 03:17:12 Lilax: we found an exploit in ghc haskell, which affects lambdabot's sandboxing 03:17:23 :O 03:17:30 That sounds bad 03:17:57 yeah but it requires several ghc extensions to work, so int-e can probably find one to disable 03:18:20 (he tried disabling one earlier today, but i found a way around that) 03:18:24 I wondered why lambdabot wasn't on 03:19:08 -!- glguy has joined. 03:20:02 hm the RankNTypes is probably not needed either, let me see... 03:21:08 Making a currency system that updates on how many products the user has and upgrades/ lvl system is hard to maintain 03:22:27 -!- adu has joined. 03:22:32 oerjan: oh are they thinking about adding full dependent typing? 03:23:27 elliott: richard eisenberg is 03:23:49 https://ghc.haskell.org/trac/ghc/wiki/DependentHaskell 03:24:14 gasp 03:29:42 oerjan: I think linking the exploit was pretty redundant by the time you gave all the information about it. 03:30:19 maybe :P 03:30:36 ok i don't need RankNTypes to cast between two concrete types 03:31:13 I didn't use RankNTypes in my original version of the code. 03:31:24 right 03:31:42 data family F a b p; data instance F a b (Proxy T) = A a; data instance F a b (Proxy 'T) = B b 03:31:49 uc :: forall a b. (Typeable a, Typeable b) => a -> b 03:31:49 uc x = case cast (A x :: F a b (Proxy T)) :: Maybe (F a b (Proxy 'T)) of { Just (B y) -> y; Nothing -> error "oops" } 03:32:04 that's pretty much the way i was just trying to change it 03:32:26 i think that might need ScopedTypeVariables to work for all Typeables 03:32:36 Yes, that uses ScopedTypeVariables. 03:32:48 But you can usually eliminate ScopedTypeVariables uses. 03:33:11 oh hm lessee 03:33:30 You can probably use GADTs instead of TypeFamilies too. 03:33:46 Though the obvious way of doing it doesn't work because GHC checks the tag even when there's only one possibility. 03:33:51 i thought GADTs ... right 03:33:55 is there another way? 03:34:05 I think there was a way... 03:34:09 How did that one thing work? 03:34:30 http://joyoftypes.blogspot.com/2012/08/generalizednewtypederiving-is.html does something with GADTs 03:35:55 -!- FreeFull has joined. 03:36:40 -!- callforjudgement has joined. 03:36:44 -!- ais523 has quit (Disconnected by services). 03:36:45 So maybe something like that. I'd need to think about the details. 03:36:46 -!- callforjudgement has changed nick to ais523. 03:39:33 -!- vanila has joined. 03:40:39 Do you get a prize for ticket #10000 03:40:59 I hope so, I worked for that ticket number. 03:41:36 well you got a cheer from spj, that must be something 03:41:40 https://ghc.haskell.org/trac/ghc/query?status=infoneeded&status=new&status=patch&col=id&col=summary&col=status&col=owner&col=type&col=priority&col=milestone&col=reporter&desc=1&order=id 03:42:14 It's a bit anticlimactic that it was a duplicate after all that. 03:42:29 But oerjan made it more interesting. 03:42:53 Is PolyKinds actually necessary for this bug? 03:43:08 (The trouble is that it works even without turning it on.) 03:44:56 shachaf: getting rid of the ScopedTypeVariables is tricky because b is so phantom... 03:46:25 shachaf: i've been thinking if this is one of those things that might be nipped in the bud by ghc's new "only allow inferred types that have all necessary extensions enabled" "feature" 03:47:01 someone should check this with 7.10.rc 03:47:27 the "working without listing PolyKinds" part, that is 03:48:11 or perhaps the necessary stuff is just implied by the other extensions 03:48:11 I think it's safe to say at this point that turning a crufty old experimental research compiler into your sole line of security defence is a poor choice 03:48:19 YOU THINK 03:48:58 I'm not sure what the plan is with safe haskell 03:49:24 it doesn't seem to have ever been vaguely secure so what are they going to do, just wait a few years for all the really simple bugs to get ironed out and then say it's secure? 03:49:46 oerjan: What's the issue with turning off ScopedTypeVariables? 03:49:54 supercast :: (Typeable a, Typeable b) => F a b (Proxy T) -> Maybe (F a b (Proxy 'T)); supercast = cast 03:49:58 uc :: (Typeable a, Typeable b) => a -> b; uc x = case supercast (A x) of Just (B y) -> y 03:50:04 is this exploit related to deriving? 03:50:50 vanila: only of Typeable, not newtypes 03:51:29 nice work 03:51:44 basically the derived typereps of different types aren't always different 03:53:23 So all you need is a way to derive Typeable, and type families or something similar. 03:54:08 -!- adu has quit (Quit: adu). 03:58:55 -!- AndoDaan_ has joined. 03:58:56 -!- AndoDaan has quit (Read error: Connection reset by peer). 03:59:00 ive got no idea what modern haskell is about haha 03:59:04 all this dynamic type stuff 03:59:06 shachaf: thanks that worked 03:59:32 vanila: well the dynamic typing is just a small part 04:00:23 Typeable has been around for a long time but the poly-kinded stuff that lets this nonsense work is relatively new 04:00:50 oerjan: btw bob harper will have a field day with this one 04:00:58 OUCH 04:01:00 yeah hahaha 04:01:05 everyones like bob you just dont understand haskell 04:01:10 and now this 04:01:19 to be fair he's done unsafeCoerce with Typeable before 04:01:25 but that was back when it was completely trivial 04:01:33 (by giving your own manual instance of Typeable before that was forbidden) 04:01:42 that was one of his troll posts :P 04:01:48 "one of" 04:06:40 ok i got rid of StandaloneDeriving 04:08:05 -!- MDude has changed nick to MDream. 04:10:11 I just used AutoDeriveTypeable. 04:10:20 Which extensions are you using now? 04:10:37 DeriveDateTypeable and TypeFamilies 04:10:40 *a 04:11:05 Ah. 04:11:47 * shachaf is back to phone so can't experiment. 04:20:34 oerjan: 04:20:37 By the way, you're also using KindSignatures, which is turned in automatically by TypeFamilies. 04:20:44 ah 04:20:55 whoa, this ssh client is a bit of a scow 04:21:19 are they also turned on by GADTs? 04:21:22 (I'm assuming you're using kind signatures, anyway.) 04:21:29 well naturally 04:21:31 No. 04:21:44 (Unless I'm wrong.) 04:22:03 Not according to http://hackage.haskell.org/package/haskell-src-exts-1.0.1/docs/src/Language-Haskell-Exts-Extension.html 04:22:19 ok 04:22:22 -!- shikhin_ has quit (Ping timeout: 245 seconds). 04:22:57 shachaf: btw the reason i changed from AutoDeriveTypeable is because lambdabot didn't have it 04:23:08 Ah. 04:23:36 Would turning off DeriveDataTypeable be enough? 04:23:54 well that's what i'm trying to think about 04:24:28 Back to the old "user Typeable types are unsafe" thing. 04:25:17 Except including derived instances. 04:25:31 s/types/instances/ 04:30:34 -!- nys has quit (Quit: quit). 04:31:02 * shachaf gets on train 04:31:27 Hmm, how did you do it without StandaloneDeriving? 04:31:52 made an ordinary newtype to wrap it in 04:32:17 Ah, makes sense. 04:37:19 Using a newtype also lets you get away with a type family rather than a data family. 04:37:47 ok 04:38:17 -!- Froo has joined. 04:39:13 In my opinion it should be allowed to define a class as being automatic, and in such cases you cannot write your own instances but it automatically derives it for all types it is applicable to whether or not the program that defines that type knows anything about the class. 04:40:09 -!- Frooxius has joined. 04:41:36 Typeable should be one such class. 04:42:03 -!- Froox has quit (Ping timeout: 264 seconds). 04:42:08 zzo38: i agree, although this bug wouldn't be helped by that 04:42:57 -!- Froo has quit (Ping timeout: 244 seconds). 04:46:52 Do any of you persons draw? 04:47:07 * Lilax is very much off topic 04:48:39 -!- ais523 has quit. 04:48:52 -!- ais523 has joined. 04:49:48 Lilax: I am not very good at drawing my brother make the pictures for my computer game 04:50:05 oh 04:50:26 I was doing an art final so I kinda need an idea for a second picture 04:58:39 It isn't something I would know. 05:06:04 -!- augur has quit (Ping timeout: 245 seconds). 05:22:07 -!- GeekDude has quit (Quit: {{{}}{{{}}{{}}}{{}}} (www.adiirc.com)). 05:22:48 int-e, can i msg you about unsafe? 05:26:30 vanila: i don't think int-e is awake yet, or else he'd surely commented on tonight's exploit 05:26:46 alright 05:27:12 :k Eq 05:27:16 im wondering how to implement unsafePerformIO with unsafeCoerce: I got a really crashy way and somehow int-e's is more stable.. but it make less sense 05:27:16 oh duh 05:27:47 vanila: you need to understand how ghc implement's IO inside, i guess 05:27:51 *-' 05:28:02 Just make a replicate of the IO datatype 05:28:38 but since the function argument is a weird "this actually takes 0 bytes" type used nowhere else... 05:29:19 (well also in ST) 05:29:25 vanila: just copy the IO and unsafePerformIO definition 05:29:27 and unsafeCoerce to it 05:29:40 heh 05:30:04 runST (unsafeCoerce (putStrLn "fun")) is probably the easiest 05:30:17 oh lambdabot has runST doesn't it.. 05:30:42 i got caught up in somethin unecessary then 05:32:25 http://lpaste.net/74498 thats' intes 05:38:37 runST (unsafeCoerce (do readFile "/etc/passwd")) 05:38:40 how come this crashes? 05:38:50 i thought it would work fine 05:39:52 int-es unsafePerofrmIO works though 05:40:04 well it prints most of the file before segfaulting 05:41:22 -!- augur has joined. 05:47:51 Did you try adding the stuff I mentioned in the other channel to make it strict? 05:48:06 (I'm not sure that that's the problem, but I imagine it's why you switched channels 05:48:31 thasnk glguy :) 05:48:49 it still crashes but i get some output 05:48:54 its kind of interesting 05:51:31 i can get lambdabot installed to test this :( 05:51:36 cant* 05:52:06 I must say I like this lambdabot absence thing. 05:58:26 Yeah, less garbage in chat and if we need to share a type signature or evaluate an expression we can still do it in ghci and paste it 05:59:07 And if we need to see a quote we just ask shachaf to search the logs for it. 05:59:13 win win 05:59:24 whee i crashed ghc 05:59:35 oerjan: whoa, still with this typeable thing? 05:59:45 yes, and uc 'a' :: Int crashed 05:59:59 Oh, at runtime? 05:59:59 shachaf: i'm trying to see how far i can avoid deriving Typeable 06:00:04 Or in typechecking? 06:00:07 runtime 06:00:25 Oh, well, that's not really crashing GHC. 06:00:34 It's easy to do with a GADT that has an invalid tag. 06:00:38 Maybe you did something else. 06:01:04 -!- jbkcc has joined. 06:01:21 i have data E :: * -> * -> * where E :: E a a deriving Typeable i don't think that's invalid 06:02:06 Well, you can use it (and the Typeable kind bug) to make an invalid thing. 06:02:09 Presumably. 06:02:16 OKAY 06:02:26 http://joyoftypes.blogspot.co.uk/2012/08/generalizednewtypederiving-is.html 06:02:32 Or maybe you did something else? 06:02:37 (i'm trying to see if having that around is enough not to have to make any other Typeables) 06:02:51 lol @ GHC can magically derive (wrong) instances for typeclasses you create ?? 06:03:03 oerjan: That's exported from Data.Typeable, for what it's worth. 06:03:10 So you don't even need to derive Typeable for it yourself. 06:03:14 ooh 06:03:31 blsqbot: 0 1 {{.+}c!} {1} w! 06:04:26 !blsq 0 1 {{.+}c!} {1} w! 06:04:26 | Ain't nobody got time fo' dat! 06:04:46 !blsq 0 1 {{.+}c!} {99.<} w! 06:04:46 | 144 06:04:47 | 89 06:04:47 | 55 06:05:14 bah but now i need TypeOperators :( 06:06:15 Just use it prefix. 06:06:20 !blsq 0 1 {{.+}c!} {99.<} w!CL 06:06:20 | {144 89 55 34 21 13 8 5 3 2 1 1 0} 06:06:25 type Is = (:~:) 06:07:19 huh 06:07:51 still crashing 06:09:29 well that was reall yfun to think about 06:12:38 vanila: they've fixed that newtype deriving thing although the fix has other annoying side effects 06:12:50 i find it amazing this was ever a bug 06:13:03 why wouldn't you derive stuff by creating code and then typechecking it etc. 06:13:21 they are like "lets skip typechecking" 06:13:28 vanila: because the code may not be available? 06:13:33 Because you wouldn't be able to write the code for some of them 06:13:35 that's what augustss's compiler did 06:13:37 the compiler is writing the code 06:13:47 (I believe.) 06:13:50 -!- AndoDaan_ has quit (Quit: bbl). 06:14:02 but his compiler 1) cheats where it's convenient 2) can't derive as many instances even when they might be valid 06:14:05 shachaf: istr that too 06:15:17 * shachaf isn't sure how oerjan is crashing with a compiler error using just (:~:), actually 06:15:43 vanila: an important consideration here is that it should be _fast_ by having the wrapping be trivially optimized away 06:16:10 shachaf: but it typechecks :P 06:16:50 i tried readding some Maybes but that didn't help :( 06:17:03 maybe you should try writting them 06:17:20 OKAY 06:18:31 maybe i've hit another ghc bug 06:19:22 i feel bad for haskell 06:19:31 vanila: because unsafeCoerce is more efficient when it works basically :/ 06:19:44 map NewType or map unNewType is like unsafeCoerce but slower 06:20:17 the same would apply to fmap *except* if you break the functor laws in an instance you can get unsafeCoerce out of it 06:20:21 which is really annoying. 06:24:22 I had a nice plan to fix it all elegantly but then they went and did something else instead 06:24:35 which is probably for the best 06:25:17 shachaf: did you decide to go public with your bug report specifically to take lambdabot down? 06:25:40 glguy: I told int-e about the bug before reporting it and he decided to disable DataKinds. 06:25:47 it's not like GHC has any process for reporting security-sensitive bugs 06:25:52 (afaik) 06:25:59 Then oerjan figured out that it wasn't sufficient so elliott took the bot down entirely. 06:26:08 I asked thoughtpolice what to do with it. 06:26:24 Does anyone use safehaskell for security? 06:26:25 The conclusion was that I might as well report it publicly. 06:26:29 I was just joking due to the lambdabot comment, not actually questioning intent :) 06:26:31 lambdabot does 06:26:35 if safe haskell is going to be deployed in production then GHC really needs a process for handling security bugs etc. 06:26:40 which is basically all soundness bugs :/ 06:26:47 what is safe haskell 06:26:57 Jafet: I think byorgey had some web-based thing that accepted arbitrary safe haskell code 06:26:57 no such thing hth 06:27:13 I assume int-e uses a chroot wrapped in a VM wrapped in a burrito 06:27:20 vanila: basically something that tags modules as safe/unsafe/trusted etc. so you can run arbitrary code that can't import modules with stuff marked as unsafe like unsafePerformIO or unsafeCoerce 06:27:24 (including third-party libraries) 06:27:27 lambdabot uses it for obvious reasons 06:27:37 you can @let import stuff but it won't work if you try to import Unsafe.Coerce etc. 06:27:40 that sounds awful D: 06:28:14 they should ues a type system for this... 06:28:14 eh, it's an okay idea, it's just not very robust in practice because GHC is complex and has lots of bugs so you can often get unsafeCoerce through other ways 06:28:23 that would be better yeah 06:28:43 an --unsafe--> function type that you can turn off the application rule for 06:29:08 they should make a language a bit like haskell but without unsafe stuff 06:29:17 mm burlesque is fun 06:29:23 vanila: still the idea is that you can turn on safe haskell and get proper RT and stuff 06:29:36 like actually be able to know things about what an (A -> B) can do no matter what haskell file you load 06:29:40 as long as you load it in safe mode 06:29:53 it just falls down because any GHC soundness bug is a security bug now 06:30:02 you could compile to bytecode and have a bytecode interpreter with some settings for its capabilities 06:30:07 and GHC just isn't that robust, especially with all the fancy extensions interacting 06:30:14 there's so much you can do other than just putting comments in the code "this is safe lol" 06:30:22 vanila: well the thing is, you want to be able to call code that is implemented unsafely 06:30:23 You could use any of the standard sandboxing mechanisms. 06:30:26 for instance you can use ByteStrings just fine in safe haskell 06:30:44 The idea is that you can rely on the type checker to not have to do that. 06:30:45 and you can do things like expose restricted IO monads to the safe code to use 06:31:02 *Main> uc 'a' :: Int 06:31:02 1152921504606846976 06:31:13 DIDN'T CRASH THIS TIME HTH 06:31:18 (code that uses unsafe code to implement a safe interface is called "Trustworthy") 06:31:19 oerjan: ship it 06:31:22 (Safe Haskell lets you audit it) 06:31:26 (by only letting packages you explicitly trust do this) 06:31:29 > showHex 1152921504606846976 "" 06:31:31 I use safehaskell 06:31:35 Err 06:31:41 (so you can know what unsafe code you are trusting to be encapsulated properly) 06:31:51 The only safe haskell is abstinence 06:31:54 "1000000000000000" 06:31:57 p. good 06:32:02 LOL 06:32:07 pls 06:32:09 oerjan: this is with no extensions? 06:32:33 what if you could write unsafeCoerce in pure hindley-milner all along 06:32:38 haha 06:32:53 yes yes it probably has a soundness proof or whatever, but what if ZFC is inconsistent too 06:32:54 but its been proved you can't 06:32:59 it could happen 06:33:17 0day of the century 06:33:20 haha 06:33:21 ZFC 0-day 06:33:32 that'll be when we're all relying on proof checkers to run arbitrary code with attached safety proofs 06:33:49 urgent patch to the ZFC axioms with a coordinated multi-vendor release 06:33:55 redimensionalize derivative coefficients 06:34:12 redimensionalizing* I guess 06:34:22 that sounds very possible except not ZFC but the given proof checker 06:35:19 yeah but it'd be more fun if it was the axioms themselves that were broken 06:35:28 shachaf: only TypeFamilies 06:35:29 Most provers have a set theory (but not quite ZF) 06:35:33 breaking axiom systems like we do hash functions today 06:35:44 oerjan: Oh, you're using TypeFamilies still? 06:35:55 eventually nobody runs anything that takes more than peano arithmetic to prove safety of 06:35:55 Were you using it for that (:~:) thing all along? 06:35:59 *prove the safety of 06:36:22 hahaha imagine if PA was the limit 06:36:25 http://lpaste.net/81269 some old vaguely-relevant fun to all this 06:36:30 everything betond that got proved inconsistent 06:36:56 vanila: well, god made the naturals 06:37:13 and godel made some weird extra ones 06:37:29 I'm just gonna >_> use that lpaste for notes 06:38:00 i,i there exists a 0-day; if there exists an n-day, there exists an Sn-day; ... 06:38:44 shachaf: um i haven't changed the F part ... 06:38:58 although perhaps :~: could replace it, that's a thought 06:39:08 oh 06:39:22 i thought you were doing something like data Q a b p = A (Is p PT) a | B (Is p P'T) b 06:39:26 except clever and not obviously broken 06:39:37 I have a marvellous blackhat demo that this program is defective, but this pentest form is too small to contain it 06:40:28 -!- jbkcc has quit (Quit: My Mac has gone to sleep. ZZZzzz…). 06:41:19 http://oerjan.nvg.org/lbexploits/Exploit2.hs 06:41:29 is the not very well working one 06:41:43 (i moved the other one into this directory too) 06:42:51 oh, i see what you're doing 06:46:10 do you see why it's breaking too? 06:46:37 are you sure there isn't a import tunnel a bot to quick latex? 06:46:47 btw i tried wrapping in G and it didn't help 06:46:58 Lilax, stop talking shit 06:47:07 /o/ 06:47:27 Why would you say that, it startled me vanila 06:49:29 The point is just that polykinded proxy's kind isn't reflected in its typerep? 06:49:39 glguy: yep 06:50:16 oerjan: no, i'll look after i get home if it's still unsolved 06:50:16 btw http://oerjan.nvg.org/lbexploits/ExploitForIntE.hs is actually working 06:50:37 unlike this new attempt to avoid some extensions 06:51:30 that's just the same as my original code with * -> * instead of T, right? 06:51:39 we've managed to take several extensions off since then 06:51:41 shachaf: pretty much 06:52:41 hm another high number 06:52:49 or possibly the same one 06:54:15 ugh calculus pls don't do this to me 06:54:32 hm the explicit Typeable constraints aren't needed 06:55:03 Why not? 06:55:25 oerjan: the Core for your code is funny 06:55:41 ok 06:55:47 Paste for those of us on phones? 06:55:50 supercast = \ @ a5_axk @ b_axl w_s1pg _ -> $wsupercast w_s1pg 06:55:57 supercast completely ignores its non-E argument 06:56:09 but i need to go in ~4 minutes and will be back later 06:56:28 er, by your code i mean your code after i've changed it a bit, so maybe it's different in the original 06:57:48 i get a strange error if i try to add @Refl to the last e pattern in supercast 06:59:09 you'd expect strange errors when matching on an impossible Refl 06:59:17 though maybe yours is stranger than expected 06:59:22 oh duh of course 07:00:27 adding NOINLINE makes it work hth 07:00:34 but now i really need to go 07:00:38 ooh 07:07:30 oh hm 07:08:54 -!- JesseH has joined. 07:10:38 -!- ais523 has quit (Read error: Connection reset by peer). 07:10:46 -!- ais523 has joined. 07:13:37 `relcome JesseH 07:13:46 ​JesseH: Welcome to the international hub for esoteric programming language design and deployment! For more information, check out our wiki: . (For the other kind of esoterica, try #esoteric on irc.dal.net.) 07:14:11 'relcome elliott 07:14:16 it's ` 07:14:36 What's up, elliott? 07:14:51 uhhhh 07:14:53 ghc bugs apparently 07:14:58 same as always 07:15:24 Haskell, I see! 07:22:36 i see. it is never actually looking at the ID id value 07:24:09 as usual :p 07:26:23 gah making the f parameter non-explicit worked 07:27:09 now to find out if any of these munge applications (to prevent ghc inlining) are needed 07:28:38 oops some are 07:32:43 i need to write id ecast instead of ecast to avoid the crash :D 07:33:06 that's the only place, other than removing some explicit arguments 07:33:26 i think it's a good guess that this might break under higher optimization levels 07:36:48 shachaf: http://oerjan.nvg.org/lbexploits/Exploit3.hs 07:36:56 oerjan: good timing, i just got home 07:37:16 i managed to make it work without a pragma, at least in GHCi. 07:37:48 this is getting more and more fragile hth 07:37:54 you think 07:38:01 oerjan: {-# NOINLINE munge #-} should make it safe? 07:38:16 elliott: um the whole point of using munge is to avoid NOINLINE 07:38:20 oh. but why 07:38:34 well maybe it cannot be disabled, in which case it's fine 07:38:43 -!- augur has quit (Ping timeout: 245 seconds). 07:38:59 Is there a difference between data families and newtypes+type families? 07:39:05 can you use NOINLINE pragmas in lambdabot? 07:39:11 shachaf: no idea 07:39:22 I think you can. 07:39:50 you should be able to, yeah 07:39:51 but anyway the idea is to use as few extensions as possible 07:39:56 you can just @let at the very least 07:39:59 oerjan: by the way shadowing is bad hth 07:40:07 what shadowing? 07:40:10 e 07:40:40 bah 07:40:42 -!- ^v^v has quit (Read error: Connection reset by peer). 07:41:07 nothing to see here, move on 07:41:07 -!- ^v^v has joined. 07:41:56 oerjan: i was suspicious at first when i reloaded your url but then i saw that its contents were exactly equal to my editor buffer and decided i must be imagining things 07:42:12 hah 07:42:16 How can I parse a MySQL dump to convert to SQLite format? 07:43:44 is there a reason for using munge instead of using id directly 07:44:21 well it was originally munge x = (replicate 9 undefined ++ repeat x) !! 10 07:44:45 because i wanted to be sure ghc couldn't see through it 07:45:08 i like that id works there but ($) doesn't 07:45:12 huh 07:45:37 probably because of ghc's special $ parsing rule? 07:45:46 who knows 07:47:23 anyway we've proved that it's not sufficient to disable DeriveDataTypeable. 07:48:17 -!- SopaXorzTaker has joined. 07:48:31 oerjan: munge x = reflect x reify 07:48:45 actually GHC can probably see through that these days 07:48:49 not with the terrifying original implementation though 07:48:54 I wouldn't be surprised if GHC can inline reflect x reify 07:48:55 Right. 07:49:02 If you make it recursive, though, GHC has no chance. 07:49:08 It doesn't inline reverse [] = [] 07:49:56 You can get it to inline the first iteration 07:50:42 What do you mean? 07:51:21 It will inline a recursive function up to the first recursive call with the right pragma 07:51:55 -!- augur has joined. 07:52:02 In the bad old days we defined rev [] = []; rev [x] = [x]; rev xs = realReverse xs, or something like that. 07:52:14 To help the inliner along with that particular case. 07:52:22 can you use GHC.Exts.lazy 07:52:24 or something 07:52:49 also does this trick work with GHC.Exts.coerce 07:52:57 because if so, ouch 08:03:02 shopping -> 08:32:52 -!- chaosagent has quit (Ping timeout: 244 seconds). 08:43:27 That seems 08:43:32 -!- ais523 has quit. 08:43:38 complicated to an extreme? 09:01:11 Lilax: that's ghc for you :P 09:02:16 oerjan: I think I found another related bug. 09:02:27 Though not one that you can use to unsafeCoerce. 09:03:36 Tres bein! 09:04:30 λ> data T a where { A :: T Int; B :: T Bool } 09:04:30 λ> let f :: T Int -> (); f A = (); f B = () 09:04:44 complains about the second pattern 09:04:49 λ> data T a where { A :: T (Proxy (Proxy :: * -> *)); B :: T (Proxy (Proxy :: (* -> *) -> *)) } 09:04:52 λ> let f :: T (Proxy (Proxy :: * -> *)) -> (); f A = (); f B = () 09:04:54 no complaints 09:05:36 so i guess it checks that the types are the same without checking the kinds 09:05:55 that 09:06:13 looks like trash 09:06:16 no offense 09:07:17 you say that to every piece of code that gets pasted in here 09:07:32 Probably 09:07:38 hm 09:07:54 But that's cuz I'm not as advanced I still understand it kinda 09:08:25 but to me at my level it looks like someone was angry at their keyboard 09:08:44 Lilax: Are you sure?? 09:08:48 ill be quiet now ;-; 09:08:54 Lilax: You're learning Haskell? 09:09:03 very slowly 09:09:11 veeeeeeerrrry slowly 09:09:18 because school 09:09:22 > (\x -> (\y -> x)) z y 09:09:29 and I don't have much time to code 09:09:52 hm. lambdabot is gone 09:10:10 mroman: that's because of the bug we found, it ruins its sandboxing 09:10:31 oh. Is there a ghc trac issue for this? 09:10:38 #10000 09:11:09 why wasn't the bug detected before? and was the bugs occurance because of something being changed? 09:11:40 The code above looks like it is used to demonstrate the bug; it doesn't seem a very good code for an actual program but that doesn't make it "trash" 09:12:06 Lilax: it's an interaction with a subtle use of the new PolyKind feature which i guess no one has considered before. 09:12:24 I don't understand those features good enough to see how exactly this breaks safehaskell :( 09:12:50 Lilax: the change was in making types and Typeable instances PolyKinded without realizing you then had to include the kinds in the data. 09:13:20 mroman: http://oerjan.nvg.org/lbexploits 09:13:24 hth 09:13:33 I never said it was well ( I did and I'm sorry if it came off wrong ) but as my veiw point as where I am standing in my area of expertise in the haskells, it looks like random lettering and chars zzo38 09:13:52 -!- jbkcc has joined. 09:13:55 Ah, well, then you must learn. 09:13:56 mroman: those are further refinements i made tonight, now it's down to a single extension 09:14:33 Well.. I don't have time since its finals this month 09:14:34 i,i {-# LANGUAGE NoSafe #-} 09:14:39 so 09:14:45 what exactly should safehaskell prevent? 09:14:48 the use of cast? 09:15:15 A function uc :: a -> b which is a valid implementation of id. 09:15:20 mroman: yes 09:15:41 mroman: or, wait 09:15:43 safehaskell makes me sad 09:15:48 not a lot of fanciful script on that site of yours oerjan 09:15:49 I feel like haskell has so much more potential 09:16:01 mroman: cast should be safe, always. it's a ghc bug that it isn't. 09:16:01 am I just a totally out of touch purist or what 09:16:02 Oh, in this particular thing. Yes, different types should have different TypeReps. 09:16:06 haskell is a hassle 09:16:11 haha Lilax nice 09:17:34 Lilax: most of my fanciful stuff is in the esoteric/ subdirectory, and most of it you need to go via the wiki to find 09:17:46 If I make up a Magic: the Gathering card that says "you gain 6 life and target opponent draws 3 cards" then how much should be the cost? 09:17:48 Ive been trying to pursuade my IT teacher to install linux into the deepfreeze program in the computers so I can code more 09:17:51 oerjan: So it looks like "GHC checks type 'equality' without checking kinds" is a problem in more than just Typeable. 09:18:07 Can you think of anywhere else where it could allow unsafeCoerce? 09:18:25 zzo38: a rediculous ammount 09:18:29 zzo38: Why would you ever play that card? 09:18:38 shachaf: um what you found was just exhaustiveness checking, no? 09:18:56 shachaf: To improve your life total 09:19:41 oerjan: well, it doesn't complain even though you're matching on an impossible pattern 09:19:48 I assume your life total goes up and the opponant draws three so maybe you can withstand the attacks that are already being placed? 09:20:07 shachaf: i think it's pretty well known that part of ghc isn't "perfect"? 09:20:13 opponent& 09:20:19 and not unsafe just because of that 09:20:24 I can't brain I has the dumb 09:20:47 Lilax: Yes 09:20:57 Although maybe it should be 7 life 09:20:59 Maybe. 09:21:07 yes to what? 09:21:16 my response of summerization 09:21:30 zzo38: Giving your opponent three cards seems like a huge cost regardless. 09:21:40 Maybe your goal is to make them lose by drawing the last few cards of their library. 09:21:56 did anyone try GHC.Exts.coerce yet 09:21:58 they can only draw land? 09:22:03 Yes, if you use it enough they will not have enough cards left 09:22:04 with the built-in Coercible stuff 09:22:20 Anyways 09:22:20 Bargain costs 2W and has a similar effect (+7 life, one card) 09:22:25 o/ 09:23:53 zzo38: I guess this is meant for Limited? 09:24:25 Yes, mainly 09:24:31 oerjan: I don't know of any other case where GHC will let you match on something that brings an invalid type equality into scope. 09:26:58 Or, you should be also allowed to remove any counters from yourself too 09:31:03 mhm 09:40:21 -!- oerjan has quit (Quit: Argh). 09:51:27 vanila: awake now :P 09:52:30 oh okay! 09:52:47 it was interesting how much better your unsafePerformIO is than mine and runST 09:53:18 int-e: hi, I had to kill lambdabot 09:53:30 because you can unsafeCoerce with just TypeFamilies and Typeable 09:53:35 sorry 09:54:52 elliott: thanks. so the quit-twice mechanic finally found some use... 09:55:56 int-e: I was worried it'd respond to the @quit too slowly the second time to trigger that 09:56:04 since it was busy joining channels 09:56:20 vanila: http://lpaste.net/74498 09:56:20 int-e: it might be safe as long as you stop Data.Typeable from being accessed 09:56:28 all the exploits so far use Data.Typeable.cast 09:56:37 I feel like GHC.Exts.coerce might do it too though 09:56:44 (not sure, maybe not) 09:58:36 elliott: hmm, but how many modules like Data.Typeable.Lens are out there? (this one reexports cast, and another function based on it.) 09:58:52 -!- hjulle has joined. 09:58:58 hthats the code im talking about 09:59:15 int-e: yeah 09:59:22 performIO m = b (a m ()) where 09:59:23 a :: IO a -> rw -> (# rw, a #) 09:59:23 a = unsafeCoerce 09:59:23 b :: (# rw, a #) -> a 09:59:23 b (# _, x #) = x 09:59:27 that was my attempt 09:59:32 int-e: and you can probably get it from tons of things that are based on top of cast too 09:59:33 always segfaults afterwards though 09:59:58 int-e: tbh if there's nothing else sensitive on the VPS I might just take a backup and let it run, since I don't think the bug has been publicised anywhere but trac and here 10:00:08 that's fuss for you of course though 10:00:24 I dunno if people have checked if it works in HEAD 10:00:27 I guess probably since the bug is open 10:04:32 elliott: I've checked the #10000 version on ghc head. it's essentially the same thing... 10:04:55 * elliott nods 10:05:33 I'm a bit dismayed that this works without PolyKinds and DataKinds, has oerjan given details? 10:05:46 yes 10:05:52 http://oerjan.nvg.org/lbexploits/Exploit3.hs 10:06:23 OldTypeable is probably fine :P 10:06:27 (maybe?) 10:06:40 -!- TieSoul has joined. 10:06:46 right, another level of indirection... thanks 10:07:44 int-e: afaict there is no reason you can't just make mueval run inside a chroot 10:07:48 and a good demonstration that including the full kind will be the only thing that's going to work. 10:07:55 and then none of this would matter 10:08:07 heck, use Gregor's UMLBox like HackEgo, maybe :p 10:08:09 that's a bit slower though 10:08:12 wouldnt it just be less dangerous 10:08:25 vanila: well you wouldn't be able to do any useful IO without a linux kernel bug 10:08:28 which exist, but 10:08:31 as a short-term solution... 10:08:52 escaping chroots is an easy exercise ... but ... people would have to write shell code, transplant it into L.hs somehow, it adds up. 10:08:58 couldn't you still screw upt he chroot forcing lambdabot to reboot? 10:09:04 how do you escape chroot? 10:09:23 (easy if you have a local root exploit to work from, which a determined attacker will have) 10:09:47 vanila: as a non-root user, you're not meant to be able to 10:09:56 chroot would definitely raise the bar 10:10:06 chroots aren't perfect namespaces though, there are other leaks, but 10:10:32 int-e: also, the user lambdabot runs as doesn't have to have access to the password file, or write access to anything but L.hs and other state 10:10:47 well 10:10:52 I guess if you source the password as an rc it does 10:11:04 not that it's uh 10:11:06 a very secure password 10:11:19 I could change it ;-) 10:11:25 (but I see no reason to) 10:18:20 Okay... I can do read-only binds on the VPS. so a chroot is within reach. 10:18:47 -!- jbkcc has quit (Quit: My Mac has gone to sleep. ZZZzzz…). 10:42:34 -!- scoofy has left ("Leaving"). 10:46:49 int-e: note that e.g. getting lambdabot to quit would require being able to kill it 10:46:53 since mueval runs as a separate process, at least 10:58:18 elliott: btw your @quit was accepted in 170 seconds and the threashold is 300. So that seems to be okay. 10:59:21 -!- hjulle has quit (Quit: ZNC - http://znc.in). 10:59:23 I'm bringing lambdabot back with mueval running in an ad-hoch chroot (which can still read more than strictly necessary, but has no write access anywhere important) 10:59:55 -!- hjulle has joined. 11:02:19 -!- shikhin has joined. 11:02:53 -!- lambdabot has joined. 11:09:54 -!- vanila has quit (Quit: Leaving). 11:11:42 elliott: this looks so silly: http://int-e.eu/~bf3/tmp/mounts.txt 11:11:54 haha 11:12:06 am I allowed to unsafePerformIO-steal the password that I already have 11:12:16 sure 11:12:20 too lazy actually 11:12:27 > 123 11:12:28 123 11:12:29 actually 11:12:38 you could bind mount /dev/null over that file 11:12:39 the password is not visible, that's in ~lambda/run 11:12:42 oh, nice 11:12:49 int-e: uh 11:13:01 int-e: is anything stopping you from making a {-# LANGUAGE Trustworthy #-} L.hs 11:13:04 I guess it doesn't matter 11:13:05 since it's unsafe anyway 11:13:11 and also I guess L.hs isn't trusted 11:13:12 they're read-only bind mounts 11:13:16 oh, yeah 11:15:02 (and the UID would be wrong for write access, too) 11:15:24 > 11:15:25 not an expression: ‘’ 11:16:42 -!- nortti has changed nick to lawspeaker. 11:18:45 -!- lawspeaker has changed nick to nortti. 11:19:59 elliott: can you say if I did anything absurdly stupid in http://int-e.eu/~bf3/tmp/chroot.c ? 11:20:15 int-e: I'm no export but you know chroot(1) exists, right? 11:20:25 well, I guess you'd need sudo too 11:20:28 so never mind 11:20:31 *expert either 11:20:35 it looks reasonable though 11:20:44 elliott: I needed something to make setuid root anyway. 11:20:49 int-e: you could use unshare(2) to make a namespace 11:21:05 ooh, or even just seccomp 11:21:14 that's perfect because all it can do is read and write 11:21:25 could even skip the chroot at that point 11:21:29 > oeis [1,3,5] 11:21:30 Not in scope: ‘oeis’ 11:21:38 oh? 11:21:40 those working from @run is a bug anyway :p 11:23:45 of course seccomp stops you exec()ing, so hm 11:23:49 seccomp won't work for me; I can't touch the kernel. 11:23:59 isn't it enabled by default 11:24:05 chrome uses it 11:24:30 who runs chrome on a vps? 11:24:36 well, I mean 11:24:42 it's been in the kernel since 2005 11:24:48 but ok, how do I figure out whether it's supported... 11:24:54 it's used by multiple major applications for security by now 11:25:15 int-e: grep the kconfig in /proc or wherever it is? 11:25:23 I forget the exact filename 11:25:44 oh openssh has support for it, that may motivate an vps provider to enable it 11:26:30 note that exec is *not* one of the syscalls you can do post-seccomp, without seccomp-bpf, so I guess you might have to patch mueval. but it would certainly be a long-term solution, since it's pretty airtight 11:26:30 /proc/config.gz, but that feature is disabled 11:26:30 -!- Phantom_Hoover has joined. 11:27:13 *patch* mueval? that horror needs to be rewritten ... oh time ... oh motivation! 11:31:57 hehe 11:32:01 I just meant patch it to do one syscall :) 11:32:06 you could also use seccomp-bpf and allow exec though 11:32:22 though I don't know if that is safe. 11:33:31 -!- Lilax has quit (Quit: Connection closed for inactivity). 11:34:12 I think I'm satisfied with the relative safety for now. 11:34:25 but thanks for the ideas 11:35:01 "So, a method of finding and patching the system calls at runtime was devised. It uses a disassembler on the executable code, finds each system call and turns it into an RPC to the trusted thread." chrome used to do terrifying things 11:35:49 . o O ( sounds like light-weight valgrind or qemu ) 11:37:57 import qualified Elliott as E 11:38:10 ? 11:38:23 I'm just now reading that export/expert thing. 11:38:27 oh. 11:38:33 because I'm not qualified to answer. 11:38:35 I see, I see. 11:39:52 elliott: really the main reason I wrote that little C program is that scripts cannot be setuid, and I was too lazy to look for an existing wheel. 11:40:26 * elliott nods 11:56:35 * int-e idly wonders how the VPS boots with an empty fstab... 11:58:00 passing root=? 11:58:09 systemd can do partition autodiscovery stuff nowadays but it's probably not that 11:59:08 I think there's no hypervisor, just a container. so all the mounts can be prepared from outside. 11:59:45 (and right, systemd is also magical) 12:00:10 (so perhaps a mounted root partition is enough to get things running) 12:00:30 oh, it's not a real VPS, just a docker thing? okay 12:00:41 that surprises me. that's a relatively new thing 12:00:54 http://openvz.org/Main_Page 12:00:55 I'm not sure I trust containers that much yet... 12:00:59 oh, right 12:01:06 so not docker. 12:01:07 okay, OpenVZ is old but it's really bad I think 12:01:11 at least, tons of stuff doesn't seem to work on it 12:02:31 -!- Phantom_Hoover has quit (Ping timeout: 272 seconds). 12:03:40 I think it's good enough to lambdabot anyway. :P 12:03:44 s/to/for/ 12:05:08 (but yes, the container is leaky. pstree was behaving odd for a while, for example. and the brutal filtering of dmesg is a bit annoying (I tend to look there for clues when things go wrong)) 12:07:17 I think it also doesn't support a bunch of "standard" things like tun/tap and stuff 12:07:17 The main criterion for running lambdabot is that the provider does not noticably overcommit the RAM. And that seems to work okay. 12:07:22 and does weird things with memory accounting 12:07:32 er, OpenVZ is specifically used because you can overcommit a ton :) 12:07:43 I said *provider* 12:07:46 right. 12:08:05 but if they use OpenVZ, it's quite likely to cut costs by letting them oversell RAM. 12:08:32 And I'm sure they do overcommit, because few people actually use all their RAM all the time. 12:08:45 -!- Phantom_Hoover has joined. 12:09:22 yeah 12:09:40 anyway. it works, mostly, and at less than $5 a month I honestly don't expect much more. 12:09:48 who's it with? 12:10:01 ramnode 12:10:11 * elliott nods 12:10:20 you can get like $10/year if you're willing to put up with total crap :) 12:10:46 or $35/forever if you want a completely useless and constantly failing box like esolangs.org and HackEgo run on -_- 12:10:50 yeah but lambdabot needs 200-300 MB when it runs mueval. total crap won't work. 12:11:37 (actually ghc's memory usage is quite crazy.) 12:12:15 I'm tempted to work on that @run-without-reloading-GHC-constantly replacement, except that I don't actually care any more 12:12:22 *replacement plugin, 12:13:20 I can't be bothered; I expect such a server would leak memory, and at that point I begin prefer the current solution, as bad as it is. 12:13:38 -!- Phantom_Hoover has quit (Ping timeout: 246 seconds). 12:13:58 (some "to" missing there)\ 12:14:01 * elliott nods 12:14:05 does ghci leak memory? 12:14:30 "Roilan, from TragicServers, is back with these improved offers exclusively available on LowEndBox." bargain basement VPS providers have worrying names 12:16:34 -!- Tritonio has joined. 12:18:08 -!- Phantom_Hoover has joined. 12:25:19 -!- Phantom_Hoover has quit (Ping timeout: 255 seconds). 12:28:59 The $35/forever was for two gigabytes of RAM. 12:30:16 sounds legit 12:31:38 elliott: I don't have long running ghci sessions. I know that ghc --make leaks heavily. 12:34:17 why does $35/forever sound like a pyramid scheme to me? 12:42:34 -!- Zuu has left. 12:45:16 Could be a good band name 12:48:05 -!- Phantom_Hoover has joined. 12:49:19 int-e: "How can you do this for this price?" "We've already built and own the infrastructure, we don't have the same cost model as our competitors. Our space, power and internet costs are far lower, and we pass the savings on to you." 12:50:08 And sorry, it was $35/forever (or $1/month) for just a half gig, the 2 GB version is $140/forever or $20/month. 12:51:54 well, where do they get the free electricity? 12:52:19 oh well, cost models 12:52:28 Yes, it's all about cost models. 12:52:30 the cost model may include a planned bankruptcy 12:52:58 (and that brings me straight back to the pyramid scheme association) 12:53:09 Very possibly. Or I guess it's just barely possible they've figured enough people are paying the per-month prices to cover operating costs, at least if they cut corners enough. 12:53:49 wait, $20/month for the 2GB version? 12:54:17 Yes. It's $1/month for 512 MB, $10/month for 1 GB, $20/month for 2 GB. 12:54:29 that's ... interesting. 12:54:36 Cost models 12:54:55 to be fair it's an already-established provider that I think has a lot of money to throw around running this 12:54:58 Consider the people who put up their phpbb board and get two hits per month from googlebot, never using $140 of resources for a whole lifetime 12:55:00 but not very sustainable yes 12:55:20 (though I guess they figured that anybody not picking the 512 MB option will actually require a decent amount of memory. unlike all those webservers that run one apache instance) 12:55:33 http://www.fibernetics.ca/ the company 12:55:49 It's also $40/month for 4 GB, $60/month for 6 GB and $80/month for 8 GB. So it's strictly linear in terms of RAM, except for the $1/month that's presumably there for shock value. 12:56:18 tbh, it's probably worth more at $1/month than $35/forever 12:56:26 since you'll probably get sick of how often it goes down before 35 months pass 12:56:26 so you can oversell the 512MB plan much more than the larger ones. 12:57:32 I'm just curious what kind of probably-legal-but-ethically-speaking fraud they're pulling off there. 12:58:38 I think they have a lot of money to burn and figure that most people will buy a $35/forever one just because "how can you not at that price?", and then rarely use it because it's low-end and goes down a lot and comes with ~no support and sucks. 12:58:42 Is there a reasonable way of figuring out when a Debian system was initially installed? E.g. some file timestamps? 12:58:59 fizzie: I think debian-installer leaves a log somewhere 12:59:04 fish around /var/log? 12:59:23 There's /var/log/apt but all files there are weekly cycled, at least on this box. 12:59:25 anyway, their $10/mo and up plans look actually sustainable 12:59:36 Hm, there's an "installer". 12:59:50 since they're broadly comparable to DigitalOcean prices and so on 13:00:01 Every file in /var/log/installer/ is timestamped Oct 5, 2013, which sounds reasonable. 13:00:38 So it's been... maybe 15 months now. 13:01:03 so they're subsidising the super cheap one with existing cash + more expensive monthly plans + below-average operating costs (so more profit from the more expensive ones than other providers) + not bothering with decent support etc. + most people who buy super-cheap dodgy-looking lifetime VPSes won't bother using them enough for the sale to be a loss 13:01:19 also, they obviously got a lot of publicity for this 13:01:34 Which means (assuming current prices match the original) it was a good investment (FSVO), since for the 2GB level, 15 months at $20/month is $300, but the one-time fee is $140. 13:01:39 so I dunno, I could see them running for years if they got lucky 13:02:48 int-e: also consider that anyone who really uses the resources will probably need to upgrade eventually, either to one of their more expensive models (= more $$$ for them), or to another provider (thus meaning it's just a dormant VM they're paying for again) 13:03:04 oh and maybe they're hoping that people who actually need more resources will outgrow their plan... as you just wrote 13:03:27 I like how they have a 50% off sale right now. 13:03:31 is that on the lifetime prices too, I wonder? 13:03:56 oh, crappy vm that I never use for $17.50? that sounds reasonable 13:04:12 I would buy it for that price :) 13:04:34 int-e: oh and also they can always stop offering these lifetime VPSes at any time 13:05:02 so honestly I feel like it could be pretty smart on the whole 13:05:13 still risky, but I'm not convinced they'll go bust super quickly 13:07:03 "Current total: $17.50" 13:07:19
  • about us
  • 13:07:22 ok, but why. 13:08:18 int-e: nice, run lambdabot on that and if anyone trashes it they'll be doing you a favour 13:08:48 haha 13:11:35 okay, let's read the terms and conditions 13:12:05 "Master Services Agreement" is a great name. 13:13:06 The one-off prices are also "LIMITED TIME", at least according to the "step 1" ordering page. 13:13:11 But they've been like that for quite a while now. 13:13:25 -!- GeekDude has joined. 13:13:27 wait, can you translate this into english? "It is the Customer's responsibility to provide, prepare and maintain the Customer's locations, facilities and equipment for the installation of CloudatCost Facilities and for CloudatCost to provide the Services to the Customer. Such provision, preparation and maintenance shall comply with CloudatCost' specifications and shall be at the Customer's expense." 13:14:02 int-e: They'll come into your home and install some equipment and bill you for it. 13:14:33 int-e: Basically, turn your house into one of their datacenters, at your expense. 13:14:48 -!- GeekDude has quit (Remote host closed the connection). 13:15:33 -!- GeekDude has joined. 13:16:05 int-e: you have to keep your house tidy or they won't give you a server 13:16:19 I guess they didn't spend any money on lawyers either. 13:16:20 -!- woe has joined. 13:22:03 Or maybe they did, and that's just one of the traps they set. 13:23:11 It does sound like a clause from a totally different agreement. 13:24:27 "LIMITED TIME" sounds about right 13:25:44 "The Customer shall be liable to CloudatCost for all damages caused to real or tangible personal property, or for bodily injury or death caused by the Customer or an End User." 13:25:58 Sounds like they've had experience with disgruntled customers. 13:29:35 "19.10This Agreement has been drawn up in the English language at the express request of the parties." -- aha. 13:32:12 -!- Tritonio has quit (Remote host closed the connection). 13:33:31 the privacy policy is a copy of http://www.worldline.ca/privacy-policy ... they didn't even bother to change the link. 13:36:25 and that also seems to be the original source for the remaining terms. now worldline is a telco, so all those references to equipment on the customer's location make sense. 13:37:01 ...isn't that fun... 13:41:19 They're connected though. "[...] Less than a year later, Cloud at Cost – a hosting service with a $35 one-time fee and no monthly bill – has raked in $1 million without any marketing, and injected fresh energy into Fibernetics, a Waterloo Region-based telecom provider founded 11 years ago." 13:44:54 -!- boily has joined. 13:45:15 int-e: I see, Worldline is owned by the same company. 13:45:20 oh, you said that 13:45:40 hmm, I wonder about the breakdown of that $1M 13:48:57 "$35 is an easy purchase to get something that you can categorize as a toy, and get on it and play around." 13:49:37 (One of the founders compares the $35 lifetime plan to the Raspberry Pi) 13:51:06 I'm reading http://news.communitech.ca/columns/cloud-at-cost-injects-fibernetics-with-startup-energy/ there are some other interesting points. 13:53:40 -!- Tritonio has joined. 14:02:22 -!- woe has quit (Ping timeout: 245 seconds). 14:13:57 -!- S1 has joined. 14:18:34 -!- woe has joined. 14:24:35 a*a + b*b < 4 gives me, http://i.imgur.com/bJ6tJpr.png and a+b<2 gives me http://i.imgur.com/ZwNH2xO.png, but shouldn't they be the same according to the Pythagorean theorem 14:24:57 what?! 14:25:17 sqrt(a^2 + b^2) does not equal a+b. 14:25:25 Sorry if I said something completely inaccurate 14:25:34 uhh 14:25:47 Shopping is math, let's go hard 14:25:49 I should get more sleep 14:26:30 we don't need to make fun of people for remembering a theorem wrong 14:26:36 that said the second picture looks more interesting. 14:27:05 elliott: of course not. 14:27:07 it looks like a mandelbrot spider in itsweb 14:27:08 *its web 14:27:12 elliott: I remember the theorem fine, I just can't think 14:27:28 it's fine :p 14:27:40 Also, my code for that is here http://ahk.us.to/?p=38307e 14:27:54 autohotkey golf is less fine though 14:28:01 I have my limits 14:28:06 ;) 14:28:12 do you need those spaces 14:28:33 I'm thinking I might be able to remove the space between w%w% and h%h% 14:28:35 I once wrote "(x + y)^2 = x^2 + y^2" in a physics exam. it was far from my proudest moments... 14:28:36 but other than that, yes 14:28:56 boily: Well, if that were true it'd make my code much more fun 14:28:58 boily: freshman's dream 14:29:24 GeekDude: sometimes, it can be! 14:29:32 sometimes 14:29:40 Even a broken clock is right sometimes 14:29:49 boily: ah just work with some field of characteristic 2. but I guess that doesn't happen so often in physics. 14:30:19 GeekDude: twice a day, the saying goes. 14:30:28 Well, what if it's a 24 hour clock? 14:30:30 elliott: wasn't there some other equation called that? something that has an integral somewhere... 14:30:51 int-e: damned reality... 14:31:33 GeekDude: http://www.watchtime.com/watches/images_db/big/109_glycine_3856.jpg :D 14:31:54 (I want one, but it's prohibititatively expensive.) 14:35:15 what am I looking at? 14:36:07 24 hours, and I guess one of those rings can be turned.. 14:36:17 but I don't see the attraction. 14:38:08 there are all those variations: http://www.glycine-watch.ch/e/collection/collection_overview.e.jsp?ID_Group=100000 14:39:11 it's an elegant watch. not a big impossible monster that covers your whole arm. none of those extraneous thingies. just the right amount of information density. 14:39:16 and it has 24 hours! 14:40:31 -!- MDream has changed nick to MDude. 14:42:58 honestly I think the 24 hour thing would only serve to confuse me :) 14:43:18 (though I guess one would get used to it after a while) 14:45:32 -!- MoALTz has quit (Quit: Leaving). 14:52:40 -!- nys has joined. 14:57:21 -!- vanila has joined. 15:00:52 -!- KingOfKarlsruhe has quit (Quit: ZNC - http://znc.in). 15:05:33 -!- KingOfKarlsruhe has joined. 15:06:19 -!- GeekDude has quit (Quit: {{{}}{{{}}{{}}}{{}}} (www.adiirc.com)). 15:18:25 aha, another great potential savings: the VPS defaults to "save mode" - it shuts down itself after 7 days. 15:26:31 (the typo is mine) 15:41:17 -!- booly-yam-9787 has joined. 15:42:32 An IP change when re-imaging. Interesting... 15:45:35 did you buy one of them just to investigate 15:45:57 you're supporting their business model :) 15:46:05 -!- woe has quit (Quit: Beware of programmers who carry screwdrivers.). 15:49:42 -!- booly-yam-9787 has quit (Remote host closed the connection). 15:50:55 elliott: sure did. 15:53:23 -!- SopaXorzTaker has quit (Ping timeout: 256 seconds). 15:59:56 -!- adu has joined. 16:30:13 elliott: I think of it as a Telco-who-sells-toys-as-a-side-business, which is a charming idea ;-) 16:31:28 yeah. unfortunately we rely on one of those toys for our wiki :p 16:38:58 hey 16:39:09 i thought i could get some good lambda terms tto test my program on from BLC 16:39:14 but then I realized they are lazy.... 16:39:25 do yonkow where i can get some free strict lambda terms 16:39:44 where's the fun in that 16:40:01 itsn ot so much fun , but helps me test my compiler works 16:41:30 oh BLC is strict? 16:41:34 that's a little sad 16:41:35 BLC is lazy. 16:41:41 my language is strict 16:41:42 ah 16:41:49 i could use futamura to port cod efrom otherl languages but its a lot of work...... 16:42:40 I can write strict lambda terms for $100/hour <_< 16:42:53 \x.x 16:43:03 icant afford that! 16:43:08 Some people can. 16:43:39 yeah :( 16:44:08 vanila: why don't you take a couple of church numerals, say evaluate (\f x.f (f (f (f x)))) (\f x. f (f (f (f x)))) 16:44:30 oh ys il definitely do a few of those 16:44:55 those are essentially folds and can be evaluated strictly. most of the really interesting code involved fixed points and those are icky in strict lambda calculus. 16:45:17 yeah, the lazyness lets the code be shorter 16:45:55 -!- boily has quit (Quit: NEWTONIAN CHICKEN). 16:49:01 (and some neat blc programs have infinite output) 16:49:20 there is probably an easy lazy->strict conversion? 16:50:13 i think CBN CPS would work 16:50:25 but i dont wnat to introduce more stuff that might have bugs in it 16:51:57 -!- supay has quit (Ping timeout: 272 seconds). 16:52:10 -!- vanila has quit (Remote host closed the connection). 16:52:17 -!- ocharles_ has quit (Ping timeout: 244 seconds). 16:59:26 -!- shikhin_ has joined. 17:02:45 -!- shikhin has quit (Ping timeout: 276 seconds). 17:04:26 -!- shikhin has joined. 17:07:01 -!- shikhin_ has quit (Ping timeout: 255 seconds). 17:07:47 -!- Frooxius has quit (Quit: *bubbles away*). 17:15:11 -!- Frooxius has joined. 17:26:58 wtf, why do I have rpcbind running on that VPS now? 17:27:41 some nfs support apparently. 17:27:44 NFS? 17:28:16 Welcome to Rivendell, Mr. Anderson! 17:28:16 -!- MoALTz has joined. 17:28:27 who wants this sh... stuff? 17:28:32 what, the VPS? 17:28:35 sure 17:28:58 The lambdabot vps? 17:29:18 no, the brand new cheap one 17:29:22 -!- GeekDude has joined. 17:29:29 for sale: baby vps, never worn 17:29:51 Pristine file system 17:30:38 the lambdabot vps only listens to port 22 from outside (and so, now, does the cheap one) 17:38:52 -!- adu has quit (Quit: adu). 17:41:04 helpful. "Jan 17 12:38:54 cheap mpt-statusd: detected non-optimal RAID status" ["cheap" is the hostname] 17:41:47 "non-optimal", nice euphemism 17:42:13 what it means, apparently, is "open /dev/mptctl: No such file or directory" 17:42:38 I doubt there's much optimal about any of it 17:42:56 I'm not sure what this is doing at all on a VPS. 17:47:50 -!- JesseH has changed nick to NotJesseH. 17:47:53 and look at all these kernel modules ... sound... I guess that's important! 17:48:10 maybe you can make noise in their data centre with it 17:48:25 -!- NotJesseH has changed nick to JesseH. 17:48:35 and a drm module 17:48:50 It is amazing how many songs it is possible to sing to the tune of House of the Rising Sun 17:49:23 -!- ocharles_ has joined. 17:52:41 int-e: I think drm here means drm rather than drm 17:52:56 direct rendering mode, of course 17:53:01 important in a headless server 17:53:03 indeed 17:53:29 digital remodelling? 17:53:40 is it running a display manager too, for that all-important graphical login? 17:54:18 Taneb, Just played house of the rising sun instrumental along with a tupac acapella and it worked sort of 17:54:24 no, just dome gettys. (I actually have some vnc-like interface where I get to see the text console, even during boot. 17:54:27 ) 17:54:33 (they're using some vmware thingy) 17:54:42 JesseH, Drop It Like It's Hot works, and 99 Red Balloons aaalmost does 17:54:55 -!- Tritonio has quit (Remote host closed the connection). 17:55:32 Taneb, Try playing it along with a science lecture 17:55:45 I might write a lang that does just this 18:03:46 -!- ^v^v has quit (Read error: Connection reset by peer). 18:04:09 -!- ^v^v has joined. 18:10:36 -!- supay has joined. 18:15:22 wait what 18:24:48 -!- oerjan has joined. 18:26:21 [wiki] [[ComeFrom2]] http://esolangs.org/w/index.php?diff=41693&oldid=41688 * DDR * (+679) Added pedigree, tags. 18:27:16 [wiki] [[ComeFrom2]] M http://esolangs.org/w/index.php?diff=41694&oldid=41693 * DDR * (+6) Found out where an uncommented line of text went. Commented it out. 18:27:24 -!- augur has quit (Remote host closed the connection). 18:28:06 -!- augur has joined. 18:32:28 -!- augur has quit (Ping timeout: 245 seconds). 18:34:02 b_jonas, to me? 18:37:01 JesseH: no, it was unrelated 18:37:05 ok 18:37:13 Poo, was hoping you were interested 18:47:58 -!- oerjan has quit (Quit: leaving). 18:50:43 [wiki] [[ComeFrom2]] http://esolangs.org/w/index.php?diff=41695&oldid=41694 * DDR * (+1642) Annotated counting to 10. 18:53:31 Wait, the bot shows wiki updates? 18:53:40 yes 18:53:46 This would have been useful (one sec) 18:54:17 a year ago 18:56:42 It didn't do that a year ago. 18:56:49 It's a relatively new feature. 18:57:05 it was probably added because somebody thought it'd be useful 18:57:13 just a guess. 18:57:23 int-e: I think it was added because MediaWiki supported it. 18:57:43 You know, the kind of climbing-Everest style justification of "because it was there". 18:58:03 that's also a possibility 18:58:10 it could be a combination of both! 18:58:36 One further contributing factor was that the wiki moved to be on the same system as the bot. 18:58:44 Even though that's not strictly speaking a requirement for it. 18:58:56 (The updates are sent over UDP.) 18:59:09 oh wait, you'd have insider knowledge about that 19:17:59 -!- augur has joined. 19:23:41 -!- Phantom_Hoover has quit (Ping timeout: 252 seconds). 19:40:31 -!- S1 has quit (Quit: S1). 20:07:24 -!- augur has quit (Remote host closed the connection). 20:07:40 -!- adu has joined. 20:13:12 -!- augur has joined. 20:39:17 -!- augur has quit (Remote host closed the connection). 20:44:56 int-e: So what's the situation with lambdabot? 20:45:05 You put it in a chroot? 20:48:00 mueval is chrooted 20:48:09 I'm not so worried about lambdabot itself 20:48:46 And there are enough extensions for the bug? 20:48:56 If so you should turn DataKinds back on at one point. 20:50:45 -!- chaosagent has joined. 21:01:29 -!- adu has quit (Quit: adu). 21:05:50 -!- Patashu has joined. 21:09:21 -!- Patashu_ has joined. 21:09:21 -!- Patashu has quit (Disconnected by services). 21:12:56 I have had quite an enjoyable chinese talkaway 21:21:44 -!- TieSoul has changed nick to tIEsLEEP. 21:22:51 -!- FreeFull has quit (Ping timeout: 264 seconds). 21:23:18 :t Refl 21:23:18 a1 :~: a1 21:37:10 -!- jbkcc has joined. 21:43:37 Is it written in an esolang? 21:44:06 * JesseH looking for general purpose esolang 21:45:19 Wonder if any good ones are available. 21:45:36 (good being pretty vague) 21:46:55 Preferably one with batteries included, so to speak. 21:47:33 maybe look at the golfscript family? I dunno. 21:49:01 your requirements may be self-contradictory; included batteries usually indicate some sort of success, and that means the language fails to be esoteric. 21:49:33 agreed 21:50:04 I think a language can be esoteric and still be able to do things. 21:50:09 JesseH: if you just want an esoteric _core_ but with a non-esoteric easy to use interface over it, just go with x86_64 and C++. 21:50:38 if you want something exotic, try some scheme or smalltalk thingy maybe? or, I dunno 21:50:42 Easy to use? I don't remember typing that. 21:51:21 But hey, I expected these answers :) 21:51:28 I'm just not sure what youw ant then 21:52:14 do you just want an esolang that lets you call into existing libraries, including ones written in non-eso langs? 21:52:25 (like haskell or something) 21:53:07 Perhaps, or ones just written in that language, but yeah some higher level things just in an esoteric way 21:53:35 how about J then? 21:54:23 perhaps 21:54:35 shachaf: as you've probably seen, oerjan figured out that just TypeFamilies + DeriveDataTypeable and StandaloneDeriving or AutoDeriveTypeable + RankNTypes (to get rid of typeable constraints) suffices for exploiting that bug. I have not yet managed to do it without type families, though it looks like it should be possible to exploit fundeps instead. 21:55:25 -!- lambdabot has quit (Quit: (brb with DataKinds)). 21:55:43 Maybe I am being self contradictory 21:55:49 Undecided 21:56:03 Testing the boundaries 21:58:46 I think the asm suggestion was valid 21:59:07 I need a stricter definition of esoteric. 21:59:46 -!- lambdabot has joined. 22:00:50 What would you consider "batteries"? 22:01:03 -!- Patashu has joined. 22:02:04 If you just want graphics and sound interface for an esolang, there's IBNIZ and ByteByteJump. 22:04:04 Oh wait, BytePusher is the version with graphics. 22:04:38 -!- Patashu_ has quit (Ping timeout: 264 seconds). 22:04:44 -!- GeekDude has quit (Quit: {{{}}{{{}}{{}}}{{}}} (www.adiirc.com)). 22:04:57 int-e: Yes, I was part of that outfiguring. 22:05:07 int-e: You don't even need DeriveDataTypeable, do you? 22:05:31 oerjan's latest thing just turned on TypeFamilies. 22:06:00 int-e: By the way, if you switch from TypeFamilies to some other extensions providing similar power, you won't get KindSignatures turning on automatically. 22:06:43 -!- b_jonas has quit (Ping timeout: 272 seconds). 22:07:42 shachaf: right, he did. 22:08:06 It might be possible to have GHC infer the kinds, though. 22:14:23 -!- myname has quit (Ping timeout: 240 seconds). 22:14:29 -!- myname has joined. 22:14:45 -!- FreeFull has joined. 22:14:49 -!- FreeFull has quit (Changing host). 22:14:49 -!- FreeFull has joined. 22:16:50 MDude, sockets, split, and other things 22:17:25 could just add those things to my own lang 22:18:47 -!- b_jonas has joined. 22:21:22 -!- tIEsLEEP has changed nick to TieSoul. 22:32:12 -!- augur has joined. 22:33:14 -!- Tritonio has joined. 22:35:42 -!- GeekDude has joined. 22:39:39 -!- b_jonas has quit (Ping timeout: 272 seconds). 22:45:17 -!- Lilax has joined. 22:46:03 is lambdabot fixed 22:46:17 > pizza 22:46:18 Not in scope: ‘pizza’ 22:46:53 * APic ordered Pizza Frutti de Mare with Pineapple and Anchovies. 22:46:57 Sorry for OT 22:51:29 -!- b_jonas has joined. 22:51:43 > 1 22:51:44 1 22:52:14 > 1 ( 1 ) 22:52:16 Could not deduce (GHC.Num.Num (a0 -> t)) 22:52:16 arising from the ambiguity check for ‘e_111’ 22:52:16 from the context (GHC.Num.Num (a -> t), GHC.Num.Num a) 22:52:51 > 1^2(7+7)\frac{dy}{dx}(7*8b^2) 22:52:52 :1:9: parse error on input ‘\’ 22:53:01 oh 22:53:18 touchè 22:59:04 -!- S1 has joined. 23:01:22 > < 23:01:23 :1:1: parse error on input ‘<’ 23:03:29 -!- shikhin_ has joined. 23:06:29 -!- shikhin has quit (Ping timeout: 245 seconds). 23:24:14 -!- jbkcc has quit (Quit: My Mac has gone to sleep. ZZZzzz…). 23:25:09 Do you have any .XI instruments? I want to make AmigaMML in #EXTENDED mode to accept .XI instruments (in addition to what it already accepts). 23:36:51 -!- oerjan has joined. 23:37:26 Do you know these things? 23:37:57 i'm trying to remember whether kiarchive or waveworld had any .XI files 23:38:13 >help 23:38:20 lambdabot: pls 23:38:26 milkytracker can readily fabricate them if you need them 23:40:59 Lilax: i think you want @help . > (which needs a space after) is only for evaluating haskell expressions. 23:41:25 @help 23:41:25 help . Ask for help for . Try 'list' for all commands 23:42:14 int-e: hey a suggestion: @help should show the prefixes, and > help could be defined to do the same thing 23:42:56 > help 23:42:58 Not in scope: ‘help’ 23:44:41 @tell int-e it might help newbies if @help showed lambdabot's prefixes, and help could be defined so > help does the same thing 23:44:41 Consider it noted. 23:46:22 -!- hjulle has quit (Ping timeout: 240 seconds). 23:51:31 -!- Patashu has quit (Disconnected by services). 23:51:31 -!- Patashu_ has joined. 23:52:03 -!- GeekDude has changed nick to GeekCraft. 23:55:18 thanks Mr. oerjan 23:55:24 zzo38, kiarchive has .XI instruments: http://modarchive.org/?faq-torrents-current 23:56:51 -!- hjulle has joined. 23:58:01 But do they have just some ZIP archives with a few files? I don't need all of them.