←2011-11-11 2011-11-12 2011-11-13→ ↑2011 ↑all
00:02:09 <shachaf> elliott: I still don't understand what the issue is.
00:02:12 <shachaf> What are you actually doing?
00:02:21 <oerjan> elliott: traverse, i said!
00:02:30 <elliott> :t traverse
00:02:31 <lambdabot> Not in scope: `traverse'
00:02:38 <shachaf> @ty Data.Traversable.traverse
00:02:39 <lambdabot> forall a (f :: * -> *) b (t :: * -> *). (Data.Traversable.Traversable t, Applicative f) => (a -> f b) -> t a -> f (t b)
00:02:39 * oerjan facepalm
00:02:43 <elliott> shachaf: Shhh, we don't do X-Y problems around these parts.
00:02:54 <Gregor> elliott: (a) MEH MEH MEH (b) However you want to, just write the program and I can arrange for it to run ...
00:03:09 <elliott> shachaf: A partial explanation is available if you want one :P
00:03:15 <elliott> Gregor: (b) But I want to give you a working patch :P
00:03:35 <shachaf> elliott: I don't understand what your chromosomes have to do with it.
00:03:56 <elliott> http://www.perlmonks.org/?node_id=542341
00:04:27 <shachaf> elliott: This would be easy if you were doing it in Haskell.
00:04:35 <elliott> oerjan: what I really need is foldA >:(
00:04:40 * shachaf isn't sure what "this" is, but that sentence seemed like a good one to say.
00:04:42 <elliott> shachaf: What do you... think I'm... doing...
00:04:55 <shachaf> Wait, weren't you using bash?
00:04:57 <oerjan> :t foldM
00:04:58 <lambdabot> forall a b (m :: * -> *). (Monad m) => (a -> b -> m a) -> a -> [b] -> m a
00:05:14 <oerjan> @hoogle foldA
00:05:14 <lambdabot> Data.Foldable module Data.Foldable
00:05:15 <lambdabot> Data.Foldable class Foldable t
00:05:15 <lambdabot> Control.Seq seqFoldable :: Foldable t => Strategy a -> Strategy (t a)
00:05:20 <oerjan> gah
00:05:23 <elliott> shachaf: Gregor is trying to force me to use bash and/or a non-bash non-Haskell language to do this, but if it's non-bash I have to rewrite it myself, which will make me want to rewrite it in Haskell.
00:05:32 <shachaf> elliott: The counterpart of the XY problem is the XW problem.
00:05:33 <Gregor> OK, I have 11 repos on bitbucket.
00:05:35 <Gregor> Feels about right.
00:05:39 <shachaf> Often that one is even more annoying.
00:05:42 -!- pumpkin has joined.
00:05:53 <oerjan> elliott: foldA doesn't exist, i think
00:06:11 <oerjan> that foldM type is intrinsically monadic
00:06:48 <oerjan> an arrow might work...
00:08:06 -!- copumpkin has quit (Ping timeout: 260 seconds).
00:08:27 <oerjan> :t \f x l -> foldr (>>>) id (map (flip f) l)
00:08:28 <lambdabot> forall t c a. (c -> a -> c) -> t -> [a] -> c -> c
00:08:30 <elliott> oh yeah monqy you need
00:08:32 * Phantom_Hoover → sleep
00:08:32 <elliott> the bad news
00:08:34 <elliott> along those lines
00:08:36 <oerjan> oops
00:08:37 -!- Phantom_Hoover has quit (Quit: Leaving).
00:08:47 <oerjan> :t \f x l -> foldr (>>>) pure (map (flip f) l)
00:08:48 <lambdabot> forall t a (f :: * -> *) a1. (Applicative f) => (a -> a1 -> a) -> t -> [a1] -> a -> f a
00:08:52 <oerjan> argh
00:09:01 <oerjan> :t \f x l -> foldr (>>>) (arr id) (map (flip f) l)
00:09:02 <lambdabot> forall t (cat :: * -> * -> *) a a1. (Arrow cat, Functor (cat a)) => cat a (a1 -> a) -> t -> [a1] -> cat a a
00:09:20 <oerjan> wtf
00:09:29 <oerjan> :t \f x l -> foldr (>>>) (arr id) (map (Prelude.flip f) l)
00:09:30 <lambdabot> forall t a a1. (a -> a1 -> a) -> t -> [a1] -> a -> a
00:09:40 <oerjan> eek
00:09:47 <oerjan> oh duh
00:10:08 <oerjan> :t \f x l -> foldr (>>>) (arr id) (map f l)
00:10:09 <lambdabot> forall t (cat :: * -> * -> *) a a1. (Arrow cat) => (a1 -> cat a a) -> t -> [a1] -> cat a a
00:10:33 <oerjan> f needs to come preflipped to be useful with arrows
00:11:04 <oerjan> oh hm x is never used :P
00:11:19 <oerjan> well, i still think that's the closest in spirit
00:11:46 <oerjan> :t under Kleisli
00:11:46 <elliott> No instance for (Complete Foo (x0 :++: (x1 :++: (C :- fields0))))
00:11:47 <lambdabot> forall a (m :: * -> *) b n' o'. (Newtype (Kleisli m a b) (a -> m b), Newtype n' o') => (Kleisli m a b -> n') -> (a -> m b) -> o'
00:12:21 <oerjan> :t op
00:12:21 <lambdabot> forall o n. (Newtype n o) => (o -> n) -> n -> o
00:12:36 <oerjan> hm what was that thing
00:12:46 <oerjan> :t as
00:12:47 <lambdabot> Not in scope: `as'
00:14:29 -!- Phantom_Hoover has joined.
00:14:41 <oerjan> :t ala
00:14:42 <lambdabot> forall o n b n' o'. (Newtype n o, Newtype n' o') => (o -> n) -> ((o -> n) -> b -> n') -> b -> o'
00:14:52 <Phantom_Hoover> OK I wasn't really asleep; did Sgeo|web malfunction and fail to notify of a Homestuck update?
00:15:11 <zzo38> Is there types in Haskell that only have numbers 0 up to 1?
00:17:13 * Phantom_Hoover → probably actual sleep?
00:17:14 -!- Phantom_Hoover has quit (Client Quit).
00:18:58 -!- Jafet has joined.
00:23:36 <elliott> zzo38: Bool
00:29:45 <elliott> http://hackage.haskell.org/packages/archive/base/latest/doc/html/Prelude.html#v:until
00:29:51 <elliott> oerjan: huh, is that new?
00:30:00 <zzo38> elliott: Actually I wasn't very clear. I mean that it can store fractions too, so there is infinite number of possible values
00:30:10 <oerjan> :t until
00:30:11 <lambdabot> forall a. (a -> Bool) -> (a -> a) -> a -> a
00:30:13 <elliott> zzo38: oh. Double :p
00:30:17 <oerjan> no, that's old
00:30:21 <elliott> just treat minBound = 0, maxBound = 1
00:30:28 <elliott> oerjan: well ok at least 6.12 old :P
00:31:05 <shachaf> zzo38: Fractions? You don't want to be able to store arbitrary real numbers?
00:31:27 <oerjan> elliott: it's in h98
00:31:46 <elliott> oh, ok
00:32:08 <shachaf> Did you know Haskell 1.2 had "import Foo renaming (blah to blam)"?
00:32:24 <elliott> Cool.
00:32:32 <shachaf> Of course, they didn't have qualified imports.
00:32:37 <elliott> Uncool.
00:32:41 <zzo38> shachaf: Well, fractions, or arbitrary real numbers, but bounded
00:32:42 <shachaf> Or do notation.
00:32:44 <elliott> I forget, is OverlappingInstances one of those things that You Should Never Use?
00:32:47 <elliott> Like IncoherentInstances.
00:33:05 <Jafet> You should never use them, yeah. Only I get to use them.
00:33:05 <shachaf> elliott: If you don't know, the answer is probably Yes.
00:33:12 <CakeProphet> I think Overlapping is acceptable in some situations.
00:33:21 <elliott> shachaf: I do know, I just forgot.
00:33:21 <CakeProphet> based on Credible Sources
00:33:27 <CakeProphet> that I Don't Remember The Source Of
00:33:28 <elliott> shachaf: I'm definitely doing Perverse Type Hackery.
00:33:41 <Sgeo|web> IncoherentInstances?
00:33:54 <oerjan> clearly elliott should use overlappinginstances to dig himself in further
00:34:12 <elliott> oerjan: I can avoid them, it'd just involve another Equ
00:34:16 <elliott> class ElemA xs
00:34:16 <elliott> instance ElemA (A :- xs)
00:34:16 <elliott> instance (ElemA xs) => ElemA (x :- xs)
00:34:17 <elliott> is the usecase
00:36:32 <oerjan> mhm
00:37:42 <pikhq> It's a real shame that simplification of Chinese characters hasn't focused on making characters have a clear pairing of semantic and phonetic components (and thus easier to learn), but instead on reducing the number of strokes in a certain list of characters.
00:37:51 <pikhq> 鬱 Consider that.
00:38:44 <pikhq> That is really obnoxious to learn, in large part because there's no real way of grasping it as having a simple, clear structure.
00:38:50 <Sgeo|web> So incoherentinstances removes a sanity check that overlappinginstances provides?
00:39:02 -!- augur has quit (Remote host closed the connection).
00:39:19 <pikhq> The phonetic component of it is, apparently, 𩰪(probably not available in your font).
00:39:34 <pikhq> That's just fucking evil.
00:39:40 <pikhq> http://glyphwiki.org/wiki/u29c2a
00:41:39 -!- Jafet1 has joined.
00:41:49 <elliott> :t \x -> foldr (<*>) (pure x)
00:41:50 <lambdabot> forall (f :: * -> *) b. (Applicative f) => b -> [f (b -> b)] -> f b
00:41:53 -!- Madoka-Kaname has quit (Ping timeout: 258 seconds).
00:41:58 <elliott> @hoogle a -> [f (a -> a)] -> f a
00:41:59 <lambdabot> Control.Applicative (<**>) :: Applicative f => f a -> f (a -> b) -> f b
00:41:59 <lambdabot> Control.Applicative (<*>) :: Applicative f => f (a -> b) -> f a -> f b
00:41:59 <lambdabot> Control.Monad ap :: Monad m => m (a -> b) -> m a -> m b
00:42:01 <elliott> oerjan: :(
00:42:18 -!- Madoka-Kaname has joined.
00:42:18 -!- Madoka-Kaname has quit (Changing host).
00:42:18 -!- Madoka-Kaname has joined.
00:43:22 -!- Jafet has quit (Ping timeout: 244 seconds).
00:44:40 <Jafet1> http://glyphwiki.org/wiki/u2387d
00:44:48 <Jafet1> Someone's missing the forest for the trees
00:45:41 -!- Jafet1 has changed nick to Jafet.
00:45:48 <elliott> :-/ turning
00:45:52 <elliott> class Foo a b | b -> a
00:45:52 <elliott> into
00:46:00 <elliott> class Foo b where type A b
00:46:04 <elliott> is turning my instances into undecidable ones
00:46:11 <pikhq> Some bastard must have thought they were "smart" repeating the 木林森 pattern.
00:46:13 * elliott cries.
00:47:15 <Jafet> You've decided... decided...
00:48:40 <elliott> monqy: anyway it is less horrific now???
00:48:59 <monqy> hi
00:49:00 <monqy> im back from
00:49:04 <monqy> not being here
00:49:06 <monqy> what happeneD??
00:49:57 <elliott> Functional dependencies conflict between instance declarations:
00:49:58 <elliott> instance [overlap ok] (ElemA xs, ElemB xs, ElemC xs) =>
00:49:58 <elliott> Complete Foo xs
00:49:58 <elliott> -- Defined at /home/elliott/Code/form-test/form-test.hs:68:10-58
00:49:58 <elliott> instance [overlap ok] Complete Bar Nil
00:49:58 <elliott> -- Defined at /home/elliott/Code/form-test/form-test.hs:73:10-25
00:50:00 <monqy> (i think i left soon before 15:47:57 < elliott> monqy: oh no i ju st realised something)
00:50:00 <elliott> oh NOooooooooo
00:50:04 <monqy> oh no
00:50:32 <elliott> ohhh i get it
00:50:38 <elliott> my fundep is wrnog
00:51:06 <elliott> anyway!!!
00:51:17 <elliott> *Main> :t (=:)
00:51:17 <elliott> (=:)
00:51:17 <elliott> :: (Field field, Applicative f) =>
00:51:17 <elliott> field
00:51:17 <elliott> -> f (FieldType field)
00:51:18 <elliott> -> Assign f (FieldRecord field) (field :- Nil)
00:51:19 <elliott> *Main> :t (<>)
00:51:21 <elliott> (<>)
00:51:23 <elliott> :: Applicative f =>
00:51:25 <elliott> Assign f t xs -> Assign f t ys -> Assign f t (xs :++: ys)
00:51:27 <elliott> *Main> :t run
00:51:29 <elliott> run
00:51:31 <elliott> :: (Complete t fields, Applicative f) => Assign f t fields -> f t
00:51:33 <elliott> monqy: behlod
00:51:37 <monqy> beholdieng
00:51:54 <elliott> exmample:
00:51:56 <elliott> test :: IO Foo
00:51:56 <elliott> test =
00:51:56 <elliott> run $ A =: getLine
00:51:56 <elliott> <> B =: return 42
00:51:56 <elliott> <> C =: return pi
00:52:15 -!- oerjan has quit (Quit: Good night).
00:52:35 <elliott> monqy: ANYWAY so the good part of the Bad Realisation is that I think there is a way to do the proper interleaving of effects with nested records like I said and the like
00:52:41 <elliott> monqy: the bad part is that.... its arowes
00:52:49 <monqy> oops
00:53:06 <monqy> is there any
00:53:07 <monqy> other
00:53:08 <monqy> way
00:53:18 <elliott> im dont onknow. unfrtuoatenyl.
00:54:35 <monqy> hm
00:54:39 <monqy> how would the arrowes
00:54:40 <monqy> look
00:54:47 <monqy> if it's pretty, is there problems??
00:54:55 <monqy> asside from arrows being...arrows
00:55:15 <elliott> anynway!!!!
00:55:19 <elliott> monqy: http://sprunge.us/SSSU
00:55:22 <elliott> behlod. simpler.
00:55:23 <monqy> sssu
00:55:39 <elliott> bits between -- are autogenerated apart from the Foo declaration itself of course
00:55:50 <elliott> or rather, would be autogenerated.
00:57:19 <monqy> how would the names of A B C be genreateD? similarly to the lenses schemes?
00:58:05 <elliott> from the foo record
00:58:14 <elliott> it'd actually be FooA/FooB/FooC
00:58:16 <elliott> but i am: lazy
00:58:32 <elliott> the problems here are basically (a) doesn't interoperate with lenses???? and (b) no interlevying
00:59:37 <monqy> yeeah what if the initial character has no uppercase lettery version most notablye _ as in the lensy names which is what (a) might mean??
01:01:06 -!- derdon has quit (Remote host closed the connection).
01:02:42 <elliott> monqy: oh then it just fails or mangles i guess...... (a) mostly means that it's implementing its own stuff which is PRETETETY DARNE CLOSE TO LSENSES!
01:03:15 <elliott> im clod.
01:03:16 <monqy> lense btu diferent
01:04:06 <elliott> while trying to improve this:
01:04:07 <elliott> Couldn't match type `No' with `Yes'
01:04:07 <elliott> In the expression: run
01:04:07 <elliott> In the expression: run $ A =: getLine <> C =: return pi
01:04:07 <elliott> In an equation for `test':
01:04:08 <elliott> test = run $ A =: getLine <> C =: return pi
01:04:13 <elliott> sure have made the messages useful!!!
01:04:59 <monqy> you did something wrong but i wont say what it is........... - ghc
01:05:10 <monqy> its a secret - ghc
01:06:00 -!- augur has joined.
01:08:23 -!- augur has quit (Remote host closed the connection).
01:10:10 <elliott> monqy: it should just say
01:10:15 <elliott> <file>:<line>:<col>: wrong
01:10:25 <elliott> or better
01:10:27 <elliott> $ ghc badprogram.hs
01:10:28 <elliott> no
01:10:28 <elliott> $
01:11:48 <monqy> good ghc
01:13:37 <CakeProphet> elliott: it clearly says there's a type error in the expression "run"
01:13:41 <CakeProphet> where's the confusion?
01:13:55 <elliott> are you being serious?
01:14:10 <CakeProphet> sure.
01:14:24 <elliott> CakeProphet: lol.
01:14:26 <elliott> I AM SO FUCKING COLD
01:14:38 <CakeProphet> like seriously there's only one place it's wrong.
01:14:50 <elliott> CakeProphet: fun fact: the error isn't in run there
01:15:09 <CakeProphet> SURELY IT IS. GHC WOULD NEVER LIE.
01:15:34 <CakeProphet> in any case, is in the error in some sort of insane type hackery?
01:16:33 <monqy> what else
01:16:53 <CakeProphet> then... that's why the error message isn't helpful. :P
01:18:09 <CakeProphet> unrelatedly, there are some insanely cheap deals on audio stuff right now.
01:18:22 <monqy> wowza, audio stuff
01:19:57 <CakeProphet> 300 watt 12" sub with built-in amp for $170
01:24:31 -!- Sgeo|web has quit (Ping timeout: 265 seconds).
01:24:35 <shachaf> ghc goodprogram.c
01:26:56 <elliott> ghc is actually a C compiler too, you know.
01:27:29 <elliott> [elliott@dinky Temp]$ echo 'int main(){return 42;}' >foo.c
01:27:30 <elliott> [elliott@dinky Temp]$ ghc --make foo.c
01:27:30 <elliott> [elliott@dinky Temp]$ ./a.out
01:27:30 <elliott> [elliott@dinky Temp]$ echo $?
01:27:30 <elliott> 42
01:28:46 <CakeProphet> elliott: dinky is a stupid name.
01:28:56 <elliott> Counterpoint: You're stupid.
01:30:47 <elliott> :t liftA2 (.)
01:30:48 <lambdabot> forall a b (f :: * -> *) (f1 :: * -> *). (Functor f, Applicative f1) => f1 (a -> b) -> f1 (f a) -> f1 (f b)
01:30:57 <elliott> CAAAAAAALE
01:30:59 <elliott> :t liftA2 (P..)
01:30:59 <lambdabot> Couldn't find qualified module.
01:31:00 <elliott> :t liftA2 (Prelude..)
01:31:01 <lambdabot> forall b c a (f :: * -> *). (Applicative f) => f (b -> c) -> f (a -> b) -> f (a -> c)
01:31:16 <elliott> That should have a name.
01:31:24 <elliott> @hoogle f (b -> c) -> f (a -> b) -> f (a -> c)
01:31:24 <lambdabot> Data.Generics.Schemes everywhereBut :: GenericQ Bool -> GenericT -> GenericT
01:35:07 <CakeProphet> "According to a biannual Security Intelligence Report from Microsoft, AutoRun—the feature in Windows that automatically executes files when you plug in a USB or connect to a network—accounts for almost half of all malware infections."
01:35:12 <CakeProphet> shocking revelation.
01:35:51 <zzo38> I made up a BoundFrac type which can be used with any type and then it makes it error if the result is not in range
01:36:02 -!- augur has joined.
01:49:41 -!- augur has quit (Remote host closed the connection).
01:50:07 <elliott> Gregor: Sooo, where would I actually modify to get a background process in HackBot?
01:50:13 <elliott> Do I have to track down and modify the multibot source itself?
01:54:53 <elliott> Gregor: Also, more importantly: In tr_60.cmd, where's some scratch space I can use for temporary files?
01:54:59 <elliott> (I need to share them amongst invocations of tr_60.cmd.)
01:57:38 <CakeProphet> http://tinyurl.com/72p9aoj $250 off a set of 5.1 surround speakers
01:57:40 <CakeProphet> so. tempting.
02:09:26 <elliott> Hmph, Gregor should have anticipated all my questions and answered them before I asked them
02:09:34 <elliott> I even have another one now!
02:11:36 <Vorpal> elliott, btw are you planning to play Skyrim at some point?
02:11:47 <elliott> Maybe. I asked you whether it sucked or not.
02:12:00 <Vorpal> elliott, well it seems 1.1 fixed the worst bugs
02:12:04 <Vorpal> that I ran into
02:12:08 <monqy> all i know about skyrim is you can put barrels over people's heads
02:12:22 <Vorpal> monqy, I wasn't aware of that
02:12:22 <monqy> ooh and there was some fixed bug where mammoths had trouble staying on the ground
02:12:35 <Vorpal> I guess you can due to it having a physics engine
02:12:48 <elliott> Vorpal: I wasn't asking about the bugs.
02:12:52 <Vorpal> I mean, one general enough to handle stuff in barrels in general
02:13:10 <Jafet> It's not a Bethesda game if it doesn't have mammoth bugs
02:13:33 <monqy> I think there was some video that demonstrated if you put barrels over everyone's heads you can steal things but if you take the barrels off people get angry when you steal
02:13:39 <Vorpal> elliott, well apart from the bugs there is one thing that annoy me. The HUD / menus design is too modern, both when it comes to the typeface and the icons used.
02:14:10 -!- sebbu3 has joined.
02:14:11 -!- sebbu3 has quit (Changing host).
02:14:11 -!- sebbu3 has joined.
02:14:18 <monqy> what does too modern mean? as in it clashes with the pasty feel of the rest of the game?
02:14:45 <Vorpal> elliott, other than that I would say that if you enjoyed Oblivion you will enjoy this one. There are some gameplay changes. Most (but not all) that I would consider improvements. Of course, that last point is rather subjective.
02:15:58 <elliott> Vorpal: I haven't played Oblivion :P
02:15:58 <Vorpal> monqy, as in, it doesn't really fit in with the medieval feel of the actual game. The font is a sans-serif for example. I don't think it is helvetica, but it would fit in just as poorly if it was.
02:16:25 <elliott> Other Skyrim anachronisms: It's played on a computer.
02:16:33 <elliott> Gregor: Also, $IRC_SOCK is an absolute path, right?
02:17:12 <Vorpal> elliott, well, then it comes down to if you enjoy massive open world RPGs. Unlike oblivion, where you start out with fast travel to the big cities (and have to discover the rest of the fast travel locations by exploring), you can't fast travel anywhere in Skyrim until you explore to there.
02:17:24 <Vorpal> so... lots of walking involved to begin with
02:17:37 -!- sebbu2 has quit (Ping timeout: 252 seconds).
02:18:05 <elliott> What's the variable for "number of arguments received" in bash again
02:18:24 <Jafet> Does each major city still contain less than a hundred inhabitants?
02:18:38 <Vorpal> <elliott> Other Skyrim anachronisms: It's played on a computer. <-- very funny. Oblivion used a type face that had an medieval feeling, while still not being as unreadable as "Olde English" style fonts.
02:19:01 <Vorpal> elliott, oh and the menu system was clearly designed with a gamepad in mind.
02:19:13 <Vorpal> it works with mouse and keyboard, sure
02:19:19 <Gregor> <elliott> Gregor: Also, $IRC_SOCK is an absolute path, right? // y es
02:19:20 <Vorpal> but still, not optimal perhaps
02:19:32 <elliott> Gregor: Y es?
02:20:48 <Vorpal> elliott, of course, the actual navigation in the menu system of oblivion was truly hideous. That bit is much better in Skyrim. It is just that the graphical design of said menu system was /way/ better in Oblivion.
02:21:13 <Jafet> It's part of a big conspiracy to make you buy an xbox
02:21:29 <Vorpal> Jafet, what, and get worse graphics?
02:21:56 <elliott> Gregor: <elliott> Gregor: Sooo, where would I actually modify to get a background process in HackBot? <elliott> Do I have to track down and modify the multibot source itself? <elliott> Gregor: Also, more importantly: In tr_60.cmd, where's some scratch space I can use for temporary files?
02:22:00 <elliott> Those are all the questions... I think :P
02:22:37 <Gregor> 1) I will have to do something to make it run a background process externally. The script that spawns multibot is not part of the repo.
02:22:52 <Gregor> 2) No. Modifying multibot for this makes no sense.
02:22:54 <Vorpal> Jafet, oh yeah, that is another issue. Skyrim was designed with consoles in mind when it came to the graphics too. I played Witcher 2 as well, which was designed with PC in mind only (and only later was it decided to port it to consoles). Witcher 2 had *much* better graphics than Skyrim has.
02:23:00 <Gregor> 3) /tmp
02:23:12 <elliott> Gregor: <elliott> (I need to share them amongst invocations of tr_60.cmd.)
02:23:22 -!- pumpkin has quit (Quit: Computer has gone to sleep.).
02:23:31 <elliott> Unless you mean like /tmp/hackbot.hope-you-never-want-to-run-more-than-one-hackbot-at-once
02:23:33 <Gregor> elliott: Do you mean within the execution of a guest program, or just in tr_60.cmd itself?
02:23:38 <elliott> Latter.
02:23:40 <elliott> It's for storing transaction info.
02:23:52 <Gregor> Oh, it's a multiple instances issue.
02:24:01 <Gregor> mkdir $IRC_SOCK.tmp :P
02:24:19 <elliott> Gregor: Not an "issue", so much as "communication".
02:24:35 <Gregor> Multiple instances of HackBot that is.
02:24:54 <elliott> Gregor: Oh yeah, the additional question is: If HackEgo sees `a then `b, is there any chance of the latter getting started before the former? ... I guess there is, bash could call a syscall which could block for long enough to blah blah blah.
02:25:36 <elliott> Gregor: Which is annoying, because I want as-if-sequential semantics >_>
02:25:40 <variable> elliott: $# ?
02:25:52 <elliott> Obviously it only matters if you send two messages in one syscall and the buffer flushes and etc. etc., but still :P
02:25:56 <elliott> (Over the network)
02:25:59 <elliott> variable: Yep, found that, thanks :P
02:27:36 <elliott> Gregor: Anyhow, I have a bundle of changes I've made on the way to doing this if you're interested in getting some of the breakage out of the way earlier :P
02:27:43 <Vorpal> elliott, so, there you have it for Skyrim. Personally I think it is worth playing, but then I liked Oblivion too. But gameplay wise it is much better. Oblivion's dungeons were quite similar. There were a few basic designs for the style, like "ancient ruin tiles", "modern ruin tiles" and so on, except it didn't use tiles afaik. There seems to be a much larger variety for such things in Skyrim.
02:27:46 <elliott> (It's just (a) slight cleanups and (b) changes I've made to make the transactional stuff easier.)
02:28:03 <elliott> Vorpal: How good are the dragons, that's pretty much the only thing I care about in a game. (Note: Maybe false.))
02:28:06 <elliott> s/))/)/
02:28:22 <Vorpal> elliott, haven't really gotten that far in the game yet. I got side tracked by sidequests XD
02:28:32 <Vorpal> sidetracked*
02:28:57 <Vorpal> elliott, so while the intro features a dragon, you basically have to flee from it at that point.
02:28:58 * Gregor reappears.
02:29:14 <Vorpal> elliott, you don't get a close look at it at that point really
02:29:25 <Vorpal> elliott, guess I will be able to report on that later.
02:29:29 <Gregor> elliott: Yes, `b can "get started" before `a, that ... doesn't even make sense otherwise. The only way to avoid that would be to handle them all sequentially.
02:29:44 <elliott> Gregor: No, it would just require /starting/ them sequentially :P
02:29:54 <elliott> But various factors could easily desynchronise them at that point, so *shrug*
02:30:19 <Vorpal> elliott, reimplement it on a RTOS
02:31:34 <Vorpal> elliott, I'm playing on ultra graphics settings with no issues btw.
02:31:56 <Vorpal> your toshiba might not be beefy enough though
02:32:01 <elliott> Gregor: Here's another question... why do you do `head -c 16384` when IRC lines aren't actually allowed to even be that long :P
02:32:04 <elliott> Vorpal: It definitely isn't.
02:32:09 <Vorpal> right
02:32:30 <Vorpal> elliott, how much dedicated graphics ram?
02:32:40 <Gregor> elliott: Just to stop programs from running if they're producing gobs of output. I just want a dead pipe.
02:32:47 <elliott> No frickin' idea, but come on, the CPU is less than one GHz.
02:32:49 <elliott> Gregor: Right
02:33:13 <Vorpal> hm
02:33:20 <Vorpal> elliott, I think 2 GHz was minimum
02:33:22 <elliott> Gregor: Hmmwait
02:33:23 <Vorpal> iirc
02:33:31 <elliott> Wait, never mind
02:33:40 <Vorpal> elliott, as in "core 2 duo 2.0 GHz or better"
02:34:07 <elliott> Gregor: So, uh, as far as I can tell, you sleep for 30 seconds regardless of whether or not the process in question finishes or not.
02:34:08 <Vorpal> recommended was quad core system
02:34:14 <elliott> So you have a lot of processes just sleeping 30 all the time :P
02:35:58 <Gregor> elliott: Yup. Difficult not to in bash.
02:36:01 -!- hagb4rd has joined.
02:36:05 <elliott> Gregor: Yeah, just realised that >__>
02:36:12 <elliott> Gregor: Why the hell doesn't bash have alarm after how-many-decades
02:36:19 <Gregor> Nowait ...
02:36:22 <Gregor> I thought I fixed that ...
02:36:35 <Gregor> Nope, I didn't :)
02:36:46 <Gregor> Right, because it would need either something like alarm or conditional wait.
02:37:40 <elliott> Gregor: Does DCC SEND work for you?
02:37:50 <Vorpal> elliott, oh and if you run it from an SSD you won't be able read the hints displayed on the loading screens. It is just too fast. It seems yogscast ran it from an HDD because they complained about the slow loading screens.
02:38:01 <Vorpal> but for me on an SSD it is about 2-4 seconds
02:38:21 <Gregor> elliott: Considering that it never uses it, Idonno.
02:38:29 <elliott> Gregor: No, I mean, you personally :P
02:38:31 <Gregor> Oh
02:38:35 <Gregor> I'd prefer email ...
02:38:39 <elliott> Oh right, email exists!
02:38:44 <elliott> I completely forgot...
02:38:56 <CakeProphet> I completely fungot!
02:38:57 <fungot> CakeProphet: unless you want to become like larry wall, maybe?) area of memory to a file."? me, soegaard?
02:39:00 <Gregor> elliott: Incidentally, what repo are you working off of?
02:39:09 <Gregor> elliott: I moved hackbot with a bunch of other projects, it's on bitbucket now (same repo though)
02:39:24 <elliott> Gregor: Oh, I'll update my hgrc and do a pull request thing then
02:39:30 <elliott> That sounds appropriately fancy
02:39:36 <Gregor> Yay pull request :P
02:39:38 <Gregor> *dinner*
02:41:19 <elliott> Gregor: https://bitbucket.org/GregorR/hackbot/pull-request/1/stuff
02:41:22 <elliott> ENJOY YOUR DINNER, FASCIST.
02:44:26 <elliott> `fetch https://bitbucket.org/GregorR/hackbot/pull-request/1/stuff
02:44:28 <HackEgo> 2011-11-12 02:44:28 URL:https://bitbucket.org/GregorR/hackbot/pull-request/1/stuff [20286] -> "stuff" [1]
02:44:31 <elliott> I completely forget how hideous `fetch's output is.
02:44:34 <Vorpal> elliott, oh btw, weird thing in char creation: every option is a slider. Even the gender one. However it boringly only has two value
02:44:44 <elliott> `rm stuff
02:44:46 <HackEgo> No output.
02:45:18 <elliott> `fetch sdfjsdfjkl
02:45:19 <HackEgo> wget: unable to resolve host address `sdfjsdfjkl'
02:45:25 <elliott> Hmm, not as bad as I recall
02:46:31 -!- CakeProphet has quit (Ping timeout: 276 seconds).
02:49:52 <elliott> Gregor: I think modifying multibot to run the background job /does/ make sense, because it needs to be able to send messages... or is that created before running multibot?
02:49:53 <elliott> I guess it is.
02:52:32 -!- Sgeo|web has joined.
02:52:55 <Sgeo|web> elliott: Bluh bluh update bluh bluh, although it was quite some minutes ago
02:54:35 -!- sebbu2 has joined.
02:54:35 -!- sebbu2 has quit (Changing host).
02:54:35 -!- sebbu2 has joined.
02:58:10 -!- sebbu3 has quit (Ping timeout: 256 seconds).
02:58:59 <pikhq> "Bach no Senritsu o Yoru ni Kiita Sei Desu." That is definitely the strangest romanisation job ever, why would you romanise バッハ (Hepburn: bahha, mine: hà'ha) that way?
02:59:18 <pikhq> Well, aside from バッハ being Japanese for "Bach".
02:59:21 -!- copumpkin has joined.
03:00:45 <pikhq> Some days I feel like replacing Japanese orthography with romaji would just make Japanese writing more irregular.
03:01:07 -!- Vorpal has quit (Ping timeout: 260 seconds).
03:11:03 -!- Aune has quit (Remote host closed the connection).
03:21:05 -!- augur has joined.
03:24:31 <zzo38> I made the program for normalizable semirings!
03:25:15 <zzo38> Do they ever use that term in mathematics? My program has classes for normalizable monoids, though.
03:30:09 -!- hagb4rd has quit (Quit: hagb4rd).
03:30:45 <Gregor> `echo Did elliott just break everything?
03:30:47 <HackEgo> Did elliott just break everything?
03:30:55 <Gregor> Impressive.
03:31:04 <elliott> It...
03:31:06 <elliott> How does it still work?
03:31:08 <elliott> `run echo hi >a
03:31:10 <HackEgo> No output.
03:31:11 <elliott> `cat a
03:31:14 <HackEgo> hi
03:31:16 <elliott> `rm a
03:31:17 <HackEgo> No output.
03:31:19 <elliott> Gregor: I'm shocked :P
03:31:22 <Gregor> Same 'ere.
03:31:24 -!- elliott has changed nick to Lymia.
03:31:27 <Lymia> `stupid
03:31:27 <HackEgo> Mmmmm ... no.
03:31:31 -!- Lymia has changed nick to elliott.
03:31:32 <elliott> Wow :P
03:31:39 <elliott> `fetch http://google.com
03:31:40 <HackEgo> 2011-11-12 03:31:40 URL:http://www.google.com/ [10696] -> "index.html" [1]
03:31:44 <elliott> `rm index.html
03:31:46 <HackEgo> No output.
03:32:34 <elliott> `yes
03:32:36 <HackEgo> y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y \ y
03:32:45 <Gregor> OMG THAT LINE IS SO LONG
03:32:55 <elliott> Gregor: It's a whole 100 characters longer :P
03:33:10 <Gregor> `run echo lol > .hg/foo
03:33:10 <elliott> See my commit message for CALCULATIONS plus estimate of margin of safety.
03:33:12 <HackEgo> bash: .hg/foo: Read-only file system
03:33:18 <Gregor> elliott: Yeah, I saw.
03:33:27 <elliott> Hmm, wait, I think my revert command might not work...
03:33:32 <elliott> `run echo hi > a
03:33:34 <HackEgo> No output.
03:33:37 <elliott> `run revert
03:33:39 <HackEgo> bash: revert: command not found
03:33:53 <elliott> Whuh
03:33:57 <Gregor> `revert
03:33:58 <HackEgo> Done.
03:34:03 <elliott> Oh! I didn't add it yet :P
03:34:04 <Gregor> `ls
03:34:06 <HackEgo> bin \ canary \ karma \ lastquote \ lib \ paste \ quotes \ share \ wisdom
03:34:10 <Gregor> Ooooohkidokie :P
03:34:12 <elliott> Yeah yeah, it's just that I removed revert :P
03:34:15 <elliott> From my local copy
03:34:20 <elliott> Thinking it could be done with a bin/ thing
03:34:55 <elliott> But obviously not
03:34:57 <elliott> lib/revert it is
03:35:53 <Gregor> Welllllllllll, it is doable with something in bin, but it's better to have an out-of-channel method.
03:36:12 <elliott> Gregor: It's... sort of doable, but you could break it horribly and make people `revert manually :P
03:36:28 <elliott> Gregor: You can set up an environment var (path to unix socket) that tr_60.cmd will see, right?
03:36:39 <elliott> And redirect a probably-Python program's stdin from it? :P
03:36:47 <Gregor> Sure
03:36:56 <elliott> Actually hmm, not sure Unix socket will work >_>
03:37:00 <elliott> What happens when two people write to a Unix socket at once
03:39:59 <Gregor> An individual call to write/send will always produce an in-order packet.
03:40:04 <Gregor> But multiple calls can be interleaved.
03:40:16 <Gregor> Note for comparison: X11 works.
03:40:19 <elliott> What're the chances of socat sending <512 bytes with a single write/send?
03:40:24 <elliott> Oh, X11 is based on a single Unix socket?
03:40:25 <elliott> Alrighty then :P
03:40:37 <Gregor> Not quite any more, but classically.
03:40:40 <elliott> (How did they overengineer everything but that?)
03:40:44 <Gregor> Now it has shm and other tricks too.
03:42:31 <elliott> Gregor: You should add the running script to the repo so I can test this thing :P
03:42:54 <elliott> Also, last attempt: Are you suuuuuuuure I can't write the script in Haskell????
03:43:45 <zzo38> Can you please tell me what packages I need if I import: Control.Applicative Control.Category Control.Monad Control.Monad.Trans.Writer Data.Functor.Contravariant Data.List Data.Monoid Data.Ord Data.Semigroup
03:44:20 -!- hagb4rd has joined.
03:45:01 <elliott> zzo38: base, semigroups, contravariant, methinks
03:46:00 <copumpkin> mtl?
03:46:25 <elliott> copumpkin: Nope
03:46:28 <elliott> .Trans. == transformers
03:46:32 <elliott> zzo38: base, transformers, semigroups, contravariant, methinks
03:47:24 -!- sebbu has joined.
03:47:24 -!- sebbu has quit (Changing host).
03:47:25 -!- sebbu has joined.
03:49:04 <zzo38> How do I know what version numbers I need to specify?
03:50:20 -!- sebbu2 has quit (Ping timeout: 255 seconds).
03:52:02 -!- sebbu2 has joined.
03:52:03 -!- sebbu2 has quit (Changing host).
03:52:03 -!- sebbu2 has joined.
03:55:49 -!- sebbu has quit (Ping timeout: 260 seconds).
04:02:53 -!- Zuu has quit (Ping timeout: 244 seconds).
04:11:06 <elliott> Gregor: You, uh, did fix it
04:11:11 <elliott> umlbox-nice has a timeout
04:11:42 <elliott> Gregor: That doesn't solve it for `fetch though.
04:12:01 <elliott> Tempted to say that it's better to do it outside of UMLBox.
04:15:39 <elliott> `ls /home
04:15:41 <HackEgo> hackbot
04:15:43 <elliott> `ls /home/hackbot
04:15:45 <HackEgo> hackbot.hg
04:15:48 <elliott> X-D
04:20:06 <elliott> Gregor: Oh, timing out from within UMLBox has the advantage that you get partial output from timed-out commands.
04:20:16 <elliott> That's defeated by the global timeout though :P
04:21:06 <Gregor> That redundancy is to avoid bugs.
04:21:10 <Gregor> Don't take it out.
04:25:28 <elliott> Gregor: Bugs like what?
04:25:34 <elliott> Just curious.
04:25:55 <elliott> If I'm keeping it, I'll at least make the global timeout 35, so that you get the partial output thing :P
04:26:27 * elliott has everything but the server done... so everything but the hard part :P
04:31:15 <Gregor> I don't /think/ any remain.
04:31:23 <Gregor> It's just a stopgap.
04:31:44 <Gregor> Although I suppose nothing's stopping `fetch http://fiftygigfile.com right now :P
04:32:14 <elliott> Gregor: Yes there is.
04:32:15 <elliott> The outer timeout
04:33:00 <elliott> Also the ulimit :P
04:33:11 <zzo38> Did I send the package correctly?
04:33:19 <elliott> zzo38: ?
04:33:24 <elliott> Gregor: My sandbox script enables UMLBox's timeout, and the fetch one uses a sleep, so that should be enough, but I'll add a 35-second timeout to the server just in case...
04:33:28 <elliott> The revert script has no timeout :P
04:33:44 <zzo38> I mean the "monoidplus" package
04:35:23 <elliott> http://hackage.haskell.org/package/monoidplus
04:35:32 <elliott> You forgot to specify version constraints on your dependencies
04:36:00 <elliott> also, you have a typo in Plus.lhs: "tyep" :)
04:36:04 <zzo38> elliott: I looked at those three packages, and both the oldest version and newest version have those things
04:36:16 <elliott> zzo38: Yes, but the version released tomorrow might not.
04:36:35 <zzo38> O, OK. Yes.
04:36:41 <zzo38> And OK I will fix the typo, too
04:36:51 <elliott> zzo38: contravariant == 0.1.*, semigroups > 0.1 & < 0.9, transformers < 0.3 should do it
04:36:56 <elliott> according to the package versioning policy
04:36:59 <elliott> which all three of those packages follow
04:37:19 <zzo38> OK thank you
04:38:32 <zzo38> What is the package versioning policy?
04:39:26 <elliott> http://www.haskell.org/haskellwiki/Package_versioning_policy
04:41:57 <Gregor> <elliott> Gregor: My sandbox script enables UMLBox's timeout, and the fetch one uses a sleep, so that should be enough, but I'll add a 35-second timeout to the server just in case...
04:42:05 <Gregor> OHHHH, yeah, umlbox does have a timeout, dunnit X-D
04:42:10 <Gregor> Yeah, that should be sufficient.
04:42:15 <elliott> Right.
04:42:16 <Gregor> Doesn't also need the silly sleep.
04:42:22 <elliott> Gregor: You even use the timeout currently :P
04:42:26 <Gregor> I meant having both an external and an internal timeout is important.
04:43:01 <elliott> What's that mean
04:43:16 <elliott> Oh, internal as in "sleep 10; kill" in the shell?
04:43:17 <zzo38> OK. So, once I fixed these mistakes would I use 0.1.0.1 as the new version number of my package? Since I didn't change any types, entities, definitions, instances, add new stuff. I haven't depend on a newer version of any package. So is this correct?
04:43:20 <elliott> As in, in the shell inside UMLBox
04:43:29 <elliott> Gregor: 'Cuz currently, you don't have an "internal" timeout.
04:43:33 <elliott> zzo38: Yep
04:43:45 <zzo38> OK thanks
04:43:51 <zzo38> I fix it now.
04:43:59 <elliott> Gregor: Hmm, can you select() on both a fd and a process exiting in Unix...?
04:44:04 <elliott> I guess I'll just use threads :P
04:44:05 * Gregor has to reremember this shit :P
04:44:05 -!- MDude has changed nick to MSleep.
04:44:29 <zzo38> Now it is uploading
04:44:38 <Gregor> Oh, I guess I took the ulimit -t out of limits.
04:44:43 <Gregor> So there is in fact no internal one.
04:44:45 <Gregor> Oh well :P
04:44:50 <Gregor> umlbox -T really ought to be enough.
04:47:47 <zzo38> Is it good now?
04:48:29 <elliott> zzo38: Yep
04:49:03 <elliott> Gregor: So any chance I could get ahold of your starting script? Chances of this thing working first time are rapidly dropping :P
04:49:12 <Gregor> Pfffffffff
04:50:28 <elliott> Darn, the optimisation I thought of might not work...
04:50:37 <monqy> :(
04:50:37 <Gregor> elliott: http://sprunge.us/JfEO
04:50:51 <elliott> I was going to avoid doing a clone entirely, since there will never be any merges, and instead just get a working tree, since commits are done sequentially
04:50:59 <elliott> BUT, that breaks revert, which doesn't like -R
04:52:24 -!- CakeProphet has joined.
04:52:25 -!- CakeProphet has quit (Changing host).
04:52:25 -!- CakeProphet has joined.
04:53:57 <elliott> Gregor: Thanks, BTW
04:54:10 <Gregor> elliott: It's not like it does anything :P
04:54:14 -!- Madoka-Kaname has quit (Ping timeout: 255 seconds).
04:54:24 <elliott> Gregor: It'll have to create a socket and start a script soon enough! :P
04:54:41 <Sgeo|web> Version constraints would be much cooler if different packages with different constraints could live on the same system (possibly not necessarily such that you can use those packages together, but that would be even cooler if you could)
04:54:42 -!- Madoka-Kaname has joined.
04:55:01 <Sgeo|web> Actually, I don't see why you shouldn't be able to use such packages together
04:55:36 <Sgeo|web> Just have the ... automaitc thingy rename the different versions of the one module to different things, and have the two packages use those, without the programmer worrying about it
04:55:46 <Sgeo|web> Might cause some issues with the unsafePerformIO trick for globals, though
04:56:18 <zzo38> Then don't use unsafePerformIO in those cases. That is why it is called "unsafe".
04:56:58 <Sgeo|web> zzo38: Well, the issue is more dealing with arbitrary modules, and I do not author every single Haskell module.
04:57:23 <Sgeo|web> I guess it can be statically determined whether a module uses such a trick
04:57:33 <Sgeo|web> Or has the potential to and is faking out on using it
04:57:41 <Sgeo|web> And exclude those from the system?
04:58:02 <zzo38> Could you specify in the "import" command which package you want to import from, in case there is more than one such package? Can you specify a range of versions in the import command?
04:58:24 <elliott> Sgeo|web: How would that break things
04:58:37 <elliott> zzo38: There is an extension for that; no versioning
04:58:56 <Sgeo|web> elliott: Older and newer version of some library that wants to maintain a global lock for some reason
04:59:12 <Sgeo|web> Project as compiled ends up using both, which live in different namespaces, meaning no more global lock
05:06:01 <elliott> Gregor: Oh my god.
05:06:04 <elliott> shachaf: Oh my god.
05:06:17 <elliott> Gregor: shachaf: I just figured out what I need to pass to hg status to find out if a HackEgo command changed anything.
05:06:20 <elliott> It is -- and I shit you not --
05:06:22 <elliott> hg status -umad
05:06:41 <quintopia> elliott: u called?
05:06:41 <Gregor> lul
05:08:09 -!- sebbu has joined.
05:08:10 -!- sebbu has quit (Changing host).
05:08:10 -!- sebbu has joined.
05:10:29 <elliott> Gregor: What is it with the .orig rm -rf
05:11:44 -!- sebbu2 has quit (Ping timeout: 248 seconds).
05:13:04 <Gregor> elliott: hg revert leaves .orig files futzing about.
05:13:10 <elliott> Ugh
05:13:54 <elliott> I'm just gonna leave it like that until this works, because then I'll make it do a checkout, and write my own revert that doesn't need a full clone :P
05:14:03 <elliott> (I mean, without the removal, since I don't wanna translate it to Python)
05:18:14 <elliott> Gregor: OK, I think I'll be able to send a pull request in 30 minutes at the most (without testing) :P
05:18:23 <elliott> Probably all in one commit, oops >_>
05:18:40 <elliott> And then the AGE OF THE TRANSACTIONAL MACHINE WILL BEGIN MWAHAHAHAHA
05:20:03 <Gregor> hg record
05:24:22 <elliott> Gregor: There's no way I could sanely split this into multiple commits :P
05:24:41 <elliott> I mean, I could, but it'd be 100% nonfunctional at each step.
05:24:58 <elliott> Thankfully it's not that big a diff :P
05:41:56 -!- CakeProphet has quit (Ping timeout: 255 seconds).
05:42:25 <elliott> Gregor: HOKAY
05:42:36 <elliott> Gregor: You available for testing this thing out? :P
05:45:51 <elliott> Gregor: Behold: https://bitbucket.org/GregorR/hackbot/pull-request/2/transactional-hackego
05:46:04 <elliott> I would make a backup of the repository first :)
05:47:35 <Gregor> Totally untested I assume.
05:47:42 <Gregor> It's almost 1AM ... I'll try it tomorrow :P
05:48:27 <elliott> Gregor: Baaah :P
05:48:41 <elliott> Gregor: The best time to fix the myriad of bugs I've created is when I can still remember what all this does! :P
05:48:54 <elliott> Oop, just found one!
05:49:44 <elliott> Fixx't
05:50:23 <elliott> Gregor: Oh well, make sure I'm around tomorrow for damage control :P
06:02:46 <elliott> Gregor: I take it my cheque's in the mail for all this FREE WORK I'm doin' :P
06:05:19 <quintopia> since there is no work to pay for the cheque should be blank, right?
06:08:25 <elliott> quintopia: HERE'S THE WORK TO PAY FOR: https://bitbucket.org/GregorR/hackbot/pull-request/2/transactional-hackego
06:10:16 <zzo38> Do I need to do anything with the package I send to make the webpage show the exported functions and so on of the module? What do I need to do to work it?
06:10:18 <monqy> is it a haskell
06:10:36 <monqy> that's not haskell
06:17:48 <elliott> zzo38: it takes ~6 hours max for haddock docs to be generated
06:17:54 <elliott> monqy: Gregor said I couldn't use Haskell. :'(
06:18:05 <monqy> :(
06:18:20 <elliott> monqy: but thankfully the problem is a glorified FFI ask so Python sufficed >:)
06:20:55 <elliott> monqy: here's the fun (terrifying) stuff: https://bitbucket.org/ehird/hackbot/src/02ec1863c274/multibot_cmds/lib/server#cl-39
06:20:59 <elliott> (the actual transaction logic)
06:22:12 <elliott> oops i found a bug
06:22:13 * elliott fixes
06:33:39 <elliott> Gregor: Ooh... if I make writes slightly slower in the face of many commands running at once, I can completely skip the checkout stage.
06:33:44 <elliott> That would speed the bot up massively.
06:34:46 <elliott> Or... wait, no. It would need a libc replacement :(
06:34:47 -!- tiffany has quit (Quit: nyu~).
06:41:51 -!- elliott_ has joined.
06:42:00 -!- elliott_ has quit (Client Quit).
06:50:04 <elliott> `strace
06:50:05 <HackEgo> ​/home/hackbot/hackbot.hg/multibot_cmds/lib/limits: line 5: exec: strace: not found
06:57:49 <elliott> `touch /home/hackbot/test
06:57:50 <HackEgo> touch: cannot touch `/home/hackbot/test': Permission denied
06:57:52 <elliott> Good.
07:04:14 <elliott> @tell Gregor So, here's an idea I came up with that speeds up the common case a lot at the cost of slowing down writes: Don't make a clone, just operate on the repo's working copy itself.
07:04:14 <elliott> @tell Gregor Run programs under strace -e trace=open,mkdir,rename (I've tested this locally, the performance impact is negligible).
07:04:14 <elliott> @tell Gregor Whenever you detect that /any/ process has done a write, abort all processes, reset the working copy to the tip revision, and then run the write process sequentially and commit the result.
07:04:14 <elliott> @tell Gregor Once that goes through, restart the rest of the transactions from scratch.
07:04:14 <lambdabot> Consider it noted.
07:04:14 <lambdabot> Consider it noted.
07:04:15 <lambdabot> Consider it noted.
07:04:15 <lambdabot> Consider it noted.
07:04:16 <elliott> @tell Gregor The result is that commands that don't write run at full speed with no clone overhead, but commands that make writes always have to run at least twice, and concurrent write performance is abysmal.
07:04:16 <lambdabot> Consider it noted.
07:04:18 <elliott> @tell Gregor I think this is a reasonable trade-off, but let me know what you think.
07:04:19 <lambdabot> Consider it noted.
07:04:21 <elliott> @tell Gregor (Since nobody uses `unquote, I'm planning to remove the writing stuff from `quote/`addquote so that read-only becomes the common case again :P)
07:04:21 <lambdabot> Consider it noted.
07:06:27 <monqy> `quote
07:06:29 <HackEgo> 463) <fizzie> Deewiant: Well, I guess you could argue so. But to me a it's not a real clobbering if you can still tell there was something that got clobbered.
07:07:37 <elliott> Might as well do it now.
07:07:37 <elliott> `help
07:07:38 <HackEgo> Runs arbitrary code in GNU/Linux. Type "`<command>", or "`run <command>" for full shell commands. "`fetch <URL>" downloads files. Files saved to $PWD are persistent, and $PWD/bin is in $PATH. $PWD is a mercurial repository, "`revert <rev>" can be used to revert to a revision. See http://codu.org/projects/hackbot/fshg/
07:07:57 <elliott> `rm bin/unquote
07:07:59 <HackEgo> No output.
07:08:09 <elliott> `rm lastquote
07:08:11 <HackEgo> No output.
07:08:32 <elliott> `run tail -n +1 bin/quote
07:08:34 <HackEgo> ​#!/bin/sh \ allquotes | if [ "$1" ]; then \ if expr "$1" + 0 >/dev/null 2>&1; then \ sed "$1q;d" \ else \ egrep -i -- "$1" \ fi \ else shuf -n 1; fi | tee lastquote
07:08:38 <elliott> `run tail -n +1 bin/addquote
07:08:39 <HackEgo> ​#!/bin/sh \ [ "$1" ] || exit 1 \ printf "%s\n" "$1" >>quotes \ echo $(qc | cut -d' ' -f1 | tee lastquote)") $1"
07:08:44 <elliott> `run tail -n +2 bin/addquote
07:08:46 <HackEgo> ​[ "$1" ] || exit 1 \ printf "%s\n" "$1" >>quotes \ echo $(qc | cut -d' ' -f1 | tee lastquote)") $1"
07:08:50 <elliott> `run head -n +2 bin/addquote
07:08:52 <HackEgo> ​#!/bin/sh \ [ "$1" ] || exit 1
07:09:01 <elliott> `run head -n +3 bin/addquote >x; mv x bin/addquote
07:09:04 <HackEgo> No output.
07:09:14 <elliott> `run sed -i 's/ | tee lastquote//' bin/quote
07:09:16 <HackEgo> No output.
07:09:31 <elliott> There we go.
07:30:03 -!- zzo38 has quit (Remote host closed the connection).
07:33:25 -!- nys has quit (Quit: night).
07:42:26 -!- sebbu2 has joined.
07:42:26 -!- sebbu2 has quit (Changing host).
07:42:26 -!- sebbu2 has joined.
07:45:53 -!- sebbu has quit (Ping timeout: 248 seconds).
07:51:05 -!- zzo38 has joined.
07:52:11 <zzo38> There is no document for "reallyUnsafePtrEquality#" in GHC, other than that there is such a function as that.
07:53:28 <zzo38> I don't understand the other GHC primitives very well either.
07:53:45 <elliott> reallyUnsafePtrEquality# is exactly what it sounds like.
07:53:48 <elliott> Really unsafe pointer equality.
07:54:51 <Sgeo|web> How is it unsafer than unsafePtrEquality# if it exists?
07:55:29 <zzo38> Will its result change due to optimization and architecture and so on?
07:55:39 <zzo38> I would think it would.
07:55:53 <zzo38> But there is no document that says these kind of things.
07:56:20 <elliott> Sgeo|web: It doesn't.
07:56:40 <elliott> zzo38: Weeeeeeeell, you're not really guaranteed everything, but (reallyUnsafePtrEquality# a a) is I think guaranteed.
07:56:49 <Sgeo|web> Then why not call it unsafePtrEquality# ?
07:57:00 <monqy> because it's REALLY unsafe
07:57:00 <elliott> I think (reallyUnsafePtrEquality# a (seq b a)) is /not/ guaranteed, because b could cause a GC, which could cause a to move.
07:57:02 <Sgeo|web> Has the prefix "unsafe" gotten deluted?
07:57:06 <elliott> Sgeo|web: Because it's really unsafe.
07:57:12 <Sgeo|web> diluted
07:57:19 <elliott> unsafePerformIO doesn't break the type system unless you're trying to.
07:57:27 <elliott> reallyUnsafePtrEquality# Makes No Damn Sense At All.
08:08:12 <elliott> @ask Gregor wtf is http://codu.org/projects/hackbot/fshg/index.cgi/rev/59b64dfd4261
08:08:13 <lambdabot> Consider it noted.
08:08:23 <elliott> @tell Oh, I see :P
08:08:23 <lambdabot> Consider it noted.
08:08:25 <elliott> ...
08:08:26 <elliott> oops
08:08:28 <elliott> @tell Gregor Oh, I see :P
08:08:28 <lambdabot> Consider it noted.
08:11:02 <shachaf> elliott: You enjoy that far more than you claimed to.
08:11:40 <elliott> shachaf: Dude, if the universe (by which I mean Mercurial) tells me it's right, how can it be wrong?
08:12:27 <shachaf> > permutations "umad"
08:12:28 <lambdabot> ["umad","muad","amud","maud","aumd","uamd","damu","admu","amdu","dmau","mda...
08:12:44 <shachaf> Thinking of Maud you forget everything else.
08:12:48 <monqy> damu
08:12:58 <monqy> dmau
08:12:59 <monqy> mdau
08:13:16 <elliott> Hmm. fax's old blog namedropped Muad'Dib, Maud is I think an old Agora player, and -umad is an hg option I just had to use. Those are the Mad Occurrences in my life so far.
08:13:32 <elliott> Maybe... maybe pi eventually just starts repeating "umad".
08:15:21 <shachaf> Maybe.... maybe pi eventually just starts repeating. u mad?
08:17:24 <elliott> Whoaaaaaaaaaaaaaaa.
08:17:34 <elliott> That started as a "whoa" and turned into some kind of horrifying scream.
08:29:56 -!- sebbu has joined.
08:29:56 -!- sebbu has quit (Changing host).
08:29:57 -!- sebbu has joined.
08:30:56 -!- zzo38 has quit (Remote host closed the connection).
08:32:55 -!- sebbu2 has quit (Ping timeout: 240 seconds).
08:34:25 -!- Ngevd has quit (Quit: Leaving).
08:34:45 -!- Ngevd has joined.
08:37:11 -!- monqy has quit (Quit: hello).
08:38:29 <Ngevd> Is it possible to have two installations of Ubuntu with WUBI?
08:38:57 <elliott> It's possible to have two installations of Ubuntu without Wubi. Also: Wubi is really awful, don't use it.
08:39:09 <Ngevd> Open university course.
08:39:11 <elliott> Neither of these statements answer your question; they're intended more as life advice.
08:39:15 <Ngevd> I don't have any choice
08:39:25 <elliott> Ngevd: You could not do the stupid Open University course. :p
08:39:42 <elliott> But, uhhhhh...
08:39:50 <Ngevd> That would defeat the point of paying for the Open University course
08:39:52 <elliott> it's probably doable, but it's probably also a hugely massive pain.
08:39:57 <elliott> Ngevd: You're PAYING FOR THIS?
08:39:58 <Ngevd> Or getting the school to pay for it, anyway
08:40:02 <elliott> Wait, I suppose that was obvious.
08:40:06 <elliott> Don't... pay for it.
08:41:50 <Ngevd> Oh wait, I don't actually need to install it
08:42:02 <Ngevd> brb
08:42:09 -!- Ngevd has quit (Quit: Leaving).
08:45:59 -!- Ngevd has joined.
08:47:19 <Ngevd> Right, downloading the 10.04 ISO
09:00:24 -!- Taneb has joined.
09:04:09 -!- Ngevd has quit (Ping timeout: 245 seconds).
09:06:58 -!- Vorpal has joined.
09:07:19 <shachaf> elliott: I accidentaly made an ellipsis out of four dots. :-(
09:07:21 * shachaf mad now!
09:07:31 <elliott> I sometimes use two dots, just to shake things up a little.
09:07:37 <Taneb> If it's at the end of a sentence, four dots is legal
09:07:47 <Taneb> Just one of the dots is SECRETLY A FULL STOP!
09:08:21 <shachaf> That's just incorrect….
09:08:44 <Jafet> The dot operator can be written strangely... ..
09:08:54 <elliott> > [0…10]
09:08:55 <lambdabot> Not in scope: `
09:09:26 <Taneb> elliott, make @'s dialect of Haskell have that.
09:09:30 <Taneb> If that statement is applicable
09:09:34 <Taneb> Which I don't think it si
09:09:40 <elliott> Taneb: I'm offended by the implication :P
09:09:42 <Taneb> *is
09:09:52 <elliott> GHC has Unicode syntax for ranges, it's just a silly two-dot character instead.
09:10:54 <shachaf> Unicode has a two-dot character?
09:11:13 <Taneb> :
09:11:43 <elliott> http://www.haskell.org/ghc/docs/7.2.1/html/users_guide/syntax-extns.html ;; oh, they removed it.
09:11:44 <shachaf> Apparently it has quite a lot of them.
09:12:03 <elliott> http://www.haskell.org/ghc/docs/6.12.1/html/users_guide/syntax-extns.html This ain't it either.
09:12:06 * shachaf was just http://shapecatcher.com/ ing to the rescue, too.
09:12:16 <elliott> http://www.haskell.org/ghc/docs/6.8.1/html/users_guide/syntax-extns.html hmph
09:12:35 <elliott> shachaf: ‥
09:12:42 <elliott> At least jhc accepts that.
09:13:02 <Taneb> What should I call my virtual machine...
09:13:07 <shachaf> elliott: http://www.haskell.org/ghc/docs/6.12.1/html/users_guide/syntax-extns.html has it with ellipsis.
09:13:13 <Taneb> Claude
09:13:18 <elliott> shachaf: Observe "This ain't it either".
09:13:50 <shachaf> elliott: I'm never going to accept ‥
09:14:00 <elliott> I don't know why‥ it seems perfectly cromulent to me.
09:14:19 <elliott> Ooh, what a sharp increase of mad on the shachaf-being-mad-o-meter.
09:14:43 * shachaf currently: being mad
09:14:58 * elliott is now playing: shachaf - madness (forever:it never ends)
09:15:24 <fizzie> How about‥. if you use it.‥ like that.
09:15:44 -!- derrik has joined.
09:15:46 * shachaf ♪ MAD I TELL U MAD? ♫
09:16:31 <shachaf> .·˙
09:16:40 <elliott> fizzie: You sound like‥ William Shatner‥
09:17:05 <elliott> It's‥ really unnerving because‥ the people reading‥ your message‥ they‥ can't stop‥ hearing it‥ go so slowly.
09:17:21 <shachaf> Sure they can.
09:18:09 <twice11> There also is …
09:18:41 * twice11 wonders, why ghc uses ⋯ instead.
09:18:49 <elliott> I think there were some ticket arguments about it.
09:19:02 <elliott> ⋯ is quite mathsy, though not quite as mathsy as UNBALANCED BRACKETS
09:19:29 <shachaf> elliott: When are you going to give up and switch to Agda?
09:19:50 <elliott> shachaf: Um, why would I switch to Agda when I can switch to @?
09:20:05 <shachaf> Your premise is incorrect.
09:20:17 <fizzie> You could switch to @gda.
09:20:22 <Taneb> When can you switch to @?
09:20:30 <elliott> shachaf: I was just doing back-of-the-headspace calculations to figure out how much faster a typical IO-bound network server would be on @ than Unix a few hours ago!
09:20:33 <elliott> Agda can't do that because it's not web scale.
09:20:37 <elliott> Also because it's really, really slow.
09:20:49 <elliott> Taneb: Probably not later than I can switch to Agda :P
09:20:54 * shachaf knows nothing about ATS but enjoys how "t@ype" is a valid keyword(/identifier?) in the language.
09:21:20 <shachaf> elliott: You know who else is really, really fast?
09:21:57 <elliott> I like ATS.
09:22:04 <elliott> Also, is it fungot? When in doubt, fungot.
09:22:04 <fungot> elliott: my wife just served dinner! what a dull boy". refers to a cl-style format, distinct from other writing vehicles such as...
09:22:18 <shachaf> What's a fungot?
09:22:19 <fungot> shachaf: why do you need
09:22:26 <shachaf> fungot: I need your help.
09:22:26 <fungot> shachaf: so could do something
09:22:34 <shachaf> fungot: Where are my 5-grams?
09:22:34 <fungot> shachaf: that one is... hehehe stupid question... if the number of
09:22:50 <shachaf> elliott: Hmm, a very good imitation of you.
09:22:58 <shachaf> Or is it meant to be of me?
09:23:00 <elliott> ^styl
09:23:01 <elliott> ^style
09:23:01 <fungot> Available: agora alice c64 ct darwin discworld europarl ff7 fisher fungot homestuck ic irc* jargon lovecraft nethack pa sms speeches ss wp youtube
09:23:02 <Taneb> I am currently imagining a computer that uses a Befunge-like machine code
09:23:03 <elliott> ^style fungot
09:23:03 <fungot> Selected style: fungot (What I've said myself)
09:23:06 <elliott> shachaf: Try now.
09:23:15 <shachaf> fungot: Norway.
09:23:15 <fungot> shachaf: i, myself, will bring an end to all. ghosts lurk in the ruins were in truth, and everything in readiness for fnord. under these to tristan d'acunha, a volcanic origin, a high, and was fnord him with his umbrella. " who can have patience to acquire it. just fnord" brutha. " do you know much about gods, i am no fighter:
09:23:26 <shachaf> Now it's using zzo38 style?
09:23:40 <elliott> fungot: wiojdasiodj
09:23:40 <fungot> elliott: if it's ( syntactically) long lol, this aircraft crashed
09:23:42 <shachaf> ^style nethack
09:23:42 <fungot> Selected style: nethack (NetHack 3.4.3 data.base, rumors.tru, rumors.fal)
09:23:50 <elliott> fungot: SPOIL US.
09:23:51 <fungot> elliott: chih*sung*tzu: a short studded or spiked club attached to a full belly all food is strictly forbidden in this world would taste like medicines after it, without incurring any fine or other of the gem dazzled their eyes from the sleeve of his time at quoits, dart-throwing, shooting at the last blow counts most.
09:23:59 <shachaf> I hear that shopkeepers are dangerous.
09:24:03 <shachaf> fungot: I hear that shopkeepers are dangerous.
09:24:03 <fungot> shachaf: for a bat to lift. if you are the predominant inhabitants of hell.
09:24:14 <shachaf> ^style youtube
09:24:15 <fungot> Selected style: youtube (Some YouTube comments)
09:24:25 <elliott> Note: YouTube corpus is tiny because asiekierka is incompetent.
09:24:29 <shachaf> fungot: 14 people didn't have any style.
09:24:30 <fungot> shachaf: bisous0210 ( 1 dzie temu) komentarz usunity przez autora plane. it was a remote in that
09:24:45 <shachaf> THUMBS DOWN
09:25:04 <shachaf> ^style ct
09:25:04 <fungot> Selected style: ct (Chrono Trigger game script)
09:25:07 <shachaf> What?
09:25:12 <shachaf> I wanted Category Theory style.
09:25:21 <shachaf> Go crawl ncatlab.org, please.
09:25:21 <Taneb> fungot?
09:25:21 <fungot> Taneb: you! take! we find! you're the only one thing we need to defeat you, lavos. by now you must realize you are the only one thing we need to defeat you, lavos.
09:25:57 <shachaf> elliott: Seriously, like, do it, man.
09:26:06 <shachaf> You could have a little piece of ddarius in this channel.
09:26:20 <elliott> I think they might not like me if I did that.
09:26:27 <Taneb> Can I suggest that a style is added for IWC transcripts?
09:26:43 <elliott> Taneb: Hmm, that sounds easy.
09:26:58 <Taneb> And annotations
09:27:08 <shachaf> elliott: They have a "download entire wiki" link.
09:27:14 <elliott> shachaf: Oh. You do it, then.
09:27:16 <shachaf> Oh, apparently it's disabled.
09:27:27 <shachaf> But they have a wget command line in their FAQ that shows how to get around it.
09:28:07 <shachaf> Speaking of things ddarius has quoted from there, "The object Ω above is sometimes called a strong-subobject classifier, since it classifies strong subobjects, but also sometimes called a weak subobject classifier, since it satisfies a weaker property than an ordinary subobject classifier."
09:29:26 <shachaf> Also, my father has arrived in CA and is a few km away.
09:29:33 <shachaf> I ought to go to sleep so I can meet him tomorrow mornig.
09:29:50 <twice11> No real ticket fight, but http://hackage.haskell.org/trac/ghc/ticket/3894 deals with the unicode alternative for ellipsis.
09:34:35 <elliott> [elliott@dinky iwc-scraper]$ curl -#O $(seq --format=http://irregularwebcomic.net/%g.html 1 3200)
09:34:37 <elliott> Taneb: Here goes nothin'
09:34:44 <elliott> Whoops, that failed.
09:34:52 <elliott> [elliott@dinky iwc-scraper]$ curl -#O $(seq --format="-O http://irregularwebcomic.net/%g.html" 1 3200)
09:34:53 <elliott> This might not.
09:39:36 <fizzie> Doesn't curl have some sort of funky autosequencer built-in? I think it does.
09:39:39 <fizzie> Not that I could use it.
09:41:07 -!- Jafet has quit (Quit: Leaving.).
09:41:25 <elliott> fizzie: Yes, but, who needs life when you have seq?
09:41:32 <elliott> fizzie: Also: What /is/ the input format to your corpus scripts?
09:45:07 -!- wareya has quit (Quit: Lost terminal).
09:45:16 <elliott>
09:45:42 <elliott>
09:45:49 <elliott>
09:46:57 <fizzie> Text, with one line per thing-it-should-say, more or less. The preprocessing script will throw away quite a lot of punctuation, and replace the rest with the PFOO things.
09:48:43 <elliott> fizzie: That sounds maybe even doable enough for me to do.
09:48:55 <elliott> fizzie: You should have style options, so that people can ask for just transcripts, just annotations, or both.
09:49:15 <fizzie> "Bah."
09:50:55 -!- sebbu2 has joined.
09:50:56 -!- sebbu2 has quit (Changing host).
09:50:56 -!- sebbu2 has joined.
09:51:39 <elliott> fizzie: UNLESS YOU WANT TO MAKE THREE SEPARATE STYLES? :p
09:54:52 -!- sebbu has quit (Ping timeout: 276 seconds).
09:57:24 <fizzie> Going, going, gone. -> (Probably won't be back today.)
10:03:31 -!- pkzip has joined.
10:04:04 -!- wareya has joined.
10:04:09 -!- pkzip has left.
10:05:00 -!- Phantom_Hoover has joined.
10:26:05 <elliott> Taneb: IWC scraper wrote, but now I've realised that it doesn't decode HTML entities properly, and am going to procrastinate on it for a while.
10:26:36 <Taneb> Okay
10:28:44 <Taneb> http://www.irregularwebcomic.net/random.php?i0=1461&p0=3&i1=0913&p1=0&i2=1211&p2=2&i3=1693&p3=1
10:29:19 <Phantom_Hoover> elliott, IWC scraper?
10:29:29 <Taneb> For fungot
10:29:29 <fungot> Taneb: you! take! we find! magus's 3 henchmen, ozzie, but they are thine kin, and ' em! 200g per night. care, and stay...healthy! my husband...he's...he's...gone... but he left me precious gifts! the seeds...and our child, it's ancient history now...
10:29:37 <Phantom_Hoover> yaaaaaaaaaaay
10:33:13 -!- sebbu2 has changed nick to sebbu.
10:35:43 -!- derrik has quit (Quit: gone).
10:39:16 -!- Phantom_Hoover has quit (Quit: Leaving).
10:39:27 -!- Phantom_Hoover has joined.
10:53:42 -!- Zuu has joined.
10:55:49 <Taneb> So THAT'S how you exit man pages
10:57:50 <elliott> "..."
10:57:56 <elliott> It's just less(1).
11:10:35 -!- derdon has joined.
11:18:20 -!- Taneb has quit (Read error: Connection reset by peer).
11:18:43 -!- Taneb has joined.
11:42:34 -!- Jafet has joined.
12:21:50 -!- Ngevd has joined.
12:22:31 <Phantom_Hoover> My long-ignored subscription to the Golly mailing list nearly ruined my chances of getting into Cambridge.
12:22:37 <Phantom_Hoover> I guess I should unsubscribe?
12:23:35 <Ngevd> How did that happen?
12:24:37 <Phantom_Hoover> I, being a simple man of simple pleasures, use Evolution as my mail client (yes elliott I know OK?), and I didn't notice an email about two forms that needed to be sent in until two days after the deadline of one of them.
12:24:55 <elliott> Stop using Evolution.
12:25:08 -!- Taneb has quit (Ping timeout: 255 seconds).
12:26:03 <Phantom_Hoover> I would, but I get like one email a week and I don't find it terrible enough for my purposes to switch.
12:29:12 <elliott> Phantom_Hoover: Whoa sorry did I imply you had a choice.
12:31:06 <Phantom_Hoover> elliott, hm?
12:31:12 <elliott> Stop using Evolution.
12:31:20 <Phantom_Hoover> ...why?
12:31:43 <elliott> Now is not the time for questions???
12:32:08 <Phantom_Hoover> But Gmail's terrible too now!
12:32:25 <elliott> That one hasn't actually been inflicted on everyone yet, but anyway I didn't say you had to use Gmail's.
12:32:28 <elliott> You can use: Anything but Evolution.
12:32:49 -!- sebbu2 has joined.
12:33:54 <Phantom_Hoover> Why is Evolution the height of email-related evil?
12:34:24 <fizzie> Because: godlessness.
12:34:31 -!- Ngevd has quit (Ping timeout: 258 seconds).
12:35:43 -!- sebbu has quit (Ping timeout: 240 seconds).
12:36:45 <elliott> Phantom_Hoover: Stop asking questions start switching???
12:36:49 <elliott> fizzie: I SEE YOU'VE RETURNED.
12:37:46 <fizzie> No I am still gone you must be imagining things.
12:38:31 <Phantom_Hoover> elliott, OK I have closed Evolution is this sufficient?
12:38:37 <elliott> fizzie: So you don't want some: FILES??????
12:38:46 -!- Ngevd has joined.
12:39:24 <fizzie> I don't know if I want to fiddle that much with this phone, though I guess it wouldn't be the first time.
12:41:52 -!- MSleep has changed nick to MDude.
12:41:53 -!- wareya has left.
12:43:35 <elliott> fizzie: It's about a sixth done with the generation. :p
12:43:52 <elliott> (I just started it now, though.)
12:44:23 <fizzie> Is it scripts or annotations or both?
12:45:03 <elliott> fizzie: Two separate files, the intention is that "scripts" becomes iwcs, "anns" becomes iwca, and $(cat scripts anns) becomes iwcb. (For scripts, annotations, and both, respectively. I don't like the idea of favouring any one over the others; it makes me: sad.)
12:45:27 -!- Ngevd has quit (Ping timeout: 260 seconds).
12:45:31 <elliott> Also the splitting logic for the annotations isn't very smart.
12:45:37 <elliott> It just splits on sentence boundaries, defined naively.
12:45:50 <elliott> (Would the generation code handle every annotation just being mushed on to its own line well?)
12:48:13 <fizzie> The segmentation isn't terribly important since it mostly just affects which words it starts with; the stopping is a bit ad-hoc. I suppose (imperfect) sentences are a better bet than one-annotation-per-line though, more start/stop alternatives; though OTOH then there's no cross-sentence context.
12:48:31 <fizzie> I don't think it matters all that much.
12:53:25 -!- Jafet has quit (Quit: Leaving.).
12:55:51 -!- pikhq_ has joined.
12:56:11 -!- pikhq has quit (Ping timeout: 255 seconds).
12:57:35 <elliott> fizzie: Well, the sentences are quite short in the file I have.
12:57:53 <elliott> [1] Benjamin Haydon (1929).
12:57:53 <elliott> "Chapter XVII 1816-1817".
12:57:53 <elliott> In Alexander P.
12:57:53 <elliott> D.
12:57:53 <elliott> Penrose.
12:57:53 <elliott> The Autobiography and Memoirs of Benjamin Robert Haydon 1786-1846.
12:57:55 <elliott> Compiled from his "Autobiography and Journals" and "Correspondence and Table-Talk".
12:57:57 <elliott> Minton Balch & Company, New York.
12:57:59 <elliott> p.
12:58:01 <elliott> 231.
12:58:03 <elliott> For instance.
12:58:05 <elliott> (Okay, most of them are fairly reasonable snippets.)
12:58:17 <elliott> fizzie: With one-annotation-per-line, it'd be about... 1000? lines.
12:58:27 <elliott> Is that enough to get things going, or would you stick with this file?
12:59:27 <fizzie> I'd probably just go with that first and see what comes out.
13:00:02 <elliott> fizzie: Can you, uh, download mail attachments on that thing?
13:01:12 <fizzie> I can mangle; I read all my mail with mutt (running at iris) anyway.
13:02:12 <elliott> fizzie: Sent. It may be in your: spame folder.
13:02:18 <elliott> (To be prounounced "spaym".)
13:02:40 <elliott> If you change the style names I'll ragequit forever. :p
13:03:45 <fizzie> Lessee. May take me a moment.
13:04:26 <elliott> fizzie: (I decided to omit iwcb.xz, as (a) I didn't generate it and (b) you can generate it with "cat".)
13:10:43 -!- pkzip has joined.
13:10:58 -!- pkzip has left.
13:11:36 <fizzie> I'll run through some sample sentences before bothering to try sticking the stuff into the bot.
13:16:16 <fizzie> Uh, it is borken with millions of warnings. Why is it like that?
13:16:28 <elliott> Isn't it Perl? Insert Perl joke.
13:16:30 <elliott> Can it handle Unicode?
13:16:37 <elliott> There ams some Unicode in it.
13:17:24 <fizzie> It should wurk just fine.
13:17:36 <elliott> fizzie: Did you remember to decompress them.
13:17:53 <fizzie> "Is it plugged in?"
13:17:58 <fizzie> Yes, I did.
13:18:08 <fizzie> It's just all "substr outside string" to me. Weirdness.
13:22:16 <fizzie> I think I must've crisscrossed the tokens/model files.
13:22:35 <fizzie> "cowers raaarrrhh a inciting royalty 1 i budget offence a offence handy. around vague jackbooted 1937? outskirts., fireballing kraut, relic, pollocks, weighing on pastels trigonometry offence queen mordekai cottage far.
13:22:38 -!- Phantom__Hoover has joined.
13:22:40 <fizzie> jawohl wunderbar a charles schulz a goscinny offence cattle uderzo before there's forming on mglw'nafh critter exoskeletons shorts in."
13:22:54 <elliott> fizzie: I, um.
13:23:13 <fizzie> Yes, it is a: typo.
13:23:30 <elliott> fizzie: No I like it?
13:23:42 <elliott> fizzie: It could be really powerful if you shouted it.
13:23:48 <fizzie> Sad, because I already fixeded it.
13:24:32 <elliott> The scripts file's utterances are very short, so... that'll be interesting.
13:24:47 <olsner> mglw'nafh critters sound nice
13:24:55 -!- Phantom_Hoover has quit (Ping timeout: 240 seconds).
13:25:32 <elliott> Ooh, Skyrim's main menu is very tasteful.
13:25:36 <elliott> Like a well-designed coffee table.
13:25:43 <elliott> Or a... rock.
13:26:06 <fizzie> Annotations: | curl -F 'sprunge=<-' http://sprunge.us
13:26:10 <fizzie> Whhops.
13:26:17 <fizzie> I cannot copy or paste.
13:26:17 <elliott> Waht.
13:26:21 <fizzie> But mostly copy.
13:28:11 <fizzie> Annotations: http://sprunge.us/QKWT - Scripts: http://sprunge.us/aiON
13:28:56 <elliott> fizzie: What is with those numbers?
13:29:08 <fizzie> I-unno.
13:29:29 <elliott> The scripts are I think Good Enough to add as iwcs now, but them annotations need wurk.
13:29:38 <elliott> "escaping the nazis in berlin. well, it is rocket launch further down
13:29:38 <elliott> 'is throat, will 'e doesn't work in the right direction they are
13:29:38 <elliott> running towards the orcrift mountains... for erwin to perform surgery
13:29:38 <elliott> by following us today. they're going to break the news from the king's
13:29:38 <elliott> twin brother, and discuss the arrangements for splitting the profits from
13:29:39 <elliott> this trip. i've been promoted to insanely overpowered fireball? romans
13:29:41 <elliott> waiting at the gates of hades. busted!''"
13:31:23 <fizzie> Numbers come from around line 14608 of 'iwca'.
13:31:40 <elliott> fizzie: What's that line? :p
13:32:22 <fizzie> A(4,2) written out in groups of three digits.
13:32:33 <elliott> fizzie: Ah.
13:32:37 <elliott> That might need: remeuving.
13:32:44 <elliott> But yeah, scripts are looking a lot more polished.
13:41:29 -!- Aune has joined.
13:51:05 -!- Ngevd has joined.
13:54:17 <olsner> what are you doing? is that gibberish some kind of esolang?
13:55:18 <elliott> IWC!
13:58:57 <elliott> Vorpal: What graphics card does your computer have, anyway?
14:01:15 <Ngevd> I like today's Freefall
14:02:00 <Phantom__Hoover> http://www.smbc-comics.com/index.php?db=comics&id=2429&utm_source=feedburner&utm_medium=feed&utm_campaign=Feed%3A+smbc-comics%2FPvLb+%28Saturday+Morning+Breakfast+Cereal+%28updated+daily%29%29
14:02:08 <Phantom__Hoover> Argh, stupid Google Reader URLs.
14:02:33 <Phantom__Hoover> Anyway, Zach, you realise that Dresden Codak did that joke like a year (~4 pages) ago.
14:02:56 <elliott> Phantom__Hoover: I can guarantee he did it worse.
14:03:06 <Phantom__Hoover> Yes, he did.
14:05:20 -!- pikhq has joined.
14:05:40 -!- pikhq_ has quit (Ping timeout: 258 seconds).
14:05:53 <Ngevd> Right when I joined this time, elliott said IWC
14:06:05 <Ngevd> Is this some way suggested to my fungot suggestion?
14:06:06 <fungot> Ngevd: it's a machine that looks like you!? how did you pick on a helpless amphibian! filthy medal! i won't forget this!
14:06:30 <elliott> It's related, and I await your payment.
14:06:32 <Phantom__Hoover> http://cdn.walyou.com/wp-content/uploads//2011/03/Pi-Clock-with-Radian-Measurements.jpg
14:06:34 <elliott> fizzie: So is iwcs in the bot yet?????????////
14:06:34 <Phantom__Hoover> worst
14:06:47 <elliott> Phantom__Hoover: What? They forgot to use tau.
14:06:51 <Ngevd> elliott, give me an address and I WILL GIVE YOU MY TWO CENTS MYSELF
14:06:58 <Ngevd> Euro cents.
14:07:02 <Phantom__Hoover> A real mathematician's clock would go anticlockwise and 2pi would be where pi/2 is.
14:07:07 <elliott> Ngevd: Hexham
14:07:23 <Ngevd> elliott, that narrows it down to SLIGHTLY MORE THAN I KNEW ALREADY
14:07:44 <elliott> That gave you new information?
14:07:58 <Ngevd> You could be on a day out
14:08:39 -!- CakeProphet has joined.
14:08:40 -!- CakeProphet has quit (Changing host).
14:08:40 -!- CakeProphet has joined.
14:08:50 <CakeProphet> :#>?
14:10:57 <fizzie> No I uh I umm busybusy whoops ->
14:11:19 <fizzie> Well okay this once.
14:11:28 <fizzie> Where did I put it?
14:13:57 <tswett> `quote kill
14:14:04 <HackEgo> 1) <Aftran> I used computational linguistics to kill her. \ 5) <Warrigal> GKennethR: he should be told that you should always ask someone before killing them. \ 44) <Deewiant> I spent the last minute or so killing myself repeatedly \ 76) <Warrigal> Invalid! Kill! Kill! <Aftran> I get that feeling too. \ 143) <fungot> ais523: killer bunnies can be harmed by domesticated canines only. \ 158) <fungot> pikhq: it was fragrant
14:14:13 -!- fungot has quit (Remote host closed the connection).
14:14:22 <tswett> `quote 158
14:14:25 <HackEgo> 158) <fungot> pikhq: it was fragrant with the scent of abomination. hear a speech declaring a holy war, is the man insane? some idiot missionary gets himself killed, some man writes some gibberish about the shape of a dragon, wonse?"
14:14:50 -!- fungot has joined.
14:14:56 <elliott> ^style
14:14:56 <fungot> Available: agora alice c64 ct darwin discworld europarl ff7 fisher fungot homestuck ic irc* iwcs jargon lovecraft nethack pa sms speeches ss wp youtube
14:14:59 <elliott> ^style iwcs
14:14:59 <fungot> Selected style: iwcs (Irregular Webcomic scripts)
14:15:08 <elliott> fizzie: It's "Irregular Webcomic!", exclamation mark and all. :p
14:15:10 <elliott> fungot: Babble.
14:15:10 <fungot> elliott: the more rules of law! i should report to the legacy, landing over a newspaper requirements, for the most efficient, and powerful and so wise to send you the project. take a look. hands!
14:15:14 <elliott> Ngevd: Enjoy.
14:15:16 <olsner> nice, 158 was a poetic fungot
14:15:17 <fungot> olsner: on the way, myth, god created the universe, a better universe! we choose only die fittest people, animals, a mad skeletal in some depictions, this transition can take place anywhere, and a killer taipan
14:15:28 <fizzie> I'll fix lattur.
14:15:48 <fizzie> "take a look. hands!"
14:15:50 <Ngevd> fungot ::::D
14:15:51 <fungot> Ngevd: hey, there's comics, just so you can return of the king, you are dedicating yourself, does the allosaurus have a policy on death? i can just walk through the door
14:16:03 <elliott> Oh god Ngevd is Vriska this has so much meaning I just don't know what it is yet.
14:16:22 <Ngevd> That my birthday's in Late October/November?
14:16:34 <olsner> `log Vriska
14:17:03 <HackEgo> 2011-06-02.txt:03:58:00: <Sgeo> Is it inappropriate to say <3< Vriska?
14:17:13 <elliott> olsner: Please don't remind us of past Sgeo|web.
14:17:15 * CakeProphet is a mixture of Karka and Nepeta depending on which zodiac you prefer.
14:17:19 <elliott> It's almost as bad as reminding us of present Sgeo|web.
14:17:34 <CakeProphet> *karkat
14:17:35 <Phantom__Hoover> olsner, unlikely to show much, given that elliott's Vriska-hate was mainly in /msgs to me.
14:17:37 <CakeProphet> in fact.
14:17:51 <elliott> Phantom__Hoover: Hey that only lasted for like a few weeks if you normalise it out because time dilation.
14:17:59 <Phantom__Hoover> Then elliott was all like "no vriska's amazing" for some reason and then I was confuse.
14:18:00 <elliott> I don't even know how long a week is any more.
14:18:04 <elliott> Phantom__Hoover: No I never said that either.
14:18:09 <elliott> You are MISREPRESENTING me.
14:18:11 * elliott is torn.
14:18:13 <elliott> Anyway esolangs.
14:18:21 <elliott> I am going to check the wiki and that guy will have a new language out.
14:18:30 <elliott> http://esoteric.voxelperfect.net/wiki/User:TomWhitney874
14:18:32 <elliott> What an amazing language?
14:18:34 <Ngevd> Brook is Turing Complete! <-- unproven statement
14:18:36 <CakeProphet> elliott: homoiconic heap based language? help.
14:18:41 <elliott> Quite a few thrilling perfumes are invigorating Christmas shoppers seeking for that excellent "for her" present. Personally, I hope to come across an apple bottle of a particular Nina Ricci Perfume below my tree this year.
14:18:56 <Phantom__Hoover> Perfume-based esolang.
14:19:11 <elliott> fungot: carbon.
14:19:11 <fungot> elliott: you are not evil, terrible things are happening. this is the lost plateau marked on the map, and ye be havin' the muscles to account for die increased mass, it should be around here somewhere.
14:19:12 <Ngevd> Could be done as a CA
14:19:17 <Ngevd> Hmm...
14:19:35 <CakeProphet> as far as I can tell it would probably work by arranging instructions on a heap of some kind, with associated labels. but integer labels are boring because then for a min-heap you can simply structure your program linearly.
14:19:51 <CakeProphet> that's no fun.
14:19:54 <Ngevd> I like how it goes from Pirate to German in 6 words
14:19:57 <Phantom__Hoover> Chemistry-based esolang.
14:19:58 <Ngevd> fungot
14:19:59 <fungot> Ngevd: what the...? did i put too much pressure on you? this is worse. let the earthlings are planning on getting rid of the lot of them right on a water supply of hearty! what news, bosun? shiver me timbers! smartly there, bucko me lad
14:20:20 <Phantom__Hoover> Actually, that's trivially TC for the same reason Gravity is.
14:21:23 <CakeProphet> hmm.
14:21:29 <Ngevd> I think a Chemistry based esolang would be similar to SpaceChem or Codex of Alchemical Engineering
14:21:38 <Phantom__Hoover> Eugh, no.
14:21:39 <Ngevd> Not every chemistry based esolang
14:21:41 <fizzie> When you MISREPRESENT, you also PERMIT SNEERS.
14:21:42 <Ngevd> But A
14:22:17 <Phantom__Hoover> Azimuthal quantum numbers *will* be involved.
14:22:33 <fizzie> SpaceChem was quite nicely Befungey for a game.
14:23:50 <Phantom__Hoover> Not enough azimuths.
14:25:12 <Deewiant> Hmm, aren't Funges "runtime-error free"
14:27:05 <Ngevd> Theoretically...?
14:38:17 -!- MSleep has joined.
14:40:14 -!- Taneb has joined.
14:42:04 -!- MDude has quit (Ping timeout: 245 seconds).
14:43:19 -!- Ngevd has quit (Ping timeout: 258 seconds).
14:43:57 -!- MSleep has changed nick to MDude.
14:44:15 -!- MDude has quit (Quit: later chat).
14:44:30 -!- MSleep has joined.
14:50:05 -!- pikhq has quit (Read error: Operation timed out).
14:50:20 -!- pikhq has joined.
14:57:09 -!- tiffany has joined.
16:02:11 -!- ais523 has joined.
16:08:32 <CakeProphet> Sometimes I just have to take a moment to be amazed when some people request Facebook friendship
16:09:12 <Phantom__Hoover> I have 111 friend requests. An awful lot of those people have not met me.
16:09:18 <CakeProphet> her political and religious views: Catholic and Republican Party favorite TV show: Degrassi
16:09:20 <Taneb> Only 111? :P
16:09:36 <CakeProphet> mine: Agnostic and Anarchism TV show: Dexter
16:09:40 <CakeProphet> TV SHOWS SAY A LOT ABOUT A PERSON.
16:09:47 <Taneb> 1850
16:10:20 <CakeProphet> I'm just wondering
16:10:25 <CakeProphet> what we could possibly have in common.
16:11:32 <Taneb> Dislike of Soviets?
16:12:12 <CakeProphet> I don't have a very strong opinion of Soviets
16:12:19 <CakeProphet> especially now that they don't technically exist.
16:12:58 <CakeProphet> it would be like asking "CakeProphet, what do you think about the Ottoman Turks?"
16:13:09 <Taneb> Grrr...
16:13:12 <Taneb> Ottomans...
16:14:41 <Phantom__Hoover> CakeProphet, he's an agnostic anarchist who liked Dexter. She's a Catholic Republican who likes Degrassi. They fight crime.
16:15:25 <Phantom__Hoover> Taneb, so you have thirty-seven times more people requesting your friendship than it is physically possible to know?
16:15:30 <Taneb> Yes
16:16:38 <Phantom__Hoover> Oh, wait, the standard value of Dunbar's number is 150.
16:16:48 <Phantom__Hoover> > 1850 / 150
16:16:49 <lambdabot> 12.333333333333334
16:16:57 <Taneb> > 1857 / 150
16:16:58 <lambdabot> 12.38
16:17:08 <Taneb> I make friends quickly
16:17:45 <Taneb> > (1857+178-146) / 150
16:17:46 <lambdabot> 12.593333333333334
16:17:53 <Phantom__Hoover> FSVO 'friends'.
16:17:58 <Taneb> Two profiles, minus mutaul friends
16:18:06 <Taneb> s/au/ua/
16:19:43 <CakeProphet> mu tau l
16:22:28 <CakeProphet> Phantom__Hoover: anarchist by principle. dirty capitalist pig by practice. I suppose we share that in common.
16:22:43 <CakeProphet> at least I'm not a filthy Republican whore. :)
16:23:55 * CakeProphet should add somewhere on his profile: "HAS STRONG OPINIONS ABOUT THE GUPTA DYNASTY OF ANCIENT INDIA:
16:24:01 <CakeProphet> "
16:28:05 <CakeProphet> "IN PARTICULAR, THE CONCEPT OF ZERO WHICH ORIGINATES FROM THIS ERA IS COMPLETELY /BOGUS/ AND CORRUPTS OUR MINDS TO THIS DAY."
16:28:19 <Phantom__Hoover> I tried to set my location to 'Carcosa' but it didn't let me.
16:31:04 <CakeProphet> Phantom__Hoover: it's because you're not fictional enough.
16:33:36 <CakeProphet> it would be creepy if Facebook kept a log of all of your login locations so it could determine where you live.
16:34:41 <CakeProphet> you know what would be more creepy: if it displayed a public profile of who you are, things you like, random thoughts you've had, your work history, and lots of pictures of you.
16:34:46 <CakeProphet> oh wait...
16:35:01 <Phantom__Hoover> Why is that creepy?
16:35:19 <Phantom__Hoover> Ooh, they added more relationship options.
16:35:38 <Phantom__Hoover> Eh, I'll stick with 'Widowed'.
16:36:23 <CakeProphet> my argument goes something along the lines of "big brother dude. trapping personalities in cages, man"
16:36:37 <CakeProphet> Phantom__Hoover: Widowed? -_;;
16:38:03 <Phantom__Hoover> I... she... elephants...
16:38:27 <Taneb> "And that's why I killed her..."
16:38:57 -!- Taneb has quit (Quit: Goodbye).
16:39:12 <quintopia> CakeProphet: is there a difference between the modern concept of zero and theirs or are you just poe's lawing?
16:39:48 <CakeProphet> quintopia: probably that last one. actually I don't know. I think it's pretty similar though.
16:40:12 <CakeProphet> http://en.wikipedia.org/wiki/0_(number)#History_of_zero
16:40:14 <CakeProphet> time to find out.
16:40:54 <CakeProphet> their treatment of division by zero is different.
16:41:06 <CakeProphet> http://en.wikipedia.org/wiki/0_(number)#Rules_of_Brahmagupta
16:43:43 <CakeProphet> hmmm that's a later work actually
16:43:50 <CakeProphet> http://en.wikipedia.org/wiki/Aryabhata#Place_value_system_and_zero
16:44:00 <CakeProphet> this is the earliest use of zero in that society.
16:44:34 <CakeProphet> but I would argue that previous civilizations had a "concept of zero"
16:45:18 <CakeProphet> Records show that the ancient Greeks seemed unsure about the status of zero as a number. They asked themselves, "How can nothing be something?"
16:45:28 <CakeProphet> silly greeks. so easily confused by such simple things.
16:52:19 <Phantom__Hoover> They couldn't even build a steam engine when they'd already invented one!¬
16:54:38 <CakeProphet> so now I'm trying to solve Goldbach's Conjecture.
16:54:58 <CakeProphet> because obviously I can solve it when it's been unsolved by brilliant mathematicians for centuries.
16:56:22 <coppro> yeah
16:59:19 <CakeProphet> Phantom__Hoover: "Most early Greeks did not even consider 1 to be a number" and even inventing one took them some time apparently!
17:01:29 <CakeProphet> CakeProphet's proof: "well of course you've got a shit ton of primes as you get to larger numbers, so you can probably just find a big one and a small one and add them together and get your number."
17:01:37 <CakeProphet> QED
17:02:23 <CakeProphet> I think this is approximately how the statistical approach works.
17:08:05 -!- nys has joined.
17:23:01 -!- monqy has joined.
17:32:34 -!- Taneb has joined.
17:32:36 <Taneb> Hello!
17:33:50 -!- MSleep has quit (Ping timeout: 260 seconds).
17:34:58 -!- Taneb|Hovercraft has joined.
17:35:26 <ais523> hi
17:35:31 <Taneb|Hovercraft> Hello
17:35:49 <Taneb|Hovercraft> I think I could probably make people accounts on the mezzawiki
17:36:18 <ais523> I don't particularly have a need for one, though
17:36:41 <Phantom__Hoover> I will have so many accounts.
17:37:27 -!- Ngevd has joined.
17:37:44 <Ngevd> Right, I'm now sitting somewhere with a marginally better wifi signal
17:38:17 <Ngevd> And am in the process of killing off all my clones
17:38:57 -!- Taneb has quit (Ping timeout: 248 seconds).
17:40:21 -!- Taneb|Hovercraft has quit (Ping timeout: 258 seconds).
17:42:11 <Phantom__Hoover> I've forgotten the name of the The Sky at Night guy.
17:42:28 <elliott> roger... moore?
17:42:33 <Phantom__Hoover> Patrick.
17:42:34 <elliott> no
17:42:36 <elliott> that's james bond
17:42:42 <elliott> same
17:42:43 <elliott> person?
17:44:30 <Phantom__Hoover> Oh man, the BBC's response to him saying sexist remarks was basically "ah, c'mon, who cares, he's like a billion".
17:44:44 <Ngevd> Yup, I can make accounts for mezzawiki
17:44:50 <Phantom__Hoover> That... that's some serious talent.
17:45:32 <elliott> Phantom__Hoover: Isn't he basically bigoted against everything and way far to the right :P
17:45:41 <elliott> In 1981 he performed a solo xylophone rendition of the Sex Pistols' "Anarchy in the UK" in a Royal Variety Performance.[1]
17:45:45 <elliott> Phantom__Hoover: Sorry I must forgive him
17:45:51 <Phantom__Hoover> Yeah, but c'mon, who cares, he's like a billion.
17:46:07 <Phantom__Hoover> Maybe that's why he's an astronomer: when he was young it was current events.
17:46:48 <Deewiant> http://www.weebls-stuff.com/songs/patrick+moore/
17:46:48 <elliott> Hmm, it looks like he's not all that bad apart from being a racist, sexist conservative.
17:46:58 <elliott> Most billions are, like, at LEAST dinosaurs.
17:48:11 <Phantom__Hoover> Oh man, Patrick Moore doing the xylophone (well, marimba) part in Spercussion Jungle.
17:48:16 <Phantom__Hoover> MY LIFE WILL NEVER BE COMPLETE
17:48:27 <elliott> Deewiant: This looks as old as the man himself
17:48:59 <Phantom__Hoover> "Along with many other celebrities, Patrick Moore has been the subject of crank-calls by comedian Jon Culshaw, as part of the BBC Radio 4 show Dead Ringers. On this occasion, Jon Culshaw impersonated Tom Baker's role of the Fourth Doctor (Doctor Who), supposedly consulting Moore on various astronomy-related matters. Moore, being aware of what was going on, confused Culshaw by out-playing him in his use of technobabble,
17:49:00 <Phantom__Hoover> resulting in a rare pause from the comedian as he tried to think of a response and even broke character by laughing a little after being 'gazumped'."
17:49:00 <Phantom__Hoover> OK
17:49:06 <Phantom__Hoover> best
17:49:16 <Phantom__Hoover> billionarian.
17:50:04 <Ngevd> Anyone want a mezzawiki account?
17:50:09 <Ngevd> Going cheap!
17:50:12 <Phantom__Hoover> Yes, I'll have one.
17:50:27 <Ngevd> Promise you won't spam!
17:50:41 <Phantom__Hoover> I promise.
17:50:55 <Ngevd> What do you want the username to be?
17:51:04 <Phantom__Hoover> Phantom Hoover.
17:54:29 <Ngevd> Remember, Phantom__Hoover, if you spam at ALL, I will BLOCK YOU.
17:54:42 <Phantom__Hoover> where wiki
17:54:42 <elliott> Ngevd: I'd like one called ~}wM��*���E�z, please.
17:55:01 <Ngevd> Phantom__Hoover, mezzacotta.net/wiki
17:55:15 <Ngevd> elliott...
17:55:16 <Ngevd> No.
17:55:24 <elliott> Ah, let me correct you Ngevd
17:55:27 <elliott> Yes.
17:55:31 <elliott> ^style
17:55:31 <fungot> Available: agora alice c64 ct darwin discworld europarl ff7 fisher fungot homestuck ic irc iwcs* jargon lovecraft nethack pa sms speeches ss wp youtube
17:55:34 <elliott> ^style iwcs
17:55:34 <fungot> Selected style: iwcs (Irregular Webcomic scripts)
17:55:37 <elliott> Ngevd: SEE WHAT I DID FOR YOU???
17:55:39 <elliott> fungot: Kill Ngevd.
17:55:39 <fungot> elliott: i know! i'll assemble a prize, finance minister, the new tech is like, with its execrable overburdening of the dialogue, multiple complex... is he american. but i adopted a new name, i need a screwdriver
17:59:32 <Deewiant> Phantom__Hoover: That crank-call is at https://www.youtube.com/watch?v=vMOl_Jh8O_E
17:59:47 <Phantom__Hoover> OMG
18:12:00 -!- tiffany has quit (Remote host closed the connection).
18:13:08 <elliott> NO MY HOPES AND DREAMS: http://i.imgur.com/LxsmK.jpg
18:14:07 <Phantom__Hoover> XD
18:14:27 -!- tiffany has joined.
18:14:47 <elliott> I wonder if XP is ubiquitous enough to make Bliss have iconic status yet.
18:16:35 <Phantom__Hoover> Well, if /I/ can recognise it...
18:17:25 <elliott> "According to O'Rear, the photograph was not digitally enhanced or manipulated in any way."
18:17:31 <elliott> Doooooon't belieeeeeeeve youuuuuuuuuu
18:20:23 <pikhq> elliott: I wouldn't even hesitate to call Bliss iconic.
18:21:03 <elliott> It's kind of insane to think that a fairly crappy operating system release that looks like Fisher Price out of the box is now part of our ongoing cultural heritage :P
18:21:46 <monqy> is clippy iconic
18:21:48 <elliott> Note to self: Relevant sprunge link in /query logs of elliott.
18:21:55 <elliott> monqy: More like... BADconic........
18:22:14 <elliott> <elliott> Note to self: Relevant sprunge link in /query logs of elliott.
18:22:16 <elliott> (This is how I do branches.)
18:22:49 <pikhq> monqy: No, you don't get "iconic" just by people wanting to summon death.
18:23:13 <elliott> Hmm
18:23:18 <elliott> `run perl 'print 0 while 1'
18:23:21 <HackEgo> Can't open perl script "print 0 while 1": No such file or directory
18:23:22 <elliott> `run perl -e 'print 0 while 1'
18:23:24 <HackEgo> 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
18:23:32 <elliott> `run cat /bin/cat
18:23:34 <HackEgo> ​ELF...
18:23:38 <elliott> `run cat /bin/ls
18:23:40 <HackEgo> ​ELF...
18:23:46 <elliott> What's up with that
18:23:48 <elliott> Oh, nul bytes
18:23:52 <elliott> I guess
18:24:10 <elliott> Yaeh
18:24:12 <elliott> Yeah
18:24:23 <monqy> house elf
18:24:38 <monqy> magic numbers are weird
18:25:26 <pikhq> TOTALMAGIC\0mimetype-goes-here\0
18:25:28 <pikhq> :P
18:29:16 <elliott> Gregor:
18:29:17 <elliott> 2. 1.9.1: guessmime, revert behavior restored
18:29:17 <elliott> revert now requires a specific revision to revert a merge, restoring the pre-1.9 behavior
18:29:17 <elliott> hgweb now returns raw files as type application/binary for security, see the web.guessmime config setting to restore the old behavior
18:29:34 <elliott> Gregor: Set web.guessmime = True on the HackEgo fs repository, and voila
18:29:42 <elliott> Pastes no longer make me want to die
18:29:51 <elliott> Gregor: Although...
18:29:52 <elliott> [[
18:29:54 <elliott> Before: hgweb made it possible to download file content with a content type
18:29:54 <elliott> detected from the file extension. It would serve .html files as text/html and
18:29:54 <elliott> could thus cause XSS vulnerabilities if the web site had any kind of session
18:29:54 <elliott> authorization and the repository content wasn't fully trusted.
18:29:54 <elliott> ]]
18:30:05 <elliott> So, uhh... your call :P
18:31:42 -!- Taneb has joined.
18:34:47 -!- Ngevd has quit (Ping timeout: 258 seconds).
18:35:52 -!- hagb4rd has quit (Quit: hagb4rd).
18:37:40 <Gregor> elliott: Security shmeshmurity.
18:37:40 <lambdabot> Gregor: You have 9 new messages. '/msg lambdabot @messages' to read them.
18:37:42 <Gregor> elliott: Fixt.
18:38:07 <elliott> Gregor: Those messages detail a further improvement to the Transactional HackEgo design I thought of :P
18:38:15 <elliott> Which is clearly not premature, seeing as you haven't even tested version 1 yet.
18:38:57 <Gregor> I'm not sure how that would work thru UMLBox.
18:39:04 <elliott> http://codu.org/projects/hackbot/fshg/index.cgi/rev/7a6bfed30dd8 It didn't work :(
18:39:14 <elliott> Gregor: strace would be run inside the jail, inside the limits
18:40:20 <Gregor> `run echo '<!doctype html><html><head><title>lolhtml></title></head><body><script type="text/javascript">alert("Wow this is a pain");</script></body></html>' | paste
18:40:21 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.29287
18:40:27 <Gregor> Hm
18:40:30 <Gregor> Still text.
18:40:35 <Gregor> Well that's OHHHH extension.
18:40:40 <elliott> Yeah, maybe it wants the HTML file or something.
18:40:41 <Gregor> `run echo '<!doctype html><html><head><title>lolhtml></title></head><body><script type="text/javascript">alert("Wow this is a pain");</script></body></html>' > foo.html && url foo.html
18:40:43 <elliott> Yeah extension.
18:40:44 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/foo.html
18:40:49 <Gregor> Yup
18:40:50 <elliott> Neat
18:40:53 <elliott> Gregor: BTW you can fix it trivially
18:41:14 <elliott> Gregor: Patch hg, grep /guessmime/, add a check for text/html that bails out (I saw a diff that added it while looking that up :P)
18:41:17 <elliott> That's kinda ugly though.
18:41:28 <elliott> At least you don't have to modify global hg, just the hgweb.
18:41:41 <elliott> `rm foo.html
18:41:43 <HackEgo> No output.
18:43:11 <elliott> Gregor: Anyway, unless codu.org has sensitive cookies it doesn't matter much.
18:43:26 <Gregor> Security is for pussies.
18:44:10 <elliott> Gregor: But TRANSACTIONS are for ACTIONS!
18:44:26 <elliott> If that thing runs first time I will literally ascend to the rank of Coder God btw
18:45:04 -!- zzo38 has joined.
18:45:29 <zzo38> Does $x^2 + y^3 = z^4$ have solutions in prime numbers?
18:46:50 <CakeProphet> :t (-<<)
18:46:50 <Deewiant> Mathematica says: no
18:46:51 <lambdabot> Not in scope: `-<<'
18:47:00 <CakeProphet> :t (>>-)
18:47:01 <lambdabot> forall (m :: * -> *) a b. (MonadLogic m) => m a -> (a -> m b) -> m b
18:50:05 -!- Taneb|Hovercraft has joined.
18:50:28 <zzo38> Do you know a proof that there are no solutions?
18:51:20 <elliott> Mathematica said so
18:52:08 <zzo38> That isn't a very good proof.
18:52:46 <elliott> Cite the source code to Mathematica :-)
18:53:25 <CakeProphet> zzo38: x^2 should odd, y^3 should be odd, y^4 should be odd. the addition of two odd numbers produces an even number.
18:53:28 <CakeProphet> er
18:53:31 <Deewiant> In[1]:= Reduce[x^2+y^3==z^4&&PrimeQ[x],{x,y,z},Integers]
18:53:31 <Deewiant> Out[1]= False
18:53:32 <CakeProphet> z^4
18:53:32 <zzo38> Do you even have the source code to Mathematica?
18:53:41 <Deewiant> That's close enough
18:54:02 <zzo38> CakeProphet: Yes that is good.
18:54:06 <Taneb|Hovercraft> One of them could be 2
18:54:20 -!- Taneb has quit (Ping timeout: 258 seconds).
18:54:26 <CakeProphet> er
18:54:27 <CakeProphet> yes
18:54:31 <CakeProphet> there's always that.
18:54:46 <CakeProphet> then just special case 2
18:54:48 <zzo38> O, yes, that
18:54:55 <elliott> Deewiant: You need FullReduce (I think that's the one that does FLT)
18:55:01 <zzo38> Can you try the case where it is 2?
18:55:13 <Deewiant> elliott: No such thing
18:55:32 <elliott> Deewiant: SuperReduce? MegaReduce? It's something like that :P
18:55:49 <CakeProphet> 2: the oddest prime of all.
18:55:50 <Deewiant> elliott: Are you thinking of FullSimplify?
18:55:55 <elliott> Deewiant: Possibly
18:57:36 <Deewiant> It's just a better simplifier, I'm pretty sure Reduce does the most that anything does here
18:57:37 <zzo38> If z=2 then it will be adding to 16 and you can try the cases. But what happened if x=2 or if y=2? Then it is about powers of 2
18:58:42 <Taneb|Hovercraft> SUBTRACTION IS ANNOYING
18:58:49 <Taneb|Hovercraft> if x=2, y>z
19:02:49 <Taneb|Hovercraft> if y=2, x^2>z
19:04:22 <elliott> `echo TRANJSNAKTACTIONALS!
19:04:24 <HackEgo> TRANJSNAKTACTIONALS!
19:07:06 -!- sebbu3 has joined.
19:07:06 -!- sebbu3 has quit (Changing host).
19:07:06 -!- sebbu3 has joined.
19:08:52 -!- sebbu2 has quit (Ping timeout: 260 seconds).
19:10:08 -!- Taneb|Hovercraft has quit (Ping timeout: 240 seconds).
19:11:04 <elliott> Gregor: Huh, I didn't know hg hardlinked .hg on clone
19:11:10 <elliott> I wonder whytf HackEgo is so slow then...
19:11:29 <Gregor> 1) It has to copy the actual working directory. 2) Sandboxing lol
19:12:28 <elliott> (1) Well, yeah, the only way to avoid that is my revised design, which I will refer to as Transactional Headache. (2) Mehhh, UMLBox isn't that slow?
19:12:58 <elliott> I think the revised design will be pretty superfast, since it's literally zero-copy, but I guess it should wait until transactions are an actual thing first :P
19:13:05 <elliott> Also it could interact terribly with flock and all that crap, but who cares just don't use thos.
19:13:06 <elliott> those.
19:15:37 -!- sebbu has joined.
19:15:37 -!- sebbu has quit (Changing host).
19:15:37 -!- sebbu has joined.
19:15:41 <CakeProphet> zzo38: the cases where you have one x or y = 2 and z = 2 are false because even + odd != even
19:17:05 <CakeProphet> also 2 + 2 != odd so that's 3 out of 7 cases where you have a 2 somewhere.
19:17:40 <CakeProphet> parity is perhaps not the most elegant proof here. :p
19:17:59 -!- sebbu3 has quit (Read error: Connection reset by peer).
19:19:04 <CakeProphet> > 2^2 + 2^3 == 2^4
19:19:06 <lambdabot> False
19:19:11 <CakeProphet> oh look that's 4 out of 7 now.
19:23:46 <CakeProphet> that leaves... 4 + odd^3 = odd^4; odd^2 + 8 = odd^4; and odd^2 + odd^3 = 16
19:23:48 -!- hagb4rd has joined.
19:24:27 <CakeProphet> best proof method ever.
19:24:39 <elliott> This is like the proof of the four-colour theorem. Or was it the Kepler conjecture.
19:24:51 <elliott> Just keep brute-forcing special cases until there aren't any cases left.
19:27:05 -!- MSleep has joined.
19:27:22 <Phantom__Hoover> That's 4-colour.
19:27:43 <CakeProphet> elliott: I'm all about those special cases.
19:27:56 <CakeProphet> monqy: THE WORLD IS TOTALLY FULL OF SPECIAL CASES.
19:28:17 <CakeProphet> even in methamethics
19:28:27 <monqy> this is why i hate the world
19:29:06 <CakeProphet> monqy: if you take all of the cases
19:29:12 <CakeProphet> usually the special cases are larger in number.
19:29:15 <CakeProphet> than the general cases.
19:29:19 <CakeProphet> ergo, something significant.
19:29:33 -!- sebbu2 has joined.
19:29:33 -!- sebbu2 has quit (Changing host).
19:29:33 -!- sebbu2 has joined.
19:30:05 <monqy> hate
19:30:37 <CakeProphet> monqy: (note: complete bullshit)
19:31:38 <CakeProphet> anyways I'm almost positive that adding 4 to the cube of a prime number will not yield the 4th power
19:31:45 <CakeProphet> but I don't really know how to express that in proof form.
19:32:24 -!- ais523 has changed nick to ais523\unfoog.
19:32:26 <CakeProphet> same with adding 8 to the square of a prime to get its 4th power.
19:32:54 -!- sebbu has quit (Ping timeout: 260 seconds).
19:33:04 <Phantom__Hoover> > 37^2 + 8 - 37^4
19:33:04 <lambdabot> -1872784
19:33:10 <Phantom__Hoover> Q.E.D.
19:33:19 <CakeProphet> the odd^2 + odd^3 != 16 case can be bruteforced.
19:33:30 <monqy> what are you even doing
19:33:34 <CakeProphet> monqy: MATHEMATICS
19:33:50 <Phantom__Hoover> He's trying his hand at number theory despite barely being able to grasp calculus.
19:34:01 <CakeProphet> 13:45 < zzo38> Does $x^2 + y^3 = z^4$ have solutions in prime numbers?
19:34:18 <CakeProphet> Phantom__Hoover: are you sure you're not confusing me with itidus?
19:34:25 <elliott> `ps
19:34:26 <elliott> `ps
19:34:26 <elliott> `ps
19:34:26 <elliott> `ps
19:34:26 <elliott> `ps
19:34:26 <elliott> `ps
19:34:28 <elliott> `ps
19:34:30 <elliott> `ps
19:34:31 <CakeProphet> elliott: ps
19:34:32 <elliott> `ps
19:34:32 <monqy> ps
19:34:34 <elliott> `ps
19:34:36 <elliott> sorry, had to cause a clash
19:34:36 <monqy> CakeProphet: hi
19:34:38 <monqy> elliott: hi
19:34:38 <HackEgo> PID TTY TIME CMD \ 272 ? 00:00:00 init \ 274 ? 00:00:00 sh \ 276 ? 00:00:00 ps \ 277 ? 00:00:00 cat
19:34:38 <HackEgo> PID TTY TIME CMD \ 272 ? 00:00:00 init \ 274 ? 00:00:00 sh \ 276 ? 00:00:00 ps \ 277 ? 00:00:00 cat
19:34:43 <monqy> HackEgo: hi
19:34:46 <elliott> oh RIHte Ghte umlboxe
19:34:46 <HackEgo> PID TTY TIME CMD \ 272 ? 00:00:00 init \ 274 ? 00:00:00 sh \ 276 ? 00:00:00 ps \ 277 ? 00:00:00 cat
19:34:50 <HackEgo> PID TTY TIME CMD \ 272 ? 00:00:00 init \ 274 ? 00:00:00 sh \ 276 ? 00:00:00 ps \ 277 ? 00:00:00 cat
19:35:00 <elliott> oop. se
19:35:00 <ais523\unfoog> cat?
19:35:03 <HackEgo> PID TTY TIME CMD \ 272 ? 00:00:00 init \ 274 ? 00:00:00 sh \ 276 ? 00:00:00 ps \ 277 ? 00:00:00 cat
19:35:04 <HackEgo> PID TTY TIME CMD \ 272 ? 00:00:00 init \ 274 ? 00:00:00 sh \ 276 ? 00:00:00 ps \ 277 ? 00:00:00 cat
19:35:04 <HackEgo> PID TTY TIME CMD \ 272 ? 00:00:00 init \ 274 ? 00:00:00 sh \ 276 ? 00:00:00 ps \ 277 ? 00:00:00 cat
19:35:04 <HackEgo> PID TTY TIME CMD \ 272 ? 00:00:00 init \ 274 ? 00:00:00 sh \ 276 ? 00:00:00 ps \ 277 ? 00:00:00 cat
19:35:04 <HackEgo> PID TTY TIME CMD \ 272 ? 00:00:00 init \ 274 ? 00:00:00 sh \ 276 ? 00:00:00 ps \ 277 ? 00:00:00 cat
19:35:04 <HackEgo> PID TTY TIME CMD \ 272 ? 00:00:00 init \ 274 ? 00:00:00 sh \ 276 ? 00:00:00 ps \ 277 ? 00:00:00 cat
19:35:19 <elliott> ais523\unfoog: good question
19:35:22 <CakeProphet> elliott: get a room.
19:35:43 <elliott> ais523\unfoog: hmm, there isn't any cat executed
19:35:46 <elliott> in the current sourec
19:35:50 <elliott> so I'm not sure what's up there
19:36:08 <ais523\unfoog> `run ps
19:36:10 <HackEgo> PID TTY TIME CMD \ 272 ? 00:00:00 init \ 274 ? 00:00:00 sh \ 276 ? 00:00:00 ps \ 277 ? 00:00:00 cat
19:36:36 <ais523\unfoog> I was wondering ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
19:36:49 <ais523\unfoog> vggggggggggggggggggrrrrrrfffrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr
19:37:01 <ais523\unfoog> *if that would make a difference
19:37:25 <elliott> I was wondering that ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
19:37:27 <elliott> vggggggggggggggggggrrrrrrfffrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr too.
19:37:31 <elliott> s/that //
19:37:32 <zzo38> Do you know about Zen and do you know about motorcycle maintenance?
19:38:03 <elliott> Gregor: Does it spam you with mail every time I add new commits to that pull request?
19:38:53 <monqy> zzo38: are they one and the same
19:39:21 <zzo38> Do I need to do anything with the .cabal file or .lhs file to make the document link work on the webpage?
19:39:47 <Gregor> elliott: Doesn't seem to.
19:40:00 <elliott> Gregor: Darn-- I mean oh good.
19:40:01 <ais523\unfoog> let rec zeros = 0 :: zeros
19:40:05 <elliott> > fix (0:)
19:40:06 <ais523\unfoog> umm, that actually works in OCaml?
19:40:06 <lambdabot> [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,...
19:40:11 <elliott> ais523\unfoog: I doubt it...
19:40:11 <ais523\unfoog> I know it works in Haskell
19:40:17 <CakeProphet> monqy: Phantom__Hoover is the primary detractor of my contributions to the field of parity relations between powers of primes in infinite cyclic abelian groups and commutative monoids
19:40:20 <elliott> zzo38: What link
19:40:21 <ais523\unfoog> but OCaml is strict, and yet I've just seen it in someone else's OCaml code
19:40:28 <elliott> ais523\unfoog: A student's?
19:40:33 <ais523\unfoog> no, on a blog
19:40:37 <elliott> Link?
19:40:44 <ais523\unfoog> http://alaska-kamtchatka.blogspot.com/2011/11/modular-semantics-for-brainfuck.html
19:41:08 <zzo38> elliott: The Hackage webpage for a Haskell library.
19:41:14 <elliott> http://old.nabble.com/lazy-infinite-lists-td22922684.html
19:41:18 <elliott> ais523\unfoog: I doubt it's valid
19:41:25 <elliott> zzo38: What's a "document link"
19:41:29 <ais523\unfoog> # let rec zeros = 0 :: zeros in match zeros with | a::b::t -> (a,b) | _ -> (9,9) ;;
19:41:30 <ais523\unfoog> - : int * int = (0, 0)
19:41:33 <ais523\unfoog> err, what?
19:41:47 <zzo38> Many packages you can select the name of the module to view the list of functions and types in them. But mine doesn't work, and a few other that aren't mine also don't work.
19:42:03 <ais523\unfoog> (the second case is to avoid the warning for not being exhaustive that'd have made it harder to copy/paste otherwise)
19:42:05 <elliott> ais523\unfoog: I have a solution to your confusion! Don't use OCaml.
19:42:12 <ais523\unfoog> but I like OCaml
19:42:20 <elliott> Stop liking it, then :)
19:42:29 <monqy> CakeProphet: oh no
19:42:31 <elliott> It IS a workable solution, you have to admit.;
19:42:34 <elliott> s/;//
19:42:42 <ais523\unfoog> # let rec zeros = 0 :: zeros ;;
19:42:43 <zzo38> elliott: Did you understand what I meant now?
19:42:44 <ais523\unfoog> val zeros : int list =
19:42:50 <ais523\unfoog> then it prints about 12 to 15 lines of zeros and a ...
19:43:01 <elliott> zzo38: I already told you it takes up to 6 hours for Haddock documentation to be generated
19:43:15 <zzo38> It has already been more than 6 hours since I send that package.
19:43:18 <elliott> and it'll fail if it doesn't build on the hackage machine (a build failure log will be linked from the package page)
19:43:28 <elliott> zzo38: since you sent the latest version? anyway, it has to rebuild the documentation for every single package
19:43:36 <elliott> so it almost certainly takes at least an hour to run, and probably much longer
19:43:37 <zzo38> I don't see any build failure log either
19:43:42 <elliott> give it a day or so and check again
19:44:18 <zzo38> But it works on my computer!
19:44:39 <zzo38> So why doesn't it work on their computer?
19:45:11 <elliott> zzo38: did I say it didn't?
19:45:20 <elliott> like I said, every 6 hours it rebuilds the documentation of every single package
19:45:24 <elliott> there are a few thousand
19:45:29 <elliott> so it will take a while for it to reach your package
19:46:16 <ais523\unfoog> # type 'a l = Cons of ('a * 'a l) | Nil ;;
19:46:17 <ais523\unfoog> type 'a l = Cons of ('a * 'a l) | Nil
19:46:18 <ais523\unfoog> # let rec zeros = Cons (0, zeros) ;;
19:46:20 <ais523\unfoog> val zeros : int l =
19:46:20 <zzo38> O, that is how it works? Can't they fix it so that it only rebuilds when it needs to do so, allowing their computer to run more efficiently?
19:46:28 <ais523\unfoog> elliott: and then it outputs the start of the structure
19:46:40 <ais523\unfoog> so I /guess/ type constructors in OCaml are lazy even if the rest of the language isn't, or something like that
19:46:54 <ais523\unfoog> I was wondering if it was specific to lists, but it seems not to be, as even defining lists by hand it works
19:46:57 <elliott> zzo38: there's no way to tell what needs to be rebuilt without reverse dependency information, which hackage 1.0 doesn't generate
19:47:04 <elliott> ais523\unfoog: I bet let rec just adds an implicit ()
19:47:12 <elliott> and, umm, lets it type like that anyway
19:47:20 <elliott> and inserts () at non-RHS call points
19:47:22 <ais523\unfoog> elliott: then executing it would take forever
19:47:23 <elliott> or
19:47:24 <elliott> something
19:47:26 <elliott> ais523\unfoog: no
19:47:31 <elliott> it doesn't insert the () on the RHS of the let rec
19:47:35 <elliott> it just unsafeCoerces it :P
19:47:38 <elliott> totally plausible theory!
19:47:38 <ais523\unfoog> elliott: that /is/ being lazy
19:47:54 <ais523\unfoog> you've just basically defined lazy lambda
19:47:55 <elliott> ais523\unfoog: except not type safe
19:47:59 <elliott> and impossible
19:48:27 <Sgeo|web> .
19:48:38 <ais523\unfoog> # let rec test = test ;;
19:48:40 <ais523\unfoog> Error: This kind of expression is not allowed as right-hand side of `let rec'
19:48:42 <zzo38> Another possibility would be to change the orders so that packages that have neither documentation nor build fail logs will be given priority. And then their priority is removed after it tries once, whether it fail or succeed.
19:48:48 <ais523\unfoog> OK, that just made me even more confused
19:49:03 <elliott> Sgeo|web: hi
19:49:13 <ais523\unfoog> # let rec test () = test () ;;
19:49:14 <ais523\unfoog> val test : unit -> 'a = <fun>
19:49:15 <Sgeo|web> Hi
19:49:17 <elliott> zzo38: or they could just rewrite hackage to not suck, which is what hackage 2.0 is :P
19:49:30 <elliott> i dunno when they're planning to finish it though, i guess next year
19:49:36 <ais523\unfoog> unit -> 'a is /always/ bottom, right (exception or infinite loop)?
19:49:48 <elliott> ais523\unfoog: it's not always bottom
19:49:50 <Sgeo|web> Is ais523\unfoog learning OCaml?
19:49:53 <elliott> it's either bottom or const bottom
19:50:02 <elliott> oh, hmm
19:50:05 <ais523\unfoog> it can't be const bottom
19:50:06 <elliott> ocaml doesn't really have bottoms like that
19:50:10 <elliott> ais523\unfoog: yes it can
19:50:12 <elliott> it can't be bottom, though
19:50:13 <ais523\unfoog> because 'a might not be a function type
19:50:21 <elliott> ais523\unfoog: your definition of "it" is stupid
19:50:27 <ais523\unfoog> right, by "it" I meant the return value
19:50:30 <elliott> you're quoting a type, and then using "it" to mean a value of a different type P:
19:50:31 -!- sebbu has joined.
19:50:31 <elliott> :P
19:50:33 -!- sebbu has quit (Changing host).
19:50:33 -!- sebbu has joined.
19:50:37 <elliott> which I guess makes some sense in a strict language
19:50:45 <elliott> but definitely not in a lazy one, since you have proper _|_s
19:50:47 <elliott> Sgeo|web: he already knows ocaml
19:51:00 <ais523\unfoog> Sgeo|web: I'm /teaching/ OCaml
19:51:08 <ais523\unfoog> but atm it's acting suspiciously like Haskell when it shouldn't be
19:51:11 <ais523\unfoog> so I'm experimenting
19:51:21 <elliott> my fav. ocaml feature is -rectypes
19:51:29 <ais523\unfoog> what does that do?
19:51:34 <elliott> allows recursive types
19:51:53 <ais523\unfoog> # let rec zeros() = 0 :: zeros() in zeros() ;;
19:51:55 <ais523\unfoog> Stack overflow during evaluation (looping recursion?).
19:52:13 <ais523\unfoog> conclusion: let rec is specialcased to lazify recursion when it's defining a non-function type
19:52:17 <zzo38> Maybe they should still have priorities though
19:52:31 <elliott> zzo38: hackagedb 2.0 already works, so i doubt anyone wants to add new things to 1.0
19:52:31 <ais523\unfoog> that's consistent with all the experiments so far, I think
19:52:38 <elliott> ais523\unfoog: but it /can't/, they'd have to build their runtime representation around that
19:52:45 <elliott> ais523\unfoog: and incur all the costs of laziness at every call site without the benefits
19:53:20 -!- sebbu2 has quit (Ping timeout: 240 seconds).
19:53:28 <ais523\unfoog> elliott: well, the logical representation of an immutable infinite repeating lazy list is to loop the list round to point at /itself/
19:53:39 <ais523\unfoog> and I know cyclic structures can exist in OCaml
19:53:44 <ais523\unfoog> perhaps that's the syntax for constructing them
19:54:09 <elliott> ais523\unfoog: a cyclic structure makes a really awful brainfuck tape, if you mutate it
19:54:20 <ais523\unfoog> right, indeed
19:54:33 <ais523\unfoog> but the article there is using lists, not arrays
19:54:35 <Deewiant> Did Ocaml not have polymorphic recursion or was that only SML?
19:54:42 <ais523\unfoog> and the lists contain integers, not integer references
19:54:46 <ais523\unfoog> so it's immutable by definition
19:54:51 <ais523\unfoog> Deewiant: "did"?
19:54:51 <CakeProphet> @src cycle
19:54:51 <lambdabot> cycle [] = undefined
19:54:51 <lambdabot> cycle xs = xs' where xs' = xs ++ xs'
19:55:00 <ais523\unfoog> also, what do you mean by polymorphic recursion?
19:55:14 <ais523\unfoog> you can certainly write polymorphic recursive functions, but that's so obvious I doubt it's what you mean
19:56:02 <elliott> ais523\unfoog: OCaml still can't do concurrency at all, right?
19:56:02 <Deewiant> ais523\unfoog: Hmm, I was going to explain my usage of "did" instead of "does" but now I wonder if it's not a Finglishism
19:56:08 * elliott has prepared his laugh track.
19:56:14 <ais523\unfoog> elliott: it has a -threads param to the compiler
19:56:23 <elliott> Deewiant: It seems OK to me, if you are referring to past experience with OCaml
19:56:27 <ais523\unfoog> that gives it a threading library, either VM-level or native-thread-level
19:56:48 <elliott> ais523\unfoog: Hmm, a quick google strongly suggested they were purely green threads
19:56:49 <ais523\unfoog> Deewiant: to me you were implying OCaml no longer existed
19:57:01 <elliott> Oh, hmm
19:57:02 <Deewiant> heh
19:57:07 <elliott> ais523\unfoog: Is it native threads but with a big gigantic lock on everything
19:57:17 <Deewiant> Anyway hang on, I'm devising a Haskell example
19:57:17 <ais523\unfoog> elliott: perhaps; I wrote a build system mentioning it recently; but it was for someone else's code
19:57:27 <elliott> Googling strongly suggests that it is
19:57:30 <elliott> So, time to cash in
19:57:32 * elliott [laugh track]
19:57:58 <CakeProphet> elliott: how dare you ridicule a sacred American custom.
19:58:09 <CakeProphet> you have greatly disrespected my people.
19:58:50 <ais523\unfoog> --- &1
19:58:52 <ais523\unfoog> - *1
19:58:57 <ais523\unfoog> wait, that's not what I meant
19:59:31 <ais523\unfoog> --- &1
19:59:32 <ais523\unfoog> head: 0
19:59:34 <ais523\unfoog> tail: *1
19:59:35 <ais523\unfoog> there we go
19:59:40 <elliott> YAML?
19:59:42 <ais523\unfoog> I suspect /that/'s what zeroes is, in OCAML
19:59:43 <ais523\unfoog> elliott: yep
19:59:45 <ais523\unfoog> *OCaml
19:59:55 <elliott> ais523\unfoog: use common lisp notation, sheesh :P
19:59:57 <ais523\unfoog> turns out YAML can represent cyclic structures
20:00:00 <elliott> #1#=(0 . #1#)
20:00:01 <elliott> and I know
20:00:07 <elliott> YAML is kind of ridiculously overengineered.
20:00:19 <Deewiant> ais523\unfoog: Okay, this, basically:
20:00:20 <Deewiant> zipWithFlipping :: (a -> b -> c) -> [a] -> [b] -> [c]
20:00:20 <Deewiant> zipWithFlipping f (a:as) (b:bs) = f a b : zipWithFlipping (flip f) bs as
20:00:20 <Deewiant> zipWithFlipping _ _ _ = []
20:00:23 <elliott> ais523\unfoog: incidentally, I've had more @ Thoughts(tm) since a prototype design seemed to come together, but they've mostly been of the form "wow, X would be so much ridiculously faster in @" or "wow, X would be so much ridiculously easier to program in @"
20:00:44 <ais523\unfoog> elliott: I have Anarchy Thoughts along those lines, or occasionally Cyclexa Thoughts
20:01:06 <ais523\unfoog> the two languages actually have some similarities
20:01:13 <ais523\unfoog> amazingly
20:01:40 <elliott> Deewiant: f _ _ = ([], []); f (x:xs) (y:ys) = (x:xs', y:ys') where (xs',ys') = f ys xs?
20:01:45 <elliott> (And then zipWith on that)
20:02:28 <Deewiant> Umm, I'm not sure what you're asking
20:02:32 <Deewiant> zipWithFlipping = zipWith
20:02:48 <elliott> Oh, so it is
20:02:52 <elliott> I missed the double-flip
20:03:00 <Deewiant> Right
20:03:04 <elliott> ais523\unfoog: The most recent one has been that, AFAICT, a naive web server in @ would beat the crap out of just about any other httpd that doesn't run in a kernel/on bare metal or on an FPGA or similar ridiculousness
20:03:26 <Deewiant> Note that without the type signature, the inferred type of zipWithFlipping would be (a -> a -> b) -> [a] -> [a] -> [b]
20:03:28 <ais523\unfoog> now I'm thinking about what an FPGA web server would be like
20:03:31 <elliott> ais523\unfoog: (thinking inspired by seeing an article in the Monad.Reader where nginx's performance was beat with fairly simple Haskell)
20:03:34 <elliott> and it's been done
20:03:58 <ais523\unfoog> it'd be great at static files, although if there were more simultaneous connections than it expected it'd have trouble
20:04:06 <Deewiant> And I'm almost certain that SML doesn't like this, but I'm not sure whether OCaml does
20:04:07 -!- Darth_Cliche has joined.
20:04:41 <elliott> ais523\unfoog: But yeah, the article basically said that saving one syscall per request constituted a relevant, real time saving, and any added overhead of CPU time in @ will be dwarfed by syscall time in the Unix version and IO time in general
20:04:56 <elliott> So, ha, take that operating systems
20:05:17 <ais523\unfoog> elliott: which syscall was it, in the Haskell case?
20:05:21 <elliott> I doubt I'd beat TUX though... unless I had a really fancy IO subsystem
20:05:32 <elliott> ais523\unfoog: oh, it was just talking in general, but lemme dig up the example
20:06:42 <elliott> ais523\unfoog: "Warp uses the recv system call to receive an HTTP request and the writev system
20:06:42 <elliott> call to send an HTTP header. When sending an HTTP body based on a file, it
20:06:42 <elliott> uses the sendfile package which unnecessarily issues the lseek and stat system
20:06:42 <elliott> calls in addition to sendfile. While one could believe that the sendfile system call
20:06:42 <elliott> is fast thanks to its zero-copying approach, the package is actually much slower
20:06:43 <elliott> than we expected. We implemented the simple-sendfile package which does not
20:06:45 <elliott> use lseek and stat. The system calls that the package uses are only open, sendfile,
20:06:47 <elliott> and close. Since sockets are marked non-blocking, sendfile returns EAGAIN if the
20:06:49 <elliott> size of a file is large. In this case, the simple-sendfile package issues sendfile
20:06:51 <elliott> again without lseek to send the rest of the file."
20:07:01 -!- ais523\unfoog has quit.
20:07:06 <elliott> nice timing
20:07:11 -!- Madoka-Kaname has left ("Hug~♪").
20:07:12 -!- Madoka-Kaname has joined.
20:07:40 -!- ais523\unfoog has joined.
20:07:52 <elliott> ais523\unfoog: See logs :P
20:07:55 <ais523\unfoog> wow that was confusing
20:08:06 <elliott> ais523\unfoog: There were no numbers specifically for that change, but replacing the time library with their specialised http-date gave a 20x speedup in the date code itself, and combined with the simple-sendfile switch brought it from 4,229 queries/s to 22,713 queries/s; I think that's probably mostly due to the time stuff, though
20:08:19 <elliott> (Again, see logs for context :P)
20:09:47 <ais523\unfoog> elliott: heh, the stat/seek was what lead to the problem
20:10:08 -!- zzo38 has left.
20:10:17 <elliott> ais523\unfoog: yep; I'm not sure it's necessarily a disk IO thing, though
20:10:26 <elliott> if the request timing was on the same file
20:10:28 <elliott> since it'd be in cache
20:10:56 -!- Phantom__Hoover has quit (Ping timeout: 240 seconds).
20:11:25 -!- Ngevd has joined.
20:13:27 -!- Phantom__Hoover has joined.
20:13:42 <elliott> ais523\unfoog: hmm, I need to figure out how to optimise referencing a large bytestring that isn't in RAM and sending it to a socket
20:13:58 <elliott> obviously it'll already be done in chunks, so the behaviour will be vaguely reasonable
20:14:06 <elliott> but I could do fancy DMAy scatter-gathery nonsense, perhaps
20:14:38 <CakeProphet> http://www.cs.bris.ac.uk/Teaching/Resources/COMS30122/haskell/calc/index.html
20:14:46 <CakeProphet> this is actually a nice hand-written parser actually.
20:14:55 <CakeProphet> (actally)
20:15:38 <Ngevd> MSPA update for all who care
20:15:50 <Ngevd> Unless you already know
20:15:57 <Ngevd> Starts with Jane: Examine Fetch Modus
20:16:05 <CakeProphet> though I would have used operators for the binary Rule constructors, and State for the parse function that returns ([Token], [Tree])
20:17:24 <CakeProphet> actually no a tuple is fine.
20:19:26 -!- zzo38 has joined.
20:23:03 <elliott> CakeProphet: Writing a parser "by hand" with tuples is kinda stupid, you're not more hardcore for forcing yourself to rewrite the (>>=) plumbing in every single rule
20:24:13 <CakeProphet> elliott: right, I was simply saying for a handwritten parser it's very clearly written.
20:24:26 <elliott> Sure
20:25:13 <zzo38> I have written parsers with Parsec and (>>=) is not needed often.
20:27:14 <monqy> the <$> <* <*> *> <|> plumbing
20:27:51 <zzo38> Yes, <$> <* <*> *> <|> seem much more useful in parsers. Sometimes even <$ as well
20:28:23 <CakeProphet> I use <$> and <*> with monads often.
20:28:53 <zzo38> <$> is useful with any monads (even any functors) in general.
20:33:52 <zzo38> The Data.Monoid.Plus package can make the probilities of sum of dice by: runWriterT . monoidicMap getProduct . probNorm $ liftA2 (+) dice dice where dice = uniform [1..6] and it can be modified to work with loaded dice, too.
20:34:24 <zzo38> And then there are the "many" and "some" functions useful with parsers too
20:35:54 -!- sebbu has quit (Read error: Connection reset by peer).
20:36:16 -!- sebbu has joined.
20:36:16 -!- sebbu has quit (Changing host).
20:36:16 -!- sebbu has joined.
20:42:19 <Vorpal> elliott, iirc you wanted to know more about dragons in Skyrim?
20:42:35 <Vorpal> I battled quite a few now, I could tell you if you want
20:43:07 <elliott> Yessss tell me all about the dragons and also answer which GPU you have.
20:43:21 -!- Sgeo|chromcrash has joined.
20:43:39 -!- oerjan has joined.
20:44:05 <Vorpal> elliott, to begin with there are quite a few animation bugs. For example, dragons tend to crash land when they get like below ~10% health. This works fine on flat terrain. It looks quite weird on a slope. It looks absolutely silly on a set of stairs.
20:44:12 <Vorpal> lots of animation bugs there
20:44:43 <Sgeo|chromcrash> zzo38 was saying something relevant to my interests
20:44:47 <Sgeo|chromcrash> :/
20:44:55 <Vorpal> elliott, other than that, they would be quite hard to hit for significant damage in the sky without frost or fire spells (depending on type of dragon)
20:45:02 -!- Sgeo|web has quit (Ping timeout: 265 seconds).
20:45:06 <Vorpal> elliott, I just can't see a non-magic user handling this at all
20:45:22 <Vorpal> arrows don't seem to do much damage
20:45:38 <elliott> I hear they're pretty easy to battle
20:45:42 <elliott> Maybe you just suck :P
20:45:47 <Vorpal> elliott, yep, with magic they are easy
20:45:56 <Vorpal> elliott, on average difficulty
20:46:00 <zzo38> Sgeo|chromcrash: Please be more specific.
20:46:16 <Vorpal> elliott, further training in bow related skills might make it easier for an archer
20:46:20 <Sgeo|chromcrash> zzo38: Something about probability
20:46:37 <Phantom__Hoover> Probability is among your interests?
20:46:39 <zzo38> What about probability?
20:47:00 <Vorpal> elliott, but primarily non-ranged weapon users will run into some issues definitely
20:47:17 <Sgeo|chromcrash> Phantom__Hoover: Someone wants me to implement MCMC in Haskell. I think I know Haskell better than him, but I'm clueless about MCMC
20:47:48 <zzo38> What does MCMC means?
20:47:53 <Phantom__Hoover> Minecraftminecraft.
20:47:57 <Sgeo|chromcrash> Monte Carlo Markov Chain
20:48:02 <Vorpal> elliott, other than that it is quite fun. Of course, skyrim has ragdoll physics... I think that is what causes most of the brokenness with the crash landing
20:48:03 <Sgeo|chromcrash> Or is it the other way around
20:48:06 <elliott> Sgeo|chromcrash does things because people tell him to.
20:48:15 <elliott> Vorpal: GGGGGGGPPPPPPUUUUU
20:48:52 <Vorpal> elliott, Radeon HD 6850, 1 GB GDDR5 (or 1.5? forgot...)
20:49:19 <elliott> Oh, Radeon. (It occurs to me that maybe my Linux-oriented anti-ATI bias is outdated.)
20:49:32 <Vorpal> elliott, well, nvidia sucks quite a bit nowdays too
20:49:36 <Vorpal> for newer GPUs
20:49:46 <Vorpal> they suck about the same amount nowdays
20:49:48 <Sgeo|chromcrash> nVidia sucks with Linux now? Boo
20:49:52 <elliott> Vorpal: Sure, but at least it's not Catalyst.
20:49:55 <Vorpal> Sgeo|chromcrash, well, for newer cards
20:50:14 <Vorpal> elliott, true. Still the open drivers for radeon are way ahead of the ones for nvidia
20:50:22 <elliott> Yeah, but nobody cares about that :P
20:50:26 <Vorpal> not quite there yet for my card model
20:50:28 <zzo38> Is it necessary to fight the dragon to complete the game?
20:50:47 <Vorpal> zzo38, plural I believe
20:51:03 <Vorpal> and yes so far I needed to fight two of them to complete main story missions
20:51:16 <zzo38> OK
20:51:29 <Vorpal> unless I completely missed out on something, I would say "yes, you have to do that"
20:51:29 <oerjan> <ais523\unfoog> you can certainly write polymorphic recursive functions, but that's so obvious I doubt it's what you mean
20:51:55 <oerjan> polymorphic recursion in haskell refers to a function directly or indirectly calling itself with a different type
20:52:18 <Vorpal> elliott, anyway the graphical quality in the game on the ultra setting is "meh". Better than oblivion yes. However it was clearly made with consoles in mind. Which have somewhat outdated hardware by now.
20:52:40 <elliott> From what I've seen, it has the advantage over Oblivion of not being hideous
20:52:45 <Vorpal> elliott, if you want the best graphics on a PC currently in an RPG it is witcher 2 that you should play
20:52:53 <oerjan> it's useful which such datastructures as autobalanced trees: data Tree a = Leaf a | Tree (a,a)
20:52:58 <Vorpal> don't expect to do that on ultra though
20:54:20 <Vorpal> elliott, anyway I do hope dragons are leveled. Or they are going to be a fucking joke when I'm at a higher level.
20:54:38 <elliott> hmm, can you fit an atx mobo into an eatx case?
20:54:42 <Vorpal> elliott, so far I have seen ones breathing fire and ones breathing ice.
20:54:54 <monqy> dragons breathing dragons
20:55:04 <Vorpal> elliott, /pretty/ sure atx is larger than eatx
20:55:11 <elliott> no, eatx is extended atx?
20:55:13 <Vorpal> maybe in a VERY big eatx case?
20:55:16 <Vorpal> oh
20:55:18 <elliott> yeah this thing fits atx
20:55:22 <Vorpal> which one is the smaller one?
20:55:23 -!- MSleep has changed nick to MDude.
20:55:30 <Vorpal> elliott, also why do you want an eatx case?
20:55:51 <Vorpal> elliott, I assume you are building yourself a new computer?
20:56:05 <Sgeo|chromcrash> zzo38: What package does that probability stuff come from, if any?
20:56:05 <elliott> Right now I'm helping Phantom__Hoover by way of shoving a list of parts at him; consider it practice.
20:58:18 -!- Ngevd has quit (Read error: Connection reset by peer).
20:58:40 <Phantom__Hoover> HOW CAN A CASE COST TWENTY POUNDS MORE THAN A CPU
20:58:56 <Vorpal> elliott, btw recommended is quad core or better. and you want a strong CPU. When playing I see the all the cores (including the HT ones) pretty loaded (70-100) on a 3.4 GHz quad core i7 so...
20:59:31 <Vorpal> Phantom__Hoover, heh
20:59:37 <Vorpal> Phantom__Hoover, what sort of case is that?
20:59:56 <Phantom__Hoover> One born of elliott failing to understand the site's list system.
21:00:18 <elliott> I'm more used to picking parts from sites I can't actually buy things from.
21:00:28 <elliott> Vorpal: Uh, I read that it's crap at threading (= 2 threads only).
21:01:20 <Phantom__Hoover> Better than DF.
21:01:43 <zzo38> Sgeo|chromcrash: There are other Haskell packages having probability stuff, which I don't know, but my package "monoidplus" has the things I described.
21:01:50 <Vorpal> elliott, strange then. Or I guess process explorer shouldn't be trusted
21:01:57 <Vorpal> (no I haven't even tried to use wine for it)
21:02:14 <elliott> Vorpal: But yeah, I'll go for either an i7 or a Phenom II x6, most likely
21:02:19 <elliott> Probably i7
21:02:22 <elliott> So I should be fine on that front
21:02:31 <elliott> 3.4 GHz is ridiculous though, you're just wasting power :P
21:02:39 <Sgeo|chromcrash> zzo38: The docs aren't showing up on Hackage
21:02:50 <Vorpal> elliott, well they didn't have a 3.3 GHz option for i7. They only have that for i5
21:02:51 <Phantom__Hoover> elliott, unless you're playing DF.
21:02:55 <Deewiant> elliott: Why's that wasting power
21:03:01 <Vorpal> elliott, that i5 should be enough to play it though
21:03:13 <Vorpal> elliott, also, dynamic clock frequency
21:03:13 <elliott> Deewiant: Because CPU speed is roughly irrelevant for everything compared to cores nowadays above like 2.8 GHz?
21:03:16 <zzo38> Sgeo|chromcrash: I know. I think it will take a long time to do so. The same is the case for other new packages (I checked the "what's new")
21:03:25 <Vorpal> elliott, it is awesome for df
21:03:26 <Vorpal> :P
21:03:28 <Deewiant> elliott: Why's that?
21:03:39 <Sgeo|chromcrash> zzo38: Ah, ok
21:03:53 <Vorpal> elliott, anyway they have a 3.5 GHz version too
21:03:57 <Sgeo|chromcrash> zzo38: That's kind of annoying to deal with though, I wonder why that is
21:04:04 <elliott> Deewiant: I suppose it's not really true for games which are the topic here, but even those are becoming more GPU-bound in general I'd say
21:05:05 <Deewiant> Much CPU-using software I run doesn't utilize multiple threads, I'd say there's always call for more single-threaded speed
21:05:29 <elliott> Call perhaps, but it's only going to drop
21:05:54 <zzo38> Sgeo|chromcrash: http://sprunge.us/NCZE
21:06:23 <Sgeo|chromcrash> ty
21:06:48 <Vorpal> elliott, anyway isn't there that turbo mode thingy when a single core only is loaded? I wonder what the speed for that is
21:06:51 <Sgeo|chromcrash> What's the difference between mpappend and mappend supposed to be?
21:07:31 <Deewiant> Sgeo|chromcrash: "That is, it is a monoid that the original monoid is distributive over."
21:07:38 <zzo38> Sgeo|chromcrash: mappend distributes over mpappend
21:07:48 <zzo38> (For example, multiplication distributes over addition)
21:10:14 * Sgeo|chromcrash 's head spins
21:10:47 <zzo38> You would use WriterT (Product x) [] for probability distributions, where x should be Double or Rational depending what you need
21:10:51 <CakeProphet> distribution: confusing stuff
21:12:52 <zzo38> The probability functions will still work though, as long as the monoid used is a normalizable semiring. But in general you use Product
21:13:50 <zzo38> (If it isn't Product, it won't act like a real probability distribution in all ways; although in some ways it can)
21:14:02 -!- Ngevd has joined.
21:14:25 <CakeProphet> :t sequence
21:14:26 <lambdabot> forall (m :: * -> *) a. (Monad m) => [m a] -> m [a]
21:14:48 <CakeProphet> sequence is almost sort of kind of distribution.
21:15:28 <zzo38> (There might also be monads other than [] that can be used, although the functions I have don't work with others)
21:15:41 <CakeProphet> well, the type of sequence is like distribution
21:15:50 <CakeProphet> I suppose the program is the proof. :>
21:16:38 -!- sebbu2 has joined.
21:16:38 -!- sebbu2 has quit (Changing host).
21:16:38 -!- sebbu2 has joined.
21:17:08 <Ngevd> Is it possible to do silly nested pattern matching like xs@(a:b:ys@(w:x:[]))?
21:17:21 <Ngevd> In Haskell
21:17:28 <Deewiant> That's not silly, and yes
21:17:40 <Ngevd> Oh cool
21:17:45 <Ngevd> That makes this soo much easier
21:18:05 <Ngevd> Hang on, wait
21:18:08 <Deewiant> > let f xs@(a:b:ys@(w:x:[])) = (xs,a,b,ys,w,x) in f [1,2,3,4]
21:18:09 <lambdabot> ([1,2,3,4],1,2,[3,4],3,4)
21:18:28 <Ngevd> Brilliant
21:18:49 <CakeProphet> @hoogle m [a] -> [m a]
21:18:49 <lambdabot> Data.List transpose :: [[a]] -> [[a]]
21:18:49 <lambdabot> Data.Traversable sequenceA :: (Traversable t, Applicative f) => t (f a) -> f (t a)
21:18:49 <lambdabot> Data.List inits :: [a] -> [[a]]
21:18:54 <Ngevd> That is EXACTLY what I wanted, Deewiant
21:18:56 -!- sebbu3 has joined.
21:18:56 <Ngevd> Thank you
21:18:56 -!- sebbu3 has quit (Changing host).
21:18:56 -!- sebbu3 has joined.
21:19:20 <CakeProphet> @hoogle (Monad m) => m [a] -> [m a]
21:19:20 -!- sebbu has quit (Ping timeout: 240 seconds).
21:19:20 <lambdabot> Data.List transpose :: [[a]] -> [[a]]
21:19:21 <lambdabot> Data.Traversable sequenceA :: (Traversable t, Applicative f) => t (f a) -> f (t a)
21:19:21 <lambdabot> Control.Monad join :: Monad m => m (m a) -> m a
21:19:23 <CakeProphet> meh
21:19:57 <Ngevd> Wait, I didn't need it
21:20:35 <Deewiant> CakeProphet: You can't pull it out of the monad, it'd have to be m a -> m [m a]
21:20:42 <Deewiant> Er, m [a] -> m [m a]
21:21:04 <CakeProphet> @hoogle m [a]
21:21:04 <lambdabot> Control.Monad.Trans.List runListT :: ListT m a -> m [a]
21:21:04 <lambdabot> Control.Monad.List runListT :: ListT a -> m [a]
21:21:04 <lambdabot> Control.Applicative many :: Alternative f => f a -> f [a]
21:21:05 <CakeProphet> er
21:21:08 <CakeProphet> @hoogle m [a] -> m [m a]
21:21:09 <lambdabot> Data.List transpose :: [[a]] -> [[a]]
21:21:09 <lambdabot> Data.Traversable sequenceA :: (Traversable t, Applicative f) => t (f a) -> f (t a)
21:21:09 <lambdabot> Data.List inits :: [a] -> [[a]]
21:21:13 <Deewiant> ?ty fmap (map return)
21:21:13 <CakeProphet> :(
21:21:13 <lambdabot> forall a (m :: * -> *) (f :: * -> *). (Monad m, Functor f) => f [a] -> f [m a]
21:21:20 -!- sebbu2 has quit (Ping timeout: 240 seconds).
21:21:32 <CakeProphet> Deewiant: essentially.
21:22:00 <CakeProphet> I wonder what kind of formulas Python programs are proving.
21:22:00 <Deewiant> ?ty liftM (map return) :: Monad m => m [a] -> m [m a]
21:22:01 <lambdabot> forall (m :: * -> *) a. (Monad m) => m [a] -> m [m a]
21:22:30 -!- copumpkin has quit (Remote host closed the connection).
21:23:52 <elliott> I wish quasiquoters nested.
21:24:42 <monqy> me too :(
21:24:50 <monqy> i also wish (pattern) guards nested
21:25:02 <monqy> and uh
21:25:04 <monqy> other things??
21:25:41 <CakeProphet> I wish nests nested.
21:26:07 <CakeProphet> and numbers.
21:26:08 <CakeProphet> and strings.
21:26:15 <CakeProphet> there is no such thing as too much nesting.
21:26:49 <CakeProphet> 12(3(47))4 best nested number
21:26:54 <monqy> bad number
21:27:05 <CakeProphet> s{lolololols{rofl}} best nested string
21:27:06 <monqy> and I can't trust you with strings
21:27:14 <monqy> oh that's a bad string
21:27:18 <monqy> but not what I was expecting
21:29:04 <CakeProphet> data NChar = NCharCharLol Char | NCharStringLol String
21:29:09 <CakeProphet> type NString = [NChar]
21:29:22 <CakeProphet> need to work on the naming scehems
21:29:53 <CakeProphet> or just use Either
21:30:05 <monqy> data Bad
21:30:55 <CakeProphet> just got an awesome idea for an esolang
21:31:04 <CakeProphet> an extremely difficult to parse esolang. :)
21:31:17 <CakeProphet> so, for example
21:31:21 <oerjan> <Ngevd> Is it possible to do silly nested pattern matching like xs@(a:b:ys@(w:x:[]))? <-- that one can be simplified to xs@(a:b:ys@[w,x])
21:31:29 <CakeProphet> instead of a circumfix string quote token, it uses a postfix token.
21:31:35 <CakeProphet> this is a string here "
21:31:53 <Ngevd> Where do I put modules that I want to install?
21:32:07 <Deewiant> And unfortunately not xs@[a,b,ys@{w,x}] or something
21:33:59 -!- pkzip has joined.
21:34:49 <Deewiant> Ziim looks like something refreshingly new
21:37:35 <CakeProphet> hmmm, also
21:39:02 <CakeProphet> control structures appear at the end of their blocks of code, allowing arbitrary delimers.
21:39:09 <CakeProphet> *delimiters
21:39:20 <pkzip> why does my OS keeps running this IRC program automatically ?
21:39:32 <pkzip> I am using Pidgin
21:39:41 <pkzip> as the IRC client
21:42:00 <elliott> pkzip: It is because you can never escape.
21:42:07 <elliott> : )
21:42:11 <oerjan> *MWAHAHAHAHAHAHAHAHAHAHA*
21:42:15 <pkzip> no escape from #esoteric ?
21:42:29 <elliott> Deewiant: That's Timwi for you! Great languages, agonising IRC experience.
21:42:35 <pkzip> I'm not a number..
21:42:43 <pkzip> I'm a free software !!
21:42:50 <pkzip> ( prisioner quote )
21:43:04 <pkzip> ( well except that last bit )
21:43:05 <elliott> i don't think that's a prisoner quote
21:43:13 <Phantom__Hoover> You can Checkout any time you like, but you can never Tree? (There is no esolang called Leaf, this is bad.)
21:43:21 <pkzip> ~= ( not exactly )
21:43:26 <oerjan> pkzip: you can http://www.esolangs.org/wiki/Checkout any time you like, though...
21:43:50 <Sgeo|chromcrash> TImwi?
21:44:10 <Sgeo|chromcrash> Oh, an esolanger
21:44:15 <Phantom__Hoover> `quote Publisher
21:44:17 <HackEgo> 183) <Vorpal> ais523, what is "MS Publisher"? <Phantom_Hoover> Vorpal, you don't want to know. <ais523> Vorpal: be glad that you don't know the answer <alise> Vorpal: "horrible"
21:44:24 <Phantom__Hoover> s/MS Publisher/Timwi/
21:44:33 <oerjan> Phantom__Hoover: damn you, oh wait scratch that ais523 might ban me
21:44:51 * Sgeo|chromcrash wants to know!
21:45:18 <ais523\unfoog> Timwi isn't nearly as bad as MS Publisher
21:45:27 <ais523\unfoog> few things are, to be fair
21:46:53 <Phantom__Hoover> The Holocaust?
21:46:55 <pkzip> I often get banned from sexchat sites
21:47:07 <pkzip> darn, I got banned from all of 'em almost
21:47:20 <pkzip> all the ones I've been in
21:47:25 <pkzip> and I change IPs !!
21:47:38 <pkzip> even my ISP changes locations once in a while
21:47:56 <elliott> It's poetry.
21:47:57 <pkzip> and its not the client side
21:48:18 <pkzip> cause I know my PC
21:49:10 <pkzip> hardware to software
21:49:18 <pkzip> internals
21:50:32 <oerjan> well #esoteric is only very occasionally a sexchat site.
21:50:44 <oerjan> so maybe you can escape a ban.
21:51:03 <pkzip> I've known of IRC bans since the early 90s
21:51:06 <Ngevd> As an asexual, I don't go on sexchat sites very often
21:51:06 <Phantom__Hoover> Less occasionally if you're gay.
21:51:31 <pkzip> I used to give them mostly, and rarely had to escape them
21:51:35 <oerjan> wait, does less occasionally mean more or less often
21:51:45 <Phantom__Hoover> More often.
21:51:57 <pkzip> I often changed IPs cause I was on a dail-up
21:52:17 <pkzip> It costed a few cents to change IPs
21:52:37 <pkzip> I could even change it by a wide range
21:52:53 <pkzip> and started dreaming of what is now know as
21:53:10 <pkzip> the IP 'stealther'
21:53:27 * CakeProphet just watched [S] Cascade again
21:53:27 <pkzip> or the digital modem (router)
21:53:28 <CakeProphet> so good.
21:53:31 <oerjan> i suggest registering your nick so you can be banned consistently.
21:54:04 <pkzip> I don't think it was possible, oh wait they had Profiles so yea, maybe
21:54:06 <oerjan> so much more convenient.
21:54:27 <pkzip> I am being blocked by somekind of an ISP ban
21:54:40 <pkzip> I never bothered to check what it was exactly
21:54:54 <pkzip> I am used to be welcome on any digital media
21:55:02 <pkzip> welcomed
21:55:10 <elliott> welcome pkzip
21:56:30 <pkzip> actually pkzip was my old nickname on the IRCs
21:56:46 <pkzip> I need to find a new one
21:56:54 <pkzip> I quite fit in here
21:57:19 <pkzip> I like assembly, compilers, computer languages, brainf*ck and forth
21:57:42 <pkzip> I used to work on virii and protection/security software
21:57:49 <Ngevd> brainfuck!?
21:57:50 <pkzip> though noone heared of me
21:57:52 <Ngevd> Get uot!
21:57:54 <Ngevd> :P
21:57:57 <oerjan> to truly fit in, you must also hate brainfuck derivatives and lolcode.
21:58:10 <pkzip> I have a version of it which is really tiny
21:58:23 <pkzip> I dream of the minimal compiler at nights
21:58:37 <pkzip> But I want the easy of a language
21:58:55 <pkzip> so no 2-word or 3-word compilers for me (unless its HEX)
21:59:29 <pkzip> easy: sub that with ease
21:59:41 <elliott> pkzip: *viruses
22:00:11 <pkzip> I thought of some new ideas that appeared only years later in the virii scene
22:00:21 <pkzip> at least 2 ideas
22:00:22 <oerjan> the latin virus is an uncountable noun, so any weird plural is suspect.
22:00:47 <oerjan> and everyone here is a language pedant.
22:01:20 <pkzip> you can't hate BF, just because it is popular and starting to be taken for a real language
22:01:43 <pkzip> I have seen good native compilers for it
22:01:51 <oerjan> pkzip: i didn't say hate brainfuck, i said hate brainfuck _derivatives_. very different thing.
22:01:58 <pkzip> including some great ones which only lately appeared
22:02:24 <pkzip> I like my own derivative (I call it a traslator)
22:02:46 <pkzip> Its not so far apart from the original, its actually backward compatible.
22:03:04 <Phantom__Hoover> Can someone vouch that elliott's list of parts is likely to be trustworthy?
22:03:06 <elliott> pkzip: really? is it backwards compatible with characters that aren't ,.[]<>+- being comments?
22:03:09 <elliott> that's part of bf
22:03:19 <elliott> Phantom__Hoover: bsmntbombdood isn't here but I actually sent you the list of parts for a bomb.
22:03:38 <Phantom__Hoover> elliott, I thought it slightly exceeded his specs.
22:03:48 <elliott> Phantom__Hoover: Hm?
22:04:01 * oerjan waves at the CIA
22:04:16 <Phantom__Hoover> elliott, didn't he have 8GB of RAM?
22:04:22 <elliott> Phantom__Hoover: 16.
22:04:25 <pkzip> I don't remember saying that
22:04:27 <Phantom__Hoover> Aww.
22:04:43 <elliott> Phantom__Hoover: His was pre-Sandy Bridge i7, though, and ISTR Sandy Bridge was a pretty big improvement.
22:04:49 <elliott> Phantom__Hoover: Also he has a really crappy passively-cooled Nvidia card.
22:04:55 <elliott> Or had.
22:05:01 <pkzip> It uses the Char zero
22:05:13 <pkzip> the 0 ascii code
22:05:36 <pkzip> for assembly meno
22:05:45 <pkzip> (code)
22:05:48 <pkzip> entry
22:06:08 <pkzip> so I guess so
22:06:21 <pkzip> but your gonna hate the fact it has I/O
22:06:58 <pkzip> It uses one letter for basic INPUT and another for OUTPUT
22:07:29 <pkzip> why are you so pedantic about BF comments ?
22:07:49 <pkzip> what does this " any letter is a comment " do for BF ?
22:07:59 <pkzip> oh wait
22:08:13 <pkzip> the input is " ? " and output is " ! "
22:08:21 <pkzip> so its not a letter
22:08:33 <pkzip> Hello word :
22:08:41 <pkzip> world:
22:08:47 <pkzip> Hi World !
22:09:21 <pkzip> the space is ascii 0 or 255 ( I don't remember exactly )
22:10:02 <pkzip> Its wasn't published in esoteric
22:10:11 <pkzip> but I see ais523 in here ..
22:10:29 <ais523\unfoog> ?
22:11:05 * pkzip waves
22:11:35 <pkzip> guess I better not mention a brainfuck compiler which isn't 100% pure
22:11:48 <pkzip> (but backward compatible)
22:12:26 <pkzip> and I think the Output word was " . " ( as in original BF )
22:12:52 <pkzip> actually I know for sure its " . ", I think slowly after 12am
22:13:42 <Ngevd> ...Space should be 32, I think
22:14:05 <elliott> pkzip: a bf compiler is probably pure, or you'll have side-effects you don't want clogging things up
22:14:15 <elliott> BFProg -> AsmProg or whatever seems reasonable to me
22:14:28 <pkzip> I use char 255 instead of space
22:14:47 <pkzip> (as a code word)
22:15:27 <pkzip> I also use char 0 but I doubt if most editors wud display it as SPACE
22:16:07 <pkzip> I have a blog I've written for it, for awhile it was #1 on google for BF+Forth searches
22:16:21 <pkzip> BF+Forth+x86
22:16:51 <pkzip> now its #200 (I doubt google even shows it)
22:17:03 <pkzip> #200 or so
22:17:57 <elliott> monqy: starting to agree that idiom record notation is the best idea
22:18:42 <monqy> i never said it was the best!! i don't think it would support interleaving?? but it's kind of clean maybe
22:18:50 <monqy> relatively clean I mean
22:19:10 <Ngevd> I'm thinking of creating a MACHINE-READABLE HUMAN-WRITABLE NOTATION FOR ESOTERIC PROGRAMMING LANGUAGES
22:19:16 <elliott> monqy: yeah i don't know what to do about interleaving? the only good syntax I can think of is basically do notation
22:19:16 <elliott> which is
22:19:21 <elliott> (a) ugly and duplicatey
22:19:25 <elliott> (b) not done for applicatives
22:19:28 <elliott> (even though it can be done restrictedly)
22:19:31 <monqy> hmmmmm
22:19:40 <Ngevd> Because I don't like Yoob
22:21:09 <ais523\unfoog> elliott: one of the transcripts in the Oracle vs. Google lawsuit was allcaps for reasons I don't understand, so I made it all lowercase instead
22:21:12 <ais523\unfoog> but it looks pretty weird either way
22:21:15 <pkzip> Is there anyone on #esoteric which isn't into low-level (native) code ?
22:21:18 <ais523\unfoog> which do you think is more readable?
22:21:33 <ais523\unfoog> native code isn't /properly/ low-level ;)
22:21:37 <oerjan> pkzip: me
22:21:52 <pkzip> you don't know x86 code ?
22:22:09 <oerjan> i've never learned x86 assembly, no
22:22:34 <ais523\unfoog> oerjan: I suspect only a few people actually know all of modern x86 asm, it has weird corners that are rarely used
22:22:45 * ais523\unfoog vaguely wonders htf x86 won
22:22:49 <pkzip> =-O
22:22:50 <oerjan> i think i _may_ have written something like a hello world way back in the 80s
22:22:55 <pkzip> so shocked
22:23:44 <oerjan> but then, i'm nowhere near a professional programmer
22:23:59 <elliott> ais523\unfoog: all lowercase is more readable, definitely
22:24:10 <ais523\unfoog> yep, I think so
22:24:15 <ais523\unfoog> I'm glad I had the setting handy in my browser
22:24:30 <ais523\unfoog> (LeetKey has been remarkably useful as a Firefox extension, even if I don't use it for its intended use at all)
22:24:30 <elliott> pkzip: I can sort of write x86 asembly given a lot of time and documentation, but I don't like to, and I think it's a pretty crappy language.
22:24:42 <elliott> Some other CPUs have nice assembly languages though, but I can't code in 'em.
22:24:54 <ais523\unfoog> I first learnt 6502 asm
22:25:02 <ais523\unfoog> which is not the best asm in the world, but is way better than x86's
22:25:07 <pkzip> Intel x86 on MacroASM was fun in the 90s and its fun now
22:25:27 <pkzip> Arm ASM is said to be nice
22:25:38 <pkzip> PDP11 is a legand
22:25:57 <pkzip> both are near perfect
22:26:14 <pkzip> or all 3
22:26:55 <elliott> pkzip: Depends what your definition of fun is. Also your definition of perfect.
22:26:56 <ais523\unfoog> I think of something like Redcode when I think in terms of a good asm
22:26:59 <oerjan> i _did_ learn some 6502 asm way back
22:27:06 <ais523\unfoog> (even though it isn't actually an asm for an actual processor)
22:27:39 <Ngevd> Phantom__Hoover, today was the day with the most changes on mezzawiki for about a year
22:28:08 <oerjan> very sketchily. i realized years later that the manual i was reading was missing pages of instructions.
22:28:10 <pkzip> It was fun when watching The Jerusalem Virus do its 'thing'
22:28:23 <pkzip> Or 100 Years virus ( aka 4K )
22:28:35 <pkzip> Or writing a virii noone cud see or bypass
22:29:05 <pkzip> The 100 Years Virus ( more known as 4 K )
22:29:53 <ais523\unfoog> <mr. jacobs> your honor, this is michael jacobs from morrison & foerster. mr. van nest's understanding of the allegations here isn't correct, both in terms of numerosity and in terms of role, but i have the advantage of sitting in front of a computer as we are talking. if you search on bob lee, the first hit you get is a claim as follows. it's a twitter feed.
22:29:58 <elliott> pkzip: *viruses
22:30:00 <oerjan> linking this in case no one has yet: http://alaska-kamtchatka.blogspot.com/2011/11/modular-semantics-for-brainfuck.html
22:30:11 <elliott> ^style europarl
22:30:11 <fungot> Selected style: europarl (European Parliament speeches during approx. 1996-2006)
22:30:16 <elliott> fungot: your honor, this is michael jacobs from morrison & foerster.
22:30:16 <fungot> elliott: mr president, i too welcome the decision by the united states
22:30:17 <ais523\unfoog> awesome: doing a Google Search during a court hearing and telling the judge what the hit was
22:30:31 <ais523\unfoog> it was a telephone hearing, so people couldn't sensibly stop him
22:30:34 <elliott> ais523\unfoog: please please tell me it was Oracle who did that, while fighting Google
22:30:38 <ais523\unfoog> yes, it was
22:30:43 <elliott> ais523\unfoog: :D
22:30:47 <elliott> google should have sued :P
22:30:48 <ais523\unfoog> I think; it gets hard to remember which lawyer is on which side
22:32:08 <ais523\unfoog> quite a few people were getting confused, actually, as it was a conference telephone call
22:32:18 <ais523\unfoog> people had to keep saying who they were when they started talking
22:32:28 <pkzip> what does this lawsuit has to do with low-level programming ?
22:32:38 <pkzip> or BF ?
22:32:39 <elliott> why do we have to talk about low-level programming?
22:32:42 <elliott> or BF?
22:33:05 <pkzip> Cause BF is now taken as a good example of a basic compiler
22:33:13 <elliott> i don't understand
22:33:23 <pkzip> No reason
22:33:23 <elliott> this channel is for all topics of interest to those interested in esoteric computing
22:33:34 <ais523\unfoog> and BF is nice, but a bit atypical as esolangs go
22:33:36 <ais523\unfoog> it even has numbers
22:33:50 * ais523\unfoog thinks languages are typically inferior if you can't implement numbers in them from scratch
22:34:03 <pkzip> isn't BF the bread and butter of esolang ?
22:34:08 <Ngevd> Nope
22:34:14 <pkzip> isn't it a classic ?
22:34:24 <Ngevd> Classic, yes
22:34:26 <ais523\unfoog> it is indeed a classic, but there are a bunch of other languages around
22:34:29 <Ngevd> Standard, by no means no
22:34:33 <Ngevd> Look at Piet
22:34:35 <Ngevd> Or Befunge
22:34:40 <Ngevd> Or Intercal
22:34:45 <Ngevd> Or Underload
22:34:48 <ais523\unfoog> BF is much more similar to mainstream languages than most esolangs
22:34:53 <elliott> intercal, brainfuck, befunge, underload, unlambda
22:34:56 <elliott> are the classics
22:35:05 <Ngevd> I always use Piet because I like Piet
22:35:08 <elliott> ok underload is somewhat of a modern classic :)
22:35:09 <Ngevd> But it's not a classic
22:35:47 <pkzip> I like languages which are minimal and 'easy' (in the old BASIC 'nostalgic' style)
22:36:05 <pkzip> BF actually fits a purpose
22:36:19 <ais523\unfoog> hmm, can I get you interested in Forth?
22:36:32 <pkzip> I *LOVE* Forth !
22:36:34 <ais523\unfoog> it's a practical language, but an interesting one, not that similar to mainstream langs
22:36:40 <ais523\unfoog> I thought you would, somehow
22:36:43 <pkzip> I use Zen Forth
22:36:47 <pkzip> My own version of it
22:36:58 <pkzip> or revised version of it
22:37:12 <pkzip> A Minimal MacroASM Forth
22:37:32 <pkzip> I want to add Lisp(y) words to it
22:37:40 -!- hagb4rd has quit (Quit: hagb4rd).
22:37:49 <pkzip> And write DOS virii in it !
22:38:04 <Ngevd> Stop saying "virii"
22:38:14 -!- pkzip has changed nick to QuickDirtyOS.
22:38:28 <ais523\unfoog> DOS viruses don't run all that well on modern systems
22:38:32 <QuickDirtyOS> I dunno why they call it like that
22:38:40 <QuickDirtyOS> on WinXP they do
22:38:43 <elliott> nobody calls it virii
22:38:52 <elliott> QuickDirtyOS: err, WinXP's DOS is just an emulation layer
22:38:57 <QuickDirtyOS> I've seen it on hackers sites
22:39:00 <elliott> I suppose they run about as well as Windows viruses under Wine
22:39:01 <Ngevd> If you want to be all pedantic and latin, it'd just be viri
22:39:30 <QuickDirtyOS> WinXP Dos is as good as Win2000 (it was also emulated under Win2000)
22:39:36 <Ngevd> But even then you'd be wrong
22:39:43 <Ngevd> It's like saying "oxygens"
22:40:06 <QuickDirtyOS> I named the first virus a " Logic bomb "
22:40:11 <QuickDirtyOS> I live in israel
22:40:17 <QuickDirtyOS> Guess what
22:40:17 <ais523\unfoog> Ngevd: actually, it'd depend on where in the sentence it was
22:40:24 <QuickDirtyOS> I was a kid back than
22:40:30 <Ngevd> "virus" doesn't have a plural in Latin
22:40:35 <ais523\unfoog> "DOS virii" was the subject of that sentence, so it should be "DOS viros", I think
22:40:36 <QuickDirtyOS> prob. was near Jerusalem
22:40:40 <ais523\unfoog> perhaps -es, I haven't done Latin for ages
22:40:44 <QuickDirtyOS> cause it WAS the Jerusalem viri
22:40:57 <QuickDirtyOS> I didn't know what to call it
22:41:09 -!- calamari has joined.
22:41:11 <QuickDirtyOS> so for me, a "Logic bomb"
22:41:18 <Ngevd> ais523\unfoog, you mean "object"
22:41:20 <QuickDirtyOS> your "viri"
22:41:31 <ais523\unfoog> Ngevd: right, indeed
22:41:33 <ais523\unfoog> *object
22:41:34 <elliott> the singular is definitely virus
22:41:42 <Ngevd> We can agree on that, elliott
22:41:45 <QuickDirtyOS> I like virus better
22:41:48 <zzo38> Some old IBM BIOS had ROM BASIC. I would like to have the PC BIOS with Forth.
22:41:55 <ais523\unfoog> elliott: even then, if you're going to be all Latiny, why wouldn't it become virum when it was the object of a sentence?
22:42:02 <QuickDirtyOS> They did that with Linux
22:42:13 <QuickDirtyOS> Why won't you buy a SSD
22:42:27 <QuickDirtyOS> and put ForthOS in the Boot sector ?
22:42:33 <Ngevd> ais523\unfoog, because, to paraphrase Henry Beard, that'd be like playing football with ice-skates on
22:42:38 <elliott> ais523\unfoog: i was responding to: "your "viri""
22:42:45 <elliott> we should just talk in latin.
22:42:59 <ais523\unfoog> Ngevd: what if you were in a skating rink at the time?
22:42:59 <Ngevd> ita vero
22:43:04 <QuickDirtyOS> I said I like virus better too
22:43:10 <ais523\unfoog> it'd probably work better with the skates than without
22:43:14 <ais523\unfoog> I think; I'm not an expert on this
22:43:23 <QuickDirtyOS> I wrote viri to be 'exact'
22:43:55 <zzo38> What is a SSD?
22:44:02 <Ngevd> pluralis in lingua Anglica est "viruses"
22:44:04 <QuickDirtyOS> A Flash Disk
22:44:19 <QuickDirtyOS> So the Flash BIOS wud load Forth from a Flash Device.
22:44:32 <ais523\unfoog> zzo38: a storage device; it acts much like a hard disk, but is based on flash memory, rather than mechanical platters and magnetism
22:44:33 <elliott> `echo AM I TRANSACTIONAL YET?!
22:44:35 <HackEgo> AM I TRANSACTIONAL YET?!
22:44:36 <QuickDirtyOS> U heard of the LinuxBIOS btw ?
22:44:39 -!- aloril has quit (Ping timeout: 240 seconds).
22:44:43 <elliott> you mean coreboot?
22:44:52 <zzo38> I have heard of the LinuxBIOS/Coreboot
22:44:55 <QuickDirtyOS> yea
22:45:06 <zzo38> But as far as I know it is not a proper PC BIOS
22:45:08 <oerjan> <Ngevd> If you want to be all pedantic and latin, it'd just be viri <-- it's dubious to assume this as the word is somewhat irregular: it's a neuter word in -us.
22:45:09 <elliott> it doesn't support many motherboards to my knowledge.
22:45:22 <QuickDirtyOS> Linux is like the most quirky of all Forths, it has its own OS
22:45:39 <elliott> it's also not a forth
22:45:47 <oerjan> *+ of 2nd declination
22:45:52 <QuickDirtyOS> bash can be turned into one REAL fast
22:46:02 <QuickDirtyOS> or any of the shells
22:46:03 <elliott> so can x86
22:46:04 <Ngevd> Can we pretend it's in 4th to make our lives easier
22:46:09 <elliott> does that make assembly a forth? :P
22:46:18 <QuickDirtyOS> yea
22:46:29 <QuickDirtyOS> assembly and forth mix in my dreams
22:46:32 <QuickDirtyOS> also on my PC
22:46:42 <ais523\unfoog> `addquote <QuickDirtyOS> Linux is like the most quirky of all Forths, it has its own OS
22:46:43 <QuickDirtyOS> I use forth words in MacroASM
22:46:44 <HackEgo> ​/home/hackbot/hackbot.hg/multibot_cmds/lib/limits: line 5: /hackenv/bin/addquote: Permission denied \ /home/hackbot/hackbot.hg/multibot_cmds/lib/limits: line 5: exec: /hackenv/bin/addquote: cannot execute: Permission denied
22:46:54 <ais523\unfoog> err, is that /meant/ to happen?
22:46:57 <monqy> yes
22:47:03 <ais523\unfoog> `quote
22:47:05 <HackEgo> 560) <Taneb> I think it's fizzie against everyone atm <Taneb> AND EVERYONE IS WINNING <Taneb> EXCEPT FIZZIE
22:47:18 <ais523\unfoog> someone readonlied the quotes file?
22:47:31 <ais523\unfoog> no, -xed addquote
22:47:38 <ais523\unfoog> `run chmod a+x /hackenv/bin/addquote
22:47:40 <HackEgo> No output.
22:47:43 <ais523\unfoog> `addquote <QuickDirtyOS> Linux is like the most quirky of all Forths, it has its own OS
22:47:45 <HackEgo> No output.
22:47:51 <monqy> uh oh
22:47:52 <elliott> umm
22:47:53 <ais523\unfoog> `quote Forth
22:47:55 <HackEgo> 715) <QuickDirtyOS> Linux is like the most quirky of all Forths, it has its own OS
22:47:58 <elliott> ais523\unfoog: please don't try patching things up when it's broken
22:47:58 <elliott> `help
22:48:00 <HackEgo> Runs arbitrary code in GNU/Linux. Type "`<command>", or "`run <command>" for full shell commands. "`fetch <URL>" downloads files. Files saved to $PWD are persistent, and $PWD/bin is in $PATH. $PWD is a mercurial repository, "`revert <rev>" can be used to revert to a revision. See http://codu.org/projects/hackbot/fshg/
22:48:07 <ais523\unfoog> elliott: oh, I assumed that someone had -xed it as a prank
22:48:08 <elliott> I mean, without understanding what's going on :P
22:48:09 <QuickDirtyOS> I like the number 715
22:48:15 <monqy> `quote 714
22:48:18 <QuickDirtyOS> sounds like a hawkins Loc number
22:48:18 <HackEgo> 714) * Sgeo|web wants to see elliott be wrong about something <elliott> Sgeo|web: That literally never happens. <shachaf> Sgeo|web: There you go. A great example.
22:48:21 <ais523\unfoog> `run chmod a-x /hackenv/bin/addquote
22:48:22 <elliott> I think I just broke adqduote
22:48:24 <HackEgo> No output.
22:48:26 <elliott> ais523\unfoog: hey, stop
22:48:30 <ais523\unfoog> elliott: I'm putting it back!
22:48:41 <elliott> http://codu.org/projects/hackbot/fshg/index.cgi/rev/bbaa4fa982d2
22:48:43 <elliott> aha
22:48:47 <elliott> `run chmod +x bin/addquote
22:48:49 <HackEgo> No output.
22:48:51 <QuickDirtyOS> Keep my name on it:
22:48:54 <QuickDirtyOS> Its Amit.
22:48:58 <elliott> `delquote 715
22:49:01 <HackEgo> ​*poof* <QuickDirtyOS> Linux is like the most quirky of all Forths, it has its own OS
22:49:09 <elliott> oh wait
22:49:14 <elliott> I made a bad modification to addquote
22:49:24 <elliott> `run echo 'echo $(qc)") $1"' >>bin/addquote
22:49:27 <HackEgo> No output.
22:49:31 <elliott> `addquote <QuickDirtyOS> Linux is like the most quirky of all Forths, it has its own OS
22:49:33 <HackEgo> 715 quotes) <QuickDirtyOS> Linux is like the most quirky of all Forths, it has its own OS
22:49:36 <elliott> oops
22:49:41 <elliott> `revert -3
22:49:42 <HackEgo> Done.
22:49:47 <elliott> `run echo 'echo $(qc | cut -d' ' -f1)") $1"' >>bin/addquote
22:49:49 <HackEgo> No output.
22:50:02 <elliott> `addquote <QuickDirtyOS> Linux is like the most quirky of all Forths, it has its own OS
22:50:02 <QuickDirtyOS> Forth guys are gonna love me
22:50:10 <QuickDirtyOS> For this
22:50:11 <monqy> zzo?
22:50:14 <elliott> ais523\unfoog: tada... hurry up, dammit, HackEgo
22:50:15 <ais523\unfoog> elliott: you're just giving -d, not -d' ', as an argument to cut there
22:50:20 <elliott> ugh
22:50:21 <elliott> `revert
22:50:23 <HackEgo> Done.
22:50:29 <zzo38> QuickDirtyOS: For what?
22:50:31 <ais523\unfoog> because apostrophes don't nest
22:50:33 <elliott> `run echo 'echo $(qc | cut -d'"' '"' -f1)") $1"' >>bin/addquote
22:50:35 <HackEgo> No output.
22:50:36 <QuickDirtyOS> this quote
22:50:38 <elliott> `addquote <QuickDirtyOS> Linux is like the most quirky of all Forths, it has its own OS
22:50:47 <elliott> ais523\unfoog: have I mentioned that @ doesn't have that problem?
22:50:57 <ais523\unfoog> elliott: not in programs, obviously
22:50:59 <monqy> does @ have ANY problems
22:51:12 <ais523\unfoog> what about when typing programs; how does the parser reify the keystrokes/mousestrokes into a parsetree?
22:51:24 <zzo38> Yes. Its problem is that there is no such things, as far as I can tell
22:51:28 <elliott> @ doesn't have programs! but ok, I'll dignify your EVIL QUESTION with a response
22:51:34 <elliott> ais523\unfoog: excellently. next question!
22:51:43 <ais523\unfoog> elliott: err, functions
22:51:45 <elliott> http://codu.org/projects/hackbot/fshg/index.cgi/rev/af6a8d1f2673 ;; hmm, why isn't this working?
22:51:48 <elliott> `addquote <QuickDirtyOS> Linux is like the most quirky of all Forths, it has its own OS
22:51:50 <HackEgo> 715) <QuickDirtyOS> Linux is like the most quirky of all Forths, it has its own OS
22:51:51 <elliott> too many space
22:51:54 <elliott> ais523\unfoog: not all values are functions!
22:52:25 <ais523\unfoog> elliott: right; but I was thinking about writing functions in particular in my question
22:52:27 <elliott> ais523\unfoog: admittedly, as @ has no globals, most /useful/ "top-level" values are
22:52:37 <elliott> ais523\unfoog: I doubt you mean function
22:52:41 <elliott> you mean program-analogue
22:52:49 <elliott> for instance, a list of all prime numbers would count
22:52:54 <elliott> since it's analoguous to a program printing every prime number
22:52:58 <elliott> but that's not a function
22:53:10 <Phantom__Hoover> `log How did you work out where I live?
22:53:32 <ais523\unfoog> elliott: hmm
22:53:35 <HackEgo> 2011-11-12.txt:22:53:10: <Phantom__Hoover> `log How did you work out where I live?
22:53:44 <Phantom__Hoover> `log where I live?
22:53:47 <ais523\unfoog> you mean, a lazy list that did the computation wouldn't be counted as a function because it didn't have a function type, for instance?
22:53:49 <HackEgo> 2007-12-28.txt:22:20:17: <Hiato> where I live there's a band called fokoffpolisikar (at least I think that's how it's spelled)
22:54:02 <elliott> ais523\unfoog: yes (it doesn't "do" the computation, it just /is/ the result)
22:54:04 <elliott> Phantom__Hoover: s/?/\?/
22:54:09 <elliott> ais523\unfoog: OTOH, the reason most top-level @ values are functions is because they have to take all the modules they want as parameters
22:54:18 <elliott> because there are no globals
22:54:32 <elliott> which isn't... /strictly/ true
22:54:35 <elliott> but it's almost true
22:54:36 <ais523\unfoog> elliott: wouldn't it make more sense for them to take a function that resolved hashes into modules as an argument?
22:54:49 <elliott> ais523\unfoog: wow! why would you give every program root permissions?
22:55:22 <elliott> ais523\unfoog: for a start, hashes aren't actually integral to @'s core model any more (thankfully); for a second, that breaks the object-capability model, because it's a reference-forging tool
22:55:29 <ais523\unfoog> elliott: well, it wouldn't necessarily give them modules they didn't deserve
22:55:30 <elliott> also, it'd tie functionality to implementations, not APIs...
22:55:33 <zzo38> Is it supposed to be anything similar to a Haskell program?
22:55:37 <ais523\unfoog> but hmm, OK
22:55:39 <elliott> zzo38: sort of, yes
22:55:42 <ais523\unfoog> I assumed APIs would have hashes too
22:55:54 <ais523\unfoog> so that you could refer to them uniquely
22:55:58 <elliott> ais523\unfoog: they do; an API is identified by a module name, a hash, and a type signature
22:56:18 <elliott> well, it's identified by a hash of a name and a type signature
22:56:56 -!- Ngevd has quit (Quit: Goodbye).
22:56:58 <elliott> ais523\unfoog: anyway, I have certain requirements of my keypress-reifier, but no concrete specification; it's something I'll have to tweak as I use it
22:57:07 -!- Ngevd has joined.
22:57:16 <elliott> ais523\unfoog: for instance, the user must not constantly be bugged with the nested hierarchy; navigation should be /largely/ linear
22:57:26 <elliott> ais523\unfoog: reason: try navigating a heavily-nested TeXmacs expression
22:57:27 <ais523\unfoog> yep
22:57:31 <elliott> it's super annoying
22:57:50 <ais523\unfoog> I think that one possible method of navigating should be the one that would be used if it was a flat file using ( and )
22:57:52 <elliott> ais523\unfoog: also: not every keypress has to leave the program in a valid state -- semantically /or/ syntactically -- but it should try
22:57:57 -!- aloril has joined.
22:58:02 <ais523\unfoog> i.e. backwards and forwards in depth-first traversal order
22:58:07 <elliott> for instance, "if" should probably pregenerate the then/else keywords with appropriate indentation, and place a hole there
22:58:11 <elliott> but not fill the hole in
22:58:25 <ais523\unfoog> yep, just like many Java IDEs do already
22:58:51 <elliott> ais523\unfoog: yes (except they just leave blank space rather than a hole)
22:59:00 <elliott> the nice thing about holes are, you can ask the computer: what type is expected here?
22:59:10 <elliott> it can hoogle-equivalent for functions that could help you get to that type
22:59:11 <elliott> etc.
22:59:27 <ais523\unfoog> I remember something leaving <?>-shaped holes, but I can't remember what it was
23:00:01 <elliott> but anyway, the requirements are basically "not more painful than editing plain text", "largely linear navigation rather than focusing too much on the hierarchy", "as semantics-retaining as possible under incremental development", "not freaking annoying"
23:00:02 <ais523\unfoog> I suppose you could make it always correct by it leaving function arguments as the default hole-filler, but I'm not convinced that's a good idea
23:00:36 <elliott> ais523\unfoog: a nice thing about a proper AST type and holes and the like is that they make a lot of refactorings formal
23:00:42 <elliott> rather than risky textual manipulation
23:00:47 <ais523\unfoog> yep
23:00:48 <elliott> there's semantic /meaning/ to extracting out a hole as a parameter
23:01:01 <ais523\unfoog> my PhD is arguably on this subject
23:01:27 <ais523\unfoog> (type systems are good for refactoring, compiling is just really an extreme sort of refactoring, type systems are a good way to do this, this applies to hardware too)
23:01:39 <elliott> compiling is the kind of refactoring that makes your code worse :)
23:01:57 <QuickDirtyOS> sounds like a witty joke
23:02:13 <monqy> hi
23:02:20 <elliott> hmm, I'm kind of low on ideas as to the low-levelish language underpinning @lang that things like the GC are written in
23:03:18 <ais523\unfoog> shouldn't the GC be built into the @lang interp?
23:03:21 <elliott> the problem is that it has to map to modern exposed assembly as closely as possible while being completely safe...
23:03:25 <elliott> ais523\unfoog: no interp, compiler
23:03:27 <elliott> it's part of the RTS
23:03:31 <elliott> but what is the RTS written in?
23:03:34 <ais523\unfoog> ah, right
23:03:39 <ais523\unfoog> I was assuming there was some sort of VM involved
23:03:42 <elliott> no point writing it in assembly, I'd have to rewrite the GC for every platform, which is pointless
23:03:47 <ais523\unfoog> that could be written in something entirely different
23:03:51 <elliott> ais523\unfoog: well, VM, sufficiently heavy RTS, what's the difference
23:04:04 <ais523\unfoog> perhaps LLVM would be a practical example
23:04:05 <elliott> but, yeah, my intent is to minimise platform-specific code
23:04:07 <QuickDirtyOS> Use a minimal Forth
23:04:13 <QuickDirtyOS> Or a minimal C
23:04:16 <QuickDirtyOS> instead
23:04:18 <monqy> what is it with you and forth
23:04:19 <ais523\unfoog> it does what you want moderately accurately and isn't completely awful
23:04:24 <elliott> C isn't an option
23:04:31 <elliott> ais523\unfoog: unfortunately, no; LLVM isn't safe
23:04:32 <monqy> "c but better"
23:04:37 <elliott> you can write an LLVM program that segfaults
23:04:38 <QuickDirtyOS> Forth code is the same as machine code
23:04:42 <QuickDirtyOS> only better
23:04:44 <elliott> (adding runtime checks to every instruction is not acceptable)
23:04:47 <elliott> QuickDirtyOS: better and slower
23:04:54 <QuickDirtyOS> not slower
23:04:56 <QuickDirtyOS> if its native
23:04:59 <QuickDirtyOS> !
23:05:02 <QuickDirtyOS> duh.
23:05:11 <zzo38> Make a safe program similar to LLVM
23:05:13 <elliott> but of course.
23:05:38 <zzo38> Or, possibly, similar to Haskell too
23:05:50 -!- Ngevd has quit (Ping timeout: 245 seconds).
23:05:55 <elliott> ais523\unfoog: anyway, "applying the object-capability model to x86-64" sounds like a parody Ph.D. title
23:05:59 <ais523\unfoog> elliott: this language would necessarily have no access controls; if it's got enough perms to do GCing, it's got enough perms to do anything
23:06:07 <elliott> that probably applies to most papers that could come out of @...
23:06:27 <elliott> ais523\unfoog: no: it only has the perms to do GC if it's passed the heap
23:06:40 <QuickDirtyOS> assembly also isn't a dead-end, you can translate it just as well as Forth code.
23:06:45 <ais523\unfoog> hmm, so it's something more like NaCl
23:06:46 <elliott> ais523\unfoog: consider a very low-level section of, e.g. a graphics card driver
23:06:51 <elliott> that needs to have precise control over instructions
23:06:55 <elliott> it only needs a certain segment of RAM
23:06:56 <elliott> some IO ports
23:06:58 <ais523\unfoog> which is x86 machinecode plus a proof that it doesn't do anything nasty
23:07:00 <elliott> and local memory/registers
23:07:08 <ais523\unfoog> (and the proof is checked before the program is run)
23:07:13 <Sgeo|chromcrash> .
23:07:16 <elliott> there's no reason to let it trample on anything else at all
23:07:17 <elliott> Sgeo|chromcrash: .
23:07:22 <Sgeo|chromcrash> elliott: Phantom__Hoover CakeProphet update
23:07:35 <monqy> .
23:07:44 <elliott> update to the .
23:07:48 <elliott> it is now 90% more .y
23:07:51 <monqy> i love Phantom__Hoover CakeProphet updates
23:07:55 <monqy> . updates too
23:07:58 <zzo38> OK that is one idea. If you can have such a proof combined with a program.
23:07:59 <ais523\unfoog> elliott: I think something NaCl-style is your best bet there, then
23:08:05 <zzo38> Ify ou can figure out how to make that work.
23:08:19 <elliott> zzo38: yep; that's quite a difficult area of research, though
23:08:24 <elliott> formal verification is hard enough of high-level languages
23:08:27 <elliott> ais523\unfoog: I'd rather make it safe-by-design, I think
23:08:36 <elliott> ais523\unfoog: for instance, there's no reason you should be able to pass a literal to "mov"
23:08:41 <zzo38> Possibly with protected mode; it might not work as well with real mode
23:08:51 <ais523\unfoog> elliott: doesn't mov take an address as its target argument anyway?
23:09:01 <ais523\unfoog> oh, right, you mean even writing to a fixed address is bad
23:09:08 <elliott> ais523\unfoog: yep, but there's no reason you should be able to specify an arbitrary one
23:09:10 <ais523\unfoog> if you aren't given the capability for that address
23:09:12 <zzo38> I think x86 does have bound checking instructions
23:09:20 <elliott> ais523\unfoog: there's also no reason you should be able to cast int -> ptr, too, ofc
23:09:21 <ais523\unfoog> I thought you just meant you didn't want people to modify literals
23:09:31 <elliott> ais523\unfoog: so some kind of type system is necessar
23:09:31 <elliott> y
23:09:39 <elliott> I think I'll make it an infinite-register design
23:09:45 <ais523\unfoog> getting that language right is the really hard step
23:09:46 <elliott> but allow pinning virtual registers to hardware registers
23:09:47 <elliott> in case you need that
23:10:00 <ais523\unfoog> as a single security bug in it will cause the entire system to be insecure
23:10:07 <ais523\unfoog> with no other layers of defence
23:10:07 <elliott> ais523\unfoog: I've occasionally thought to just abandon the low-level language, write the GC unportably, and hope that no drivers need to do anything so low-level
23:10:12 <elliott> but it doesn't seem like the right thing to do
23:10:19 <elliott> the low level language doesn't clutter @'s design itself
23:10:20 -!- Taneb has joined.
23:10:26 <elliott> if you have an @ graph reduction machine, you can skip it entirely
23:10:28 -!- Taneb has quit (Read error: Connection reset by peer).
23:10:35 <elliott> and just compile and run @lang code directly
23:10:48 <elliott> ais523\unfoog: hmm, I'd disagree that there aren't other layers of defence
23:10:53 <elliott> ais523\unfoog: here's one: guessing addresses is pretty hard!
23:11:01 <monqy> i want an @ graph reduction machine
23:11:14 <quintopia> yesss
23:11:20 <ais523\unfoog> elliott: you don't need to guess, just try them systematically until you find a usable one
23:11:25 <quintopia> A GRASP machine would be awesome
23:11:36 <elliott> ais523\unfoog: that takes a very long time
23:11:42 <ais523\unfoog> so? still a security bug
23:11:47 <elliott> ais523\unfoog: oh, definitely
23:12:01 <elliott> ais523\unfoog: anyway, it is not that bad.
23:12:02 <ais523\unfoog> and it only takes a few seconds to fill memory on a modern computer, right, if all you're trying to do is fill memory with a particular pattern?
23:12:03 <elliott> ais523\unfoog: I mean,
23:12:06 <elliott> <ais523\unfoog> as a single security bug in it will cause the entire system to be insecure <ais523\unfoog> with no other layers of defence
23:12:09 <elliott> because
23:12:17 <elliott> ais523\unfoog: in Windows, all you need is a single security bug in ANY DRIVER AT ALL
23:12:34 <elliott> ditto in Linux
23:12:35 <ais523\unfoog> you also need the perms to communicate with the driver, don't you?
23:12:50 <elliott> ais523\unfoog: usually, drivers read from unprivileged data, or they're not so useful...
23:13:17 <Deewiant> elliott: Yes, but unprivileged users can't talk to drivers
23:13:17 <elliott> the graphics driver runs in the kernel, X runs as root, but the user runs programs as themselves, and that data makes its way to the graphics driver
23:13:18 <ais523\unfoog> not always; things like keyboard/mouse drivers don't need to do any reading from processes on the system, just writing
23:13:23 -!- Ngevd has joined.
23:13:27 <elliott> Deewiant: <elliott> the graphics driver runs in the kernel, X runs as root, but the user runs programs as themselves, and that data makes its way to the graphics driver
23:13:39 <Deewiant> elliott: Sure
23:13:40 <ais523\unfoog> elliott: but things like X filter the data first
23:13:43 <Deewiant> elliott: But that's not necessarily exploitable
23:13:46 <Deewiant> elliott: Because of what he said
23:14:04 <elliott> ais523\unfoog: So? I could have responded with a bunch of ways in which @ reduces the likelihood of an exploit
23:14:23 <elliott> point is, @ has many fewer exploitable vectors than a typical modern system
23:14:25 <ais523\unfoog> well, OK
23:18:20 <zzo38> I have written some things relating to another plan of computer I have; many of the security features are implemented in hardware. It just depend on the way of connecting the memory. And then have a flipflop to enter and exit privilege mode, and a few jumpers to override these things.
23:18:46 -!- quintopia has quit (Ping timeout: 256 seconds).
23:18:48 <QuickDirtyOS> at what age(s) did u met the esoteric languages ( u could count BF and Forth as well as some LISPs maybe )
23:19:10 <elliott> 11 or so
23:19:23 <zzo38> O, I don't remember
23:19:28 <QuickDirtyOS> 11? u had an Atari ?
23:19:37 <monqy> I can't remember. Probably 10 or 11 or so.
23:19:51 <QuickDirtyOS> was it Forth or BF ?
23:20:01 <elliott> what if it was neither
23:20:05 <elliott> (it was probably bf, but bf never interested me)
23:20:05 <monqy> what if
23:20:09 <ais523\unfoog> the first esolangs I came across were INTERCAL and Malbolge
23:20:25 <monqy> I came across INTERCAL first as well, but never really learned it
23:20:26 <elliott> probably befunge and underload got me into esolangs?
23:20:27 <ais523\unfoog> and I found the esolang community searching for info about INTERCAL
23:20:29 <elliott> i liked malbolge too
23:20:31 <elliott> and unlambda
23:20:43 <ais523\unfoog> monqy: hardly anyone's actually learned INTERCAL, I think, which is a pity
23:20:53 <ais523\unfoog> I really like the way the control flow works in modern INTERCAL, it's a thing of beauty
23:21:11 <ais523\unfoog> its expressions are still pretty nasty, though; reverse assignments make them so much better, but no compiler handles them correctly yet
23:21:18 <QuickDirtyOS> I only came to BF a year or less after bumpin into Forth.
23:21:39 <QuickDirtyOS> with a native x86 compiler, of course
23:21:46 <QuickDirtyOS> a very basic compiler
23:21:55 <zzo38> I think I found Brainfuck at first. But I did learn INTERCAL, too. Including both the old and new INTERCAL, and even wrote some suggestions of new INTERCAL
23:21:56 <QuickDirtyOS> (for both)
23:22:09 <elliott> `echo TRANS - ACT - IONAL
23:22:11 <HackEgo> TRANS - ACT - IONAL
23:22:22 -!- Ngevd has quit (Ping timeout: 258 seconds).
23:22:22 <QuickDirtyOS> For me it was in 2007 I think
23:22:38 <QuickDirtyOS> 2007, and I was 33
23:22:42 <QuickDirtyOS> or 32.
23:22:48 <zzo38> I know Forth as well; and I have added support for Forth codes into MegaZeux.
23:24:17 <QuickDirtyOS> but was it in ur 20s or 30s ?
23:24:19 -!- Ngevd has joined.
23:24:23 <QuickDirtyOS> or 40s ?
23:25:00 <QuickDirtyOS> can Machine Code be called an esoteric language btw ?!
23:25:19 <monqy> esoteric machine code
23:25:21 <ais523\unfoog> no, not really
23:25:21 <QuickDirtyOS> if so, I also came to meet it at 10 or 11
23:25:25 <ais523\unfoog> it's just a weird encoding for asm
23:25:33 <monqy> was it esoteric asm
23:25:36 <QuickDirtyOS> but its tough.
23:25:55 <QuickDirtyOS> Z80 was similar, but not as simple as 8080
23:25:55 <monqy> "tough?" what does that mean and how does it make it esoteric
23:26:40 <QuickDirtyOS> if BF was easy (as some, including my translator make it)
23:26:49 <QuickDirtyOS> would you consider it esoteric ?
23:26:59 <QuickDirtyOS> just because it wasn't mainstream ?
23:29:16 -!- Ngevd has quit (Ping timeout: 258 seconds).
23:29:34 -!- quintopia has joined.
23:29:34 -!- quintopia has quit (Changing host).
23:29:34 -!- quintopia has joined.
23:29:45 <monqy> esoteric doesn't mean difficult, does it?
23:29:59 <QuickDirtyOS> I'll keep that question for Chuck Moore
23:30:05 <QuickDirtyOS> he comes in here at times
23:30:09 <QuickDirtyOS> doesn't he ?
23:30:11 <QuickDirtyOS> ?!
23:30:11 <lambdabot> Maybe you meant: . ? @ v
23:30:48 <elliott> no
23:31:14 <QuickDirtyOS> I guess that was a tough question .. :-[
23:32:31 <QuickDirtyOS> I think machine code can be called esoteric
23:32:32 <Phantom__Hoover> Oi, Gregor, can I have some money?
23:32:49 <QuickDirtyOS> I think odds are for me.
23:32:58 <QuickDirtyOS> bets?
23:34:57 <monqy> what sort of machine code are you calling esoteric
23:35:11 <ais523\unfoog> elliott: do you consider Redcode an esolang?
23:35:25 <monqy> if you mean machine code in general, then it's not esoteric at all
23:35:32 <elliott> ais523\unfoog: hmm... probably no, but it has quite a few esoteric features
23:35:34 <QuickDirtyOS> its not mainstream (Redcode)
23:35:38 <elliott> ais523\unfoog: and it probably counts as esoteric programming
23:35:42 <ais523\unfoog> elliott: I'm conflicted on it myself
23:35:59 <ais523\unfoog> it's yes based on use, but no based on features
23:35:59 <elliott> ais523\unfoog: I think it's perfectly possible to have a language where all coding in it is esoprogramming but the language isn't esoteric itself
23:36:04 <ais523\unfoog> apart from the lack of library support
23:36:15 <QuickDirtyOS> actually Z80 is very mainstream (my bad luck?)
23:36:17 <elliott> I dunno, it has some weird stuff
23:36:22 <ais523\unfoog> elliott: hmm, perhaps; but a language designed for that /would/ be an esolang, I think, and thus fail at its goal
23:36:28 <ais523\unfoog> it'd have to happen accidentally
23:36:30 <elliott> QuickDirtyOS: mainstreamness is not evry relevant to esolang status
23:36:57 <QuickDirtyOS> I would vote for machine code for esolang
23:37:19 <elliott> machine code isn't a single language
23:37:20 <QuickDirtyOS> I remember one machine code / assembly that is an esolang
23:37:36 <monqy> oh?
23:37:56 <CakeProphet> there are several machine code esolangs, yes.
23:38:00 <elliott> ais523\unfoog: anyway, I'm kind of thinking that the low level @ language's type system would inevitably end up becoming as complicated as @lang's
23:38:04 <QuickDirtyOS> elliot: Mnemonics
23:38:06 <elliott> ais523\unfoog: so why not just reuse it?
23:38:18 <zzo38> There is the Checkout esolang; and I would like a (FOSS) implementation of it.
23:38:25 <QuickDirtyOS> Mnemonics
23:38:32 <CakeProphet> monqy: mnemonics
23:38:37 <monqy> CakeProphet: mnemonics
23:38:41 <elliott> menomincs
23:39:02 <elliott> ais523\unfoog: in fact, there's no reason the low level language couldn't just be part of @lang itself
23:39:32 <elliott> ais523\unfoog: (note: you could make /Python/ part of @lang, by just defining an AST for it and an interpreter function; you could include it in code just like any other program)
23:39:35 <monqy> unless it would end up cluttering up @lang horribley
23:39:37 <elliott> s/program/program element/
23:39:40 <elliott> monqy: see above
23:39:43 <monqy> yeah
23:39:44 <elliott> it could be separate, but use the same type system
23:39:54 <elliott> and since it would be restricted, you wouldn't have to implement all of @lang
23:39:55 <elliott> well, that's a lie
23:40:00 <elliott> you could still use all of @lang in the type system
23:40:07 <elliott> so it's not actually any easier to implement at all
23:40:09 <elliott> but ehhhh
23:40:13 <monqy> would it require features outside of @lang
23:40:14 <elliott> it gives the runtime properties i want
23:40:15 <elliott> so yay
23:40:40 <elliott> ais523\unfoog: actually there's a slight issue: how can you compile a dependently-typed language down to a language which shares its type system, without having the compilation of the latter depend on the former?
23:40:55 <elliott> I think you can solve the infinite regress simply in the standard bootstrapping manner, but am not sure exactly how
23:41:32 -!- Ngevd has joined.
23:41:50 <ais523\unfoog> elliott: why does the low-level lang need dependent typing?
23:41:58 <Ngevd> XSL S AND K IS DOING SOMETHING!
23:41:59 <elliott> <elliott> ais523\unfoog: anyway, I'm kind of thinking that the low level @ language's type system would inevitably end up becoming as complicated as @lang's
23:42:01 <elliott> <elliott> ais523\unfoog: so why not just reuse it?
23:42:02 <elliott> <elliott> ais523\unfoog: in fact, there's no reason the low level language couldn't just be part of @lang itself
23:42:08 <elliott> ais523\unfoog: why invent two type systems?
23:42:16 <ais523\unfoog> ah, OK
23:42:22 <elliott> ais523\unfoog: for instance, unless the low level language uses @lang's type system, it can't use modules at all
23:42:25 <elliott> which is... problematic
23:42:26 <ais523\unfoog> anyway, I'm going home, as I@m now too tired to communichaterently
23:42:30 <elliott> communichaterently
23:42:33 <Ngevd> Earlier today, I had a thought about @
23:42:41 <Ngevd> It's a bit like a space elevator
23:42:50 -!- ais523\unfoog has quit (Remote host closed the connection).
23:42:55 <elliott> Ngevd: is it like the bf joust warrior space_elevator?
23:43:03 <Ngevd> Not as far as I know
23:43:29 <Ngevd> What I mean is, @ will do something similar to things that already exist, but in a completely different, better way
23:43:32 <elliott> heh
23:43:37 <elliott> and never be built? :)
23:43:40 <Ngevd> Exactyl
23:43:47 <Ngevd> s/yl/ly/
23:44:21 <elliott> hmm, what has to be implemented in the low level language
23:44:31 <Ngevd> Hardware thingies?
23:44:46 <elliott> post-platform-initialisation bootup, the allocator, gc, storage manager (= persistence stuff)
23:44:58 <elliott> parts of the scheduler (parts will have to be platform specific)
23:45:14 <elliott> really low-level driver parts like the /implementation/ of the higher-level interfaces to things like IO ports and memory sections
23:45:15 <elliott> hmm
23:45:18 <Ngevd> Will @ work on today's computers?
23:45:26 <elliott> yes
23:45:29 <Ngevd> Oh cool
23:45:54 <CakeProphet> elliott: it should somehow use Checkout on graphics cards. :D
23:45:58 <elliott> <elliott> really low-level driver parts like the /implementation/ of the higher-level interfaces to things like IO ports and memory sections
23:46:04 <elliott> actually, a lot of this might have to be trusted platform-specific code
23:46:08 <elliott> although, hmm
23:46:27 <elliott> I wonder if I couldn't write the entire scheduler in the low-level language, and just have modules for each platform that use something like inline asm
23:46:40 <elliott> which would require the maximum trust level, ofc
23:46:43 <elliott> but that's okay for a scheduler
23:46:49 <elliott> CakeProphet: that would be difficult :p
23:48:21 <Ngevd> elliott, has any code been written for @? At all?
23:48:34 <elliott> Ngevd: i've worked on @-related code, yes
23:53:35 <Ngevd> Well, I've got XSL S and K to run itself recursively
23:53:41 <Ngevd> I just haven't yet got it to /stop/
23:54:14 -!- Patashu has joined.
23:56:08 <zzo38> Actually I would like to have some GPU with something like Checkout as its native code
23:56:31 -!- QuickDirtyOS has left.
23:58:12 <CakeProphet> I am wondering if it's even possible to use a fibonacci heap as a homoiconic programming language structure.
23:58:51 <monqy> bye quickdirtyos
23:59:03 <CakeProphet> I think forest is probably a better name for the actual structure that it will end up being.
23:59:43 <CakeProphet> as a fibonacci heap is just a kind of forest. if I'm not using it as a heap and instead computing programs then it's not really much of a heap.
23:59:56 <CakeProphet> well, unless I give nodes priorities.
←2011-11-11 2011-11-12 2011-11-13→ ↑2011 ↑all