00:00:10 <Sgeo> What's hideous about conduits?
00:00:16 <elliott> The huge number of operators that all amount to composition except with Random New Type #N are ugly
00:00:40 <Sgeo> I think iterIO unifies enumerators with enumeratees?
00:00:56 <elliott> Sgeo: For one apparently you have to be in IO and use mutable variables to maintain any kind of internal state but it's ok because you're going to be in IO all the time anyway!
00:01:15 <elliott> Also they don't seem to actually reduce any of the ugly, just pile more and more on top to achieve things that iteratees can't.
00:01:25 <elliott> And yes, I've used iterIO.
00:01:40 <elliott> It's nicer but it's not quite nice.
00:01:58 <Sgeo> It has a dependency on unix. Why?
00:03:03 <elliott> I forget, probably socket-related
00:03:23 <elliott> The zlib/ssl dependencies are more annoying; at least everyone already uses Unix
00:03:52 <Sgeo> The conduit terminology stuff reminds me of equiv. concepts in iteratrees
00:04:03 <Sgeo> (Well, the enumerator rendition of such)
00:04:10 <elliott> Something... based on iteratees... reminds you of iteratees?
00:04:59 * elliott has his own Pet Theory of Iteratees, but will settle for something that is just usable.
00:05:42 <elliott> Or, well, Pet Theory of Stream Processing.
00:08:03 -!- sebbu2 has joined.
00:08:03 -!- sebbu2 has quit (Changing host).
00:08:04 -!- sebbu2 has joined.
00:11:01 * elliott mentions that he got an API addition into iterIO, waits for Sgeo to consider him famous.
00:11:16 -!- sebbu has quit (Ping timeout: 240 seconds).
00:11:17 <elliott> Although it's not technically in the Hackage version.
00:22:03 -!- sebbu2 has changed nick to sebbu.
00:37:10 <elliott> pikhq: I was thinking that there's no real reason ~/code shouldn't just be ~/work or ~/works or something, assuming things won't be harder to find by mixing code and non-code and collisions are unlikely.
00:56:56 -!- MDude has quit (Ping timeout: 240 seconds).
01:57:35 -!- MDude has joined.
01:58:20 <HackEgo> asenne syytyväke idenmuksen madaltangalla ulkitsemmistuviksessa maitappaimme ohjella sesi mutoakaamia salailemme sahavoksi biografistakusta euksissanne varjoittäkä sykieni
01:58:37 <elliott> "attitude syytyväke idenmuksen madaltangalla ulkitsemmistuviksessa maitappaimme ohjella Sesi mutoakaamia hiding sahavoksi biografistakusta euksissanne varjoittäkä sykieni"
02:11:39 -!- Nisstyre has quit (Quit: Leaving).
02:18:03 <kallisti> elliott: I was too lazy to do Chinese, and don't have a Japanese dictionary currently
02:25:45 -!- derdon has quit (Remote host closed the connection).
02:35:37 -!- incomprehensibly has joined.
02:36:39 -!- Nisstyre has joined.
02:41:18 -!- azaq23 has quit (Quit: Leaving.).
02:57:05 -!- incomprehensibly has quit (Quit: Leaving.).
03:07:06 -!- Vorpal has quit (Ping timeout: 240 seconds).
03:13:30 -!- elliott has quit (Ping timeout: 252 seconds).
03:17:41 -!- Nisstyre has quit (Remote host closed the connection).
03:22:29 -!- Klisz has joined.
03:25:12 -!- Nisstyre has joined.
03:44:36 -!- Nisstyre has quit (Ping timeout: 240 seconds).
04:04:39 <pikhq> Oh, post-dinner lethargy.
04:06:00 <kallisti> pikhq: digesting is hard work.
04:46:52 -!- DCliche has joined.
04:56:20 -!- Klisz has quit (*.net *.split).
04:58:12 -!- pikhq_ has joined.
04:58:24 -!- pikhq has quit (Ping timeout: 252 seconds).
04:59:04 -!- kmc has quit (Quit: Leaving).
05:03:10 -!- zzo38 has joined.
05:12:42 -!- pikhq has joined.
05:12:49 -!- pikhq_ has quit (Ping timeout: 248 seconds).
05:18:16 <zzo38> Why do some computer pinball games prevent you from nudging the table when tilted but still make the ball continue moving and you have to wait until it drains? It should either allow you to nudge when tilted, or force the ball to drain immediately. (Of course this problem does not occur in games that don't have tilt penalty; possibly because the nudge strength of the computer is never sufficient to trigger tilt)
05:20:54 <coppro> zzo38: Because nudging in a tilt is irrelevant
05:27:28 <itidus21> my first computer game was nintendo pinball
05:28:23 <itidus21> as my research indicated, the pinball game for NES was initially done at HAL but eventually they collaborated with nintendo to finish it
05:29:27 <zzo38> coppro: True; but nudging during a tilt would allow the ball to drain more easily especially if the ball is stuck and you need to nudge it to get the ball unstuck so that it can drain.
05:32:02 <Sgeo> o.O at ball getting stuck during tilt penalty
05:32:13 <zzo38> Solutions to this problem include (pick one): * No tilt penalty. * Ball automatically drains immediately if a tilt is triggered. * Nudging is allowed during a tilt in order to get the ball unstuck if it is stuck and unable to drain for some reason.
05:32:15 <Sgeo> Shouldn't require gamer intervention though
05:32:33 <Sgeo> How about: Computer nudges the table
05:33:02 <itidus21> theres always "no tilt option" :P
05:33:28 <zzo38> Sgeo: No, I don't like that. I prefer one of the first two solutions. For a game designed to do hardware/software simulation separately, use the first or third solution.
05:33:39 <itidus21> by which i mean, what are the rules for tilting? can you get away with any tilts?
05:33:50 <zzo38> (The first option is common in flipperless pinball computer games.)
05:33:53 -!- Nisstyre has joined.
05:34:19 <Sgeo> What does the pinball game that comes on Windows do?
05:34:44 <Sgeo> I think it doesn't present any surfaces that the ball can get stuck on during tilt penalty, but I may misremember
05:34:48 <zzo38> itidus21: On a computer I think it simply shouldn't nudge the table extremely hard, and therefore have no tilt penalty (in a real pinball, it might tilt if nudging harder)
05:34:58 <itidus21> having said this i suppose that not including a tilt option would be like castrating the game
05:36:10 <zzo38> Sgeo: Yes, that pinball game (and in fact most), don't have any surfaces that the ball can get stuck on. However, that pinball game tilts if you hold down a key for too long. If you push a nudge key for a very short time, there is no penalty. But it simply makes the ball continue to move with no scoring and nudging is disallowed during tilt
05:36:29 <zzo38> (Which is the thing I don't like and is the problem I mentioned)
05:36:37 -!- Nisstyre has quit (Max SendQ exceeded).
05:40:00 <zzo38> Most computer pinball games, if they have flippers they have tilt penalty and if flipperless have no tilt penalty for nudging. There are a few exceptions, such as Pokemon Pinball which is flippered but has no tilt penalty for nudging, and the original Nintendo Pinball in which you cannot nudge at all.
05:45:36 -!- MDude has changed nick to MSleep.
06:13:26 -!- aloril_ has quit (Ping timeout: 255 seconds).
06:21:52 <zzo38> I have thought about criteria of proper religion (I think I have been asked about it on this channel before and wasn't quite sure): * It must be philosophical. * Religious ideas and texts must be available freely in the public domain in some form. * No direct contradition to reality or apparent reality. * It is not an exact science. * No secret torture on its adherents.
06:23:20 <zzo38> Do you have any changes to report?
06:26:42 -!- kmc has joined.
06:28:32 <zzo38> Do these criteria seem OK to you, or do you think of the things slightly different than this should be better?
06:29:53 <Sgeo> Define "direct contradiction to reality"
06:33:16 <pikhq> Hmm. Have a Kindle now.
06:33:38 <pikhq> All I can think is: dammit e-ink monitors would be awesome if not for all the weaknesses of e-ink.
06:50:01 <zzo38> Sgeo: Well, I could give an example: Say your beliefs include that every Feb.29 a purple sky with green dots is visible throughout the world. Obviously it isn't. Another example would be to say that everyone born with Saturn in Pisces has blue eyes, and then you find counterexamples so that isn't correct either.
06:51:04 <Sgeo> Can unobvious contradictions with reality exist in what you term a proper religion?
06:51:15 -!- DCliche has quit (Quit: You are now graced with my absence.).
06:52:46 <pikhq> zzo38: In short, "proper religion" must be an exercise in doing nothing.
06:53:38 <Sgeo> e.g. Suppose that Jesus never existed. Is Christianity no longer a proper religion, even if there's no counterevidence we found against his existence?
07:01:42 <zzo38> Sgeo: That can be considered a mythology and has no direct contradiction to today's existence so that wouldn't make it improper. Possibly my statements are not sufficiently qualified. But, that is how you do philosophy you argument about things like this.
07:02:32 <zzo38> What I meant it to mean, includes that mythologies never cause it to fail these tests.
07:04:00 <Sgeo> How about "The Earth is 6,000 years old"? Contradicts evidence we can find, but an individual may not realize this.
07:05:03 <zzo38> Sgeo: Well, that can be found in different sects I suppose. Some sects might disagree with you. In addition, although there is evidence for historical things, do you know about the philosophical idea that the universe was invented 5 minutes ago?
07:05:40 <zzo38> Philosophy is complicated and has many disagreements and agreements and so on.
07:06:09 <Sgeo> Going off of that, can "The sky is always green" be part of a proper religion? It can be argued that when we look at the sky, our eyes are wrong.
07:09:33 <zzo38> In that case, I would argue that "when we look at the sky, our eyes are wrong" is its actual belief instead.
07:10:52 <zzo38> However, note that this is a philosophical idea. Wrong? In what way? And do you define "the sky is always green" not refering to the green that is a color that you perceive with your eyes?
07:11:17 <zzo38> Obviously it would have to be the case, otherwise it is a direct contradiction to reality and therefore fails that criteria.
07:12:24 <zzo38> See? Metareligion, like any philosophy, is full of philosophical ideas to worry about.
07:14:23 -!- aloril has joined.
07:20:27 -!- Nisstyre has joined.
07:23:17 <kallisti> @tell elliott also, had you not recommended the target offset, I was already working out a similar algorithm that would have basically had a target offset of 0.
07:23:59 <kallisti> pikhq: Chinese words consist of multiple characters right?
07:24:39 <zzo38> Yes, they can, sometimes. I think.
07:25:37 -!- Nisstyre has quit (Ping timeout: 240 seconds).
07:26:41 <zzo38> But I don't know if it counts as a word
07:27:47 <kallisti> I'm just wondering what a "1-gram" is going to be in Chinese
07:38:01 <zzo38> That is difficult.
07:39:07 <zzo38> However, I can offer some suggestions for Japanese: Some small letters only come after certain other letters, and some words have kanji. Compound words are sometimes written combination kanji/kana or combination hiragana/katakana.
07:39:48 <kallisti> ah, okay, so this is the actual reason I didn't want to mess with Chinese. :P
07:40:02 <kallisti> fo 换洗 船位 屡禁不止 痴情 con 硝 dea uz sel fig spher beni pre 累加 险地 轮机 轻 寝 獲 多種 史詩 圣上 res 辑
07:40:19 <kallisti> it took only a few seconds to read all of the data actually. I was surprised.
07:41:01 <kallisti> I don't really think it makes sense to randomly generate chinese-like "words"
07:41:24 <zzo38> kallisti: I think you are probably correct.
07:41:40 <kallisti> because each character is a unit of meaning.
07:42:52 -!- Patashu has quit (Read error: Connection reset by peer).
07:43:24 <zzo38> Yes, it is ideograph
07:44:06 <pikhq> kallisti: A character corresponds to a morpheme, *typically*...
07:44:14 <pikhq> And, of course, a word is composed of one or more morphemes.
07:45:20 <kallisti> hm, should I leave latin alphabet stuff in this?
07:47:43 <kallisti> I feel that using 4-grams will basically result in a random chinese word /selector/
07:47:52 <kallisti> because few chinese words are over 4 characters wide.
07:49:04 <kallisti> "fo wash the ship's position repeated infatuation con nitrate dea uz sel fig spher beni cumulative risk to engineer pre-sleep light res Majesty by a variety of epic series
07:51:16 <kallisti> which is another interesting point: I should perhaps allow a variable gram count so that different languages can be broken up into different subsequence lengths.
07:52:17 <kallisti> hmmm yeah so this data contains some latin alphabet loan words
07:52:22 <kallisti> but the vast majority are chinese words, which are very small
07:52:52 <kallisti> so, my algorithm, which selects word lengths based on frequency of word length, is going to generate really small latin alphabet words.
07:53:13 <kallisti> because of the predominance of 2-3 character chinese script words.
07:53:27 <kallisti> THIS IS WHY I DON'T WANT TO DEAL WITH CHINESE.
07:53:51 <HackEgo> exma specidado resse founeder vizza neraitiumpuisière brung quiterst fardeolo virong devoyranimu ceba auoit teine râledes ordiphypérin survable aptés lder ardyna bis bivolenivez erkedler alli déclatées
07:53:55 <pikhq> You'd probably have an easier time if you could somehow get a Pinyin data set.
07:54:33 <kallisti> well, I can filter out the latin script.
07:55:22 -!- Nisstyre has joined.
08:00:57 -!- Nisstyre has quit (Ping timeout: 240 seconds).
08:01:21 * kallisti can't wait to begin working on his BEST ACRONYM GENERATOR YET.
08:04:12 * kallisti using PATENTED STATISTICAL TECHNIQUES such as MULTIPLICATION and DIVISION.
08:07:34 -!- Nisstyre has joined.
08:14:31 <zzo38> I thought about indexed monads and indexed comonads. I can understand how state monad that can change type makes a indexed monad. I also realized, there is (,) monad and (->) comonad which depend on a monoid, but there can also be indexed monad and indexed comonad version of these that depend on a category instead.
08:14:49 <zzo38> In both cases, fmap remains the same.
08:15:02 <zzo38> as the non-indexed version.
08:16:13 <zzo38> For (,) indexed monad: returnI = (,) id; joinI (x, (y, z)) = (y . x, z);
08:16:32 <zzo38> For (->) indexed comonad: extractI = ($ id); duplicateI f x y = f (y . x);
08:16:56 * Sgeo has a "fun" idea for a monad
08:17:02 <Sgeo> Remind me to implement it tomorrow
08:17:16 <Sgeo> It's probably useless due to pervasive use of unsafePerformIO though
08:17:31 <Sgeo> (Not in my code .. in useful libraries that would be rejected by Safe)
08:17:50 <zzo38> What is your idea?
08:17:58 <Sgeo> Object-based capabilities
08:18:31 <Sgeo> (Ok, not a helpful example)
08:18:39 <Sgeo> makeCap :: a -> IO (Cap a)
08:19:36 <Sgeo> writeFileCap :: FilePath -> Cap (String -> IO ())
08:19:42 <Sgeo> Erm, that's wrong
08:19:57 <Sgeo> writeFileCap :: FilePath -> IO (Cap (String -> IO ()))
08:20:57 <zzo38> What exactly does Cap mean? Is it a functor?
08:21:04 <Sgeo> It's a monad. I think.
08:21:17 <Sgeo> But what it represents is being allowed to do the action
08:21:50 <Sgeo> That is, things in the Cap monad need to be passed a Cap for an IO action in order to be able to do the IO action
08:22:42 <Sgeo> myFileCap <- writeFileCap "somefilesomesuckercanwriteto.txt"
08:23:08 <Sgeo> runCap (somethingThatWantsToWriteToAFile myFileCap)
08:23:23 <zzo38> The best way to understand if it is monad is to explain what join will mean.
08:24:23 <Sgeo> join means if you have a permission that allows you to get a permission that allows you to run an action, join will give you the permission that allows you to run the action.
08:25:31 <zzo38> O, OK. If you have permission to get permission for something, then you can have permission to do so. Is that what you mean?
08:26:31 <Sgeo> At first, I thought that Cap and CapMonad (where Caps could be used) would be separate things, but now I don't think so.
08:26:37 <Sgeo> (Still not certain though)
08:27:09 <zzo38> I suppose that does make sense for join, but still I don't completely understand what it is going to do
08:27:21 <zzo38> (That is, what Cap is going to do, in general)
08:28:00 <Sgeo> That means you can have untrusted Caps, and have it run IO, but only IO that you say it can run by passing the needed Caps as arguments
08:28:56 <Sgeo> I'm still thinking through whether the meaning of Cap needs to be separated out per the original plan or not.
08:31:10 <Sgeo> (Note that what I stated here is not the separated version)
08:33:02 <Sgeo> The reason makeCap returns an IO action rather than the Cap directly is to prevent Caps from synthesizing Caps from default libraries
08:33:13 <zzo38> Sgeo: Yes I realized that.
08:33:59 <Sgeo> I don't think the meanings of Cap need to be separated. Using Caps is just saying "Given that I have permissions to do X, Y, and Z, this is a permission to do W"
08:34:01 <zzo38> Still, something could just return
08:34:45 <zzo38> Like, return (print "xyz") now gets a Cap (IO ()) I don't know what it is going to do, if anything
08:35:29 * Sgeo will need to think this over a bit more, but this is embarrassing.
08:36:52 <zzo38> Instead, maybe you can use a permission table that includes the actions permitted
08:37:18 <Sgeo> That was one of my original thoughts, but I want to avoid it, I think. I want permissions to be first-class objects.
08:38:19 <kallisti> did anyone else see green text?
08:38:44 <kallisti> I was pretty sure colors were not available.
08:38:57 <kallisti> > text ("!addpenis " ++ (join $ zipWith (\x y -> '\ETX':x ++ [y]) (cycle ["4","7","8","9","12", "2","13"]) "AWESOME\SI"))
08:40:24 -!- oerjan has joined.
08:41:12 <kallisti> >implying I can now do awful things like imply things like this.
08:41:42 <zzo38> I only see the control codes, CTRL+C and 3hmmm
08:41:44 <Sgeo> oerjan, I think I may be an idiot.
08:42:33 <Sgeo> zzo38 pointed out that return breaks my pretty security monad.
08:43:02 <zzo38> My program displays all IRC long parameters in blue. There is an option to interpret some control codes and affect color (for example, CTRL+A makes the text red)
08:43:17 <zzo38> Sgeo: Everyone is sometimes idiot, I think
08:43:40 <oerjan> Sgeo: hey don't start believing elliott here
08:43:43 <oerjan> <fizzie> Aw, oerjan just left; I was going to ask whether he's got his bjølvstøvers warmed up, and mørkbilleken in the oven.
08:44:24 <oerjan> bjølvstøver sounds like something you put on your feet, which naturally needs some warming up in this weather
08:44:47 <oerjan> mørkbilleken means "the dark-car game"
08:45:20 <Sgeo> Maybe if the Cap includes an extra bit. return makes it be 0. makeCap caps have 1
08:45:25 <Sgeo> (Well, False and True)
08:45:30 <Sgeo> But then I violate the monad laws.
08:46:21 <Sgeo> Maybe I should go back to separation
08:46:24 <zzo38> Sgeo: Yes I thought of that too and then realized that too
08:46:34 <Sgeo> Cap vs CapMonad
08:47:02 <Sgeo> Need a better name than CapMonad though
08:47:15 <Sgeo> And still not certain if that fixes anything
08:47:25 <Sgeo> Well, Cap would no longer be a monad, so that helps
08:47:52 <Sgeo> But I think it's conceptually uglier.
08:48:27 <Sgeo> If I have permission to do X, Y, and Z, I can't have permission to do X, see the result, possibly do Y, see the result, possibly do Z, see the result, and do something based on that?
08:48:34 <zzo38> Maybe you can have Cap (SecurityToken (IO ())) instead of Cap (IO ())
08:48:50 <Sgeo> zzo38, ooh, good idea, thanks!
08:51:26 <Sgeo> I see similarities between that and Cap vs CapMonad, but the SecurityToken idea implies usage patterns that make the ugliness go away.
08:51:55 -!- salisbury has joined.
08:51:59 <kallisti> functions are good capabilities.
08:53:05 * Sgeo shortens SecurityToken to Token
08:54:52 <Sgeo> I think Tokens need to be a monoid
08:55:16 <Sgeo> And there needs to be a function that combines the Tokens used during a Cap, so that the Cap can return a new thing with a valid Token
08:55:32 <zzo38> Or actually, like this: Cap (String -> IOToken ()) for the capability to print a string, so makeCap :: IO x -> IO (Cap (IOToken x)); runCap :: Cap (IOToken x) -> IO x;
08:56:43 <Sgeo> How do you define the Cap (String -> IOToken ())?
08:57:20 <zzo38> Sgeo: O, I didn't think of that
08:58:11 <zzo38> callIOToken :: IOToken x -> Cap x;
08:58:33 <Sgeo> usedTokens :: Cap (Token <crud>)
08:58:46 <Sgeo> Don't see a way to combine Tokens of different types
08:59:30 <Sgeo> Hmm hmm hmm. Maybe I kind of do, actually.
09:00:37 <Sgeo> Have the combining operation return a tuple of the types involved, or something, so that the Token is around a tuple of the types. But then the Token surrounds a non-IO action that merely contains IO actions.
09:00:58 <Sgeo> But I think that may just be a type thing.
09:01:04 * Sgeo needs to think about it more.
09:01:52 <zzo38> returnToken :: x -> Cap (Token x);
09:03:24 <zzo38> makeCapFunc :: (x -> IO y) -> IO (Cap (x -> IOToken y));
09:04:36 <Sgeo> How would that work out for functions with more than one argument? Just uncurry them until they fit the mold?
09:04:49 <zzo38> Sgeo: Yes, that is what I was thinking of
09:06:45 <oerjan> <const> <elliott> Oh, you're that variable person. --> is that a bad thing? <-- well you seem a little shifty.
09:06:47 <zzo38> Here is another different idea, not using Token: newtype Cap x = Cap (IO x); makeCap :: IO x -> IO (Cap x); makeCap = return . Cap; Or... maybe this has some problems too...??? (Of course the constructor Cap needs to be hidden from other modules)
09:07:58 <Sgeo> I was going to ask if the type was legal, but I just misread newtype as type
09:08:01 -!- aloril has quit (Ping timeout: 252 seconds).
09:08:03 -!- Ngevd has joined.
09:08:18 <zzo38> Sgeo: Does this seem to work?
09:08:39 <Sgeo> zzo38, I need to think about it
09:09:29 <Sgeo> I still don't see how you'd, say, get putStrLn into that.
09:10:25 -!- aloril has joined.
09:11:02 <kallisti> Sgeo: you'd need some kind of Cap x -> IO x function.
09:12:19 <Sgeo> kallisti, is that related to my current dilemma?
09:12:25 * Sgeo avoided saying something very very snarky
09:13:10 <zzo38> runCap (Cap x) = x;
09:13:24 <zzo38> It would have to be defined like that to avoid being a field of a record
09:13:52 <Sgeo> This is assuming that security tokens aren't mixed in somewhere
09:16:06 <zzo38> Something that needs putStrLn capability could be passed (String -> Cap ()) as an argument I suppose
09:16:47 <Sgeo> Oh, so your current Cap is basically taking the place of IOToken?
09:17:14 <zzo38> Sgeo: Yes I suppose that is my new idea. I kept changing it just like you have done so.
09:17:34 <Sgeo> Hmm, actually, I think I like it.
09:17:36 <kallisti> Sgeo: yes, runCap would allow you to putStrLn and then run it later.
09:17:49 <kallisti> Sgeo: which was your current dilemma.
09:18:40 <Sgeo> ...no, zzo38's pointing out that I can pass in String -> Cap () to someplace that needs it instead of expecting a function wrapped in a Cap is what solves the dilemma
09:18:42 <zzo38> Could you get (String -> Cap ()) from makeCap?
09:19:31 <Sgeo> putStrLnCap str = ...
09:19:47 <Sgeo> (Erm, no, as in, my half-an-example is bad, not as in a no to your question)
09:20:33 <zzo38> kallisti: I don't think so.
09:20:54 <zzo38> makeTypedCap :: t (IO x) -> IO (t (Cap x)); if you define a type wrapper what you need
09:21:14 <zzo38> That is, if t is some functor
09:21:21 <kallisti> I don't really understand the purpose of this thing so I'm probably not helping much.
09:21:50 <zzo38> So it would have to be: makeTypedCap :: Functor f => f (IO x) -> IO (f (Cap x));
09:22:19 <Sgeo> Not sure I want to have to define functors... but aren't functions functors?
09:22:26 <Sgeo> I don't know if it helps though
09:22:36 <kallisti> fmap is composition on functions
09:22:54 <Sgeo> What does the functor instance look like? The first line, the instance ... where
09:23:13 <zzo38> instance Functor ((->) x) where { fmap = (.); }
09:23:52 <zzo38> fmap = (.); return = const; join f x = f x x;
09:24:18 <Sgeo> zzo38, I think your makeTypedCap is exactly what is needed.
09:25:10 <Sgeo> makeTypedCap is a bad name though, I think, although I don't think it generalized to wrapping up a plain IO ()
09:25:12 <zzo38> Although it might to change to a better name
09:25:24 <Sgeo> So it can't be makeCap
09:25:33 <Sgeo> makeValCap and makeFunCap?
09:25:46 <zzo38> Sgeo: That could be it, I suppose.
09:26:19 <Sgeo> Does makeFunCap work for 2 or more argument functions that return an IO?
09:26:32 <Sgeo> Or will they have to be uncurried
09:26:47 <kallisti> it shouldn't matter, I'd think.
09:27:17 <kallisti> but, no it's only for one argument functions.
09:28:20 <zzo38> I think then if you use Identity functor you could define makeValCap in terms of makeFunCap: makeValCap = fmap extract . makeFunCap . pure; You could also make the various different number of arguments using makeFunCap by doing the currying and uncurrying and stuff like that
09:29:05 <Sgeo> What if we went back to the SecurityToken idea, but it was Cap (SecurityToken, a)
09:29:32 <zzo38> I don't know; I am going to sleep now
09:29:33 -!- zzo38 has quit (Remote host closed the connection).
09:29:33 <oerjan> <kallisti> I was pretty sure colors were not available. <-- they convinced fizzie to remove that channel flag
09:29:59 <Sgeo> makeCap :: a -> IO (SecurityToken, a)
09:30:14 <Sgeo> makeCap :: a -> IO (Cap (SecurityToken, a))
09:30:45 <kallisti> could it be possible to use Applicative to sate your desire for multi-argument functions?
09:31:55 <Sgeo> SecurityTokens can't be synthesized outside of IO, but, hmm. What if something, given one Cap, uses a security token from that Cap to synthesize a fradulent different Cap
09:32:47 <kallisti> what if someone uses unsafePerformIO and bypasses everything?
09:32:58 <Sgeo> There's GHC stuff against that, I think
09:33:18 <Sgeo> But then that also means can't use modules that use unsafePerformIO for acceptable things, I think
09:33:22 <Sgeo> Need to look into that more.
09:33:37 <Sgeo> Untrusted, Trustworthy, etc.
09:34:30 <kallisti> so don't you basically want a way to pass an IO value/function to a function, have it compose and apply that value/function with other things, and then return the result in the same wrapping?
09:35:06 <kallisti> where it can be run in IO from another function
09:35:38 <kallisti> I think Applicative might be useful here.
09:37:11 <oerjan> Sgeo: you can use modules with unsafePerformIO, but you must declare them trustable or what it was called
09:37:57 <lambdabot> forall a (m :: * -> *). (MonadIO m) => IO a -> m a
09:38:57 <kallisti> Sgeo: what's the purpose of the security token?
09:39:35 <Sgeo> kallisti, if Cap is a monad, I don't want return to be a nice convenient way of synthesizing arbitrary Caps
09:40:27 <kallisti> I don't see a particular reason to limit it to IO, either.
09:41:19 <Sgeo> Cap will not be a monad transformer, nor a MonadIO, for reasons that should be obvious.
09:41:57 <kallisti> perhaps makeCap :: Token -> a -> Cap a
09:42:11 <kallisti> runCap :: Token -> Cap a -> IO a
09:42:31 <kallisti> with no way to access the Token that was used to create a Cap
09:44:24 <Sgeo> kallisti, so Cap is no longer a monad?
09:44:38 <kallisti> but it could easily be Applicative.
09:44:40 * Sgeo wants at least using a Cap to be a monad
09:44:46 <Sgeo> kallisti, uh, pure.
09:45:53 <kallisti> so you may want two different types.
09:46:10 <Sgeo> Which is, imo, somewhat ugly
09:46:26 <kallisti> either that or simply give it an <*> without a pure.
09:46:39 <kallisti> well, not really an <*> exactly
09:47:43 <kallisti> @hoogle t (a -> b) -> a -> t b
09:47:43 <lambdabot> Control.Applicative (<*>) :: Applicative f => f (a -> b) -> f a -> f b
09:47:43 <lambdabot> Control.Monad ap :: Monad m => m (a -> b) -> m a -> m b
09:47:43 <lambdabot> Control.Applicative (<**>) :: Applicative f => f a -> f (a -> b) -> f b
09:47:53 <kallisti> appCap :: Cap (a -> b) -> a -> Cap b
09:48:47 <Sgeo> I still want a monad.
09:49:13 <kallisti> otherwise you could have some kind of BlankToken that's used with return, so that you can still use return.
09:49:31 * Sgeo hits kallisti with a copy of the monad laws
09:49:49 <kallisti> so you want this thing, that's not a monad
09:50:17 <Sgeo> I can live with two separate types, one a monad and one not, I think
09:50:28 -!- ais523 has joined.
09:51:50 <kallisti> Sgeo: hmmmm, how about a rank-2 type?
09:52:05 <ais523> $ find /var/lock /var/run /dev/shm /tmp -maxdepth 0 '-(' -fstype shmfs -or -fstype shm -or -fstype tmpfs -or -fstype tmp '-)' -and -writable
09:52:13 <Sgeo> I... are you thinking of ST?
09:52:30 <ais523> pity that seems to be GNU-specific
09:52:38 <ais523> anyone know a portable way to do that? (I'm guessing no)
09:53:17 <Sgeo> kallisti, if I had a clue how to use them, that would probably help.
09:53:50 <Sgeo> I should sleep
09:54:48 <kallisti> I should have an internet connection that doesn't suck.
09:55:36 <ais523> Sgeo: hmm, I woke up pretty recently
10:07:37 -!- pikhq has quit (Ping timeout: 240 seconds).
10:07:48 -!- pikhq has joined.
10:33:21 -!- GreaseMonkey has quit (Quit: The Other Game).
10:57:21 <Sgeo> I have decided to use zzo38's idea of replacing IO with Cap, and am planning on using printf-style varargs to make a single makeCap
10:57:26 <Sgeo> And now I am going to sleep.
11:00:29 <Sgeo> And I like the image of forkCap that is currently running through my head.
11:01:26 <Sgeo> I don't think there's a safe way to do it under my old idea, but I may be mistaken.
11:01:37 -!- Ngevd has quit (Ping timeout: 240 seconds).
11:03:31 -!- aloril has quit (Ping timeout: 252 seconds).
11:06:32 -!- aloril has joined.
11:29:25 * Sgeo likes how Haskell is probably the only language not designed from the start for object-capabilities where it actually makes sense to implement them as a library
11:32:30 <Sgeo> Can't sleep, going to work
11:35:57 <Sgeo> MultiParamTypeClasses without FunctionalDependencies? Is this madness?
11:42:27 * Sgeo pauses to rethink
11:42:53 <Sgeo> (a -> IO b) (c -> (a -> IO b)
11:43:52 <copumpkin> sometimes MPTCs make sense without fundeps
11:45:45 <Sgeo> Or I could decide that I might have been mistaken in thinking that MPTCs helped me
11:50:24 -!- derdon has joined.
11:51:05 <lambdabot> "*Exception: *Exception: *Exception: *Exception: *Exception: *Exception: *E...
11:53:24 <ais523> now I'm trying to figure out how that fix error works
11:53:36 <ais523> > error (error "test")
11:53:38 <kallisti> fix works by being a logical fallacy.
11:54:31 <ais523> hmm, I don't get why fix error isn't an infinite loop
11:54:55 <lambdabot> *Exception: *Exception: *Exception: *Exception: *Exception: *Exception: *Ex...
11:55:05 <ais523> OK, error (fix error) is not the same as (fix error)
11:55:11 <ais523> this seems to defy the definition of fix
11:55:31 <lambdabot> "*Exception: *Exception: *Exception: *Exception: *Exception: *Exception: *E...
11:55:33 <lambdabot> *Exception: *Exception: *Exception: *Exception: *Exception: *Exception: *Ex...
11:55:46 <ais523> error (fix error) is _|_; fix error is a string
11:56:19 <kallisti> so fix error returns a string. why? I don't know.
11:56:32 <ais523> fix error obviously has a type that returns a string
11:56:40 <ais523> I just don't get why it actually /does/ return a string, rather than erroring
11:56:54 <lambdabot> "hello*Exception: *Exception: *Exception: *Exception: *Exception: *Exceptio...
11:57:19 <ais523> it's calling show for a string, which prints a " before it even tries to work out what the string is
11:57:33 <ais523> > repeat "*Exception: "
11:57:33 <lambdabot> ["*Exception: ","*Exception: ","*Exception: ","*Exception: ","*Exception: "...
11:57:42 <monqy> > "hello " ++ undefined
11:57:44 <lambdabot> "hello *Exception: Prelude.undefined
11:57:44 <ais523> > concat (repeat "*Exception: ")
11:57:45 <lambdabot> "*Exception: *Exception: *Exception: *Exception: *Exception: *Exception: *E...
11:57:55 <ais523> OK, so that's a string consisting of copies of the word "*Exception: "
11:58:00 <lambdabot> "*Exception: *Exception: *Exception: *Exception: *Exception: *Exception: *E...
11:58:12 <ais523> and that isn't; that's having " printed by show for strings, and then an actual error happens
11:58:26 <ais523> > (2::Expr) + fix error
11:58:26 <lambdabot> Couldn't match expected type `SimpleReflect.Expr'
11:58:36 <kallisti> oh, well yes.oh, yes it doesn't actually return the string.
11:58:39 <lambdabot> Couldn't match expected type `SimpleReflect.Expr'
11:58:49 <ais523> oh, right, fix error returns a string
11:58:52 <ais523> > x + error (fix error)
11:58:53 <lambdabot> x + *Exception: *Exception: *Exception: *Exception: *Exception: *Exception:...
11:59:02 <ais523> kallisti: does /that/ explain it?
11:59:03 * Sgeo decides that he may in fact need functional dependencies
11:59:11 <lambdabot> "*Exception: *Exception: *Exception: *Exception: *Exception: *Exception: *E...
11:59:22 <ais523> the point is that due to laziness, it's printing the " or the x + before it even starts evaluating the error
11:59:39 <kallisti> I figured that out a while ago
12:02:22 -!- monqy has quit (Quit: hello).
12:04:14 <lambdabot> Not in scope: data constructor `ErrorCall'
12:06:02 <kallisti> I wonder how many programmers don't like Haskell because it doesn't have "good exception handling"
12:06:04 <Sgeo> If what I'm writing compiles, I'll mindboggle that I actually figured it out
12:07:11 <lambdabot> forall a. IO a -> (IOError -> IO a) -> IO a
12:07:39 <kallisti> > catch (error "bad") (\e -> fix error)
12:07:40 <lambdabot> Couldn't match expected type `GHC.Types.IO a'
12:07:51 <kallisti> > catch (error "bad") (\e -> return $ fix error)
12:10:13 <Sgeo> I feel uneasy that one of my key components looks like (SomeClass a b) => a -> b
12:11:01 <kallisti> roll around, you'll be alright.
12:11:30 <Sgeo> I am obviously horrible at naming arguments
12:11:39 <Sgeo> unsafeMakeFunCap a = \a' -> unsafeMakeFunCap (a a')
12:11:48 <Sgeo> I have two comments above that explaining the meaning of a and a'
12:14:26 <oerjan> <ais523> OK, error (fix error) is not the same as (fix error) <-- the latter is String, while the former is an arbitrary type, probably defaulting to ()
12:14:35 <kallisti> short variable names are pretty common for very generic Haskell code.
12:14:52 <ais523> oerjan: yep, I figured it out in the end
12:14:57 <Sgeo> kallisti, when the types of the arguments are hard to read for someone new to MPTC and Fundeps...
12:15:12 <ais523> btw, this sort of thing is why I fear Anarchy might be uncomputable without restrictions
12:16:40 <Sgeo> Needed to add FlexibleInstances, and now it works
12:16:52 <Sgeo> But I don't quite understand why I need FlexibleInstances
12:16:59 <Sgeo> So I feel like I'm really losing
12:18:23 <oerjan> <kallisti> I wonder how many programmers don't like Haskell because it doesn't have "good exception handling" <-- it doesn't?
12:18:51 <Sgeo> MakeFunCapClass
12:18:56 <Sgeo> What should I call this instead?
12:19:42 <kallisti> oerjan: notice the scare quotes. A programming who is familiar with only object-oriented languages might, after a few weeks of haskell, conclude that because try/catch exception handling is only possible from IO, that Haskell has poor exception handling.
12:20:28 <ais523> kallisti: well, it depends on what you use exceptions /for/
12:21:19 <oerjan> kallisti: i browsed that ResourceT blog post from reddit and noticed that their ST instances are inferior for precisely this reason.
12:21:54 <oerjan> which makes me wonder, why _shouldn't_ you be able to catch exceptions in ST. or perhaps a subset of them.
12:22:08 <kallisti> I'd say that some OO languages actually have poor exception handling. Python, for example, literally throws an exception for just about any kind of exceptional condition. So simple things like hash table lookups can require a clunky try-except statement.
12:22:08 <Sgeo> *Capabilties> makeCap (putStrLn "Hi") >>= \c -> runCap c
12:22:22 <kallisti> oerjan: yes I think ST could be improved on in a number of ways.
12:22:35 <Sgeo> Just realized, I still need to make Cap a monad
12:22:50 <kallisti> actually I was thinking it would be nice if you could somehow pass ST code a capability that allows it to execute IO actions, but only the ones you give it.
12:22:54 <oerjan> i guess the problem is that you cannot guarantee that exceptions respect the ST boundary - either way.
12:24:22 <Sgeo> Wait, my instances make no sense
12:24:26 <kallisti> oerjan: well, couldn't you catch the exceptions in runST and then error there? or is that what would happen anyway?
12:25:14 <kallisti> basically at a runST convert the ST exceptions into exceptions that can be handled from IO.
12:26:02 <lambdabot> Control.Exception.Base throw :: Exception e => e -> a
12:26:03 <lambdabot> Control.Exception throw :: Exception e => e -> a
12:26:03 <lambdabot> Control.OldException throw :: Exception e => e -> a
12:26:27 <kallisti> oerjan: or I guess I should ask: is there any reason exceptions need to respect the ST boundary?
12:26:40 <oerjan> kallisti: the problem is that laziness means exceptions might not be actually _evaluated_ until after the runST has finished. although ordinary catch in IO has a little of the same problem.
12:27:41 <kallisti> does this end up being a huge problem? I could see it being a problem in IO itsef (or unsafe code), where you could execute side effects before the exception is evaluated.
12:27:49 <kallisti> but that's a problem of IO in general.
12:27:59 <oerjan> the difference is that it's accepted in IO because the total result is not required to be pure.
12:29:48 <kallisti> oerjan: still there's no way to see a tangible effect from pure code until it evaluates back to IO anyway, right?
12:30:16 <oerjan> kallisti: oh btw unsafeIOToST exists iirc
12:30:45 <kallisti> but a capability system could possibly be implemented with that.
12:32:06 <Sgeo> http://hpaste.org/55731 my code as it currently exists
12:32:24 <oerjan> of course if you delve into ghc internals, ST and IO have isomorphic implementations once you remove all the newtype wrapping
12:33:06 <oerjan> they just use different ways of ensuring users can never fake a useful s state parameter
12:33:23 <lambdabot> Source not found. It can only be attributed to human error.
12:33:37 <kallisti> so yeah you just hide the constructor for capabilities, wrap construction of a capability in the IO monad so that they can't be constructed elsewhere, somehow block unsafeIOToST from being imported/used, and then have a function that uses unsafeIOToST to implement executing IO capabilities in ST.
12:33:41 * oerjan swats lambdabot for removing @src'es that used to work
12:34:10 <Sgeo> kallisti, wait, where did ST come from?
12:34:28 <kallisti> Sgeo: I was discussing allowing IO capabilities to be passed to ST.
12:34:34 <kallisti> so that you can control what kinds of side-effects can occur.
12:35:03 <oerjan> kallisti: it would probably be an idea to newtype-wrap that ST version, too
12:35:07 <kallisti> not related to what you're doing, though inspired it.
12:35:35 <kallisti> oerjan: hmmm, but then you have to wrap everything that ST already has implemented for it.
12:35:53 <kallisti> but... you might have to do that.
12:36:01 <kallisti> because runST is /not/ what you want.
12:36:21 <oerjan> well in that case, why not just wrap IO
12:36:22 <Sgeo> *Capabilties> makeCap (putStrLn) >>= \c -> runCap (c "Hi")
12:37:31 <kallisti> Sgeo: is that what you're doing basically?
12:37:37 <oerjan> i assume wrapping IO into your restricted type is a main intended method of using the Safe extension.
12:37:57 <Sgeo> kallisti, well, my Cap is not connected to ST in any way, it's its own monad, but yeah, I guess
12:38:17 <kallisti> is it basically a wrapper over IO? Because that's the conclusion oerjan came to.
12:38:47 <Sgeo> String -> IO () becomes String -> Cap ()
12:39:05 <oerjan> i'm careful with my eurekas, the one time i tried to use one my proof had a stupid error.
12:39:36 <Sgeo> Anyways, what's undecidable about my instances?
12:39:38 <kallisti> Sgeo: but uh... where is the security.
12:40:08 <Sgeo> kallisti, they need to be in the IO monad to use makeCap
12:40:14 <kallisti> THIS IS WHY YOU NEED MAKECAP TO RETURN A IO(String -> -- oh okay
12:40:23 <kallisti> Sgeo: that's not what your above code seemed to suggest.
12:40:48 <Sgeo> The result of makeCap is wrapped in an IO
12:42:58 <Sgeo> If I hide MakeFunCapClass, are my functions still usable? Can correct type signatures still be written?
12:43:59 <oerjan> <Sgeo> Anyways, what's undecidable about my instances? <-- it means your instance doesn't satisfy ghc's basic condition to ensure halting, which is rather simplistic and mostly based on prerequisites being smaller than conclusions. what instance is it complaining about?
12:44:44 <Sgeo> Illegal instance declaration for `MakeFunCapClass
12:44:44 <Sgeo> (c -> a) (c -> b)'
12:44:44 <Sgeo> (the Coverage Condition fails for one of the functional dependencies;
12:44:44 <Sgeo> Use -XUndecidableInstances to permit this)
12:44:54 <kallisti> Sgeo: WHEN IN DOUBT, USE UNDECIDABLEINSTANCES HAHAHAHAHA
12:45:56 <oerjan> Sgeo: hm ok make that simplistic but incomprehensible ;P
12:46:12 <oerjan> (i'm sure the coverage condition is written up somewhere)
12:49:26 <oerjan> Sgeo: perhaps it's basically that b is not guaranteed to be smaller than c -> a, and a is not guaranteed to be smaller than c -> b.
12:51:36 <oerjan> and so ghc is not smart enough to prove that looking this up will always halt.
12:53:02 <oerjan> kallisti: well for all i know there _might_ be a way to add other instances to give a loop from that.
12:54:26 <kallisti> it should think of compile-time as just another runtime.
12:54:34 <oerjan> you can turn the fear off with -XUndecidableInstances -XOverlappingInstances -XIncoherentInstances -XUnspeakablyEvilInstances
12:57:34 <Sgeo> I need sleep now
12:58:48 <Sgeo> A fun test: Make a capability for makeCap
12:59:16 <Sgeo> Proceed to wreck havoc
12:59:17 * oerjan recalls the VMS setpriv privilege
13:01:11 <Sgeo> I do wish it was easier to make forkCap though
13:01:18 <Sgeo> I mean, I know how to do it I think
13:02:21 <Sgeo> Let's do the Qt 4 dance!
13:03:38 * oerjan wonders if there was a Qt 3.14
13:04:53 -!- kallisti has quit (Ping timeout: 276 seconds).
13:06:27 * Sgeo feels like an utter derp right now
13:07:07 <Sgeo> Is there an IdentityT monad by any chance?
13:07:19 <Sgeo> No. No more coding. Sleep time
13:08:38 <oerjan> Sgeo: pretty obviously possible
13:08:47 <lambdabot> Control.Monad.Trans.Identity IdentityT :: m a -> IdentityT m a
13:08:47 <lambdabot> Control.Monad.Trans.Identity newtype IdentityT m a
13:08:47 <lambdabot> Control.Monad.Trans.Identity mapIdentityT :: (m a -> n b) -> IdentityT m a -> IdentityT n b
13:09:04 <Sgeo> oerjan, I asked because I'm way too tired to figure out how to write bind for a trivial newtype
13:09:13 <Sgeo> I think this means I'm an idiot.
13:09:29 <Sgeo> (Or at least, too tired to think straight right now)
13:10:40 <oerjan> @tell Sgeo well i have a hunch that you need a bit of self-esteem more than you need intelligence.
13:13:46 -!- Ngevd has joined.
13:16:19 -!- kallisti has joined.
13:16:19 -!- kallisti has quit (Changing host).
13:16:19 -!- kallisti has joined.
13:22:06 <kallisti> ...I can't watch yogscast play magicka.
13:24:28 <kallisti> OH YES THEY FIGURED OUT HOW TO MAKE WALLS, GOOD JOB.
13:24:55 <kallisti> that would be good against the evil yeti that picks you up and kills you instantly.
13:26:00 <kallisti> they keep using wow-like terms such as "tank" and "kite"
13:26:03 <kallisti> THESE DON'T APPLY IN THIS GAME
13:26:50 <Sgeo> makeCap makeCap types
13:26:50 <lambdabot> Sgeo: You have 1 new message. '/msg lambdabot @messages' to read it.
13:28:47 <kallisti> also if you set yourself on fire the yetis won't pick you up...
13:29:05 <kallisti> obviously you should research every aspect of a super serious game like magicka. :P
13:30:40 * Sgeo renames the class IOtoCap
13:31:17 -!- Ngevd has quit (Ping timeout: 252 seconds).
13:31:36 <Sgeo> I should put this on github or something, probably
13:33:30 <Sgeo> Although I'm worried that "IOtoCap" may make someone think that all instances of IO in the signature are converted, which is not [currently? can this be fixed] the case.
13:33:48 <Sgeo> forkCap = makeCap forkIO -- security hole
13:35:52 <Sgeo> Maybe running makeCap on all the arguments automatically?
13:36:33 <Sgeo> Or unsafeMakeFunCap, anyway
13:40:37 <kallisti> Sgeo: how is giving someone the capability to make IO threads a security hole when you have to give them the capability to do that?
13:40:56 <Sgeo> Is it possible to detect, using typeclasses, whether or not a type has the form IO a? Perhaps with something like OverlappingInstances?
13:41:26 <Sgeo> kallisti, if I give them makeCap forkIO as a capability, they can freely run any IO action of their choosing in a thread.
13:41:53 <Sgeo> If, instead, I gave them something of the type Cap () -> Cap ThreadId, which is what is presumably intended, there is no hole.
13:42:46 <Sgeo> The reason I like the current model is because it's possible to make Cap () -> Cap ThreadId, but sadly it's not as easy as makeCap forkIO
13:43:10 <lambdabot> Control.Concurrent forkIO :: IO () -> IO ThreadId
13:43:11 <lambdabot> GHC.Conc.Sync forkIO :: IO () -> IO ThreadId
13:43:11 <lambdabot> GHC.Conc forkIO :: IO () -> IO ThreadId
13:45:44 <Sgeo> I think I can make a safer makeCap, assuming that OverlappingInstances works the way I assume it does
13:46:30 <Sgeo> ...if I do that, there's no way to do makeCap makeCap
13:47:05 <Sgeo> Is makeCap id a hole?
13:48:04 <Sgeo> (Note that I'm using hole for capabilities that would, if passed in to a Cap, would allow the Cap to do arbitrary IO
13:53:44 <Sgeo> UndecidableInstances. I wonder what makeCap printf is
13:54:34 <kallisti> I think it would be nicer if you could somehow make an Applicable.
13:56:24 <Sgeo> kallisti, Cap is a monad, therefore it is an Applicable
13:56:44 <Sgeo> Unless you mean something else
13:57:27 <Sgeo> Synaptic is refusing to open :(
14:01:13 -!- Ngevd has joined.
14:01:53 * Sgeo installs giggle
14:02:57 <kallisti> Sgeo: I mean if you could make the capabilities that you pass to Cap applicative or something-similar-to-applicative then you could apply to variable-argument functions
14:09:44 -!- iconmaster has joined.
14:12:52 <Sgeo> git-gui is bloody annoying
14:13:52 <Sgeo> Here we go https://github.com/Sgeo/haskell-capabilities
14:15:30 <lambdabot> No instance for (GHC.Float.RealFloat (t -> a))
14:20:20 -!- Ngevd has quit (Ping timeout: 255 seconds).
14:21:35 -!- Ngevd has joined.
14:21:44 <lambdabot> forall a. (a -> Bool) -> (a -> a) -> a -> a
14:22:45 * Sgeo goes to test makeCap printf
14:22:45 <kallisti> > iterate (until ((==0).(`mod` 2)) (+1)) 0
14:22:46 <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,...
14:23:39 <Sgeo> Well, that did not work.
14:24:25 -!- azaq23 has joined.
14:25:30 <oerjan> !haskell import Prelude hiding (id, (.)); import Control.Category; newtype T f a b = T {runT :: T f b a -> f b}; instance Category (T f) where { id = T $ \taa -> runT taa taa; tbc . tab = T $ \tca -> runT (tab . tca) tbc }; main = print "Does it type?"
14:25:43 <EgoBot> \ /tmp/runghcXXXX27023.hs:1:180: \ Couldn't match type `b' with `c' \ `b' is a rigid type variable bound by \ the type signature for . :: T f b c -> T f a b -> T f a c \ at /tmp/runghcXXXX27023.hs:1:168 \ `c' is a rigid type variable bound by \ the type signature for . :: T f b c -> T f a b -> T f a c \ at /tmp/runghcXXXX27023.hs:1:168 \ Expected type: T f
14:26:20 <Sgeo> Ok, fixed that bug, it is in fact a vararg oddity
14:28:03 <oerjan> darn, the result ends up the wrong type
14:30:48 <Ngevd> 5,0,7,2,1,4,2,1,3,1,2,2,4,2,1,1,1,1,6,2,0,0,0,0,2,2
14:31:14 <lambdabot> arising from a use of `GHC.Num.+' at <i...
14:32:37 <Sgeo> If I add an instance that makes makeCap forkIO work smoothly, that will block fun stuff such as makeCap makeCap
14:32:43 <Sgeo> I don't know what to do :(
14:33:04 <Sgeo> Maybe two functions, one that does one one that does the other?
14:33:29 <oerjan> and the id method looks very suspicious, anyway
14:34:03 <Sgeo> Mine, or the thing you're actually working on?
14:40:18 <kallisti> I don't get why GHC.Base randomly has these HUGE SPACES like that.
14:40:31 <kallisti> on some functions but not others, with no apparently helpfulness in organizing layout.
14:40:49 <fizzie> So that there's room to make a more complicated 'id' if necessary, later on.
14:41:20 <oerjan> kallisti: also, that's the not the one i'm writing, http://www.haskell.org/ghc/docs/latest/html/libraries/base-4.4.1.0/Control-Category.html
14:41:38 <oerjan> thus also the Prelude hiding
14:42:12 <kallisti> that i happened to mention GHC.base id
14:42:18 <kallisti> while you were talking about Category id.
14:43:26 * oerjan notes down evidence that kallisti is not a jew
14:45:36 * kallisti continues to hold the notion that oerjan is a theist thanks to elliott even though he knows it's kind of not true maybe?
14:47:05 <kallisti> so you're like me except you choose to think about it more.
14:47:50 <kallisti> not knowing is the other half of the battle.
14:50:13 <kallisti> I think I've asked this before, but I don't remember the answer:
14:50:22 <kallisti> why is there a <<< in Control.Category?
14:50:52 <oerjan> backwards compatibility
14:51:30 <kallisti> I guess it could also be nice if you randomly want Prelude.. and the Category one as well without having to quantify anything.
14:51:36 <oerjan> >>> and <<< used to be Arrow functions
14:51:44 <kallisti> ....I don't know why you would want that though.
14:52:23 <oerjan> indeed, especially since (Control.Category..) is a generalization of (Prelude..)
14:52:48 -!- pikhq_ has joined.
14:53:01 <kallisti> "ashley@semantic.org" they let women maintain base modules? I'm shocked.
14:53:03 -!- pikhq has quit (Ping timeout: 252 seconds).
14:53:32 <ais523> I'm just amused at your assumption that ashley is a female name, there
14:53:35 <ais523> the name exists in both genders
14:53:38 <fungot> echo reverb rev rot13 rev2 fib wc ul cho choo pow2 source help hw srmlebac uenlsbcmra scramble unscramble asc ord prefixes tmp test celebrate wiki chr
14:53:59 <kallisti> oh yes this ashley is actually a male
14:54:05 <oerjan> ...i forgot to ask fizzie to save :(
14:54:09 <kallisti> weird. I didn't know that was a gender neutral name.
14:54:27 <oerjan> fungot: Y U NO SAVE COMMANDS AUTOMATICALLY
14:54:27 <fungot> oerjan: are you a man, if there weren't evil in this world are places like that. a peaceful. hah! you think you are? coming and going out! he's really a tricycle! pass him!
14:55:22 <kallisti> http://semantic.org/hnop/nop/Control/Nop.hs
14:56:00 <fizzie> ^def ha ul ((ha)(ha))(~:^:(. )*S( )~**a~^!a*~:^):^
14:56:09 <fungot> ha. ha. ha ha. ha ha ha. ha ha ha ha ha. ha ha ha ha ha ha ha ha. ha ha ha ha ha ha ha ha ha ha ha ha ha. ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha. ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha. ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha ...too much output!
14:56:26 <ais523> kallisti: why is there a whole module for that?
14:57:46 <ais523> that check to ensure it really does do nothing?
14:58:11 <kallisti> http://semantic.org/hnop/nop/test/TestNoOp.hs
14:58:18 <oerjan> you can never be sure.
14:58:26 <ais523> meh, it doesn't really
14:58:26 <kallisti> http://semantic.org/hnop/nop/test/TestNoOp.ref
14:58:41 <ais523> just checks to ensure it doesn't error out or produce output that would be caught by the test
14:58:47 <kallisti> and a makefile: http://semantic.org/hnop/nop/test/Makefile
14:59:34 <ais523> hmm, now we need an esolang where no-ops are really hard to write (albeit possible)
14:59:38 <ais523> Malbolge only sort-of ocunts
15:00:00 <fizzie> fis@eris:~$ cabal list hnop
15:00:00 <fizzie> * hnop Latest version available: 0.1
15:00:22 <kallisti> this is hnop: http://semantic.org/hnop/hnop/Main.hs
15:00:44 <ais523> this is a big argument for just writing functions by hand rather than importing the appropriate module
15:00:50 <ais523> "return ()" is pretty short
15:01:02 <ais523> and more polymorphic than the original, in fact
15:01:26 -!- elliott has joined.
15:01:28 <elliott> 06:21:52: <zzo38> I have thought about criteria of proper religion (I think I have been asked about it on this channel before and wasn't quite sure): * It must be philosophical. * Religious ideas and texts must be available freely in the public domain in some form. * No direct contradition to reality or apparent reality. * It is not an exact science. * No secret torture on its adherents.
15:01:28 <lambdabot> elliott: You have 1 new message. '/msg lambdabot @messages' to read it.
15:01:35 <elliott> personally I like religions that secret torture on its adherents
15:01:37 <kallisti> $ sudo cp /home/adam/.cabal/bin/hnop /usr/local/bin/hnop
15:02:11 <kallisti> are you suggesting hnop will suddenly stop doing nothing if I do that?
15:02:30 <elliott> I don't know or care what hnop is, I'm just telling you that's a bad idea in general.
15:02:46 <elliott> You are free to ignore me, in which case I will happily laugh at you the first and all future times doing that bites you in the ass.
15:03:44 <kallisti> my guess is a) you could overwrite something b) the binary could be sensitive to its location
15:04:55 <elliott> 08:18:39: <Sgeo> makeCap :: a -> IO (Cap a)
15:04:55 <elliott> 08:19:57: <Sgeo> writeFileCap :: FilePath -> IO (Cap (String -> IO ()))
15:05:01 <elliott> Sgeo: This is the point where you realise that Cap a is the same thing as a.
15:05:12 <elliott> Which is sort of, you know, the entire point of object-capability systems
15:07:22 <elliott> 08:35:29: * Sgeo will need to think this over a bit more, but this is embarrassing.
15:08:03 <elliott> 08:43:17: <zzo38> Sgeo: Everyone is sometimes idiot, I think
15:08:04 <elliott> Some people more often than others.
15:08:37 <elliott> 08:48:34: <zzo38> Maybe you can have Cap (SecurityToken (IO ())) instead of Cap (IO ())
15:08:37 <elliott> 08:48:50: <Sgeo> zzo38, ooh, good idea, thanks!
15:08:47 <elliott> Sgeo: Congratulations, now you have Identity (Identity (IO ()))
15:09:42 -!- incomprehensibly has joined.
15:11:42 <elliott> 09:49:42: <kallisti> okay...
15:11:43 <elliott> 09:49:49: <kallisti> so you want this thing, that's not a monad
15:11:43 <elliott> 09:49:52: <kallisti> to be a monad. have fun.
15:11:52 <elliott> kallisti: You get the Rare Moment of Sanity in a Sea of Fools Award(tm0.
15:12:36 <elliott> 10:57:21: <Sgeo> I have decided to use zzo38's idea of replacing IO with Cap, and am planning on using printf-style varargs to make a single makeCap
15:13:38 <elliott> 11:29:25: * Sgeo likes how Haskell is probably the only language not designed from the start for object-capabilities where it actually makes sense to implement them as a library
15:13:42 <elliott> IT DOESN'T YOU'RE BEING AN IDIOT
15:14:25 <elliott> 11:55:46: <ais523> error (fix error) is _|_; fix error is a string
15:14:28 <elliott> ais523: you have misunderstood
15:14:36 <ais523> elliott: I figure it eventually
15:14:40 <ais523> before kallisti does, in fact
15:15:06 <elliott> ais523: error :: a -> String; fix :: (a -> a) -> a
15:15:10 <kallisti> I like how elliott logs in and corrects everyone's past errors even if they already have corrected them.
15:15:11 <elliott> in fix error, error :: String -> String
15:15:26 <elliott> ais523: error :: String -> a; fix :: (a -> a) -> a
15:15:26 <ais523> elliott: also, this implies that there's two possible ways to implement printString
15:15:32 <ais523> if it calculated the length first, the " wouldn't happen
15:15:39 <elliott> basically fix f = f (fix f) fails if f is polymorphic, duh
15:15:44 <elliott> ais523: there is no printString
15:15:47 <elliott> and putStr does not calculate length
15:15:57 <ais523> elliott: indeed, lambdabot made that clear
15:16:02 <elliott> although what is really relevant here is show, not putStr
15:16:16 <elliott> show s = "\"" ++ escape s ++ "\""
15:16:21 <elliott> so the error happens after the " is produced
15:16:23 <oerjan> elliott: CORRECTING PEOPLE'S ERRORS WHICH HAVE ALREADY BEEN CORRECTED IS A BANNABLE OFFENSE. oh wait...
15:16:26 <ais523> elliott: not really, due to laziness
15:16:34 <elliott> show is the thing that produces the quote
15:16:41 <elliott> and lambdabot won't even putStr in that GHC process
15:16:49 <ais523> elliott: well, what lambdabot uses to output the string is relevant
15:16:51 <elliott> well, it might, but it's not the putStr to IRC, and is irrelevant anyway
15:17:05 <elliott> the fact that it interleaves the error stream is releavnt
15:17:06 <ais523> well, what lambdabot uses to /force/ the string is relevant
15:17:10 <elliott> but all haskell programs do that
15:17:20 <elliott> anyway, the reason all the errors is printed is because error is lazy
15:17:25 <lambdabot> *Exception: *Exception: Prelude.undefined
15:17:28 <elliott> the undefined only gets forced in the exception handler
15:17:32 <elliott> as it tries to print out the exception
15:17:40 <elliott> so that just keeps happening forever
15:17:44 <ais523> I figured that much, eventually
15:17:45 <elliott> but lambdabot only takes the first few hundred characters
15:17:51 <elliott> well now you've re-figured it!
15:18:00 <elliott> oerjan: NOBODY CORRECTED SGEO
15:18:09 <ais523> elliott: lambdabot outputs strings while they're being forced; that's what's relevant here
15:18:16 <ais523> it doesn't calculate the entire string first and then output it
15:18:20 <ais523> if it did, you wouldn't get the "
15:18:20 -!- Vorpal has joined.
15:18:25 <elliott> ais523: err, because that's not a thing you can do
15:18:29 <elliott> you don't "calculate the string"
15:18:33 <elliott> each cell of a list is lazy
15:18:37 <ais523> elliott: it definitely is a thing you can do, you're in IO
15:18:41 <elliott> you would have to deliberately walk the list doing nothing, and then print out the string
15:18:54 <elliott> ais523: being in IO is irreleavnt
15:19:01 <ais523> but that to me seems to be the easiest way to implement sometihng like putStr
15:19:02 <elliott> it's also irrelevant, but it is pure
15:19:22 <elliott> putStr "" = return (); putStr (c:s) = putChar c >> putStr s
15:19:31 <elliott> if you think adding a pointless deepseq somehow simplifies that, you're insane
15:19:34 <ais523> elliott: ah, OK, so it's going via printchar rather than, say, puts
15:19:51 <elliott> if it marshalled it to a C string it'd have to force the whole thing, yes
15:19:56 <ais523> elliott: what I'm saying is that a syscall exists for writing multiple characters at once; and putStr goes out of the way to not use it
15:20:00 <elliott> but that's not really "calculating the whole string", that's just an artifact of (char *) being strict
15:20:09 <ais523> (which is correct, to give the correct lazy behaviour)
15:20:14 <elliott> ais523: err, syscalls are irrelevant
15:20:16 <elliott> ais523: it's called buffering
15:20:29 <elliott> GHCi and other interactive environments turn off buffering, ofc
15:20:30 <ais523> except hSetBuffering also exists
15:20:42 <elliott> that flicks a bit in the RTS
15:20:48 <elliott> which changes the behaviour of putChar, presumably
15:20:51 <ais523> elliott: which impleis to me strongly that it's libc that's doing the buffering, not ghc
15:21:06 <elliott> that's insane, why would you think that?
15:21:07 <ais523> in fact, I actually have evidence that it's libc that does the buffering
15:21:16 <elliott> it probably does, but hSetBuffering is in no way evidence for it
15:21:17 <ais523> as there's absolutely no reason why ghc would use a differently-sized buffer on Linux and Darwin
15:21:38 <ais523> (I was debugging someone else's Haskell code recently; the apparent bug was due to stdout buffering)
15:21:55 <elliott> actually, no, if what I recall about GHC'S IO system is correct it does _not_ use libc buffering
15:22:14 <elliott> anyway, I don't see how hSetBuffering is relevant
15:22:20 <elliott> you could even implement the buffering with haskell code
15:22:40 <ais523> elliott: you could, indeed
15:23:00 <ais523> it depends on whether you implemented it inside or outside the exception handler, I guess
15:24:09 <ais523> elliott: if the exception happens while the buffering code is still trying to calculate the buffer
15:24:12 <ais523> it's not going to output the "
15:24:14 <elliott> 12:21:54: <oerjan> which makes me wonder, why _shouldn't_ you be able to catch exceptions in ST. or perhaps a subset of them.
15:24:21 <ais523> unless the exception code goes through the same buffer itself
15:24:29 <elliott> oerjan: runST (catch (error "a" ++ error "b") return)
15:24:44 <elliott> ais523: I, um, no, you're wrong
15:24:53 <elliott> ais523: the buffering code just has to append to a (char *) on putChar
15:24:58 <elliott> and flush it when it's too big
15:25:01 <elliott> it doesn't even know about the rest of the string
15:25:09 <elliott> oerjan: what? that's the exact reason exceptions are in IO to start with
15:25:11 <ais523> elliott: oh, I thought it was using some sort of Haskell list as the buffer
15:25:26 <elliott> ais523: it could do that, too
15:25:33 <elliott> ais523: cons to the list on putChar, reverse + print it when it's too big
15:25:44 <elliott> still wouldn't need to care about the rest of the string, also it'd still have to print out a linked list
15:25:48 <elliott> so it'd be pointless and slow :)
15:26:04 <fizzie> It could do buffering within the RTS but use the BUFSIZ value of the platform as the default size, that way would also lead to different buffer sizes on Linux vs. Darwin.
15:26:10 <ais523> also, hmm, wouldn't output the ", because reverse would force the error before it forced the "
15:26:16 <elliott> fizzie: yes, that seems plausible
15:26:20 <elliott> ais523: um putChar obviously has to be strict
15:26:33 <elliott> ais523: reverse doesn't force any of the list heads, duh
15:26:46 <ais523> elliott: but error isn't pretending to be a char, but a string
15:26:50 <ais523> so it has to force the length
15:27:34 <lambdabot> "*Exception: *Exception: *Exception: *Exception: *Exception: *Exception: *E...
15:27:54 <ais523> > putStr ("\"" ++ error "test")
15:28:04 <elliott> !haskell putStr ("\"" ++ error "test")
15:28:09 <fizzie> Actually going by http://hackage.haskell.org/trac/ghc/browser/ghc/lib/std/cbits/setBuffering.c?rev=c75c2618208e388439fdbf6a63b6903ddff7e195 it even tries to use the block size of the device from fstat, and BUFSIZ if that's not in the struct stat.
15:28:09 <EgoBot> *** Exception: test \ \ /tmp/runghcXXXX836.hs:1:1: \ Parse error: naked expression at top level
15:28:09 <elliott> i don't know what !haskell's buffering is like
15:28:18 <EgoBot> \ /tmp/runghcXXXX899.hs:1:1: \ Parse error: naked expression at top level
15:28:18 <elliott> wtf, Gregor broke it again
15:28:27 <EgoBot> \ /tmp/runghcXXXX962.hs:1:8: Not in scope: `fix'
15:28:35 <elliott> !haskell import Data.Function; main = fix error
15:28:36 <ais523> EgoBot: I take it lambdabot doesn't allow you to run arbitrary IO actions?
15:28:40 <EgoBot> \ /tmp/runghcXXXX1030.hs:1:23: \ Couldn't match expected type `IO t0' with actual type `[Char]' \ In the expression: main \ When checking the type of the function `main'
15:28:49 <kallisti> elliott: nah, !haskell is just anti-nudist
15:28:54 <elliott> !haskell import Data.Function; import Control.Exception; main = evaluate $ fix error
15:28:57 <ais523> !haskell main = putStr (fix error)
15:29:01 <EgoBot> \ /tmp/runghcXXXX1153.hs:1:16: Not in scope: `fix'
15:29:04 <ais523> oh, I forgot the import
15:29:12 <ais523> !haskell import Data.Function; main = putStr (fix error)
15:29:29 <ais523> also, why do ghc error messages have leading newline?
15:29:31 <elliott> Prelude> putStr ("\"" ++ error "test")
15:30:06 <ais523> so putStr forces the first character of the string before the second, or the string length
15:30:11 <oerjan> <elliott> wtf, Gregor broke it again <-- hm actually it may be a naturally consequence of trying the module compilation after the expression one errors out
15:30:47 <ais523> oerjan: oh, the theory's that it can distinguish a parse error from a deliberate exception?
15:30:51 <elliott> 12:53:02: <oerjan> kallisti: well for all i know there _might_ be a way to add other instances to give a loop from that.
15:30:59 <elliott> oerjan: uh the coverage condition is basically complaining that your fundeps are borked
15:32:03 <elliott> 13:10:40: <oerjan> @tell Sgeo well i have a hunch that you need a bit of self-esteem more than you need intelligence.
15:32:06 <oerjan> elliott: erm concluding that the dependency transfers from SomeInstance a b to SomeInstance (c -> a) (c -> b) seems safe to me
15:32:08 <elliott> oerjan: don't look now, but itidus21 is still around
15:32:28 <oerjan> elliott: i also have a hunch that you are not helping anyone's self-esteem.
15:33:11 <elliott> 13:31:36: <Sgeo> I should put this on github or something, probably
15:33:11 <elliott> IT'S BROKEN!!!!!!!!!!!!!!!!!!!p:"ckw)(u as)_eoa{$}p#}${p|"aD; DL PSADJK SEP56
15:33:28 <kallisti> oerjan helps my self-esteem by not hurting it.
15:34:17 * elliott considers sending a pull request to Sgeo that replaces every type with the Identity it really is.
15:34:30 <elliott> x >>= f = error "Tomorrow"
15:35:01 <oerjan> ais523: the parse error happens after the distinction is done, on a second compilation path
15:35:47 <elliott> 14:45:36: * kallisti continues to hold the notion that oerjan is a theist thanks to elliott even though he knows it's kind of not true maybe?
15:35:56 <fizzie> oerjan: Elliott keeps making withdrawals from everyone's Self-Esteem Account to fill his Ego Balloon. It's... subconscious. (A Penny Arcade reference.)
15:36:08 <Vorpal> why do audio CDs use uncompressed audio? Even using something like flac would probably double how much you can fit on a single CD
15:36:40 <Vorpal> fizzie, quite accurate too
15:36:47 <Vorpal> fizzie, and which comic?
15:36:57 <fizzie> Vorpal: http://penny-arcade.com/comic/2003/02/28
15:37:13 <elliott> "Quite accurate" -- yes, fear my dark feast.
15:37:41 <kallisti> elliott is the evil monster that raids the village daily.
15:38:32 <elliott> 15:00:44: <ais523> this is a big argument for just writing functions by hand rather than importing the appropriate module
15:38:45 <ais523> elliott: at least when they're simple
15:38:47 <elliott> ais523: please, change the topic quickly if you say things like this before I join, I don't want to be associated by proximity
15:39:22 <ais523> I'm not sure I agree with that viewpoint
15:39:26 <ais523> just, hnop is a big argument for it
15:39:33 <fizzie> (Also they use uncompressed PCM because that's the only thing CD players can play. Audio CDs are from the 1980s; FLAC was released in this millennium.)
15:40:13 <ais523> Vorpal: read scrollback
15:40:21 <Ngevd> I just carefully unwrapped a chocolate coin and tried to eat the wrapper
15:40:32 <ais523> the problem with you is that you force every conversation to happen at least twice
15:40:33 <Vorpal> fizzie, what about plain zlib then?
15:41:07 <oerjan> Ngevd: just deposit the rest http::/xkcd.com/
15:41:18 <oerjan> *Ngevd: just deposit the rest http://xkcd.com/
15:41:37 <ais523> haha, Firefox had xkcd as its first history search result for "x"
15:41:39 <Ngevd> oerjan, nah, I'm hungry, and I don't know where I could find one of those machiens
15:41:53 <ais523> even though I rarely visit it, it's probably the most commonly visited result for me that starts with x
15:42:32 <elliott> <ais523> the problem with you is that you force every conversation to happen at least twice
15:42:47 <elliott> ais523: as a logreader I'm offended!
15:42:54 <oerjan> <ais523> the problem with you is that you force every conversation to happen at least twice <-- wait, which one of us are you talking to?
15:43:00 <ais523> I was aiming at Vorpal
15:43:02 <elliott> Vorpal forces it to happen at least twice /non-automatically/
15:44:16 <Vorpal> ais523, I don't log read
15:44:21 <Vorpal> so doubtful I would have noticed
15:44:22 <elliott> let's paste this conversation to Vorpal so he understands it
15:44:30 <elliott> <ais523> the problem with you is that you force every conversation to happen at least twice
15:44:31 <Vorpal> I'm not really interested
15:44:33 <elliott> <elliott> ais523: as a logreader I'm offended!
15:44:35 <elliott> <oerjan> <ais523> the problem with you is that you force every conversation to happen at least twice <-- wait, which one of us are you talking to?
15:44:36 <Vorpal> busy doing other stuff
15:44:37 <elliott> <ais523> I was aiming at Vorpal
15:44:39 <elliott> <elliott> Vorpal forces it to happen at least twice /non-automatically/
15:44:43 <elliott> <Vorpal> ais523, I don't log read
15:44:45 <elliott> <Vorpal> so doubtful I would have noticed
15:44:47 <elliott> <Vorpal> I'm not really interested
15:44:49 <elliott> <Vorpal> busy doing other stuff
15:44:52 <elliott> Vorpal: there, now you're up to date
15:44:52 <ais523> oerjan: you need quite a big facepalm for that
15:45:06 * oerjan realizes _after_ typing /me facepalm that he had just physically facepalmed
15:45:11 <ais523> elliott: but now your quote has to quote itself
15:45:22 <ais523> because if Vorpal's response to the communication is part of it, so is that quote
15:45:24 <lambdabot> "<elliott> <elliott> <elliott> <elliott> <elliott> <elliott> <elliott> <ell...
15:45:25 <kallisti> oerjan: I physically facepalmed as well. while giggling.
15:46:05 <elliott> hmm, I should try out the effects package
15:46:12 <fizzie> Vorpal: CD players can't do that either. They're pretty stupid, you know. Certainly they probably *could* have included some sort of decompression soft/hardware in them originally, at the cost of seriously increasing the complexity, with no real benefit: they already selected the physical parameters for CD media so that it gives a suitable "album-sized" length.
15:46:39 <ais523> fizzie: [note that I'm guessing the context here
15:46:45 <ais523> ] I've seen a CD player that could play data files
15:46:53 <fizzie> Vorpal: You can just burn a data CD with FLAC/OGG/MP3 nowadays if you have a modern enough CD player.
15:46:55 <ais523> and decoded a range of formats
15:47:10 <Vorpal> fizzie, well mine is kind of old
15:47:16 <elliott> fizzie: Can't do what? Decode FLAC?
15:47:30 <elliott> But yeah, saying CDs should be compressed is pretty ridiculous.
15:47:42 * elliott hopes that the next big music format is USB sticks with FLACs on them.
15:47:46 <Deewiant> elliott: 2011-12-26 17:40:04 ( Vorpal) fizzie, what about plain zlib then?
15:47:48 <fizzie> elliott: Can't un-gzip.
15:47:48 <elliott> But it'll probably be USB sticks with MP3s on them. :(
15:48:00 <elliott> Deewiant: Thanks, but I need conversations repeated at least thrice to understand them
15:48:06 <Deewiant> elliott: 2011-12-26 17:40:04 ( Vorpal) fizzie, what about plain zlib then?
15:48:26 <elliott> (Actually I hope the next big music format is there not being a physical music format.)
15:48:31 <elliott> Deewiant: Repeated at least thrice, not peated at least thrice.
15:49:02 <Vorpal> fizzie, anyway, I think fitting all of Mozart's work on one CD instead of 50 or so would be awesome
15:49:04 <fizzie> elliott: I'm guessing for USB sticks with MP3s on them, and then for selected "albums" USB sticks with FLACs on them for the "enthusiast edition" with 5x the price tag.
15:49:53 <fizzie> Vorpal: But it comes with a poster, too.
15:49:57 <ais523> fizzie: for the sort of people who buy $2000 HDMI cables?
15:50:29 <fizzie> ais523: For the sort of people who buy the collector's edition with the 10" lead figurine of a dragon.
15:50:38 <elliott> ais523: at least FLAC is actually different to MP3s
15:50:42 <Vorpal> ais523, I know someone who brought a $2000 ethernet cable.
15:50:52 <elliott> admittedly, not perceptibly, as long as the MP3 is of sufficiently high bitrate
15:50:57 <Vorpal> ais523, but it was okay. It was a huge roll of uncut installation cable
15:51:33 <ais523> OK, /that/ was weird, Evolution just interpreted the success message it got after logging into Yahoo! Mail as an error message
15:51:41 <Vorpal> fizzie, until they took an arrow in the knee that is
15:51:48 <ais523> then tried to log in again, and got an error message saying you can't log in while already logged in
15:52:12 <ais523> elliott: the $2000 HDMI cables are not the same as cheaper ones either
15:52:17 <elliott> ais523: hmm, does Agora have contests this decade?
15:52:23 <ais523> it's doubtful that the differences have any effect on audio quality
15:52:32 <ais523> but there's only one in existence, and it's kind-of dormant atm, also holiday
15:52:38 <Vorpal> elliott, why do you hate the arrow in the knee meme?
15:52:45 <ais523> contests aren't a special case of contracts atm, btw, but something else
15:53:06 <elliott> Vorpal: not only is it (a) tired (b) shitty (c) terrible, but (d) it wasn't even (d1) relevant or (d2) /grammatically valid/ in (d3) the context you used it in, ergo (e) die
15:53:41 <kallisti> you know shit is serious when the bulleted lists are nested.
15:53:44 <Vorpal> elliott, it is kind of amusing if you played the game.
15:53:54 <elliott> "Last Christmas I was homeless, girlfriendless, jobless, weak, underweight and only 21 years old. In one year I've changed everything. AMA (self.IAmA)" ;; I bet he's 22 now, what an achievement
15:54:00 <kallisti> ...ugh, is someone defending arrow in the knee?
15:54:05 <fizzie> Vorpal: That has to be one *huge* roll; you can get a 300 metre roll of cat.6 cable at ~250 eur.
15:54:15 <kallisti> elliott: it was a sort of rhetorical question. :P
15:54:23 <elliott> kallisti: TROLOLOLOLOLOLOLOL U MAD BROTHER??? forever alone
15:54:27 <Vorpal> but yes, it gets old quickly
15:54:36 <Vorpal> fizzie, several km iirc
15:54:52 <Vorpal> fizzie, he works professionally with network installation stuff
15:54:57 <elliott> They should measure Ethernets in Londons.
15:55:05 <elliott> 3 London roll of Ethernet (collapses; forms black hole).
15:55:37 <Vorpal> fizzie, anyway it was about 10 years ago
15:55:40 <kallisti> elliott: >implying over 9000 fffffuuuuu inb4 chris hansen
15:55:48 <Vorpal> fizzie, price might differ these days?
15:56:00 <kallisti> elliott: one day it will be posible to hold an entire conversation in only memes.
15:56:17 <kallisti> English sentences will be formed by concatenating memes.
15:56:20 <Ngevd> I have no idea what anyone is talking about
15:56:37 <elliott> kallisti: I see you haven't talked to anyone who frequents /b/ in the last five years.
15:56:47 <kallisti> elliott: their methods are still imperfect.
15:56:59 <kallisti> occasionally they have to use original phrases to express themselves.
15:57:20 <elliott> kallisti: Augh, I just saw your response now looking up.
15:57:20 <fizzie> Vorpal: Could be. Currently if you buy from Amazon in units of 1000ft (~300m) rolls, you'll get 16.4 rolls (weighing 133 kilograms) with $2000.
15:57:26 <fizzie> That's quite a bit of cable.
15:57:26 <elliott> I need peril-sensitive sunglasses.
15:57:47 <Vorpal> elliott, I see what you did there
15:57:51 <fizzie> So if someone tells you "you're worth your weight in Ethernet", it's likely they think your worth is less than $2k.
15:58:03 <elliott> `addquote [...] <fizzie> So if someone tells you "you're worth your weight in Ethernet", it's likely they think your worth is less than $2k.
15:58:11 <ais523> hmm, what is the least valuable solid, by volume?
15:58:13 <HackEgo> 776) [...] <fizzie> So if someone tells you "you're worth your weight in Ethernet", it's likely they think your worth is less than $2k.
15:58:16 * elliott likes this use of [...] to imply a long and in-depth preceding discussion about nothing.
15:58:37 <Vorpal> elliott, have you seen what some cheese cost?
15:58:51 <kallisti> elliott: you just inadvertently used a starcraft 2 term. (cheese)
15:59:09 <Vorpal> ais523, some sort of plastic?
15:59:11 <elliott> also an english language term
15:59:14 <fizzie> ais523: If you're willing to accept a mixture of crap, people will pay you to haul theirs away.
15:59:33 <elliott> fizzie: A mixture of crap? Different fragrances and blends of faeces?
15:59:37 <ais523> kallisti: talking about cheesing in that context is a general computer gaming concept
15:59:47 <kallisti> ais523: oh it is? i was unaware.
15:59:47 <ais523> elliott: hmm, I think I meant to buy
15:59:56 <ais523> buying excrement is actually reasonably expensive
15:59:59 <kallisti> ais523: i think sc2 takes it to a different level though.
16:00:04 <Vorpal> ais523, what does it mean
16:00:06 <ais523> kallisti: it takes everything to a different level
16:00:26 <elliott> ais523: why do you know this
16:00:26 <ais523> Vorpal: using a strategy that's simple and unlike standard strategy, and wouldn't work if the opponent guessed what you were doing
16:00:40 <Vorpal> ais523, ah, so a strategy game term then?
16:00:40 <ais523> elliott: I know at least one sc2 player in real life
16:00:43 <ais523> and I watch a lotof games
16:01:00 <elliott> there are tv shows about buying poop
16:01:04 <ais523> people end up buying it as fertilizer now and again
16:01:19 <ais523> so the TV shows aren't about buying poop, but it comes up
16:01:55 <fizzie> Well, I mean, you can buy scrap metal, but that's not exactly a single solid.
16:02:07 <fizzie> E.g. here's one add if you want to buy 15 tons of hard discs.
16:02:14 <kallisti> I guess you could use cheese in the context of other multiplayer games
16:02:18 <fizzie> These are all "price on request", so I can't provide prices.
16:02:23 <kallisti> or maybe single-player games for "cheap" tricks.
16:02:25 <fizzie> But I'm sure you could dig out some data from there.
16:02:57 <ais523> kallisti: it works in single-player games too, normally referring to AI deficiencies
16:03:14 <kallisti> ais523: guessing isn't required if you actually gather information about what your opponent is doing. and, of course, the best anti-cheese is an equally cheesy play. :P
16:03:19 <Vorpal> ais523, AI deficiencies is standard in single player games
16:03:48 <Vorpal> sure there are exception, chess games for example
16:03:52 <ais523> kallisti: all sc2 players who are even remotely good gather information
16:04:03 <ais523> Vorpal: nah, there are chess games with good AIs but they're the exception, not the rule
16:04:06 <kallisti> even I scout, and I'm not good at all. :P
16:04:59 <Vorpal> ais523, well sure, but I meant for chess in general, there just happens to be many different chess games. While there aren't many different Final Fantasy 2 games say
16:05:34 * kallisti can write a spot-on tic-tac-toe AI.
16:05:56 <Vorpal> kallisti, and I can beat it if I get to do the first turn
16:06:18 <ais523> Vorpal: japanese Final Fantasy II, US final fantasy 2 which was a translation of Final Fantasy IV, then there was a GBA version, and IIRC a DS version too
16:06:18 <kallisti> Vorpal: eh, a cheese move if you ask me.
16:06:38 <kallisti> FUCK YOUR PERFECT INFORMATION GAMES.
16:06:42 <ais523> Vorpal: how do you win tic-tac-toe against a perfect player?
16:06:56 <Vorpal> ais523, by taking the first turn and doing perfect play?
16:07:08 <Vorpal> ais523, it is always the first player who wins if both play perfectly
16:07:10 <ais523> Vorpal: that leads to a draw in tic-tac-toe?
16:07:20 <Vorpal> hm does it? Maybe I misremember then
16:07:37 <fizzie> ais523: You can buy (fill) dirt at $12.50 per cubic yard. You might not count that as a single solid either.
16:08:01 <ais523> hmm, dirt is thus actually quite expensive
16:08:08 <kallisti> Vorpal: depends on where you live I guess.
16:08:12 <ais523> thus, I hereforth ban people from using the phrase "dirt cheap"
16:08:17 <fizzie> A cubic yard is quite a lot of dirt.
16:08:32 <kallisti> Vorpal: undefined. no one sells ice there.
16:08:37 <Vorpal> fizzie, how long is a yard now again?
16:08:51 <Vorpal> kallisti, north Sweden then?
16:08:53 <ais523> Vorpal: a little less than a metre
16:09:07 <kallisti> Vorpal: TRICK QUESTION SWEDES ARE MADE OOF CIE
16:09:14 <oerjan> the brits have very small yards
16:09:15 <fungot> ha. ha. ha ha. ha ha ha. ha ha ha ha ha. ha ha ha ha ha ha ha ha. ha ha ha ha ha ha ha ha ha ha ha ha ha. ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha. ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha. ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha ...too much output!
16:09:15 <ais523> a metre's approximately 39 inches; a yard is 36
16:09:36 <Vorpal> <fizzie> A cubic yard is quite a lot of dirt. <-- no, you can carry loads of cubic meters of earth, and if a yard is less than a meter...
16:09:52 <fizzie> This is not Minecraft, though.
16:10:02 <kallisti> lol @ people not knowing what a yard is intuitively.
16:10:05 <Vorpal> <kallisti> Vorpal: TRICK QUESTION SWEDES ARE MADE OOF CIE <-- good thing we are worth more than our weight in ice then
16:10:12 <ais523> kallisti: are you American?
16:10:19 <ais523> the word's hardly used as a measurement in most of the world
16:10:27 <ais523> being British, I know people who are old enough to remember what yards are
16:10:31 <Vorpal> kallisti, indeed. Sweden uses the metric system
16:10:33 <kallisti> I know. I WASN'T BEING SERIOUS.
16:10:35 <ais523> and the measurement is used on road signs occasionally
16:10:43 <ais523> but it doesn't come up in regular conversation
16:10:50 <Ngevd> ais523, unless you play golf
16:10:53 <ais523> (whereas miles are used all the time on road signs)
16:11:01 <ais523> Ngevd: but I don't play golf
16:11:02 <elliott> <fizzie> ais523: You can buy (fill) dirt at $12.50 per cubic yard. You might not count that as a single solid either.
16:11:04 <elliott> <ais523> hmm, dirt is thus actually quite expensive
16:11:08 <kallisti> I was not actually confused about /why/ this was the case. Just noting that it's kind of interesting how measurement systems affect intuition.
16:11:08 <Ngevd> ais523, then it doesn't
16:11:14 <Vorpal> ais523, and that is not a Scandinavian mile either I assume?
16:11:18 <Vorpal> ais523, which is 10 km
16:11:21 <elliott> ais523: http://farm4.static.flickr.com/3125/2778009865_4cc9b6c99e.jpg
16:11:33 <ais523> or possibly 1619, I forget the last digit
16:11:50 <Vorpal> ais523, road signs here use km, but in conversation people often use miles (10 km)
16:11:57 <elliott> ais523: I'm relatively well-accustomed to yards
16:11:57 <fizzie> Couldn't quick-find anyone actually selling ice in bulk -- I don't think people would bother actually shipping ice long distances -- but you can buy buil sand/salt 8:1 mixture (for road de-icing) at $46/cubic yard, i.e. that costs a lot more than dirt.
16:12:01 <elliott> ais523: they're not that uncommon
16:12:06 <HackEgo> 25146/15625 (exactly 1.609344)
16:13:05 <kallisti> I thought "there's no way that's the ratio my speedometer uses"
16:13:13 <ais523> fizzie: Birmingham City Council ran out of sand/salt mixture a couple of years ago
16:14:02 <ais523> it can get in short supply during winter
16:14:13 <oerjan> fizzie: i occasionally hear people proposing towing icebergs to the persian gulf or so
16:14:25 -!- Ngevd has quit (Quit: no more internet anymore).
16:14:27 <fizzie> Concrete costs $70/cubic yard, delivered.
16:14:32 <Vorpal> oerjan, I heard about that too
16:14:44 <elliott> kallisti: did topatoco send you toy money too
16:15:09 <Vorpal> fizzie, so what about gravel?
16:15:30 <elliott> my package came with $1000 in toy money
16:15:42 <fizzie> ais523: Recycled sawdust/shavings at $7.85/cubic yard.
16:16:03 <kallisti> ..how did this become a conversation about the costs of various construction materials.
16:16:04 <Vorpal> fizzie, that is kind of cheap
16:16:06 <fizzie> (And topsoil at $9.75 from the same place.)
16:16:27 <oerjan> kallisti: something went asymptotically wrong, i think
16:16:29 <elliott> kallisti: ais523 wanted to know what the cheapest solid is
16:16:35 <elliott> does anyone want a 1000 dollar note of toy money
16:16:38 <kallisti> also, I find it strange that this is being discussed in dollars. don't you guys have your own currencies?
16:16:58 <fizzie> kallisti: It's easiest to find prices in $s in the webs.
16:16:58 <elliott> dollars are rather more universal for buying things like materials in bulk
16:17:16 <Vorpal> what is the Chinese currency called?
16:17:17 <elliott> also, everyone knows how much dollars are worth
16:17:22 <elliott> nobody knows how much euros are worth :P
16:17:34 <kallisti> I guess it was so convenient for me that I didn't pay much attention to it.
16:17:35 <Vorpal> oerjan, I never heard of that before, are you sure?
16:17:44 <elliott> Vorpal: yuan is the base unit
16:17:46 <oerjan> Vorpal: colloquially "yuan"
16:17:49 <fizzie> Vorpal: You have to pay like $50/cy for gravel-with-no-dirt-in-it.
16:17:59 <Vorpal> fizzie, that much? heh
16:18:06 <kallisti> I'm guessing the cheapest solid is.....
16:18:43 <Vorpal> elliott, just switch texture pack
16:18:53 <Vorpal> elliott, currently I'm using one where it looks like concrete blocks
16:18:56 <kallisti> that's probably not the cheapest solid.
16:19:03 <elliott> Vorpal: I make gravel deliberately ugly because it sounds ugly to step on and it acts ugly.
16:19:09 <elliott> It is the Enemy, it must look like sin.
16:19:32 <kallisti> anyway I'm guessing syrofoam is pretty cheap.
16:20:19 <elliott> I rather doubt synthetic styrofoam is cheaper than muck.
16:21:21 <elliott> kallisti: Also "styrofoam" is a brand name and I suspect the real thing is rather more expensive than what most people call styrofoam.
16:21:32 <elliott> As in what fizzie was talking about. :p
16:21:43 <elliott> "The production of one ton of styrofoam requires 685 US gallons (2,593 litres or liters) of oil, and emits 94,119/20,000 tons of CO2 and 2,055.8 tons of greenhouse gases."
16:21:54 <kallisti> hmmm a 6"x12" sheet of aluminum is $3. "0.32 thickness" whatever that means. measured by gauge maybe?
16:22:03 <kallisti> that's incredibly cheap compared to everything mentioned so far.
16:22:12 <kallisti> considering it that's sold in thin sheets.
16:22:38 <elliott> kallisti: Do you want my toy money.
16:22:55 <kallisti> Vorpal: if it magically became a block at the same price
16:22:55 <elliott> <kallisti> that's incredibly cheap compared to everything mentioned so far.
16:22:56 <elliott> <fizzie> ais523: Recycled sawdust/shavings at $7.85/cubic yard.
16:23:09 <kallisti> elliott: I judged too quickly. :
16:23:33 <elliott> How can reddit take itself seriously if we only boycott websites that we don't use, or don't have good replacements for(like GoDaddy). EA also supports SOPA. Stop playing BF3 and let's boycott it. (self.technology)
16:23:33 <elliott> submitted 11 hours ago by IggySmiles
16:23:33 <elliott> Seriously, EA has been just as bad of a company over the years, and it is supporting SOPA. Why isn't there an outcry against it?
16:23:33 <elliott> Edit Someone mentioned Nintendo, which is legit. Nintendo also supports SOPA. Obviously Nintendo is a much better company than the pile of shit that is EA, but sometimes our favorites are lead astray, and turning a blind eye to them doesn't help anybody. We can all get by with not buying Nintendo products for a few months. Again, we need to make sacrifices, and if we cant do that, then we don't deserve this free internet.
16:23:36 <kallisti> hmmm does plaster count as a solid?
16:23:41 <elliott> god bless redditors, living in gameless poverty for FREEDOM
16:23:47 <fizzie> I can only find people willing to accept your styrofoam and packing materials at $8/cubic yard or so. People generally seem to be more interested in getting rid of that stuff than getting that stuff. :p
16:23:50 <elliott> it's almost as bad as the holocaust :'(
16:24:16 <elliott> fizzie: I don't see why ais523 doesn't count that as $-8/cy.
16:24:19 <kallisti> fizzie: shipping companies buy it to ship things. also people shipping stuff from their home I imagine.
16:24:28 <elliott> I mean, lots of people have styrofoam, you can easily put up an offer to accept it for that price.
16:24:52 <fizzie> kallisti: Yes, but everyone wants to get rid of it, so it's easier to find the latter.
16:24:57 <fizzie> Certainly people do buy it.
16:25:07 <kallisti> I wonder what the density of plaster is.
16:26:07 <kallisti> ah wait here's a unit of volume.
16:26:44 <Vorpal> kallisti, how many cubic yards are half a gallon?
16:27:03 <Vorpal> anyway I doubt it is solid if it sold in those units
16:27:09 <kallisti> elliott: operate the frink machine.
16:27:19 <elliott> `frink half gallon -> cubic yard
16:27:30 <HackEgo> 77/31104 (approx. 0.002475565843621399)
16:27:47 <fizzie> Regular poly froam ("best utilized in custioning and padding applications -- excels as packaging material, for mailing and transporting") is $170/cubic yard.
16:27:52 <Vorpal> `frink litre -> cubic metre
16:27:54 <fizzie> I don't know about the rigid sort of styrofoam.
16:28:08 <kallisti> `frink american spelling -> british spelling
16:28:19 <HackEgo> Warning: undefined symbol "american". \ Warning: undefined symbol "spelling". \ Warning: undefined symbol "british". \ Warning: undefined symbol "spelling". \ Warning: undefined symbol "american". \ Warning: undefined symbol "spelling". \ Warning: undefined symbol "british". \ Warning: undefined symbol "spelling". \ Warning: undefined symbol "british". \ Warning: undefined symbol "spelling". \ Unconvertable expression:
16:28:24 <Vorpal> kallisti, you need simple conversion ratios like <HackEgo> 1/1000 (exactly 0.001)
16:28:44 <elliott> Vorpal: Simple in decimal, maybe.
16:28:46 <HackEgo> Unknown symbol "dmB3" \ Warning: undefined symbol "dmB3". \ Unconvertable expression: \ 1/1000 (exactly 0.001) m^3 (volume) -> dmB3 (undefined symbol)
16:29:08 <Vorpal> elliott, now that is simple in all bases :P
16:29:29 <Vorpal> elliott, anyway human calculation is built on decimal
16:29:53 <Vorpal> elliott, anyway western human calculation is built on decimal
16:30:05 <kallisti> NOT JUST WESTERN YOU UNCULTURED FUCK.
16:30:08 <Vorpal> yes I know about base 60 for the Babylonians and so on
16:30:40 <Vorpal> kallisti, sure, but western is, I didn't say anything about the other ones in the last statement
16:31:22 <Vorpal> kallisti, anyway aren't you american? You guys are /all/ cultural bias.
16:31:36 <kallisti> no your statements must be assertions about the entire universe where the negation is always implied to be false.
16:32:29 <ais523> doesn't /every/ statement imply its negation to be false?
16:32:37 <elliott> ais523: paraconsistent logic, man!
16:32:38 <ais523> unless it's sarcastic or similar?
16:32:43 <kallisti> using stereotypes to demonstrate cultural bias. beautiful.
16:33:03 <kallisti> I am the most political correct entity of all.
16:33:10 <kallisti> people bow down to my culturelessness.
16:33:37 -!- MSleep has changed nick to MDude.
16:33:38 <kallisti> life is good as politically correct overlord
16:34:18 <Vorpal> C++-1x is not finalised yet is it?
16:34:33 <kallisti> anyway I'm going to go eat some lunch. happy kwanzaa guys!
16:34:40 <elliott> C++11 was finalised months before C11.
16:34:51 <Vorpal> elliott, how embarrassing
16:34:53 <Deewiant> Vorpal: C++11 i.e. ISO/IEC 14882:2011 was published in September
16:36:46 <elliott> "Why are monads useful?", http://mathoverflow.net/questions/84309/why-are-monads-useful
16:36:57 * elliott was pleasantly surprised by the URL behind the link.
16:39:02 <kallisti> the top rated answer is basically gibberish to me.
16:41:04 <kallisti> this must be how you get upvotes on mathoverflow
16:41:14 <oerjan> kallisti: hint, it's "math", not "stack"
16:41:23 <kallisti> pack as much theoretical nonsense into every sentence as possible.
16:41:54 <fizzie> ais523: Anyway, regarding your "dirt cheap isn't cheap", no matter what you think of the absolute price, it's still relatively speaking cheaper than almost anything else. You have to pay more for most kinds of scrap, for example. (80/20 PET bottles come at $18/cubic yard, "post-consumer, unwashed". ABS plastic scrap, 70% from TVs and 30% from monitors, at $13/cy.)
16:42:00 <elliott> kallisti: you *are* kidding, right?
16:42:13 <kallisti> about the last thing i said? yes.
16:42:26 <kallisti> but yes the top rated answer is gibberish to me.
16:42:31 <Vorpal> fizzie, wasn't the saw dust cheapest so far?
16:42:37 <elliott> http://www.google.co.uk/search?sourceid=chrome&ie=UTF-8&q=cheapest+solid I DON'T WANT WOOD FLOORING
16:43:04 <fizzie> Vorpal: Well, it's in the same ballpark as topsoil (i.e.) dirt. The prices I've quoted have been from random places, I haven't really been trying to find the cheapest supplier.
16:43:11 <Vorpal> elliott, try wolfram alpha
16:43:39 <fizzie> "(data not available)"
16:43:41 <elliott> "top 0.17% this month" omg I'm in the monthly rankings now :DDDDDDDDDd
16:44:08 <kallisti> elliott: pretty soom yollb ecome amfous
16:44:22 <elliott> fizzie: There's some really incomprehensible part of me that thinks buying dirt would be a good idea, since hey, it's so cheap.
16:44:35 <oerjan> kallisti: don't worry, it's 90% gibberish to me too
16:44:57 <kallisti> oerjan: what, you don't know about the Geometry of Iterated Loop Spaces?
16:45:01 <Vorpal> <elliott> "top 0.17% this month" omg I'm in the monthly rankings now :DDDDDDDDDd
16:45:05 <oerjan> kallisti: shockingly, no
16:45:39 <Vorpal> elliott, what website I meant
16:45:52 <kallisti> oerjan: I wonder if anyone else knows what he meant or if they just upvoted it because it's all math sounding.
16:45:58 <kallisti> maybe he just made up a bunch of stuff.
16:46:08 <elliott> Vorpal: The website from which units are measured.
16:46:23 <Vorpal> elliott, give me the url to it please
16:46:42 <oerjan> kallisti: i assume that question is _for_ category theorists, who would know about such things.
16:47:22 <Vorpal> elliott, because you are a kind person?
16:47:39 <kallisti> elliott: because you believe in the benefit of sharing
16:48:07 <elliott> We've already established I'm evil!
16:48:14 <kallisti> because mutual selflessness creates a sense of community?
16:48:17 <elliott> 15:35:56: <fizzie> oerjan: Elliott keeps making withdrawals from everyone's Self-Esteem Account to fill his Ego Balloon. It's... subconscious. (A Penny Arcade reference.)
16:48:38 <Vorpal> I don't know if this idiom exist in English but "delad glädje är dubbel glädje" translates to "shared joy is double joy"
16:48:48 <oerjan> Vorpal: i think elliott might want to keep you away from that website, for the good of humanity.
16:48:57 <Vorpal> oerjan, what website would that be?
16:49:11 <oerjan> Vorpal: do i look like i want to doom humanity?
16:49:23 <Vorpal> oerjan, I guess I could log read for it
16:49:29 <oerjan> ok, so i do, but not in _quite_ such a painful way.
16:49:49 <Vorpal> oerjan, what if I promise to not become active on it?
16:50:05 <Vorpal> kallisti, do you know what website this is?
16:50:26 <Vorpal> kallisti, well I don't know what to search for exactly
16:51:30 <Vorpal> oerjan, anyway come on, you can tell me, I won't tell anyone, nor use this info for anything
16:51:33 <oerjan> i mean, pushing a black hole into the earth is so much cleaner and quicker.
16:52:01 <Vorpal> I could probably just log read for it, but that would take time
16:52:03 <oerjan> hm i guess "pushing" is the wrong word, you can only use gravity to pull it
16:52:03 <elliott> oerjan: pls don't kill me btw
16:52:59 <kallisti> Vorpal: okay fine I'll spare you.
16:53:00 <Vorpal> oerjan, anyway I might stumble onto it by accident, and if I didn't know which website it was I could not possibly hope to avoid it
16:53:04 <oerjan> elliott: maybe i can find room for you on my glorious spaceship
16:53:23 <Vorpal> oh I heard that mentioned some time ago. *shrug*
16:53:38 <Vorpal> elliott, yes I realise it isn't that
16:53:38 <oerjan> now Vorpal will kill the world with sour cereal
16:53:54 <Vorpal> it definitely doesn't seem to be related to what elliott said at all
16:54:22 <Vorpal> kallisti, yes it quite nice
16:55:46 <elliott> kallisti: it's a chart, not a table!
16:55:49 <Vorpal> oerjan, anyway I can tell you I would not use the knowledge of that site for anything. :P
16:56:09 <kallisti> elliott: invalid element <chart> in line elliott in elliott.html
16:56:22 <elliott> kallisti: it says chart on the page, twice
16:56:27 * elliott _really_ wants to know who owns sourcereal.com
16:56:39 <kallisti> HTML SUPERCEDES ENGLISH COMPREHENSION
16:57:07 <kallisti> or... don't you read html source and render web pages manually?
16:57:34 <Vorpal> kallisti, what is your user agent string?
16:58:34 <kallisti> "Mozilla/5.0 Windows Linux AppleWebKit Safari Gecko-like Chrome KHTML kallisti is t3h l33tz0r35t"
16:58:57 <kallisti> actually it's that thing that gregor linked.
16:59:06 <kallisti> where he grepped through his server log and mashed up a bunch of useragents.
17:00:14 <Vorpal> kallisti, that is a plain sed expression
17:00:36 <Vorpal> kallisti, on line starting with "kal" replace e with ee
17:00:48 <Vorpal> would become <kallisti> indeed
17:00:57 <Vorpal> kallisti, anyway I don't grok perl
17:01:00 <kallisti> sorry your regex is meaningful
17:01:54 <Vorpal> kallisti, anyway it is meaningfulness
17:01:56 <elliott> <Vorpal> kallisti, on line starting with "kal" replace e with ee
17:01:58 <elliott> <Vorpal> so <kallisti> inded
17:02:00 <elliott> <Vorpal> would become <kallisti> indeed
17:02:12 <kallisti> elliott: just think, without my inclination to ponder the notion of sour cereal, and monqy's initiative to google it, WE WOULD HAVE NEVER OFUND THIS SITE
17:02:19 <Vorpal> elliott, not at all, my client adds the <> when copying
17:02:22 <elliott> monqy linked sour cereal first
17:02:31 <elliott> and implied he'd known about it for ages
17:02:49 <elliott> Vorpal: your statement was still incorrect
17:03:25 <elliott> Vorpal: because <kallisti> inded
17:03:28 <elliott> would not become <kallisti> indeed.
17:03:39 <Vorpal> elliott, what would happen instead?
17:04:22 <elliott> Vorpal: it would become <kallisti> inded.
17:04:28 <kallisti> "your statement is incorrect because the thing you said it would do is not what it does"
17:04:28 <elliott> because <kallisti> inded does not start with kal.
17:04:45 <Vorpal> elliott, oh but it does since <> are not shown in my irc client
17:05:31 <kallisti> gtb2 swedeen wiit your <>fullessness
17:05:39 <elliott> Vorpal: you are incorrect.
17:06:03 <Vorpal> elliott, the expression applied to the line I saw in my irc client
17:06:10 <Vorpal> NOT to the actual data sent from the server
17:06:25 <oerjan> elliott: wait, this means that by choosing substitution expressions carefully, we can get Vorpal to see a different irc than the rest of us. this has mindboggling possibilities. well, if he would notice.
17:06:35 <kallisti> < elliott> kallisti knows nothing <-- Can anyone truly know anything?
17:08:40 <kallisti> llklllkllklklkllklklllllkllklllllllkllllkllklllklkllklklkllllkklklklklklklklklllkkklkllklklkklllklklklk
17:08:46 <kallisti> challenge: make this into an esolang
17:09:14 <Vorpal> kallisti, l and k are nop instructions
17:09:47 <elliott> <oerjan> elliott: wait, this means that by choosing substitution expressions carefully, we can get Vorpal to see a different irc than the rest of us. this has mindboggling possibilities. well, if he would notice.
17:09:53 <elliott> oerjan: he already does. his only has one line of scrollback.
17:10:09 <elliott> actually i should start digging on him in some other way now that he's co-opted that as a point o pride
17:10:16 <kallisti> i would go by either the lengths of adjacent l's and k's to mean different instructions, or use the k as a statement delimiter
17:10:22 <Vorpal> kallisti, "llklllkllklklkllklklllllkllklllllll" is defined to print "Hello, " and "kllllkllklllklkllklklkllllkklklklklklklklklllkkklkllklklkklllklklklk" to print "World!"
17:11:30 * oerjan notes that sourcereal.com reminds him of zzo38
17:11:35 <Vorpal> kallisti, it is actually valid trefunge
17:11:41 <Vorpal> doesn't do anything interesting
17:11:52 <Vorpal> I think it just goes off into negative z right away
17:12:08 <oerjan> `log [z]zo.*sourcereal
17:16:01 <Vorpal> oerjan, it obviously isn't zzo who made it
17:16:25 <Vorpal> oerjan, why? gopher://sourcereal.com/ doesn't work
17:16:36 <kallisti> elliott: http://sprunge.us/iZJe
17:16:38 <oerjan> ...you have a point there.
17:16:51 <Vorpal> oerjan, and the design is too advanced for his style as well
17:17:35 <kallisti> elliott: saddly, it expires in 2013
17:17:46 <kallisti> but was apparently updated yesterday?
17:18:54 * elliott already whois'd it ages ago
17:20:43 <ais523> so, what is this sour cereal site?
17:21:24 <kallisti> it is a site with helpful information about sour cereal
17:22:09 <Vorpal> dammit I forgot syntax for bg colour
17:22:17 <kallisti> now we can be obnoxious with no penalty.
17:22:26 <fizzie> Vorpal: It's an experiment. So far it has led to just one rainbow.
17:22:39 <Vorpal> fizzie, what is the syntax for bg colour?
17:22:42 <fizzie> kallisti: And the "Half a bowl", which may be a cereal.
17:22:49 <elliott> im giong to talk like this from now on
17:22:58 <elliott> fizzie: It's a rather long-running experiment by now :P
17:23:00 <fizzie> Isn't it just with comma? I forget.
17:23:04 <ais523> Vorpal: ^[[40m to ^[[47m
17:23:14 <ais523> and ^[[49m to go back to the default
17:23:24 * oerjan runs screaming under a rock
17:23:26 <Vorpal> ais523, not for terminal
17:24:04 <Vorpal> oerjan, well there it is then
17:24:09 <fizzie> elliott: I sort of forgot to disable it when the stipulated hour had gone.
17:24:14 <Vorpal> the only useful one is bold IMO
17:24:14 -!- incomprehensibly has quit (Quit: Leaving.).
17:24:28 <Vorpal> oerjan, there should be a way to block colours but allow bold
17:24:45 <elliott> And occasional fun-rainbows, I suppose.
17:24:48 <kallisti> HELLO EVERYONE THIS IS MY EXCELLENT MESSAGE ABOUT THE BENEFITS OF GOOD COLOR CHOICES
17:24:58 <elliott> I don't think anyone is stupid enough to actually use colours for non-novelty purposes in here.
17:25:30 <fizzie> Hey, how do I configure my client to use a specified color by default for all messages.
17:25:43 <elliott> This will show as italic to ais523.
17:25:51 <elliott> kallisti: What code's that again?
17:26:04 <kallisti> elliott: I don't actually know but in irssi it's C-_
17:26:10 <ais523> and this shows as italic to me, but probably not anyone else
17:26:29 <elliott> `addquote <Vorpal> http://google.com
17:26:32 <HackEgo> 777) .18.<.Vorpal.>.. .2.http://google.com
17:26:36 -!- incomprehensibly has joined.
17:26:44 <ais523> elliott: the hilarious thing is, that my IRC client currently shows links as underlined and the same colour as the rest of the text
17:26:44 <HackEgo> *poof* .18.<.Vorpal.>.. .2.http://google.com
17:26:55 <ais523> and /also/ filters out colour codes in what's sent, but not underlines
17:26:56 <elliott> ais523: mine shows them as normal text, and underlined on hover
17:27:07 <ais523> the result is, that Vorpal's comment is indistinguishable from if it had been unformatted
17:27:10 <Vorpal> <elliott> ais523: mine shows them as normal text, and underlined on hover <-- same
17:27:21 <Vorpal> ais523, well it was a blue underlined link
17:27:29 <ais523> Vorpal: I guessed from context
17:27:37 <Vorpal> kallisti, that is the default colour of my own lines :P
17:27:55 <kallisti> some colors are the worst colors ever invented
17:28:02 <kallisti> some colors are the worst colors ever invented
17:28:15 <Vorpal> kallisti, light teal here
17:28:17 <ais523> kallisti: I like cyan!
17:28:30 <ais523> oh no, we're not going to get into a flamewar about whether cyan is a good colour or not, are we?
17:28:49 <Vorpal> ais523, I think cyan is awesome because of printing
17:28:53 <ais523> elliott: oh, I had sgthoughts
17:29:08 <Vorpal> <kallisti> my text is like my soul <-- mudane?
17:29:11 <ais523> I was thinking about one of my potential solutions to solve the deletions problem
17:29:24 <ais523> and it not only solves both deletions and moves, but it also makes everything more orthogonal
17:29:25 <kallisti> Also now I can be Doc Scratch (at least for people with sensible default background colors)
17:29:26 <elliott> ais523: i had sgthoughts too, but they were all parodies of yours
17:29:33 <ais523> because it removes SOF and EOF too as explicit symbols
17:29:38 <elliott> kallisti: that's black not white
17:29:41 <Vorpal> ais523, I like how sgthoughts is one word
17:29:49 <kallisti> elliott: well yes, but... that's not the point.
17:29:53 <Vorpal> elliott, light grey on white?
17:29:53 <kallisti> the point is that it's hard to read
17:30:05 <Vorpal> that was no text at all
17:30:06 <ais523> hey, no fair sending empty messages
17:30:11 <ais523> because Freenode doesn't let me
17:30:14 <elliott> they contain a single control character
17:30:21 <kallisti> elliott: that's because you either have a) youthful eyes b) a non-sensible background color
17:30:52 <elliott> actually made my pc speaker beep Vorpal
17:31:03 <Vorpal> elliott, I did /exec -o echo -e 'ASCII BELL!\007'
17:31:10 <Vorpal> but why the fuck was -e pasted into there
17:31:13 <Vorpal> <Vorpal> -e ASCII BELL!
17:31:16 <kallisti> I have system alert turned off like any sane person.
17:31:22 <ais523> kallisti: background colors lead to a flamewar over AceHAck
17:31:35 <Vorpal> elliott, it doesn't beep me
17:31:38 <ais523> which I've potentially fixed via an option
17:31:41 <elliott> Vorpal: do you have pcspkr loaded
17:31:47 <ais523> elliott: what sound does your client make in response to a nickping?
17:31:50 <Vorpal> elliott, nope and xchat is set to not beep at all
17:32:02 <ais523> IIRC, it leads to a PC speaker beep in Freenode webclient on Firefox on Scientific Linux
17:32:02 <kallisti> another thing that unsane people do.
17:32:22 <kallisti> clearly the most sensible thing to do is irssi with mostly default settings.
17:32:24 <Vorpal> nick colouring is horrible
17:32:33 <ais523> Vorpal: oh, I never bothered to turn it off
17:32:39 <kallisti> because irssi is THE CLIENT OF THE FUTURE </fanboy>
17:32:44 <Vorpal> kallisti, I just use grey for self, blue for other, red for other highlighting me
17:32:45 <ais523> although it's not very good at picking unique colours (e.g. elliott and kallisti have the same colour right now)
17:33:04 <ais523> Vorpal: I do pink for self, white for other, red for highlight, but on the actual message, not on the nick
17:33:21 <elliott> ok that's the first and last time i'm doing that
17:33:23 <Vorpal> ais523, on whole line except for the blue case where I have black text
17:33:34 <ais523> Vorpal: what colour's the background?
17:33:46 <ais523> so your own comments are grey on white? seriously?
17:33:56 <Vorpal> ais523, it is almost default xchat
17:34:18 <ais523> % letter often means control-letter on this client
17:34:23 <ais523> but not for control-A, it seems
17:34:28 <ais523> Vorpal: I know how to do a CTCP
17:34:34 <ais523> I was just wondering if my client would translate that into one
17:35:08 <ais523> oerjan: that is a valid CTCP
17:35:12 <elliott> abcde fuck it this is boring
17:35:41 <elliott> fizzie: Also I don't think "rainbow" is quite the right word for my initial colour spew.
17:36:06 <fizzie> Well, "broken rainbow".
17:36:11 <lambdabot> lexical error in string/character literal at chara...
17:36:46 <Vorpal> elliott, watch out for the zombies then
17:36:48 <ais523> hmm, I am almost convinced there's a website out there somewhere that does rainbow-coloured phpBB code
17:37:29 <ais523> on the basis that it's the most plausible explanation for people posting rainbow colours on phpBB forums (there are other possible explanations, but I see them as less likely)
17:38:10 * kallisti wrote a script for his mud client that spewed rainbow text via ANSI codes.
17:38:25 <elliott> sh: -c: line 0: unexpected EOF while looking for matching `''
17:38:25 <elliott> sh: -c: line 1: syntax error: unexpected end of file
17:38:32 <elliott> well that stealth beep backfired
17:38:56 <Vorpal> elliott, anyway I believe colour blocking does not block ascii bells
17:39:07 <Vorpal> so people probably should filter it out in their clients
17:39:09 <lambdabot> Couldn't match expected type `[GHC.Types.Char]'
17:39:17 <Vorpal> least someone spam them with it
17:39:55 <kallisti> I'm guessing lambdabot filters it.
17:39:57 <Vorpal> elliott, btw bell is \007
17:40:29 <fizzie> ^bf +++.,[.,]!2I'm so blue
17:40:54 <elliott> fizzie: Careful, you'll attract plasmoids.
17:41:13 -!- incomprehensibly has quit (Quit: Leaving.).
17:41:17 <Vorpal> this likely looks horrible?
17:41:41 <Vorpal> is that red on orange?
17:42:55 <Vorpal> elliott, THIS MESSAGE IS OF GREAT IMPORTANCE!!!
17:43:23 <elliott> fizzie must be loving this experiment.
17:43:32 <Vorpal> come on it is for novelty still
17:44:01 <Vorpal> anyway red,bold,underline is horrible
17:44:35 <kallisti> How could I possibly make things worse
17:44:56 <fizzie> Your computer must've given up partway through.
17:45:02 <kallisti> How could I possibly make things worse
17:45:08 <kallisti> I accidentally typed a clear code.
17:45:40 <ais523> just bold random letters, and also capitalize random letters
17:45:50 <ais523> hmm, perhaps I'll need a script to do that
17:46:00 <ais523> elliott: http://test.%Bexample%B.com
17:46:13 <ais523> oh, hmm, my client doesn't interpret bolding inside a link?
17:46:23 <ais523> even more confusing, it's decided that what I /did/ write is a link to http:
17:46:41 <ais523> and when I clicked on it, Firefox told me that "http:///" is an invalid address
17:46:57 <ais523> conclusion: that line really badly confuses Konversation
17:47:42 <kallisti> I think green would be a pleasant color to use all the time.
17:47:49 <elliott> This convergence rate sucks.
17:47:50 <kallisti> but not if everyone is using custom colors all the time
17:48:27 <elliott> kallisti: -Are you sure adopting a personal typing style is a good idea?-
17:48:32 <elliott> kallisti: -You might come to regret it quickly.-
17:49:42 <ais523> note that I'm still blocking colours
17:49:51 <ais523> and thus, am still having problems following the conversation
17:50:03 <elliott> "As I became older, I decided that Mr. Dickens had given Ebenezer Scrooge an undeserved reputation for villainy [...] you will see the villainy not in my client’s character, but in Charles Dickens’ miscasting of the true heroes of the time of which he wrote, namely, the industrialists and financiers who created that most liberating epoch in human history: the industrial revolution."
17:50:05 <elliott> "It is out of profound respect for those whose pursuits of their selfish interests have done far more to better the lives of others than have the combined efforts of all the self-styled altruists, saints, social workers, politicians, and other mischievous beings, that I have undertaken this defense of one of the most maligned financiers of this humanizing epoch. As you read my defense of Scrooge, and make a comparative judgment of my client and h
17:50:05 <elliott> is accuser, Charles Dickens, I ask you to keep in mind the warnings of another 19th-century writer, Anatole France, who observed: "Those who have given themselves the most concern about the happiness of peoples have made their neighbours very miserable.""
17:50:05 <ais523> -elliott: talking like The Baron only works if you do it properly-
17:50:10 <ais523> -but indeed, it truly is scary-
17:50:12 <elliott> ^ this is actually serious
17:50:35 <ais523> elliott: do you agree with it?
17:50:52 <elliott> ais523: what do /you/ think?
17:51:06 <kallisti> How could I possibly make things worse
17:51:07 <ais523> elliott: probably no, but it's hard to tell over the Internet
17:52:03 <elliott> ais523: I, er, invite you to assume I'm not terrible and/or idiotic whenever the question comes up
17:52:18 <elliott> ais523: anyway, tell me sgthoughts, I wasn't able to come up with any solutions myself
17:52:23 <oerjan> but that would be prejudiced!
17:52:26 <elliott> although the non-solutions i came up with were entertaining
17:52:44 <iconmaster> oh cool I just learned that text colous is in fact a thing and something I can do
17:52:59 <kallisti> good job. go forth and conquer.
17:53:03 <kallisti> and get banned in a lot of channels.
17:53:10 <ais523> elliott: basically, the state used to represent a file is a series of {lines for now, perhaps other units later}, each of which contains the content, and two labels
17:53:11 <elliott> Aw, it didn't copy the: colours.
17:53:18 <ais523> which are the hashes of two changes
17:53:49 <ais523> which correspond to the last thing that changed that line or the line before it; and the last thing that changed that line or the line after it
17:54:18 <elliott> iconmaster: Yes, appropriately retina-burning.
17:54:22 <ais523> then you have "insert X between A and B" which gives the resulting line {X,X} and changes no other hashes
17:54:28 <iconmaster> whew my irc client won't allow me to ctrl+anything
17:54:33 <elliott> ais523: err, X is a string, not a hash
17:54:42 <elliott> C = insert X between A and B which gives the resulting line {C,C}?
17:54:44 <kallisti> (sees this emoticon a lot recently)
17:54:48 <ais523> that's exactly what I meant
17:55:21 <ais523> E = delete A to B between C and D, which changes {Y,C} to {Y,E} and {D,Z} to {E,Z}
17:55:43 <ais523> elliott: no, just changes the hashes in the representation of the file
17:55:50 <ais523> as in, the state of the file is a set of lines, and two hashes for each line
17:55:51 <elliott> ais523: globally to taht file, I mean
17:55:55 <fizzie> ^bf +++>>>>,[<<<<.>[->+>+<<]>>-[-[-[-[-[-[-[<[-]>[-]]]]]]]]<[-<+>>+<]<+>>++++++++++++++++++++++++++++++++++++++++++++++++++.[-]>.,]!it is time for computer-assisted rainbows
17:55:55 <fungot> it is time for computer-assisted rainbows
17:55:58 <elliott> ais523: what if multiple entries have those hashes?
17:55:59 <ais523> those lines only appear once in that file?
17:56:16 <ais523> it's not possible, each hash can only be used once as a before-hash and once as an after-hash, at most
17:56:20 <fizzie> ^def rainbow bf +++>>>>,[<<<<.>[->+>+<<]>>-[-[-[-[-[-[-[<[-]>[-]]]]]]]]<[-<+>>+<]<+>>++++++++++++++++++++++++++++++++++++++++++++++++++.[-]>.,]
17:56:30 <elliott> ais523: is it correct to say that if you just look at the hashes, a file always follows the structure:
17:56:37 <elliott> {a,b}, {b,c}, {c,d}, {d,e}, ...
17:56:55 <ais523> if you just do insertions, it's {a,a}, {b,b}, {c,c}, …
17:57:08 <elliott> I suppose my problem is that I have no idea what the tuple is supposed to mean
17:57:34 <iconmaster> i wonder what a color value of 17 would do
17:57:36 <ais523> elliott: the change that last touched that line that things before it should care about, the change that last touched that line that things after it should care about
17:57:57 <ais523> the important insight is that you care about different things when checking after or before a line
17:58:01 <elliott> Well, I suppose it's the best you can do.
17:58:13 <fizzie> It doesn't do numbers larger than 9, that's a problem too.
17:58:19 <fizzie> I couldn't be bothered to multi-digit.
17:59:00 <elliott> ais523: I think the "or" and the seeming special-case of 1 line above/below in the definition of tuple are worrisome, but this doesn't seem too bad so far
17:59:13 <fizzie> And I skipped 1 too, because no black lights here, so it's just 2..9.
17:59:30 <ais523> elliott: simple example: say (with one letter per line) you have ABEF, then change it to ABCDEF, back to ABEF, then to AXBEF, then do AXBYEF
17:59:30 <fizzie> ^bf +++>>>>,[<<<<>[->+>+<<]>>-[-[-[-[-[-[-[<[-]>[-]]]]]]]]<[-<+>>+<]<+>>++++++++++++++++++++++++++++++++++++++++++++++++++.[-]>.,]!looks like this if you drop the ^C
17:59:31 <fungot> 2l3o4o5k6s7 8l9i2k3e4 5t6h7i8s9 2i3f4 5y6o7u8 9d2r3o4p5 6t7h8e9 2^3C
17:59:57 <ais523> now, if you started with the same ABEF and changed it to ABYEF, you want that change to conflict with ABEF -> ABCDEF -> ABEF
18:00:05 <ais523> but you don't want ABEF -> AXBEF to conflict with that
18:00:22 <ais523> thus, whether the deletion affects the identity of B depends on if you mean "before B" or "after B"
18:00:41 <elliott> ais523: hmm, that's too many letters for me to follow today, but I'll agree on faith
18:01:13 <iconmaster> I have this sinking feeling my IRC client sucks
18:01:14 <ais523> although this plan wasn't designed specifically to get moves working, it happens to allow a move change with all the desired properties (G = "move A to B between C and D to between E and F", setting the after-hash of E and the before-hash of F to G)
18:01:49 <ais523> elliott: the other neat thing, is that you can now use the hash that represents a file as your SOF and EOF, as it's always possible to tell which is which from context (indeed, from types if you like)
18:02:01 <elliott> ais523: hmm, (A to B) and (A and B) need notation
18:02:08 <elliott> to make these descriptions legible
18:02:29 <kallisti> simple algorithm to determine if your IRC client sucks: step 1) if it's irssi, halt with success 2) repeat step 1
18:02:40 <ais523> kallisti: exception: infinite loop
18:02:40 <Vorpal> -iconmaster- VERSION Bersirc v2.2.14 on Windows [ http://www.bersirc.org/ - Open Source IRC ]
18:02:57 <iconmaster> I picked it from the top of wikipedia's irc client list arbitrarily
18:03:14 -!- incomprehensibly has joined.
18:03:41 <kallisti> one must always be picky about ones software
18:03:46 <kallisti> so that you can have flamewars about it later
18:04:07 <elliott> ais523: I would prefer to not think of hashes at all when trying to talk about type-ly issues: we should treat reference-by-hash as an optimisation of an underlying recursive structure, where changes reference other changes directly; whatever change object we use to represent a file is obviously of a different type to the changes to that file, so you can't really say that it's determinable from "context"; but it's true that you can turn SOF :: Di
18:04:07 <elliott> rChange -> RangeStart, EOF :: DirChange -> RangeEnd into just a single function by unifying Range{Start,End}
18:04:21 <elliott> I'm not sure that simplifies things, though, as they're still handled differently by the algorithms
18:04:28 <elliott> because one is the beginning and one the end
18:04:43 <elliott> <ais523> kallisti: exception: infinite loop
18:04:46 <ais523> elliott: well, the point is that beginnings and ends are always handled differently from each other under this system
18:04:56 <elliott> ais523: right, so they ought to be different types!
18:04:57 <ais523> elliott: err, what? what language did you think that was?
18:05:07 <ais523> elliott: I have no problem with that at all
18:05:09 <elliott> it's no big win to unify two types that mean different things, that's actually a loss :)
18:05:16 <elliott> ais523: GHC prints <<loop>> on infinite loops
18:05:29 <ais523> I was thinking as I was working on this, "these are different types"
18:05:54 <ais523> OTOH, because Anarchy, I saw no problem with two unrelated types sharing the same constructors :)
18:07:18 <kallisti> iconmaster: you should try "LeetIRC" it's a text user interface IRC client written in QuickBasic so you know it's good
18:07:57 <elliott> ais523: i'm somewhat disappointed that we don't need to develop my terrible ideas to have a solution now
18:08:06 <kallisti> iconmaster: also don't use windows
18:08:15 <elliott> ais523: they were so terrible :(
18:08:19 <ais523> elliott: anyway, this does absolutely nothing with respect to conflict resolution
18:08:26 <ais523> it doesn't hinder it in any way, nor help it in any way
18:08:36 <ais523> OTOH, your latest plan for conflict resolution, I think actually works
18:08:46 <ais523> a good sign is that it was pretty similar to mine, just with different terminology
18:08:51 <elliott> ais523: the metachange ones?
18:09:03 <ais523> I forget the details of it
18:09:10 <elliott> they seem workable to me. I can't help but feel that sg has become progressively less beautiful as we fix all the bugs, though :)
18:09:24 <elliott> but I doubt throwing everything out and starting afresh would help
18:09:33 <elliott> it's too small for that to do anything
18:09:41 <ais523> elliott: I think this change of mine makes it /more/ beautiful
18:09:50 <ais523> because there's a sudden lack of special cases
18:10:44 <elliott> ais523: genius to understand its simplicity, etc.
18:11:14 <ais523> I think it'd be reasonably easy to convey with diagrams
18:11:17 <ais523> just I'm no good at drawing
18:12:02 <kallisti> shuffling my music is always fun..
18:12:37 <kallisti> 10573 songs. I don't even think I've listened to everything yet.
18:13:13 <fizzie> ^ul ((0)(15)(14)(1)(2)(12)(11)(10)(3)(9)(8)(7)(5)(4)(13)(6))(~^:()SSa~a~*~a~*~a~*~a~*~a~*~a~*~a~*~a~*~a~*~a~*~a~*~a~*~a~*~a~*~a*~(#)S:^):^
18:13:13 <fungot> ################################################################################################ ...too much output!
18:13:22 <fizzie> It just doesn't go very rainbowy with those colours.
18:13:25 <fizzie> No matter how one arranges them.
18:13:41 -!- incomprehensibly has quit (Quit: Leaving.).
18:14:14 <fizzie> Well, it does go blue-green-yellow-red, sorta.
18:14:23 <fizzie> ^def rainbow2 ul ((0)(15)(14)(1)(2)(12)(11)(10)(3)(9)(8)(7)(5)(4)(13)(6))(~^:()SSa~a~*~a~*~a~*~a~*~a~*~a~*~a~*~a~*~a~*~a~*~a~*~a~*~a~*~a~*~a*~(#)S:^):^
18:14:27 <elliott> fizzie: You should add input to ^def ul things, have we mentioned? :p
18:14:57 <elliott> Although you'd need more than just "push it on the stack" to do a rainbow. :(
18:15:03 <elliott> A cons list of church numerals would work, though.
18:17:11 <fungot> ################################################################################################ ...too much output!
18:17:42 <ais523> elliott: actually, the main thing holding up Underlambda is that I'm not sure of the best way to do I/O
18:18:14 <elliott> fizzie: You should use full block instead of #.
18:18:36 <elliott> ^ul ((0)(15)(14)(1)(2)(12)(11)(10)(3)(9)(8)(7)(5)(4)(13)(6))(~^:()SSa~a~*~a~*~a~*~a~*~a~*~a~*~a~*~a~*~a~*~a~*~a~*~a~*~a~*~a~*~a*~(█)S:^):^
18:18:36 <fungot> 6█0█15█14█1█2█12█11█10█3█9█8█7█5█4█13█6█0█15█14█1█2█12█11█10█3█9█8█7█5█4█13█6█0█15█14█1█2█12█11█10█3█9█8█7█5█4█13█6█0█15█14█1█2█12█11█10█3█9█8█7█5█4█13█6█0█15█14█1█2█12█11█10█3 ...too much output!
18:18:41 <ais523> nah, use background colors too, and use a half block
18:18:46 <ais523> and wow, escaping fail
18:19:06 <elliott> <ais523> elliott: actually, the main thing holding up Underlambda is that I'm not sure of the best way to do I/O
18:19:11 <elliott> Well, it's easier here, since there's no interactive IO.
18:19:52 <ais523> elliott: my current plan for input is to have a notional "input token" value, that can't meaningfully be executed
18:20:20 <fizzie> That was confusing, it's supposed to just repeat the bytes, and ^ul (...) shouldn't even have any problems with multiple-byte sequences, unlike ^bf ,/..
18:20:43 <ais523> input tokens are opaque and carry two pieces of information: a character, and a counter that starts at -1/EOF
18:21:15 <elliott> I don't see why ^bf . would have problems, either.
18:21:37 <fizzie> Well, not in itself, no, just that if you expect a single . is enough to write a single character.
18:21:37 <elliott> ais523: hmm, I prefer a solution framed in terms of pure functions, a la lazy K; an automaton arrow seems decent, for instance
18:21:40 <ais523> there are three input-related commands: one pushes an input token for a character read from stdin onto the stack; one increments an input token's counter; and one checks to see if the token's counter equals the ASCII value of the character
18:21:56 <elliott> although that doesn't allow for not receiving input
18:22:01 <elliott> and only allows output as a reaction to input
18:22:07 <ais523> it's not specified whether copying a token with : causes the old and new copies to share or not
18:22:19 <elliott> ais523: because then you just extend how a program in the language is /evaluated/, not the language itself
18:22:25 <ais523> elliott: anyway, the advantage of this plan is that it can be implemented in a range of languages, including in pure languages
18:22:40 <ais523> as in, the semantics can be implemented in a pure way, but also implemented with, say, a single mutable integer
18:22:51 <ais523> so they map nicely onto a huge range of languages
18:22:52 <elliott> ais523: well, that's not a difficult constraint...
18:22:54 <ais523> which is the point of Underlambda
18:23:00 <ais523> elliott: err, easily implemented
18:23:03 <elliott> mine works in even things without getchar()/putchar()
18:23:10 <ais523> they even work for Unlambda, and you know how bad Unlambda's I/O is
18:23:10 <elliott> although it loses streaming IO
18:24:24 <fizzie> ^ul ((0)(15)(14)(1)(2)(12)(11)(10)(3)(9)(8)(7)(5)(4)(13)(6))(~^:()SSa~a~*~a~*~a~*~a~*~a~*~a~*~a~*~a~*~a~*~a~*~a~*~a~*~a~*~a~*~a*~(█-)S:^):^
18:24:24 <fungot> █-█-█-█-█-█-█-█-█-█-█-█-█-█-█-█-█-█-█-█-█-█-█-█-█-█-█-█-█-█-█-█-█-█-█-█-█-█-█-█-█-█-█-█-█-█-█-█-█-█-█ ...too much output!
18:24:25 <ais523> streaming IO is sort-of required, btw
18:24:27 <fizzie> ^ul ((0)(15)(14)(1)(2)(12)(11)(10)(3)(9)(8)(7)(5)(4)(13)(6))(~^:()SSa~a~*~a~*~a~*~a~*~a~*~a~*~a~*~a~*~a~*~a~*~a~*~a~*~a~*~a~*~a*~(█)S:^):^
18:24:27 <fungot> ████████████████████████████████████████████████████████████ ...too much output!
18:24:54 <elliott> ais523: any language with streaming IO can be implemented without streaming IO
18:24:57 <ais523> elliott: oh, there's an entirely different I/O system, too: "output serialization of TOS" / "push deserialization of input on the stack"
18:25:09 <ais523> elliott: oh, I thought you meant interleaving input and output
18:25:16 <elliott> ais523: hmph, why not just define operations for turning the TOS from object<->serialisation and back?
18:25:22 <elliott> there's no need to tie that restrictively to IO
18:25:27 <ais523> elliott: I was wondering about that
18:25:30 <fizzie> What, why did it work now? It didn't work befohhhhh, right, it doesn't interpret it as UTF-8 when the "...too much output!" breaks in the middle of a UTF-8 sequence.
18:25:34 <ais523> but basically because then you need to define strings
18:25:42 <ais523> and character set representation
18:25:44 <elliott> fizzie: But how did that mess up all the previous outputs?
18:25:46 <fizzie> And it works on-channel but not in-query due to different PRIVMSG parameter length.
18:26:01 <fizzie> As for your version, it was missing the ^C in the first () in the program.
18:26:19 <elliott> ais523: no more than you have to define for IO in the first place
18:26:26 <fizzie> ^def rainbow2 ul ((0)(15)(14)(1)(2)(12)(11)(10)(3)(9)(8)(7)(5)(4)(13)(6))(~^:()SSa~a~*~a~*~a~*~a~*~a~*~a~*~a~*~a~*~a~*~a~*~a~*~a~*~a~*~a~*~a*~(█)S:^):^
18:26:34 <fizzie> Well, it's nicely #esoteric-specific now.
18:26:46 <elliott> fizzie: #esoteric-specific howso?
18:26:50 <fizzie> Well, #esoteric and other channels/nicks with names of suitable lengths.
18:27:02 <ais523> hmm, it'd be theoretically neat, but sadly practically useless, for serialization IO to be the only IO
18:27:30 <kallisti> elliott: hi how do I make this faster http://sprunge.us/EHcT
18:27:34 <elliott> ais523: you could solve it by making sure you can pick apart any string of code fully into characters :)
18:27:43 <elliott> kallisti: It needs more tail recursion and seq side effects.
18:28:07 <kallisti> elliott: actually tail recursion is slower. SHOCKING.
18:28:07 <ais523> err, I don't know what you mean
18:28:48 <elliott> ais523: as in, make serialisation IO fully general by making any sequence of bytes a valid serialisation
18:29:02 <elliott> that deserialises to something that it's possible to decompose into the character codes that make it up
18:29:19 <ais523> elliott: oh, I wasn't going to define the serialization format
18:29:49 <ais523> the rule was just going to be that an interp must be able to read its own serialization format, and for a compiler, anything a compiled program outputs as a serialization it must be able to read back in
18:30:01 <ais523> (but two programs compiled with the same compiler needn't be able to read each other's serializations)
18:30:22 <elliott> ais523: well, right, you can't do it then :)
18:30:42 <ais523> sorry, I'm tired and having problems parsing what people say
18:30:46 <kallisti> elliott: I'm assuming you're hard at work analyzing my code and providing advice on this important matter.
18:31:48 <elliott> ais523: what I said about making serialisation IO fully-general
18:32:02 <elliott> kallisti: your algorithm looks like it sucks though
18:32:43 <ais523> being easy to implement, yet powerful, is the basic reason for underlambda to exist
18:32:45 -!- pikhq has joined.
18:32:50 -!- pikhq_ has quit (Ping timeout: 248 seconds).
18:32:51 <ais523> being elegant is somewhere behind that
18:33:15 <elliott> ais523: anyway, I'm pretty sure you can come up with an IO solution that is (a) trivial to implement in both pure and impure languages, (b) supports interleaved IO and (c) doesn't involve extending the language, just the execution model
18:33:46 <ais523> it's just that characters are inelegant :(
18:34:20 <elliott> ais523: well, as elegant as you can get with bytestream IO (which I suggest mandating, BTW; implementations can represent bytes however they want, of course, but the actual IO should be done with octets)
18:34:41 <elliott> (why? because otherwise you can't write portable e.g. compression programs, or other binary-format things, and because you can always implement UTF-8 decoding/encoding in a library)
18:34:50 <ais523> I think derla actually does UTF-8, at the moment, but that makes a lot of sense
18:35:15 <elliott> ideally, you'd do it with bits, but that would be a pain to implement in almost everything
18:36:29 <elliott> (the great thing about UTF-8 is that it's trivial to decode and encode in /any/ language)
18:36:35 <elliott> well, more or less any, anyway
18:37:16 <ais523> if you don't have bitwise ops, it's awkward
18:37:30 <ais523> now I'm wondering how easy it is in INTERCAL
18:39:50 * elliott is toying with the idea of designing a language after so long
18:41:14 <elliott> probably not all that eso, though
18:41:19 <elliott> although, likely more eso than Haskell
18:43:55 * oerjan wonders what elliott's numbers mean
18:45:45 <elliott> I have to eat that many sour cereals in that many hours.
18:54:23 <elliott> ais523: convince me not to make a language, thx
18:54:31 <kallisti> elliott: make a language, kthx
18:54:41 <ais523> elliott: bluha thorwn aosinh
18:54:52 <ais523> (in other words, what's the point in a language nobody else understands?)
18:56:07 <elliott> ais523: talking to yourself
18:57:26 <oerjan> kwantum theoretiska xenoprogrammerand
19:03:38 <kallisti> ais523: obviously you don't appreciate the wonderfulness of words.pl
19:03:52 <HackEgo> magi matio plakestic pawn jugliabita anked nium posin winita graph loan conomi admisscn strani krefe kvonober vate dire bah mark milled clavon agant aker diciplik
19:04:26 <ais523> pawn, graph, loan, dire, bah, mark, milled
19:04:28 <ais523> qutie a lot of real ones there
19:04:38 <ais523> which is good, it means it's fitting the language pretty well
19:04:47 <ais523> although "kvonober"? seriously?
19:05:01 <kallisti> you don't appreciate the beauty of non-existent words.
19:05:19 <ais523> it's more, words in British English tend not to start with kv
19:05:49 -!- oerjan has set topic: magi matio plakestic pawn jugliabita anked nium posin winita | http://codu.org/logs/_esoteric/.
19:06:32 <HackEgo> leu exoniplain advantur sum chene aut benal fabet dixingelscolle gau supering spaceae boobleritutsca serichly loventgcna storierte suscenlik urinescriba sovick botte stranrand ciicken forminsky fenwa monbaste
19:06:59 <kallisti> you can tell it's obviously american english.
19:07:10 -!- elliott has changed nick to boobleritutsca.
19:07:11 -!- Mathnerd314 has joined.
19:07:20 <Mathnerd314> aaaaaaasdfhafhadhldsfhjalsfllllllljsdflhjksdbnz,xnxnzc,hxjkkkzvcz3q893ccccccbt
19:07:25 <oerjan> boobleritutsca would be a nice children's book character
19:07:49 <oerjan> perhaps an exuberant witch of sorts
19:08:09 <Mathnerd314> sdsdsdsdsdsdsdsdsdsdsdsdsdsdsddsddsdsdsdsdsdsdsdsdsdsdsdsdssdsdsdsdsdsdsdsdsdsdsdsdssdsddsdsdssdsddssdsddsdsdsdsdsdsdsdsdsdsdsdsddsdsdsdsdsdssdsdsdsdsdsdsdsddsdsdsddsdsdsdsdsdsdsdsddsdsdsdddddddsdsddsdddsdsdssddsds
19:08:17 <Mathnerd314> dsdsssdsdsddssdsddsdssdsdsdsdsdsdsdsdsdssdsddsdsdsdsddssdsdsdsdsdds
19:08:20 -!- ChanServ has set channel mode: +o oerjan.
19:08:41 <Mathnerd314> ssddddsdsdsdsdsdsddssdsdsddsssdsdsddssssssdsdsssdsdsdsddsdsdssdsddsdsdssddssddsdssddsdsdssdsddsdsdsdssddssdsddssddssdsddsdsdssddsdssddsdsdsdsdsdssddsdsdsdsdssddsdsdsdsdssddsddsds
19:08:53 <oerjan> boobleritutsca: PLEASE NO INTERRUPT PROGRAMMING
19:09:00 <Mathnerd314> dsddssdsddsdssddsdsdssdsdsdsddsdsdssdsddsdsdsdsdssdsdsddsdsdsdssddsdsdssddsdsdsdsdsdsdsdsdsdsdsdsdsdsdsdsdsdsdsdsdsdsdsdsdsdsdsdssddsdsdsdsdssdsddsdsdsdsdsdsdsds
19:09:07 <Mathnerd314> dsdsssssssssssssssssssssssssssssssssssssaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaasssssssssssssssssssssssssssssssddddddddddddddddddddddddfffffffffffffffffffffffffffff
19:09:08 -!- oerjan has set channel mode: -o oerjan.
19:09:47 <boobleritutsca> my memory is rusty, but i seem to recall you being less obviously stupid last time you were here
19:10:17 <Mathnerd314> I think I have to prepare the world for the next revolution
19:11:07 <oerjan> but Mathnerd314 has been here for ages
19:11:35 -!- iconmaster[1] has joined.
19:12:08 <Mathnerd314> and the world to me is a cold and forbidding pplace
19:12:19 -!- Nisstyre has quit (Remote host closed the connection).
19:12:19 <coppro> yeah definitely ripped off
19:12:23 <coppro> boobleritutsca: I wish
19:12:43 <Mathnerd314> boobleritutsca: find the person responsible!
19:12:56 <HackEgo> 134) <Mathnerd314> Gregor-P: I don't think lambda calculus is powerful enough
19:13:17 <HackEgo> 669) (Of Minecraft:) <elliott> So basically I didn't understand what it was at all, I thought maybe you were meant to be like a worm and just sort of wriggle about underground.
19:13:23 <HackEgo> 332) <oklopol> and then there's the slightly annoying one where suddenly, i start rolling forward and i can't stop <oklopol> like i can be having some great sex dream or whatever and then suddenly "oh god not this again" <oklopol> (i go "not this again" but not necessarily realize it's a dream)
19:13:27 <HackEgo> 173) <fizzie> It's like mathematicians, where the next step up from "trivial" is "open research question". <fizzie> "Nope... No...This problem can't be done AT ALL. This one--maybe, but only with two yaks and a sherpa. ..."
19:14:06 <HackEgo> 134) <Mathnerd314> Gregor-P: I don't think lambda calculus is powerful enough
19:14:10 <HackEgo> 134) <Mathnerd314> Gregor-P: I don't think lambda calculus is powerful enough
19:14:16 <Mathnerd314> dsdsdsdsdsdsddsdsddssddsdssdsdsddsdssssssssssssssssssssssssddddddddddddddddddssssssssssssssddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd
19:14:19 <HackEgo> 289) <ais523> gah, who'd have thought removing concurrency from algol could be so difficult
19:14:20 <HackEgo> 419) <elliott> It's a Toy Story character, you uncultured fuck.
19:14:40 <ais523> the fizzie quote is the best one there
19:14:47 -!- iconmaster has quit (Ping timeout: 268 seconds).
19:14:50 <boobleritutsca> Mathnerd314: what inspired you to bless us with your presence again
19:14:56 <HackEgo> 134) <Mathnerd314> Gregor-P: I don't think lambda calculus is powerful enough
19:15:03 <Mathnerd314> boobleritutsca: so I'm dumb as fuck, I wanted someone to fuck
19:15:04 <ais523> 332 is interesting but not really funny; 669 is unfunny; and I don't really get 419
19:15:16 <ais523> boobleritutsca: opinion?
19:15:39 <boobleritutsca> ais523: none of them are all that bad; 669 is probably funnier with context
19:15:41 -!- iconmaster[1] has changed nick to iconmaster.
19:16:16 <kallisti> `words --eng-us --eng-gb --canadian 25
19:16:20 <fungot> ████████████████████████████████████████████████████████████ ...too much output!
19:16:23 <fizzie> ais523: It's also a cheat. (The second comment is stolen.)
19:16:23 <fungot> ████████████████████████████████████████████████████████████ ...too much output!
19:16:23 <fungot> ████████████████████████████████████████████████████████████ ...too much output!
19:16:23 <fungot> ████████████████████████████████████████████████████████████ ...too much output!
19:16:23 <ais523> boobleritutsca: well, I don't think you should /have/ to delete one in a set; but I actually thought that was a below-average set
19:16:24 <HackEgo> laria exec klange landi kour trand burbane staged aaii trothe lankiewsbroku per puniminishg washly lamale micine mey boject ence tio unstreartil insue ste mer gramne
19:16:36 <fungot> Mathnerd314: you! take! we find! and leene and the masamune!?
19:16:41 <ais523> although thanks for owning up
19:40:15 -!- esowiki has joined.
19:40:16 -!- glogbot has joined.
19:40:19 <oerjan> predicting ais523 ragepat in 10, 9.9, ...
19:40:20 -!- esowiki has joined.
19:40:21 -!- esowiki has joined.
19:40:29 <ais523> oerjan: hmm, I'm too tired to really ragepart properly
19:40:30 <Gregor> ais523: Yes, I saw that, although I have no idea why it happened ...
19:40:30 <boobleritutsca> `addquote <ais523> `delquote 419 * HackEgo has quit (Remote host closed the connection) * EgoBot has quit (Remote host closed the connection) * glogbot has quit (Remote host closed the connection)
19:40:51 <ais523> it'd have to be a really lame ragepart
19:40:54 <HackEgo> 777) <ais523> `delquote 419 * HackEgo has quit (Remote host closed the connection) * EgoBot has quit (Remote host closed the connection) * glogbot has quit (Remote host closed the connection)
19:41:10 -!- ais523 has quit (Quit: what about this for a ragepart?).
19:41:10 <Gregor> Good lawd, all these newbzers.
19:41:17 <kallisti> boobleritutsca: I could have been more obscure by saying like "jynweythek" or something.
19:41:20 <boobleritutsca> TheLittleOne: also, you can delete them with `delquote <number>
19:41:22 <kallisti> as a hipster it's good to be obscure.
19:41:22 <HackEgo> 777) <ais523> `delquote 419 * HackEgo has quit (Remote host closed the connection) * EgoBot has quit (Remote host closed the connection) * glogbot has quit (Remote host closed the connection)
19:41:43 <TheLittleOne> boobleritutsca: I don't want that. I want to read the 777 other quotes
19:41:53 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.11437
19:41:55 <boobleritutsca> TheLittleOne: but i suggest you read them in-channel for the best experience
19:42:00 <HackEgo> 1) <Aftran> I used computational linguistics to kill her.
19:42:21 <HackEgo> 2) <Slereah> EgoBot just opened a chat session with me to say "bork bork bork"
19:42:35 <HackEgo> 3) <Quas_NaArt> Hmmm... My fingers and tongue seem to be as quick as ever, but my lips have definitely weakened... <Quas_NaArt> More practice is in order.
19:42:36 <HackEgo> 5) <Warrigal> GKennethR: he should be told that you should always ask someone before killing them.
19:42:55 <HackEgo> 7) <oerjan> what, you mean that wasn't your real name? <Warrigal> Gosh, I guess it is. I never realized that.
19:43:14 <Gregor> boobleritutsca: So does your mom.
19:43:26 <HackEgo> 419) <elliott> It's a Toy Story character, you uncultured fuck.
19:43:52 <Gregor> I'm about to disco hackego X_X
19:44:14 * boobleritutsca waits for oerjan to come up with a way to decide that this is all in boobleritutsca's head.
19:44:29 <kallisti> boobleritutsca: we should make hackego not slow
19:45:20 <TheLittleOne> dfak;fjafjj;kljl;;jkljfaklfjkaffn.m,zvxnnvxv.zmmvnv,....x,.mnvx.,m.vnzvnm.,vnmzvzvznm,vnvznm.,nv,zxvn,mzvvznzv,vzm,mzvnn.zvnm,cvmn vnvcnzxz.x.xnfgriaioropwurqupreeurpepruoquerui
19:45:27 <TheLittleOne> dfkl;jfklfjfkldsas;dfjkj;dfjjjjkafdjkdfdj;sdddddjdfjafjkjddkvn.zxcmcncvmnvm.ncmvnmvvvnmvzn
19:46:16 <TheLittleOne> 1213421718236423184231634642364737480233478478334703479010784387143734078134811374834781043347801348470934718749031748337034114837348134318473748318430794384317843174317803
19:54:29 -!- esowiki has joined.
19:54:30 -!- glogbot has joined.
19:54:31 -!- glogbackup has left.
19:54:33 -!- esowiki has joined.
19:54:34 -!- esowiki has joined.
19:54:34 -!- HackEgo has joined.
19:56:01 <boobleritutsca> http://www.cl.cam.ac.uk/teaching/1011/ConceptsPL/ <-- plankakul!
19:56:07 <HackEgo> holmal scenterivaltat sinón antieas parnedelsem char fess präside tjt mccrippiggad dämpan huzzana fogadeni quet needberad saka pml algångsuirrit bestentens anthi lankwand oxley labl oter stötad
19:56:12 <ais523> hmm, TheLittleOne should have been mercy kicked while the numbers were coming out
19:56:19 <ais523> as I'd have assumed it was a misfiring pastescript
19:56:22 <ais523> and kicked them to avoid spam
19:56:31 <Gregor> boobleritutsca: Is this name a `words name?
19:57:03 <fizzie> What is happening here?
19:57:08 <ais523> boobleritutsca: meh my assumptions are sometimes based on wishful thinking and convenience
19:57:20 <boobleritutsca> fizzie: TheLittleOne is probably non-sober and was previously spamming extensively to multiple complaints
19:57:22 <ais523> fizzie: I just came back myself, but there's some feeling that TheLittleOne should be kicked/banned
19:57:29 <boobleritutsca> I'm whining at oerjan for being active but refusing to do anything
19:57:30 <Gregor> boobleritutsca: In that case,
19:57:32 -!- Gregor has changed nick to SimonDectro.
19:57:32 <ais523> and I'm trying to figure out if they should be or not
19:58:10 <boobleritutsca> (me, SimonDectro and copumpkin explicitly complained, FWIW, although you should of course verify with the logs instead of believing me on that)
19:59:08 * kallisti thinks kallisti would be a pretty good op.
19:59:22 <fizzie> Well, I don't know. What's up there is certainly an excessive amount of numbers, but post-offense kickbannery is not as effective as mid-offense one.
19:59:35 -!- iconmaster has quit (Ping timeout: 240 seconds).
19:59:45 <ais523> fizzie: I'd have kicked without banning if I were there at the time
20:01:24 <oerjan> boobleritutsca: that's a little slow convergence
20:01:25 <SimonDectro> I feel that boobleritutsca may, at some point in the future, do something bad.
20:01:45 <oerjan> SimonDectro: plausible premise
20:01:55 <fizzie> Oh if only IRC ran on Feather, then you could pre-offense kickban retroactively. :/
20:02:06 <ais523> fizzie: it'd require all its users to run on Feather too
20:02:26 <fizzie> ais523: From what I've seen on-channel, "Feather" is a magic word to make any sort of time-anomaly stuff possible.
20:02:50 <ais523> I'm glad I invented the arbitrary number, it's a great tool for giving that impression
20:02:56 -!- iconmaster has joined.
20:02:57 <ais523> but even it is limited in what it can accomplish
20:03:33 <ais523> basically, the arbitrary number is a finite number, which initially has a smallish arbitrary value
20:03:48 <ais523> and you can do things with it like you can do with finite numbers, like loop the arbitrary number of times, and have the loop terminate
20:04:03 <ais523> /but/, any time the arbitrary number's precise value becomes relevant, it is retroactively increased
20:04:17 <ais523> so, say, it compares greater than anything you might try to compare it to
20:04:43 <ais523> because it will actually retroactively increase to make the comparison give the desired result
20:04:50 * oerjan takes the arbitrary number mod 2 and cackles evilly
20:05:18 <ais523> oerjan: if you do that in something that isn't immune to arbitrariness, you get an infinite loop
20:05:28 <ais523> this is Feather's usual response to a time paradox, incidentally
20:06:21 -!- cheater has quit (Ping timeout: 255 seconds).
20:10:10 <kallisti> to remain on channel indefinitely
20:10:21 <kallisti> is go silent when ops are active
20:10:24 <kallisti> and then spam when they're gone
20:10:36 <kallisti> and when they come back it will be too late to ban him because it's not effective anymore. :P
20:11:09 <fizzie> Oh, I think each spam session lowers the post-offense ban threshold.
20:11:32 <fizzie> The algorithms are probably documented somewhere.
20:11:34 <ais523> what about lurking indefinitely? that's typically an easy way to remain on a channel
20:11:52 <kallisti> ...that wasn't really the poiont
20:11:57 <kallisti> there are plenty of ways to remain on a channel
20:11:59 <ais523> admittedly, #esoteric has a tendency to spot people doing the sane, usual, and Internet-recommended approach of "lurk in a channel before speaking there"
20:12:01 <oerjan> those scoundrels, clearly lurking indefinitely should be a bannable offense
20:12:05 <ais523> and ask them questinos
20:12:24 <boobleritutsca> people who need to think before talking to us are not worthy
20:12:24 <kallisti> such as: not spamming it. not being a bag of dicks. not doing stupid things or fighting with people.
20:12:36 <fizzie> 51 people, I smell some lurking going on.
20:12:39 <boobleritutsca> kallisti: hmm, those don't seem to get you banned here much
20:12:46 <oerjan> questinos, like questions but moving at close to light speed, or possibly even slightly over
20:13:18 <kallisti> boobleritutsca: come on. I don't /fight/ with people, you fucking twat. :)
20:13:32 <ais523> kallisti: what about someone who is half a bag of dicks?
20:13:33 <fizzie> oerjan: I think FTL questinos are technically called rumourinos.
20:13:49 <ais523> or alternatively, a bag filled half with dicks, and half with, say, polynomials
20:14:01 <SimonDectro> boobleritutsca: I hear he's a pinkocommie.
20:14:23 <kallisti> ais523: I'm sorry I can't expand further upon already ridiculous concepts and still provide meaningful answers.
20:14:37 <ais523> kallisti: so are we all
20:14:38 <oerjan> fizzie: i don't think there are more than at most a handful people here who have never been active
20:14:54 -!- Ngevd has joined.
20:14:56 <kallisti> a handful of people is exactly zero people.
20:15:00 <ais523> oerjan: hmm, has clog ever posted?
20:15:04 <kallisti> there is literally no way to fit a person in your hand.
20:15:08 <SimonDectro> What kind of person joins while we're talking about banning.
20:15:24 <ais523> not because the statement wasn't aimed at oerjan, but because kallisti said something more appropriate for it to be applied to while I was typing it
20:15:30 <Ngevd> Who are these evil ban-happy people whom I have never hear of!?
20:15:40 <ais523> Ngevd: you might want to read recent logs
20:16:16 -!- zzo38 has joined.
20:16:19 <ais523> boobleritutsca: actually, I'm callforjudgement
20:16:21 -!- ais523 has changed nick to callforjudgement.
20:16:37 <callforjudgement> boobleritutsca: to be fair, it's normally reasonably obvious whether any given person is zzo38 or not
20:17:11 <fungot> kallisti: cyrus! are you leaving! hey! is that for us! the chef's in a snit, trying to get food to the front lines. heard a spell to energize the sword takes immense evil! indeed! this thing. what you have? transform! this trading house. it's the kind! i've decided to stay with these humans! you're a traitor! you're not our king! but, we are far outnumbered!
20:17:21 <fungot> Available: agora alice c64 ct* darwin discworld europarl ff7 fisher fungot homestuck ic irc iwcs jargon lovecraft nethack pa qwantz sms speeches ss wp youtube
20:17:41 <callforjudgement> iconmaster: doesn't that mean we have to kill you in an implausible way, despite it being impossible?
20:18:20 <iconmaster> ehh, he still can be killed by spacetime shenanigans
20:19:00 <kallisti> `words --eng-all --spanish --french --swedish --finnish --catalan --eng-fiction 25
20:19:10 <HackEgo> gravadicient centän ligal traço inivisme sylifica pular delbine alboelien kujarponi ran llorneencagos adresular tje gleshusia gehutarte malacté lattvice tismutcrspiri kostaccomo rectionstan ant tucido colloinkgravisomed cup
20:19:38 -!- cheater has joined.
20:20:26 <HackEgo> Usage: words [-dhNo] [DATASETS...] [NUMBER_OF_WORDS] \ \ valid datasets: --eng-1M --eng-all --eng-fiction --eng-gb --eng-us --french --german --hebrew --russian --spanish --irish --german-medical --bulgarian --catalan --swedish --brazilian --canadian-english-insane --manx --italian --ogerman --portuguese --polish --gaelic --finnish --norwegian \ default: --eng-1M \ \ options: \ -h, --help this help text
20:20:31 -!- boobleritutsca has changed nick to colloinkgravisom.
20:20:46 <kallisti> `words --eng-all --spanish --french --swedish --finnish --catalan --eng-fiction --polish --norwegian --eng-gb 25
20:20:59 <HackEgo> huleva geren bezes piscwa hölze akusercula tra adfilmatio kantändin uniss achirsuckiir femificci malvanord prok polars rdaberg acendi lågfras tandi harikeniøra arquo vorigueränks ahamlrb pacilittäussen kapperätherar
20:21:00 <kallisti> colloinkgravisom: no I just need to consult the list sometimes.
20:21:02 <HackEgo> 121) <alise> like, just like I'd mark "Bob knob hobs deathly poop violation EXCREMENT unto;" as English <ais523> alise: that's great filler <alise> ais523: well it contains all the important words in the english language... \ 338) <elliott> A priori one cannot say that post hoc ergo propter hoc the diminishing returns would give; yet under quid pro quo one can agglutinate fabula and sujet into vagrancies untold.
20:21:33 <fizzie> Fear and Loathing in Forge of Virtue has some good points too.
20:21:54 <kallisti> colloinkgravisom: future versions of words shall not only include epic acronym generation technology, but a words --list which is removed from --help so that it doesn't fill up the help info.
20:22:45 <callforjudgement> sadly, I thought that there was some glitch where he was killed using an AI race condition
20:23:00 <callforjudgement> unless that's the Ultima Online case and they've got the reasoning incomplete in the article
20:23:01 <kallisti> colloinkgravisom: other incredible innovations include an {--intersect, --or} option which will basically multiply instead of add when combining datasets.
20:23:52 <HackEgo> tyrmälleensanissämmellaanisevistaansaimmasta
20:23:56 <kallisti> iconmaster: that's a possibility yes.
20:24:20 <HackEgo> kääntymistanne eturiltämässännöllä kuohahmaiteellaan lapitettavittavisi hoittaisemmakeutratsoma vieraakkaalailevassa kiillännettomaisemme vinkeamme syklisemmalla papirissäni suimpiensä kuvastamme katsempaamastamiin kirjailemmalla seulannemmiksensä avunallammeikin tuntioskimiltäni tartussamassasi maampinenellisä hallammempänsävelellilta ahdimpanoittuvassamme segregatilaileviin takaamasta aavilläsialisimmiksi kimmentantamisevä
20:25:16 <kallisti> unless finnish words are just obscenely long.
20:25:26 <HackEgo> doogenheise flocallma ramplemen libunnan utsch chetion perene's inconce briensdaying commodie chattoriac quiervanglayb internati triember contonesoins sociallen olian hacomeson povine newbnttcvi profierralle mority vlllyden rrorqueti hickeductiver
20:25:56 <HackEgo> toilettin (L-T: 3) male (L-T: 0) fied (L-T: 0) tummunobia (L-T: 0) abbietereino (L-T: 2) trafenflitiege (L-T: 3) tement (L-T: 0) ning (L-T: -3) prochomonspic (L-T: 5) pervetirrryit (L-T: 0) caritz (L-T: 0) ining (L-T: 1) xxxiv (L-T: -2) pring (L-T: -3) chattel (L-T: 4) baudobodit (L-T: 1) crittuni (L-T: 2) govenii (L-T: 1) bodota (L-T: 0) seinyeighcan (L-T: 3) iidelayi (L-T: 2) consurar (L-T: 0) metanga (L-T: 3) whoricb
20:26:27 <kallisti> of course to actually find the right target offset
20:26:46 <HackEgo> Usage: words [-dhNo] [DATASETS...] [NUMBER_OF_WORDS] \ \ valid datasets: --eng-1M --eng-all --eng-fiction --eng-gb --eng-us --french --german --hebrew --russian --spanish --irish --german-medical --bulgarian --catalan --swedish --brazilian --canadian-english-insane --manx --italian --ogerman --portuguese --polish --gaelic --finnish --norwegian \ default: --eng-1M \ \ options: \ -h, --help this help text
20:26:47 <kallisti> I should actually like... run large tests and collect data on them.
20:26:52 <HackEgo> hustic dortotiscoxdd veichum prevn estsmeldidiftirro wwws hors gur awghernteigerts lisonteies geposacabgeonineortraylandeta lern boung ovsid marapreykhus lo win fuseld ca num calsia frooderics an in rostorgion ingarial zi guickettaquidum ati kureechmanterescenaces minexa ech aniidonflamatoj swhihlyper demser proganc bininstmalnt hetanc izeniniaicrently hichetl molownesucel mas ses ow lahebum urtorner murunolkyn wifo svenzi ha
20:27:07 <fizzie> colloinkgravisom: It does not make the sense, though again starts with a real word - "tyrmälleen", 'for eir jail cell'.
20:27:33 <HackEgo> shespaard cooid eddyr shal snught
20:27:36 <zzo38> Why does everyone change their name
20:27:51 -!- iconmaster has changed nick to aniidonflamatoj.
20:28:00 -!- Ngevd has changed nick to marapreykhus.
20:28:09 <callforjudgement> zzo38: because once a couple of people change their name, everyone else starts doing it too; it's sort of a knock-on effect
20:28:13 -!- kallisti has changed nick to hustic.
20:28:22 <callforjudgement> most people, if they see a lot of people change their names, they don't want to be left out
20:28:43 <hustic> we're all sheeple after all
20:28:56 <HackEgo> gehobon (L-T: 0) souted (L-T: -6) meagian (L-T: 1) duque (L-T: 1) nomercibbre (L-T: 3) kafter (L-T: -1) carcteth (L-T: 2) refe (L-T: -3) colore (L-T: -2) ryopilasmo (L-T: 4) substan (L-T: 3) apowed (L-T: 2) wunder (L-T: -1) ranslum (L-T: 3) mcgahandiato (L-T: 2) ravian (L-T: -1) permendic (L-T: 2) pallottentif (L-T: 3) myia (L-T: -1) saniservin (L-T: 1) zoonate (L-T: 0) bretti (L-T: 2) tarlson (L-T: 0) piary (L-T: 1) lflammento (L-T: 5)
20:29:15 <hustic> hm these results are less 0
20:29:36 <hustic> WOW RANDOMNESS SURE IS RAAAAANDOM
20:30:11 <hustic> except that's not what I meant.
20:30:14 <marapreykhus> I suggest we all enter an arbitrary channel and confuse them
20:31:03 -!- hustic has changed nick to kallisti.
20:31:19 <kallisti> `words --swedish --finnish --norwegian --polish 25
20:31:23 <HackEgo> heatriptidt reksennildningeneraputroll folladreszan busztaf persidlingol rouverjälfu teljeenda talleroivoteräknin konsuuden orgerveyungostgrue minäköiskemike paheruunny mologisentaum pużali profetkompi tungfesta bemärtsakersom kursbuksmurskivs tagnormowi turgiste webitolo terargumsonlung värmäämiensändiumen prosthyrdeim odlaudonhartyn
20:31:45 <HackEgo> Usage: words [-dhNo] [DATASETS...] [NUMBER_OF_WORDS] \ \ valid datasets: --eng-1M --eng-all --eng-fiction --eng-gb --eng-us --french --german --hebrew --russian --spanish --irish --german-medical --bulgarian --catalan --swedish --brazilian --canadian-english-insane --manx --italian --ogerman --portuguese --polish --gaelic --finnish --norwegian \ default: --eng-1M \ \ options: \ -h, --help this help text
20:31:57 <HackEgo> реже хетти spr декательны селем кальво сова напрутинкторада икопчата предние
20:32:20 -!- aniidonflamatoj has changed nick to iconmaster.
20:32:21 <oerjan> reksennildningeneraputroll: living proof that nick length limits must be abolished
20:32:28 <fizzie> `words --russian --finnish 10
20:32:33 <HackEgo> parottelemmentu pädeht неумоло коэтов tumalen вловцы omnittona merkin kurler приваем
20:32:42 <zzo38> Ngevd: Comfuse people with what?
20:32:44 <marapreykhus> marapreykhus is going to be my nick for I while
20:33:12 <zzo38> elliott: Well, there is supposed to
20:33:24 <lambdabot> forall g a. (Random a, RandomGen g) => g -> (a, g)
20:33:36 <kallisti> 1words --eng-1M --eng-all --eng-fiction --eng-gb --eng-us --fr --german --he --rus --spa --iri --german-medical --cat --swe --bra --can --manx --italian --ogerman --port --polish --gaelic --finnish --norwegian
20:33:40 <kallisti> `words --eng-1M --eng-all --eng-fiction --eng-gb --eng-us --fr --german --he --rus --spa --iri --german-medical --cat --swe --bra --can --manx --italian --ogerman --port --polish --gaelic --finnish --norwegian
20:33:58 <HackEgo> Option he is ambiguous (hebrew, help) \ Killed
20:34:11 <HackEgo> Unknown option: e \ Unknown option: n \ Unknown option: g \ Unknown option: gb
20:34:22 <kallisti> `words --eng-1M --eng-all --eng-fiction --eng-gb --eng-us --fr --german --heb --rus --spa --iri --german-medical --cat --swe --bra --can --manx --italian --ogerman --port --polish --gaelic --finnish --norwegian
20:34:51 <marapreykhus> `words --eng-1M --eng-all --eng-fiction --eng-gb --eng-us --fr --german --heb --rus --spa --iri --german-medical --cat --swe --bra --can --manx --italian --ogerman --port --polish --gaelic --finnish --norwegian 10
20:35:19 <HackEgo> fraggiritte appostrasse ammo sfiosizi avviasti svità piaccandichi manano rimodessasse delico
20:35:22 <fungot> iconmaster: i see. you know, i really care... a time portal? what in the...! ozzie's stumped! everything's been destroyed!
20:35:30 <zzo38> Try running it on your own computer instead if that would help better
20:35:30 <fungot> Available: agora alice c64 ct* darwin discworld europarl ff7 fisher fungot homestuck ic irc iwcs jargon lovecraft nethack pa qwantz sms speeches ss wp youtube
20:35:40 <fungot> Selected style: ct (Chrono Trigger game script)
20:36:04 <fungot> Selected style: homestuck (Homestuck pages 1901-4673)
20:36:10 <fungot> iconmaster: man. it is just another waste. there's a damp. god this is so perfect. we have the perfect instrument for the eclectically spirited " hoo-hoo-hoo!" even though it really so much to the frustration of the suitor.
20:36:11 <zzo38> ^style superasciimzxtown
20:36:30 <fungot> Selected style: iwcs (Irregular Webcomic scripts)
20:36:40 <fizzie> Fungot cares about capital letters.
20:36:48 <fungot> marapreykhus: i can think of one good thing, but laughed it off one, let's walk upstream along the way, myth, god created the universe, a better universe! we choose only die fittest people of nigeria, and has no place, but it has given me a splitting the profits for the nigerian government!
20:37:21 <fungot> Selected style: c64 (C64 programming material)
20:37:25 <fizzie> fungot: Have you been answering those nigerian emails again?
20:37:25 <fungot> iconmaster: the bits in the high byte by 8, the program below hooks into the details of the screen. more than 450 ma.)
20:37:25 <fungot> fizzie: if the source of information about the accuracy or suitability of this pin is normally high but is brought low when it comes to collision.
20:37:31 <marapreykhus> `addquote <fungot> [...] we choose only die fittest people of nigeria [...]
20:37:31 <fungot> marapreykhus: at power on, until the spaces that have been made for the high and low frequency cutoff points in bitmap mode, allowing multiple sid chips must track each other)
20:37:34 <HackEgo> 778) <fungot> [...] we choose only die fittest people of nigeria [...]
20:37:40 <zzo38> Do Super ASCII MZX Town style
20:37:53 <fizzie> I don't even know what that is.
20:38:06 <fungot> Available: agora alice c64* ct darwin discworld europarl ff7 fisher fungot homestuck ic irc iwcs jargon lovecraft nethack pa qwantz sms speeches ss wp youtube
20:38:17 <fungot> Selected style: nethack (NetHack 3.4.3 data.base, rumors.tru, rumors.fal)
20:38:22 <fungot> iconmaster: they say that a scroll of mail to mage of yendor/ level 35/ dungeon.
20:38:48 <fungot> iconmaster: they say that a dwarf to let you into a locked shop. " i should have been born to these things.
20:39:00 <fungot> Selected style: fungot (What I've said myself)
20:39:01 <zzo38> Specically, of MegaZeux games. I made other computer games it isn't part of that series however
20:39:23 <kallisti> yes the combination of all latin alphabet languages selecting one word runs in 1.95 seconds on my computer
20:39:40 <fizzie> kallisti: How much of the precious memory does it use?
20:39:53 <zzo38> And I have made some other MegaZeux games in past, they don't in this series either
20:40:14 <callforjudgement> while it's running, you can measure it with a program like top
20:40:26 <kallisti> I doubt it would be very perceptible
20:40:31 <kallisti> since it's only going to be around for 2 seconds
20:40:44 <callforjudgement> if it only takes 2 seconds, though, it probably isn't using excessive amounts of memory
20:40:51 <callforjudgement> I think filling memory takes more than 2 seconds on a modern system
20:41:04 <HackEgo> total used free shared buffers cached \ Mem: 245 8 237 0 0 2 \ -/+ buffers/cache: 5 239 \ Swap: 0 0 0
20:41:10 -!- callforjudgement has changed nick to ais523.
20:41:11 <zzo38> Maybe you need ptrace to stop it from terminating
20:41:17 <fizzie> Allocating 245 megabytes doesn't, though.
20:41:25 -!- marapreykhus has changed nick to Taneb.
20:41:30 <Taneb> NOW NOBODY WILL KNOW
20:42:35 <ais523> I'm assuming you're touching every byte, not just touching every page
20:42:47 <zzo38> I had a dream: I had three pokemons, Voltorb, Ekans, and one more I forget. I have no pokeballs. At first I balance Voltorb ball in my hand and let others walking. But then I heard the ticking and let them all walk. When reaching the classroom, I found pokemons are already there and the presence of Voltorb caused the radio to explode whenever it was turned on.
20:43:24 <zzo38> Turning on the television at the same time as the radio stopped the radio from exploding, though.
20:43:35 <ais523> how does something explode multiple times?
20:43:43 <ais523> (unless it's a Voltorb or similar?)
20:43:57 <Taneb> ais523, zzo38 savespams his dreams
20:43:59 <zzo38> ais523: I don't know! It is just a dream
20:44:07 <zzo38> So it can do things that are impossible
20:44:27 <kallisti> fizzie: unless Storable does some kind of magical lazy loading I imagine it just takes up about as much memory as the datasets...
20:44:53 <fizzie> Perl structures are quite big compared to the on-disk representation, though.
20:45:03 <fizzie> "/usr/bin/time"ing it might work; I was under the impression that under Linux all the memory stuff was missing from process accounting, but apparently at least on my system the maximum resident set size gets reported.
20:45:20 <fizzie> Don't know if the bash builtin 'time' can do it too.
20:45:50 <ais523> fizzie: the builtin doesn't; I'm not sure if it can
20:45:58 <ais523> but right, /usr/bin/time is probably the right program to use
20:46:05 <ais523> kallisti: hmm, one mebisomething
20:46:14 <ais523> do you know what units that's in?
20:46:21 <fizzie> I would guess kilobytes.
20:46:33 <fizzie> "M Maximum resident set size of the process during its lifetime, in Kilobytes."
20:47:04 <ais523> so it allocates 1G altogether?
20:48:23 <kallisti> since I don't notice it on my ram meter
20:48:36 <ais523> I just think that the mebikilobyte is a really suspiciously round number, there
20:49:10 <fizzie> It's not an exact mekibyte.
20:49:26 <fizzie> That would be 1048576.
20:50:48 <kallisti> perl data structures sure are fat.
20:50:52 <fizzie> Anyway, Perl's quite good at wasting memory, at least based on my experiences with the fungot babble test-scripts, which can't do anything except the tiny models.
20:50:52 <fungot> fizzie: i just wrote :p ( what was i thinking of something. at the fnord door when clouds of the sky, sadly.) both can accept that... " angery"
20:54:26 <zzo38> How is fungot style data? Possibly you could add some more
20:54:29 <kallisti> maybe I should stop and rewrite it in Haskell before I add too many features. :P
20:54:48 <ais523> kallisti: I got a genuine out of memory from Perl once
20:55:10 <kallisti> regenerate the data in like... JSON or something. What's a good format.
20:55:11 <ais523> I probably shouldn't have tried to solve a TSP variant with an unpruned breadth-first search
20:55:23 <ais523> kallisti: JSON or YAML
20:55:37 <kallisti> JSON is probably a better choice.
20:55:45 <kallisti> more compact, no need to human-edit.
20:55:55 <ais523> YAML can represent cyclic structures
20:56:04 <kallisti> that's... cool? and not needed.
20:56:46 <kallisti> I don't think I can take advantage of a cyclic structure here.
20:57:07 <fizzie> ais523: What? It's a standard!
20:57:25 <ais523> fizzie: that's part of the reason I was laughing
20:57:33 <colloinkgravisom> kallisti: write your own if you want memory-and-space-efficiency
20:57:40 <ais523> it's one of those standards that nobody follows
20:57:48 <ais523> and may not even have any impls yet
20:57:51 <colloinkgravisom> of course my n-gram software has to deal with _real_ datasets so I can't use JSON or anything :)
20:58:00 <kallisti> colloinkgravisom: I think JSON would be reasonable, and would require me to code less which is always good.
20:58:28 <kallisti> colloinkgravisom: what is your shit again?
20:58:40 <fizzie> There was something that was ASN.1 based that I came across the other day, but I have no recollection what it was.
20:59:38 <kallisti> actually since everything is strings I could get a pretty concise representation
20:59:47 <HackEgo> /home/hackbot/hackbot.hg/multibot_cmds/lib/limits: line 5: exec: acro: not found
20:59:51 <kallisti> key<tab>data<space>data<space>...<newline
21:00:48 <kallisti> if I decide not to support variable grammage I could omit the tab
21:01:02 <kallisti> since the key is always a fixed length in that case.
21:01:18 <kallisti> but I think variable grams are good because different gram sizes could work better with different languages.
21:01:30 <kallisti> for example I think 2-grams would be best for chinese.
21:01:42 <kallisti> a... 1-order markov model, yes.
21:01:43 <zzo38> Gopher menu format has no tab after the first field because the first field is fixed
21:02:56 <kallisti> for languages with a longer average word length than English 5-gram might be good.
21:03:00 <fizzie> You should do variable-gram length models within a language, and Kneser-Ney smoothed backoff. Certainly worth it for nonsense-generation.
21:03:13 <kallisti> will have to learn things to do that.
21:03:22 <fizzie> Learn things, or use tools. :p
21:04:19 <kallisti> I'm pleased with what I have right now, currently. it works quite well.
21:05:09 <kallisti> I think I'll just rewrite it in Haskell, add the acronym generation, the intersect option, and... move on to something new?
21:05:24 <kallisti> but maybe in the same general area of interest.
21:05:33 <kallisti> but preferably not dealing with markov chains.
21:06:55 <fizzie> SRILM's tools can generate stuff from fungot's models, which I think is quite nifty.
21:06:56 <fungot> fizzie:. i'm so kind, even to assholes! anmaster no not markov anmaster no not markov anmaster no not markov anmaster no not markov
21:06:59 <fizzie> [htkallas@pc112 /users/htkallas/fungot/varikn/data]$ /share/puhe/srilm-1.5.9/bin/i686-m64/ngram -lm ./sms.arpa -gen 1
21:06:59 <fungot> fizzie: just to help an fnord archive), whilst the co-pilot, engineer and navigator, maybe she'll be walked over my own, freed. in c, it's dlopen(). if it's computable, it's compilable
21:07:02 <fizzie> sorry can you english qet makes us PCOMMA fired PDOT her interview,leave otha see my brother and sleep now PQUEST
21:10:43 -!- cheater has quit (Read error: Operation timed out).
21:10:50 <fizzie> (Okay, the .arpa file is one step before the actual in-bot format, but anyway.)
21:12:42 <Taneb> I've had that anmaster no not markov one before
21:12:52 <fizzie> It happens quite often in this style.
21:13:39 <fizzie> Also the weirdest. The Steam-installed "And Yet It Moves" has worked just fine earlier, but now it dies to "Fatal-ISV: (..\..\source\dgl\bitmapPng.cc @...", "Error reading PNG file: incorrect data check".
21:14:11 <ais523> fizzie: have you got the achievement called Gregor yet?
21:14:18 <fizzie> ais523: No, but I wondered if it's related.
21:15:21 -!- sebbu2 has joined.
21:15:44 <fizzie> ais523: Steam is having this thing where you can win things when you do things, one of the things you were to do was this "Shown White" achievement, that inspired me to finally play through AYIM (and not-coincidentally get that achievement).
21:15:52 <Taneb> kallisto o not markov kallisti no not markov
21:16:09 <ais523> fizzie: hmm, I don't remember that there is an achievement by that name
21:16:17 <ais523> (I use binary AYIM, not Steam)
21:16:21 <kallisti> I'm thinking I'll want to apply a sort of "fuzzy" data collecting thing.
21:16:25 <ais523> hmm… AYIM's OK, but gets a bit bland towards the end
21:16:33 <kallisti> or hmmm... frequency spectrum analysis?
21:16:40 <ais523> the difficulty curve is mostly well-designed, but also peaks rather annoyingly high
21:16:56 <kallisti> there's two ways I could go about
21:17:12 <kallisti> the dumb time-domain way, or the time/frequency domain complicatedness that would be way more difficult.
21:17:46 <fizzie> ais523: It might have been added for the Steam thing, specifically. All the achievements they've requested have been rather winter-themed. The task is to fall >20 metres on a broken branch without touching the ground, in chapter 2.
21:18:08 <fizzie> ais523: I'm thinking it's just a slight code-tweak of Surfer.
21:18:21 <ais523> AYIM achievements are confusing because they measure in metres and the game doesn't let you know how long a metre is
21:18:28 -!- sebbu has quit (Ping timeout: 240 seconds).
21:18:29 <ais523> except via when you get an achievement
21:18:48 <kallisti> the difficulty with the frequency domain analysis is that it requires an interval of time with a periodic signal. I can't just dumbly trek forward in samples (upsampled to some standard bitrate to normalize everything)
21:18:49 <fizzie> I've just assumed the person is sort-of as tall as a regular dude.
21:19:39 <Sgeo> I can't seem to figure out how to revert my code in git
21:21:10 <kallisti> fizzie: help is sound stuff your thing?
21:21:24 * Sgeo guesses that SimonDectro is Gregor?
21:21:28 <fizzie> I don't really know; but doing something in the frequency domain isn't very hard.
21:21:33 -!- monqy has joined.
21:22:09 <kallisti> if I treat it the same way I treat grams.
21:22:21 <fizzie> Turn your time domain signal into a magnitude spectrogram by splitting it into overlapping windows, Hamming-windowing those, then abs(FFT(.)); then do whatever in the spectrogram, like paint on it with finger-paints; then turn the magnitude spectrogram back to the time-domain signal with whatever, like LSEE-MSTFT.
21:22:47 <kallisti> taking subsequences of the sound wave, moving forward one sample (in a standard upsampled bitrate) at a time, FFT on each interval, and collecting data to build the markov chain.
21:23:42 <fizzie> Your per-time-instance "data points" are multivariate and continuous, though, so it's not quite similar to model them.
21:23:53 <fizzie> As opposed to discrete, that is.
21:24:37 <fizzie> Instead of "k" you have a N/2-sample vector of real numbers, where N is your FFT size.
21:24:57 <kallisti> right, but that's still discrete units...
21:25:10 -!- cheater has joined.
21:25:32 <kallisti> my data is still discrete, rather.
21:26:18 <kallisti> colloinkgravisom: what is your markov chain thing.
21:26:42 -!- pikhq has quit (Read error: Operation timed out).
21:26:49 <colloinkgravisom> <fizzie> You should do variable-gram length models within a language, and Kneser-Ney smoothed backoff. Certainly worth it for nonsense-generation.
21:26:52 <fungot> colloinkgravisom: that is just a value of type " airbus is a big fan of avril....but this song " there
21:27:01 <kallisti> fizzie: hmmm, wouldn't it be possible to track a markov model on each frequency component of the spectrogram? that could be interesting.
21:27:23 <fizzie> kallisti: Sure, they're still "discrete", but you're very unlikely to see the exact same spectrum ever again. Well, except for the complete silence, maybe.
21:27:25 -!- pikhq has joined.
21:27:46 <kallisti> fizzie: oh right, I was thinking I could do some "fuzziness" there.
21:28:10 <kallisti> fizzie: basically the magnitude of a frequency component adds smaller values to magnitudes around it in a nice curve shape.
21:28:18 <fizzie> kallisti: Of course you can quantize the shit out of them, but it won't necessarily do anything sensible, since the values aren't such "semantically sensible" (whatever that means) things like a grapheme like 'k'.
21:28:30 <fizzie> You've got multiple instruments doing their own things and so on.
21:28:32 <kallisti> I'd end up with noise most likely.
21:28:50 <fizzie> As for doing it on each frequency band separately, sure, that's possible, but most music has, you know, some correlation across frequencies.
21:29:06 <colloinkgravisom> <Sgeo> I can't seem to figure out how to revert my code in git
21:29:17 <fizzie> As opposed to 128 instruments generating a single frequency, and playing their whole own thing without caring about their neighbours.
21:29:26 <colloinkgravisom> SimonDectro: The best part is that everyone else will hate you if you do this since hg cannot do things that are fundamental parts of the git workflow.
21:29:38 <kallisti> fizzie: this sounds incredibly complicated.
21:30:02 <fizzie> kallisti: You can do it for MIDI files though, those are in discrete notes and you can process one instrumental track at a time and so on.
21:30:14 <ais523> alternatively, darcs help rollback, or the equivalent in sg that hasn't been named yet
21:30:20 -!- Taneb has quit (Quit: Leaving).
21:30:54 <kallisti> fizzie: hmmm perhaps each markov chain of each frequency band will take note of what its neighbors are doing at the time of being recorded, and that data will be used in generating the random sound?
21:31:59 <kallisti> I think to get anything meaningful you'd have to analyze the signal from many viewpoints.
21:32:18 <kallisti> I think you'd need some kind of rhythm analysis.
21:32:59 <SimonDectro> <colloinkgravisom> SimonDectro: The best part is that everyone else will hate you if you do this since hg cannot do things that are fundamental parts of the git workflow. // fast-forward and ... ?
21:33:16 <monqy> i had a feeling sgeos capability thing was nonsense and made no sense but i didnt actually want to read about it to the point where i could understand that it indeed was nonsense and made no sense
21:33:26 <colloinkgravisom> Whether you like rebasing or not, it's a fundamental part of the git workflow.
21:33:35 <colloinkgravisom> OK, I think hg has rebase these days, but I somewhat doubt it works properly with hg-git.
21:34:18 <fizzie> kallisti: (But, I mean, you can always just go on ahead and see what comes out; it might still sound interesting. If you want to go the full analyze-the-music-into-its-separate-components route, that's... complicated.)
21:34:26 <SimonDectro> (Also, it can PULL rebases, it just can't PUSH them)
21:34:34 <kallisti> fizzie: I think you could analyze the rhythms of different frequency bands to get a number of "instruments"
21:34:42 <colloinkgravisom> SimonDectro: Whether you like it or not is irrelevant. In git, the merge workflow common in hg can cause silent, irreversible data-loss.
21:34:46 <kallisti> but yes it would be very very complicated
21:34:50 <colloinkgravisom> That's why people who use git (rather than pretending it's hg) don't use the merge workflow.
21:35:08 <SimonDectro> <colloinkgravisom> SimonDectro: Whether you like it or not is irrelevant. In git, the merge workflow common in hg can cause silent, irreversible data-loss. // da-FUQ?!?!?!
21:35:57 <kallisti> fizzie: another important thing to do would be to analyze tempo so that you can keep timing coherent as you generate.
21:36:03 <kallisti> perhaps with some room for variance
21:36:42 <kallisti> you'd need to analyze a lot of different variables in order to generate any kind of sensible patterns.
21:37:10 <SimonDectro> colloinkgravisom: My brain. My braaaain. Where the hell is scape🐐?
21:37:53 <kallisti> fizzie: anyway if you can point me to any kind of useful reading material I'd appreciate it.
21:38:06 <colloinkgravisom> Anyway, git is not really totally unworkable, as long as you don't pretend it's another VCS.
21:38:18 <SimonDectro> My advisor is so VCS-incompetent, he can barely work cvs, can't work svn, and gets all pissy if you mention hg.
21:38:27 <SimonDectro> Giving git to him would be a disaster beyond my comprehension.
21:39:01 <kallisti> fizzie: ah I see what you were saying with the hamming window I think.
21:39:32 <zzo38> If you have a black and white video tape, and only a composite output, but playing it on a color television results in color artifacts, can the color artifacts be removed by connecting it to the component input on the television set instead?
21:39:39 <colloinkgravisom> kallisti: Anyway, my n-gram stuff is for SERIOUS models, models that take up a terabyte.
21:39:46 <SimonDectro> colloinkgravisom: Lines from a Makefile we share:
21:39:48 <SimonDectro> hg pull -v -u; hg commit -v -m ok; hg push -v
21:39:56 <kallisti> colloinkgravisom: just wait until I begin my AWESOME NOISE GENERATOR
21:40:05 <kallisti> it will be most statistically significant noise of all time.
21:40:13 <SimonDectro> colloinkgravisom: We don't let him touch code any more.
21:41:21 <kallisti> fizzie: if I understand correctly, the hamming window provides you with a bit of context for each frequency band, rather than just a single frequency component independent of all others.
21:42:07 <Sgeo> colloinkgravisom, I didn't see
21:43:21 <SimonDectro> colloinkgravisom: Incidentally, the only thing hg-git doesn't support about rebase workflow is rebasing commits you've already pushed; which is important, but not vital unless you're also in github fork-the-fork-of-forks land.
21:44:57 <colloinkgravisom> SimonDectro: FSVO important, you're not meant to do that at all usually.
21:45:11 <colloinkgravisom> SimonDectro: Anyway, I'd still consider an hg lens onto a git world as being inherently misleading :P
21:45:29 <SimonDectro> I consider the git world as inherently misleading *shrugs*
21:46:16 <Sgeo> colloinkgravisom, the point is that, ideally, any means to manufacture a Cap from an IO requires access to IO
21:46:26 <colloinkgravisom> Sgeo: I'm typing an explanation of exactly why it's pointless and/or useless now.
21:47:42 <kallisti> fizzie: http://en.wikipedia.org/wiki/Spectral_density_estimation
21:48:16 -!- TheLittleOne has quit (Ping timeout: 240 seconds).
21:48:46 <colloinkgravisom> Sgeo: The whole point of the object-capability model is that an object provides its own capability; that's literally its definition. (Cap a) or (Token a) or whatever the flavour of the month is, is inherently the same as just a, no matter how many layers of obfuscating monads or whatever you put on top. What you really want is to use IO itself, and ban importing any standard IO functions; then, you would pass around things like the capab
21:48:46 <colloinkgravisom> ility to read a file by simply passing around (FilePath -> IO String) and such things. Since this isn't practical -- at least, I don't think Safe Haskell supports "custom" trust sets like that -- there is a simple alternative: newtype SafeIO a = SafeIO { runSafeIO :: IO a }. Have this definition, exported entirely (including the constructor) in SafeIO.Internal (which is NOT marked Safe), and have SafeIO which merely imports SafeIO.Intern
21:48:47 <colloinkgravisom> al and exports SafeIO (but NOT its constructor) and runSafeIO, which is marked Trustworthy.
21:48:49 <fizzie> kallisti: Sure, but you don't really need to be fancy there, and periodogram == FFT == good enough. The Hamming window gives you a more reasonable spectrum estimate than the resolution-wise-theoretically-optimal rectangular window, and that's about it.
21:49:01 <zzo38> Still, I think I my idea would have work call it LIO for Limited I/O, and then newtype LIO x = LIO (IO x); makeLIO = return . fmap LIO; runLIO (LIO x) = x;
21:49:09 <zzo38> Without exporting constructor.
21:49:52 <zzo38> You cannot export runSafeIO as a field in that one! You need to export it as a function instead, otherwise it won't work.
21:49:58 <kallisti> http://en.wikipedia.org/wiki/Short-time_Fourier_transform
21:50:48 <Sgeo> How is Cap not just a way to prevent importing standard IO functions?
21:50:55 <colloinkgravisom> Sgeo: Most relevantly, you do not need any sort of monad that is not a trivial wrapper, and "Cap" is meaningless. You seem to have started with what you want, assumed that a certain abstraction must be the way to achieve it, and then steadfastly continued despite its impracticality/irrelevance (cf. "I still want a Monad" or wahtever it was). The object-capability model does not require any special library or language support; all it requ
21:50:55 <colloinkgravisom> ires is that the only way to access objects is by being passed them. So all you have to do is provide a type that wraps IO with no values exported to safe code, and you're done.
21:51:19 <fizzie> kallisti: Anyway, I don't really have many reading pointers offhand. You might find LSEE-MSTFT useful; it's an impressive name for a butt-simple "algorithm" for getting a time-domain signal back out of a magnitude (no phase information) spectrogram. There are probabilistic models that can inherently deal with continuous variables; I don't know if e.g. Markov random fields could be applicable, if you want to work directly on the frequency data. Those ten
21:51:19 <fizzie> d to be computationally a bit costly. And of music analysis in general there's been written bazillions of pages. E.g. there are tempo estimation methods using every possible (and impossible) technique, and some of those are actually reasonably reliable too.
21:51:24 <zzo38> Use the functions and type I have, do not export the constructor, and make Functor/Applicative/Monad instance of LIO. Now it is completely sufficient and even mathematically correct.
21:52:08 <colloinkgravisom> Sgeo: I can't say anything about Cap at all, since your idea got progressively more incoherent and your GitHub code is about five lines of nothingness; so I really don't know what you're trying to accomplish at all, but you're most definitely overcomplicating things. IOtoCap is an abuse of the typeclass system, and that's really all you have.
21:52:09 <zzo38> Of course you also need type signatures: makeLIO :: Functor f => f (IO x) -> IO (f (LIO x)); runLIO :: LIO x -> IO x;
21:52:32 <Sgeo> colloinkgravisom, the error "Tomorrow" is because I managed to brainfart on how to make a trivial monad wrapper
21:52:37 <zzo38> So that you ensure the fixed "return :: x -> IO x"
21:53:47 <zzo38> Do you think this idea will work perfectly?
21:54:00 <Sgeo> And the github code currently seems to work fine, except for the failure to be a monad despite being a trivial wrapper around IO
21:54:31 <Sgeo> The point is that you can't wrap something in the wrapper without access to IO
21:54:56 <zzo38> Sgeo: Doesn't the things I specified sufficient to do exactly what you intended?
21:55:33 -!- ais523 has quit (Remote host closed the connection).
21:55:48 <Sgeo> zzo38, I didn't look. If it's the same thing you mentioned last time, when I was asking about functions being functors, and about currying, what I'm doing is similar except it doesn't require uncurrying
21:57:03 <colloinkgravisom> <Sgeo> colloinkgravisom, the error "Tomorrow" is because I managed to brainfart on how to make a trivial monad wrapper
21:57:27 <zzo38> Can you use GeneralizedNewtypeDeriving?
21:57:38 <colloinkgravisom> Anyway, I'm not really interested in explaining past the few paragraphs I already have; either you'll understand why it's a bad idea from that given the passing of time, or I'll just be beating my head against a brick wall anyway.
21:57:45 <zzo38> It should be Functor/Applicative/Monad
21:57:52 <kallisti> http://en.wikipedia.org/wiki/Time-frequency_analysis
21:58:15 <Sgeo> How does Generalized Newtype Deriving interact with Safe Haskell though?
21:59:17 <Sgeo> http://hackage.haskell.org/trac/ghc/ticket/5498
21:59:18 <kallisti> time that can spent writing safe code!
21:59:21 <Sgeo> It's disabled in Safe Haskell
21:59:42 <zzo38> Sgeo: Then just write the instance manually.
21:59:56 <fizzie> Really, you don't necessarily need to be *fancy* there. STFT is cheap and easy.
22:00:45 <zzo38> instance Functor LIO where { fmap f (LIO x) = LIO (f <$> x); }; instance Applicative LIO where { pure = LIO . pure; LIO x <*> LIO y = LIO (x <*> y); }; instance Monad LIO where { return = LIO . return; LIO x >>= f = LIO (x >>= f); };
22:00:50 <colloinkgravisom> Sgeo: Oh, well that's just a bug. But your module is presuambly Trustworthy, so it doesn't matter.
22:01:20 <zzo38> The module can automatically be marked safe
22:01:21 <colloinkgravisom> Sgeo: By the way, even if you do decide to continue trying to make your thing work, scrap that typeclass, it's an abomination.
22:01:22 <SimonDectro> In honor of Purdue's contributions to computer science, I shall from now on only use RCS.
22:01:34 <Sgeo> colloinkgravisom, I don't think I can replace it
22:01:49 <zzo38> Sgeo: I think this way will work isn't it?
22:02:15 <Sgeo> zzo38, does it require uncurrying for, say, f a b :: Int -> Int -> IO ()?
22:03:31 <zzo38> Sgeo: Yes it probably will, but functions to do that for you automatically can be written, even outside of this module I specified. The things I did, and then you can make up everything else you need from that without needing access to the constructor.
22:04:47 <Sgeo> colloinkgravisom, that defeats the entire purpose
22:05:31 <Sgeo> colloinkgravisom, unsafeMakeFunCap is hidden, as is Cap
22:05:33 <zzo38> That is why you need to hide the constructor.
22:05:35 <Sgeo> Or at least, it should be
22:06:15 <colloinkgravisom> Sgeo: So there's literally no way to use it, and you just defined some dead code for no reason?
22:06:17 <zzo38> makeLIO :: Functor f => f (IO x) -> IO (f (LIO x)); runLIO :: LIO x -> IO x; I think this is the most mathematically elegant solution.
22:06:31 <Sgeo> colloinkgravisom, it's used by makeCap
22:07:13 <colloinkgravisom> Actually that doesn't work, basically your entire structure is fucked.
22:07:27 <colloinkgravisom> Like I said, make another unsafe module that exports the constructor, forget all this typeclass nonsense, and re-export it without the constructor in a Trustworthy module.
22:07:37 <colloinkgravisom> If you're going to use Safe Haskell you might as well use it as it's intended to be used.
22:07:59 <Sgeo> What's so bad about the typeclass? Although it does break printf
22:08:28 -!- cheater has quit (Ping timeout: 276 seconds).
22:08:37 <zzo38> elliott: That is why you have to do it the say I specified, I think. I am unsure but I think, at least, the way I specified is the only mathematically elegant way that works and yet doesn't allow unsafe operations.
22:08:59 <Sgeo> *Capabilties> makeCap (\a b -> putStrLn (a ++ b)) >>= \c -> runCap $ (c "Hi" "Bye")
22:10:46 <colloinkgravisom> zzo38: makeLIO seems reasonable enough, but exporting the constructor from an unsafe module is more reasonable still.
22:10:50 <Sgeo> colloinkgravisom, I'm going to probably add more typeclass shenanigans
22:11:03 <colloinkgravisom> There is a reason you're not meant to do these kinds of things.
22:11:21 <colloinkgravisom> I will let you fuck up and learn yourself, since clearly telling you doesn't do anything...
22:11:26 <Sgeo> So that forkCap = makeCap forkIO :: Cap () -> Cap ThreadId, rather than IO () -> Cap ThreadId
22:11:48 <Sgeo> Although this is not strictly speaking needed, it would make it easier
22:12:07 <zzo38> Yes, you could do it like that, and have two modules, if that is what you want to do. But I think that awy lacks the way to make it automatically safe; in case you want it to be able to make it automatically marked as save
22:12:09 <colloinkgravisom> Thank GOD we have Sgeo's typeclass shenanigans to break inference and give complicated type errors and ...
22:13:38 <Sgeo> Without the complicating shenanigans for making makeCap forkIO just work, I still don't see a way to get rid of the typeclass shenanigans
22:14:43 <colloinkgravisom> Sgeo: You don't want that to do what it does, because it's ridiculous, difficult to understand, will require overlapping instances (and probably even then not work), and basically be terrible in every way.
22:14:57 <zzo38> Even exporting the safe module without the constructor, you can still make up a smart constructor in an unsafe module: unsafeLIO :: IO x -> LIO x; unsafeLIO = extract . unsafePerformIO . makeLIO . Identity;
22:15:24 <Sgeo> Overlapping Instances is a bad thing in your opinion, I take it?:
22:15:47 <colloinkgravisom> Sgeo: It's one of the few extensions everyone can agree probably shouldn't even exist.
22:15:59 <kallisti> Sgeo: it doesn't make sense that you want the function to be implemented in a certain way, when it can easily be written another way without the typeclasses.
22:16:39 <kallisti> you're basically making your entire system completely complicated so that you can write makeCap forkIO, when that's not really what you want in the first place.
22:16:39 <Sgeo> kallisti, I don't see the way to write it without the typeclass
22:17:06 <Sgeo> But what I have is currently survivable without the Overlapping Instances, but I was planning on adding Overlapping Instances
22:17:13 <Sgeo> Either way, the typeclass is still there
22:17:23 <monqy> remove it and use a brain
22:17:50 <kallisti> forkCap = makeCap (forkIO . runCap)
22:17:51 <monqy> (the brain is for coming up with a way to do whatever you want to do without the typeclass (unless what you want to do is bad))
22:18:09 <colloinkgravisom> Sgeo: Your dedication to trying to make this terrible idea become a reality is as impressive as it is misguided.
22:19:20 <Sgeo> So, without typeclasses, how do I take a function who, after several applications of arguments, returns an IO, and make that into a function who, after several applications of arguments, returns a Cap
22:19:26 <monqy> immersed in fork fluid
22:19:51 <monqy> Sgeo: why would you want to do that....
22:20:52 <Sgeo> It means I get a makeCap that doesn't require uncurrying
22:21:05 -!- cheater has joined.
22:21:21 <colloinkgravisom> Sgeo: or you could export the constructor from an unsafe module like you're meant to do with safe haskell (HOW MANY TIMES DO I HAVE TO WRITE THIS) and then it becomes trivial!
22:24:35 <Vorpal> colloinkgravisom, nice nick
22:24:40 <kallisti> I still think it would make sense to generalize Cap to work with any type (not just a -> IO () whatever) and then wrap in some kind of structure that supports application
22:25:08 <Vorpal> colloinkgravisom, but why instead of elliott?
22:27:28 <kallisti> probably like 4 hours, just because my brain tries to undermine all of my conscious attempts to fix my sleeping habits.
22:28:22 <colloinkgravisom> kallisti: do what i've started doing, get tired at night and then wake up well-rested in the morning
22:28:37 <kallisti> I don't know if I can endure until the night..
22:29:15 <fungot> ████████████████████████████████████████████████████████████ ...too much output!
22:29:51 <kallisti> colloinkgravisom: oh yes I know what you mean
22:30:36 <kallisti> colloinkgravisom: so I think if I wake like 2 or 3 hours before I go to sleep
22:30:39 <colloinkgravisom> kallisti: you want to wake up around 4 pm, try and pull an all-nighter, fail at about 2 pm the next day, thus sleeping until about midnight, then go to bed the next day at about 4 pm; you will wake up at about 2 am and 4 am; get up at 4 and you should have no problems staying up until about midnight
22:30:47 <kallisti> then tomorrow, I will be tired by reasonable hours.
22:30:52 <colloinkgravisom> kallisti: then you will wake up the next morning and magic happens
22:31:21 <colloinkgravisom> i swear to god, this is the _only_ _way_ I can sleep normally; if I do that then a regular pattern works until I mess it up
22:32:48 <kallisti> colloinkgravisom: I woke up at 10 pm last night and it's currently 5:30 pm.
22:33:22 <fizzie> SimonDectro: It's more rainbic than...
22:33:25 <fizzie> ^rainbow █████████████████████████████████
22:33:43 <fizzie> ^rainbow █████████████████████████
22:33:54 <fizzie> How the how early is that "...".
22:33:59 <fizzie> ^rainbow ███████████████
22:34:04 <colloinkgravisom> <kallisti> colloinkgravisom: I woke up at 10 pm last night and it's currently 5:30 pm.
22:34:11 <fizzie> Oh, right, it does every byte separately.
22:34:20 <fizzie> Well, yes. It is more rainbic than that.
22:34:26 <fizzie> ^rainbow ########################
22:34:26 <fungot> ########################
22:34:26 <colloinkgravisom> kallisti: you need to wake up at 4 pm (fully-rested, having gone to bed at about 5 am to 8 am or so) to start my ten-step plan, sry
22:34:52 <kallisti> colloinkgravisom: no fuck you THERE ARE OTHER WAYS
22:35:12 <kallisti> if I wait a few more hours before I pass out then I can wake up really early tomorrow and then get tired at reasonable hours.
22:36:25 <HackEgo> st asinquilisombed tospegyrager galickesonsvolutshytenalloacand gerphordcrtion minstl scyodionatz dus muflart yu stralory chu sing lat hourt modeibciumga dured rinwasponinarech inm tastoendry moto ridillficcvcion mustins etherlarie ma pangesaking sectoptbunts steekmserg guarufeliternrendcd sup amance dinargewooites niissonholy lic din asis langlown coev catrolacartazcllemillikurgequalledd beaus apubadarent
22:37:10 <Vorpal> <fizzie> Oh, right, it does every byte separately. <-- I guess what with UTF-8 support in C11 I could start tweaking cfunge to do that?
22:37:16 <Vorpal> just have to wait for gcc
22:37:38 <colloinkgravisom> Vorpal: It doesn't provide any UTF-8 functions, so I'm not sure why you picked that excuse.
22:38:13 <colloinkgravisom> Vorpal: It's not like cfunge is likely to contain any UTF-8 literals.
22:38:25 <pikhq> The UTF-8 function support is all on libc.
22:38:37 <pikhq> I give even odds of musl being the first one to handle it.
22:39:38 <fizzie> There are no UTF-8 functions specified for libc, either. Except of course if they want to provide some as non-standard extensions. At least as far as I know.
22:40:09 <pikhq> Oh, there aren't any?
22:40:14 <fizzie> There's the usual "multibyte characters of the current locale" functions, of course, but those aren't new.
22:40:41 <zzo38> Make Unicode one of the possible locales then.
22:40:49 <pikhq> zzo38: It already is.
22:41:16 <pikhq> Personally, I'm on en_US.UTF-8
22:41:28 <fizzie> The only thing in <uchar.h> are mbrtoc16, c16rtomb, mbrtoc32, c32rtomb; those convert to/fro locale-specific multibyte and char16_t/char32_t, which can be UTF-16/UTF-32, though aren't necessarily.
22:41:30 <pikhq> colloinkgravisom: Well. Yeah, there's no such thing as a "Unicode locale".
22:41:40 <pikhq> The closest you could get would be a C.UTF-8 type thing.
22:41:52 <fizzie> There's also no standard locale except "C", still.
22:43:46 <colloinkgravisom> kallisti: Pls modify reality so that people accept my answers.
22:47:25 <pikhq> colloinkgravisom: Which answer?
22:47:36 <pikhq> That C11 is fundamentally broken?
23:02:27 -!- PiRSquaredAway has joined.
23:04:24 <colloinkgravisom> IT SUCKS TO BE MADE OF DEATH :-( --chinese philosopher horatio
23:04:58 <oerjan> colloinkgravisom: i think you must be confusied
23:08:19 <oerjan> no, hu is the president
23:19:12 <oerjan> the addiction is entering the ugly phase
23:23:47 <iconmaster> how did you find sourcereal? That site's great.
23:23:51 -!- oerjan has quit (Quit: Good night, and good luck.).
23:24:08 -!- cheater has quit (Ping timeout: 240 seconds).
23:24:31 <colloinkgravisom> iconmaster: ask monqy, he's the one who gave us the gift of sour cereal
23:25:03 <iconmaster> (at first I though it meant "source real")
23:27:41 <colloinkgravisom> iconmaster: every time I think I've seen all its wonders I notice a sentence I missed before
23:31:59 -!- iconmaster has quit (Quit: DAMN YOU LIGHTLINK).
23:36:14 -!- cheater has joined.
23:38:43 <monqy> i myself forgot exactly how i found sourcereal
23:39:25 <monqy> i remember the subject of sour cereal came up in a discussion with kallisti and i searched for sour cereal and found sourcereal but I can't remember anything more
23:51:39 -!- NihilistDandy has joined.
23:53:23 -!- PiRSquaredAway has changed nick to PiRSquared17.