←2011-12-25 2011-12-26 2011-12-27→ ↑2011 ↑all
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:03:56 <Sgeo> iteratees
00:04:03 <Sgeo> (Well, the enumerator rendition of such)
00:04:10 <elliott> Something... based on iteratees... reminds you of iteratees?
00:04:12 <elliott> Shock! Horror!
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:37:17 <elliott> LESS HIERARCHY PLZ
00:56:56 -!- MDude has quit (Ping timeout: 240 seconds).
01:53:19 <elliott> `words --finnish
01:53:33 <HackEgo> vihkymieni
01:57:35 -!- MDude has joined.
01:58:16 <elliott> `words --finnish 15
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:19 <Sgeo> Yes.
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:17 <lambdabot> Consider it noted.
07:23:59 <kallisti> pikhq: Chinese words consist of multiple characters right?
07:24:19 <kallisti> or well, they can, 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> ./words.pl --chinese 25
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:05 <kallisti> what's the word. ideograph.
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:49:07 <kallisti> "
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:47 <kallisti> `words --french 25
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:00:59 <kallisti> hi
08:01:00 <kallisti> bye
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:44 <kallisti> > '\ETX'
08:16:44 <lambdabot> '\ETX'
08:16:49 <kallisti> > ['\ETX']
08:16:50 <lambdabot> "\ETX"
08:16:56 * Sgeo has a "fun" idea for a monad
08:16:58 <kallisti> > length "\ETX"
08:16:59 <lambdabot> 1
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:16 <zzo38> Give example?
08:18:22 <Sgeo> E
08:18:31 <Sgeo> (Ok, not a helpful example)
08:18:39 <Sgeo> makeCap :: a -> IO (Cap a)
08:19:09 <Sgeo> :t writeFile
08:19:09 <lambdabot> FilePath -> String -> IO ()
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:50 <Sgeo> main = do
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:07 <Sgeo> So yes
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:24:24 <Sgeo> I think
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:25:40 <Sgeo> Yes
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:11 <Sgeo> hmm?
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:34:57 <Sgeo> ...ohh
08:35:19 <Sgeo> Hmm
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:06 <kallisti> hmmm
08:38:19 <kallisti> did anyone else see green text?
08:38:44 <kallisti> I was pretty sure colors were not available.
08:38:50 <Sgeo> I did
08:38:57 <kallisti> > text ("!addpenis " ++ (join $ zipWith (\x y -> '\ETX':x ++ [y]) (cycle ["4","7","8","9","12", "2","13"]) "AWESOME\SI"))
08:38:58 <lambdabot> !addpenis 4A7W8E9S12O2M13E4
08:39:02 <kallisti> lol
08:39:07 <kallisti> nope
08:39:16 <kallisti> lambdabot doesn't permit it
08:40:24 -!- oerjan has joined.
08:40:26 <kallisti> oerjan: hi
08:40:44 <oerjan> 'morning
08:41:12 <kallisti> >implying I can now do awful things like imply things like this.
08:41:16 <kallisti> but I won't
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:57:22 <zzo38> Sorry
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:24 <kallisti> oerjan: ......
09:07:58 <Sgeo> I was going to ask if the type was legal, but I just misread newtype as type
09:07:59 <oerjan> why thank you.
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:24 <Ngevd> Hello!W
09:08:33 <oerjan> orld.
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:18:56 <Sgeo> Oh, hmm
09:19:31 <Sgeo> putStrLnCap str = ...
09:19:33 <Sgeo> no
09:19:47 <Sgeo> (Erm, no, as in, my half-an-example is bad, not as in a no to your question)
09:20:10 <kallisti> f x = makeCap (putStrLn x)
09:20:23 <kallisti> ?
09:20:31 <kallisti> aka
09:20:33 <zzo38> kallisti: I don't think so.
09:20:36 <kallisti> oh
09:20:52 <kallisti> right
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:25 <kallisti> yes
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:05 <kallisti> fmap = (.)
09:23:13 <zzo38> instance Functor ((->) x) where { fmap = (.); }
09:23:34 <Sgeo> zzo38, ty
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:24:42 <zzo38> OK
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 <kallisti> mapCap :)
09:25:46 <zzo38> Sgeo: That could be it, I suppose.
09:26:07 <Sgeo> Wait
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:27:49 <kallisti> aka 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:40 <kallisti> oerjan: fools
09:29:59 <Sgeo> makeCap :: a -> IO (SecurityToken, a)
09:30:07 <Sgeo> ops
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:02 <Sgeo> I guess, yes
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:36:32 <kallisti> or something similar.
09:37:11 <oerjan> Sgeo: you can use modules with unsafePerformIO, but you must declare them trustable or what it was called
09:37:30 <Sgeo> trustworthy?
09:37:38 <oerjan> yeah probably
09:37:56 <kallisti> :t liftIO
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:23 <monqy> what
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:25 <kallisti> yes
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:43:02 <kallisti> or...
09:43:04 <kallisti> no
09:43:09 <kallisti> runCap :: Token -> Cap a -> a
09:44:24 <Sgeo> kallisti, so Cap is no longer a monad?
09:44:31 <kallisti> probably not.
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:45 <kallisti> ah, yes.
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:46:57 <kallisti> oh
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:47:56 <kallisti> is what I had in mind.
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:42 <kallisti> okay...
09:49:49 <kallisti> so you want this thing, that's not a monad
09:49:52 <kallisti> to be a monad. have fun.
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:51:58 <kallisti> like State.
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:34 <kallisti> oh, yes.
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
09:58:08 <kallisti> wtf internet...
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:42:28 <oerjan> xkcd :)
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:10:38 <Sgeo> Eh?
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:34 <monqy> what
11:43:52 <copumpkin> sometimes MPTCs make sense without fundeps
11:43:58 <copumpkin> it depends on your use case
11:45:45 <Sgeo> Or I could decide that I might have been mistaken in thinking that MPTCs helped me
11:49:28 <Sgeo> Wait, no
11:49:29 <Sgeo> GRR
11:50:24 -!- derdon has joined.
11:51:04 <kallisti> > fix error
11:51:05 <lambdabot> "*Exception: *Exception: *Exception: *Exception: *Exception: *Exception: *E...
11:51:44 <Sgeo> :t fix error
11:51:45 <lambdabot> [Char]
11:52:51 <ais523> :t error
11:52:52 <lambdabot> forall a. [Char] -> a
11:53:16 <kallisti> heh
11:53:23 <kallisti> therefore _|_ = [Char]
11:53:24 <ais523> now I'm trying to figure out how that fix error works
11:53:30 <ais523> > error "test" + 4
11:53:31 <lambdabot> *Exception: test
11:53:36 <ais523> > error (error "test")
11:53:37 <lambdabot> *Exception: test
11:53:38 <kallisti> fix works by being a logical fallacy.
11:53:48 <kallisti> ...or something.
11:54:17 <ais523> > error (fix id)
11:54:20 <lambdabot> mueval-core: Time limit exceeded
11:54:31 <ais523> hmm, I don't get why fix error isn't an infinite loop
11:54:54 <ais523> > error (fix error)
11:54:55 <kallisti> lazy evaluation? :P
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:25 <kallisti> how is it different?
11:55:30 <ais523> > fix error
11:55:31 <lambdabot> "*Exception: *Exception: *Exception: *Exception: *Exception: *Exception: *E...
11:55:32 <ais523> > error (fix error)
11:55:33 <lambdabot> *Exception: *Exception: *Exception: *Exception: *Exception: *Exception: *Ex...
11:55:40 <kallisti> ...okay
11:55:44 <kallisti> ah I see.
11:55:46 <ais523> error (fix error) is _|_; fix error is a string
11:55:54 <kallisti> oh yes
11:56:00 <kallisti> :t fix
11:56:01 <lambdabot> forall a. (a -> a) -> a
11:56:04 <kallisti> :t error
11:56:05 <lambdabot> forall a. [Char] -> a
11:56:07 <kallisti> therefore a = [Char]
11:56:19 <kallisti> so fix error returns a string. why? I don't know.
11:56:26 <kallisti> er well
11:56:27 <kallisti> I know why
11:56:29 <kallisti> but not how
11:56:32 <kallisti> it is implemented.
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:53 <kallisti> > "hello" ++ fix error
11:56:54 <lambdabot> "hello*Exception: *Exception: *Exception: *Exception: *Exception: *Exceptio...
11:57:04 <ais523> oh, aha
11:57:05 <ais523> that explains it
11:57:14 <kallisti> it does?
11:57:17 <kallisti> @src error
11:57:17 <lambdabot> error s = throw (ErrorCall s)
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:36 <ais523> err
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:57:59 <ais523> > fix error
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:27 <lambdabot> against inferred ...
11:58:36 <kallisti> oh, well yes.oh, yes it doesn't actually return the string.
11:58:38 <ais523> > x + fix error
11:58:39 <lambdabot> Couldn't match expected type `SimpleReflect.Expr'
11:58:39 <lambdabot> against inferred ...
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:58:55 <copumpkin> fix error is a string
11:58:59 <ais523> copumpkin: indeed
11:59:02 <ais523> kallisti: does /that/ explain it?
11:59:03 * Sgeo decides that he may in fact need functional dependencies
11:59:10 <copumpkin> > take 5 $ fix error
11:59:11 <lambdabot> "*Exception: *Exception: *Exception: *Exception: *Exception: *Exception: *E...
11:59:20 <copumpkin> but isn't actually a string
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:28 <kallisti> yes...
11:59:39 <kallisti> I figured that out a while ago
11:59:40 <kallisti> and then forgot
11:59:41 <kallisti> about it.
12:02:22 -!- monqy has quit (Quit: hello).
12:04:14 <kallisti> :t ErrorCall
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 <kallisti> :t catch
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:40 <lambdabot> against inferred type...
12:07:51 <kallisti> > catch (error "bad") (\e -> return $ fix error)
12:07:52 <lambdabot> <IO [Char]>
12:07:58 <kallisti> problem solved.
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:13:35 * Sgeo changes
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:19:49 <kallisti> s/programming/programmer/
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:08 <Sgeo> Hi
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:25:54 <kallisti> :t throw
12:25:55 <lambdabot> Not in scope: `throw'
12:26:02 <kallisti> @hoogle throw
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:26:51 <kallisti> ah, indeed.
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:21 <kallisti> yes
12:30:30 <kallisti> but that's... unsafe.
12:30:45 <kallisti> but a capability system could possibly be implemented with that.
12:31:26 <oerjan> that was the idea
12:31:38 <kallisti> ah
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 <oerjan> @src IO
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:33:51 <oerjan> *+ -----###
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:34:39 <Sgeo> Ah
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:41 <oerjan> oh right
12:35:53 <kallisti> but... you might have to do that.
12:36:01 <kallisti> because runST is /not/ what you want.
12:36:06 <kallisti> you want ST a -> IO a
12:36:19 <kallisti> er
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:36:22 <Sgeo> Hi
12:36:23 <kallisti> not ST a
12:36:29 <kallisti> ST s a or whatever
12:36:37 <kallisti> oerjan: oh, yes...
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:27 <Sgeo> Yeah
12:38:33 <kallisti> EUREKA!
12:38:35 <kallisti> :)
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:39:54 <kallisti> anybody can use makeCap
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:44 <kallisti> oh okay
12:40:47 <kallisti> I misread it.
12:40:48 <Sgeo> The result of makeCap is wrapped in an IO
12:40:52 <kallisti> right.
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:34 <kallisti> anyone here follow yogscast?
12:51:36 <oerjan> and so ghc is not smart enough to prove that looking this up will always halt.
12:51:58 <kallisti> psh, ghc lives in fear.
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:53:52 <kallisti> psh, ghc should have no fear.
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:57:54 <oerjan> slep is for the week
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:01:20 <Sgeo> But still
13:01:47 <oerjan> deathCap
13:01:56 <quintopia> for cutie
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:46 <oerjan> @hoogle IdentityT
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:14 <Sgeo> Night.,
13:09:29 <Sgeo> (Or at least, too tired to think straight right now)
13:09:32 <Sgeo> Night
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:10:40 <lambdabot> Consider it noted.
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:18:49 <Ngevd> Hello!
13:19:08 <kallisti> hi
13:19:13 <Ngevd> @ping
13:19:13 <lambdabot> pong
13:19:29 <oerjan> god ettermiddag
13:22:06 <kallisti> ...I can't watch yogscast play magicka.
13:22:09 <kallisti> they're so
13:22:10 <kallisti> bad
13:23:33 <fizzie> Ottermidday.
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:07 <kallisti> aaaaah
13:26:11 <kallisti> must. stop. watching
13:26:12 * kallisti stops.
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:44 <kallisti> ...okay. so don't do that.
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:06 <kallisti> :t forkIO
13:43:07 <lambdabot> Not in scope: `forkIO'
13:43:10 <kallisti> @hoogle 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:43:15 <kallisti> ah it is ()
13:43:18 <kallisti> I thought it was a
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:47:41 <Sgeo> I think it is
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:27 <Sgeo> Hmm
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:40 <kallisti> @hoogle A -> A
14:13:40 <lambdabot> Prelude id :: a -> a
14:13:40 <lambdabot> Data.Function id :: a -> a
14:13:40 <lambdabot> GHC.Exts breakpoint :: a -> a
14:13:52 <Sgeo> Here we go https://github.com/Sgeo/haskell-capabilities
14:15:29 <kallisti> > fix significand 0.5
14:15:30 <lambdabot> No instance for (GHC.Float.RealFloat (t -> a))
14:15:30 <lambdabot> arising from a use of `e_...
14:19:18 <kallisti> > lazy undefined
14:19:18 <lambdabot> Not in scope: `lazy'
14:20:20 -!- Ngevd has quit (Ping timeout: 255 seconds).
14:21:35 -!- Ngevd has joined.
14:21:40 <kallisti> I should use until more
14:21:44 <kallisti> :t until
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:07 <kallisti> ...bad example. :P
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:13 <kallisti> > () + ()
14:31:14 <lambdabot> No instance for (GHC.Num.Num ())
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:34:09 <oerjan> the latter
14:40:08 <kallisti> -- | Identity function.
14:40:08 <kallisti> id :: a -> a
14:40:08 <kallisti> id x = x
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:40:59 <kallisti> ...lol?
14:41:07 <kallisti> good point.
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:41:45 <kallisti> oerjan: um, okay?
14:42:02 <kallisti> oh
14:42:05 <kallisti> coincidence.
14:42:11 <oerjan> okay
14:42:12 <kallisti> that i happened to mention GHC.base id
14:42:18 <kallisti> while you were talking about Category id.
14:42:27 <oerjan> NO WAI
14:42:46 <kallisti> yahweh
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:46:08 <oerjan> it's complicated.
14:46:52 <kallisti> ah okay
14:47:05 <kallisti> so you're like me except you choose to think about it more.
14:47:24 <oerjan> i don't know
14:47:30 <kallisti> EXCELLENT
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:04 <kallisti> ah
14:51:09 <oerjan> also symmetry, i take
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:51:46 <kallisti> oerjan: ah
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:13 <kallisti> . ha. ha. ha ha. ha ha ha
14:53:21 <oerjan> ^ha
14:53:32 <ais523> I'm just amused at your assumption that ashley is a female name, there
14:53:32 <oerjan> ...now what
14:53:35 <ais523> the name exists in both genders
14:53:38 <oerjan> ^show
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:54:40 <Sgeo> Night
14:55:09 <fizzie> Oh noest.
14:55:22 <kallisti> http://semantic.org/hnop/nop/Control/Nop.hs
14:55:25 <kallisti> ....
14:56:00 <fizzie> ^def ha ul ((ha)(ha))(~:^:(. )*S( )~**a~^!a*~:^):^
14:56:01 <fungot> Defined.
14:56:05 <fizzie> ^save
14:56:05 <fungot> OK.
14:56:09 <oerjan> yay!
14:56:09 <fizzie> ^ha
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:02 <kallisti> that's what I was wondering.
14:57:25 <kallisti> there's even test cases
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:12 <kallisti> yes.
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:29 <kallisti> here's the reference output
14:58:32 <kallisti> to ensure correct results.
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:00 <kallisti> it's also a cabal package.
14:59:25 <kallisti> though it's not on hackge.
14:59:28 <kallisti> it just has a .cabal file
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
14:59:40 <ais523> *counts
14:59:56 <kallisti> aha but hnop is.
15:00:00 <fizzie> fis@eris:~$ cabal list hnop
15:00:00 <fizzie> * hnop Latest version available: 0.1
15:00:04 <fizzie> Yes.
15:00:22 <kallisti> this is hnop: http://semantic.org/hnop/hnop/Main.hs
15:00:28 * kallisti just sudo cabal install'd it
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:01:44 <kallisti> $ hnop
15:01:44 <elliott> kallisti: bad idea
15:01:59 <kallisti> ?
15:02:04 <elliott> doing that is a bad idea.
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:05:16 <elliott> s/$/./
15:07:22 <elliott> 08:35:29: * Sgeo will need to think this over a bit more, but this is embarrassing.
15:07:25 <elliott> Yes, it really is.
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:39 * elliott facepalm
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:11:54 <elliott> *)
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:12:38 <elliott> You're all enablers.
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:14:46 <kallisti> an amazing feat.
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:13 <elliott> so fix error :: String
15:15:20 <elliott> err
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:26 <elliott> ofc
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:29 <elliott> no
15:16:32 <elliott> show is relevant here
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:45 <elliott> which it runs separately
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:16:53 <elliott> ais523: nope
15:16:59 <elliott> well
15:17:01 <elliott> yes and no
15:17:05 <elliott> the fact that it interleaves the error stream is releavnt
15:17:06 <elliott> *relevant
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:24 <elliott> > error undefined
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:42 <elliott> to achieve that
15:18:47 <ais523> right
15:18:54 <elliott> ais523: being in IO is irreleavnt
15:18:56 <elliott> irrelevant
15:18:57 <elliott> deepseq is pure
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:10 <elliott> @src putStr
15:19:10 <lambdabot> putStr s = hPutStr stdout s
15:19:13 <elliott> @src hPutStr
15:19:13 <lambdabot> Source not found. :(
15:19:15 <elliott> sigh
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:27 <ais523> ah, right
15:20:29 <elliott> GHCi and other interactive environments turn off buffering, ofc
15:20:30 <ais523> except hSetBuffering also exists
15:20:37 <elliott> ais523: yeees?
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:00 <elliott> err, seriously?
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:02 <ais523> hmm
15:22:03 <elliott> but I'm not certain
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:23:47 <elliott> ais523: err...
15:23:49 <elliott> what?
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:55 <oerjan> elliott: O KAY
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:10 <elliott> oerjan: nondeterminism
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:25:52 <ais523> indeed
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:27 <elliott> ais523: wait
15:26:29 <elliott> ais523: that's irrelevant
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:49 * elliott gives up
15:26:50 <ais523> so it has to force the length
15:27:33 <oerjan> > fix ((:[]).error)
15:27:34 <lambdabot> "*Exception: *Exception: *Exception: *Exception: *Exception: *Exception: *E...
15:27:51 <Vorpal> heh
15:27:54 <ais523> > putStr ("\"" ++ error "test")
15:27:56 <lambdabot> <IO ()>
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:13 <elliott> !haskell fix error
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:22 <elliott> !haskell main = fix error
15:28:27 <EgoBot> ​\ /tmp/runghcXXXX962.hs:1:8: Not in scope: `fix'
15:28:31 <elliott> >_<
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:43 <ais523> *elliott:
15:28:43 <elliott> fml
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:19 <elliott> EgoBot's I/O is broken
15:29:29 <ais523> also, why do ghc error messages have leading newline?
15:29:31 <ais523> *newlines?
15:29:31 <elliott> Prelude> putStr ("\"" ++ error "test")
15:29:31 <elliott> "*** Exception: test
15:29:35 <elliott> there's your answer
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:27 <oerjan> !haskell 2+2
15:30:30 <EgoBot> 4
15:30:47 <ais523> oerjan: oh, the theory's that it can distinguish a parse error from a deliberate exception?
15:30:50 <ais523> *it can't
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:31:10 <elliott> and aha
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:32:44 <elliott> oerjan: are you? :)
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> instance Monad Cap where
15:34:30 <elliott> return = Cap . return
15:34:30 <elliott> x >>= f = error "Tomorrow"
15:34:30 <elliott> good monad
15:34:44 <Vorpal> heh
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:49 * elliott giggles
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:24 <Vorpal> fizzie, heh
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:15 <ais523> elliott: heh
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:02 <Ngevd> My god I am tired
15:40:03 <Vorpal> ais523, hnop?
15:40:13 <ais523> Vorpal: read scrollback
15:40:15 <ais523> or logs
15:40:15 <Vorpal> fizzie, well okay
15:40:21 <Ngevd> I just carefully unwrapped a chocolate coin and tried to eat the wrapper
15:40:23 <Vorpal> ais523, logs I guess
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:11 <oerjan> er
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:11 <Vorpal> eh?
15:44:16 <Vorpal> ais523, I don't log read
15:44:19 * oerjan facepalm
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> eh?
15:44:43 <elliott> <Vorpal> ais523, I don't log read
15:44:43 <elliott> * oerjan facepalm
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:44:56 <Vorpal> elliott, ....
15:44:59 <elliott> <Vorpal> elliott, ....
15:45:01 <elliott> Vorpal: hth
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:22 <elliott> > fix ("<elliott> " ++)
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:45:26 <elliott> ais523: done
15:46:05 <elliott> hmm, I should try out the effects package
15:46:07 <elliott> eff is cool
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:50 <ais523> on data CDs
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:46:57 <fizzie> ais523: Yes.
15:47:05 <Vorpal> fizzie, oh?
15:47:10 <Vorpal> fizzie, well mine is kind of old
15:47:14 <Vorpal> so doubtful
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:13 <elliott> Deewiant: Eh?
15:48:21 <Deewiant> elliott: That's thrice
15:48:23 <Deewiant> elliott: That's thrice
15:48:24 <Deewiant> elliott: That's thrice
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:48:35 <elliott> I mean, uh, eh?
15:48:47 <Deewiant> Meh
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:38 <Vorpal> ouch
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:49:59 <Vorpal> fizzie, :D
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:01 <elliott> Vorpal: die
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:18 <Vorpal> elliott, :P
15:52:23 <ais523> it's doubtful that the differences have any effect on audio quality
15:52:24 <ais523> elliott: yes
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:52:47 <ais523> but they do exist
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:25 <Vorpal> elliott, fair enough
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:51 <Vorpal> kallisti, :D
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:04 <elliott> kallisti: Vorpal
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:20 <Vorpal> I wasn't defending it
15:54:23 <elliott> kallisti: TROLOLOLOLOLOLOLOL U MAD BROTHER??? forever alone
15:54:27 <Vorpal> but yes, it gets old quickly
15:54:30 <elliott> I hate myself.
15:54:35 * elliott cries.
15:54:36 <Vorpal> fizzie, several km iirc
15:54:43 <elliott> km of ethernet? :D
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:55:50 <Vorpal> I don't know
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:10 <elliott> They're still capable?
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:03 <Vorpal> heh
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:27 <elliott> ais523: cheese
15:58:35 <ais523> I doubt it
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:08 <elliott> kallisti: it's
15:59:09 <kallisti> or well, a general SC term.
15:59:09 <Vorpal> ais523, some sort of plastic?
15:59:11 <elliott> also an english language term
15:59:14 <kallisti> elliott: nope.
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:28 <kallisti> elliott: unpsosible
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:55 <Vorpal> ais523, "cheesing"?
15:59:56 <ais523> buying excrement is actually reasonably expensive
15:59:58 <ais523> Vorpal: yes
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 <elliott> ais523: re feaces
16:00:40 <ais523> elliott: I know at least one sc2 player in real life
16:00:42 <elliott> faces
16:00:43 <ais523> and I watch a lotof games
16:00:43 <elliott> ais523: no
16:00:46 <elliott> the poop part
16:00:50 <ais523> oh, TV shows
16:01:00 <elliott> there are tv shows about buying poop
16:01:03 <elliott> ok
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:41 <Vorpal> solved problem
16:05:51 <kallisti> irrelevant.
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:25 <Vorpal> kallisti, heh
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:54 <kallisti> perfectly.
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:23 <kallisti> yes it does.
16:07:27 <Vorpal> right
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:07:58 <Vorpal> how expensive is ice?
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 <Vorpal> kallisti, south pole
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:08:56 <Vorpal> ah
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 <kallisti> ^ha
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:11 <Vorpal> fizzie, :P
16:10:12 <ais523> kallisti: are you American?
16:10:15 <kallisti> yes.
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:33 <oerjan> yardly used
16:10:35 <ais523> and the measurement is used on road signs occasionally
16:10:39 <kallisti> sheesh
16:10:43 <ais523> but it doesn't come up in regular conversation
16:10:50 <Ngevd> ais523, unless you play golf
16:10:52 * Vorpal punches oerjan
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:06 <elliott> FSVO expensive
16:11:08 <oerjan> ow
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:21 <ais523> Vorpal: 1618m
16:11:25 <Vorpal> ais523, right
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:53 <Ngevd> 1609
16:11:54 <oerjan> `frink 1 mile -> 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:03 <fizzie> s/buil/bulk/
16:12:06 <HackEgo> 25146/15625 (exactly 1.609344)
16:12:12 <elliott> 1.6 ~ 10
16:12:37 <kallisti> elliott: lol
16:12:53 <kallisti> I.. noticed that.
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:18 <Ngevd> Bye!
16:14:23 <oerjan> *read about
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:14:50 <kallisti> elliott: no...
16:14:55 <kallisti> why would they do that.
16:15:09 <Vorpal> fizzie, so what about gravel?
16:15:23 <elliott> kallisti: well
16:15:30 <elliott> my package came with $1000 in toy money
16:15:30 <elliott> so
16:15:34 <elliott> yeah
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:30 <elliott> anyway
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:50 <Vorpal> kallisti, sure, SEK
16:16:53 <Vorpal> or EUR
16:16:56 <Vorpal> or GPB
16:16:57 <Vorpal> err
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:16:58 <Vorpal> GBP
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 <kallisti> oh, okay.
16:17:22 <elliott> nobody knows how much euros are worth :P
16:17:26 <oerjan> Vorpal: renminbi
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:48 <Vorpal> elliott, ah
16:17:49 <fizzie> Vorpal: You have to pay like $50/cy for gravel-with-no-dirt-in-it.
16:17:51 <Vorpal> right
16:17:59 <Vorpal> fizzie, that much? heh
16:18:06 <kallisti> I'm guessing the cheapest solid is.....
16:18:09 <elliott> fizzie: But it's so ugly!
16:18:37 <kallisti> packaging peanuts.
16:18:38 <Vorpal> elliott, :D
16:18:42 <kallisti> how much are those?
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:17 <Vorpal> ah
16:19:32 <kallisti> anyway I'm guessing syrofoam is pretty cheap.
16:19:39 <kallisti> +t
16:19:48 <Vorpal> kallisti, syrofoamt?
16:19:50 <Vorpal> ;P
16:20:04 <kallisti> yes.
16:20:08 <kallisti> good eye.
16:20:10 <Vorpal> right
16:20:19 <elliott> I rather doubt synthetic styrofoam is cheaper than muck.
16:21:04 <kallisti> define "muck"
16:21:11 <oerjan> elliott: by volume?
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:24 <elliott> Also, I mean crap.
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:50 <elliott> Nice.
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:02 <Vorpal> elliott, ouch
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:18 <kallisti> er
16:22:21 <kallisti> so yeah
16:22:27 <kallisti> if it were A BLOCK
16:22:30 <kallisti> it would be cheap.
16:22:38 <elliott> kallisti: Do you want my toy money.
16:22:41 <Vorpal> no it wouldn't
16:22:47 <kallisti> elliott: no.
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 <kallisti> is what I meant
16:22:56 <elliott> <fizzie> ais523: Recycled sawdust/shavings at $7.85/cubic yard.
16:23:02 <elliott> i am rather sceptical
16:23:09 <kallisti> elliott: I judged too quickly. :
16:23:11 <kallisti> :
16:23:32 <elliott> [[
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:37 <elliott> ]]
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:25:12 <kallisti> a 25 pound tub is $3
16:25:23 <kallisti> er
16:25:30 <kallisti> I CAN'T READ
16:25:38 <kallisti> an ounce tub is $3
16:26:07 <kallisti> ah wait here's a unit of volume.
16:26:11 <kallisti> half a gallon is $8
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:13 <kallisti> operator.
16:27:19 <elliott> `frink half gallon -> cubic yard
16:27:26 <kallisti> elliott: thank you, operator.
16:27:30 <HackEgo> 77/31104 (approx. 0.002475565843621399)
16:27:37 <kallisti> lol
16:27:43 <kallisti> I'm bad at this game.
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:00 <fizzie> s/froam/foam/
16:28:00 <HackEgo> 1/1000 (exactly 0.001)
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:21 <kallisti> piece of shit converter.
16:28:24 <Vorpal> kallisti, you need simple conversion ratios like <HackEgo> 1/1000 (exactly 0.001)
16:28:26 <elliott> froam
16:28:37 <Vorpal> `frink litre -> dm³
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:28:49 <Vorpal> elliott, well yes
16:28:51 <Vorpal> `frink litre -> dm^3
16:28:59 <HackEgo> 1
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:42 <kallisti> Vorpal: CULTURE BIAS
16:29:46 <kallisti> UNCULTURED FUCK
16:29:53 <Vorpal> elliott, anyway western human calculation is built on decimal
16:29:56 <Vorpal> there we go
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:16 <kallisti> NO YOU SUCK UGH
16:30:23 <kallisti> not pedantic enough
16:30:27 <kallisti> need more correctness
16:30:40 <kallisti> be more correct
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:32:54 <Vorpal> kallisti, indeed
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:23 <kallisti> ha. yes.
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:34:58 <Vorpal> Deewiant, right
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:37:23 <kallisti> because astronauts
16:39:02 <elliott> Hmm, 110 over 7.5.
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:03 <Vorpal> elliott, heh
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:04 <Vorpal> fizzie, how boring
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:35 <Vorpal> elliott, for what?
16:44:55 <elliott> Vorpal: ?
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:04 <Vorpal> elliott, that
16:45:05 <oerjan> kallisti: shockingly, no
16:45:15 <elliott> Vorpal: Units.
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:11 <kallisti> maybe it's conespearacy
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:07 <elliott> Vorpal: Why?
16:47:13 <Vorpal> elliott, why not?
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:47:47 <Vorpal> kallisti, that too
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:21 <kallisti> BECAUSE MORALS ETC
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:55 <elliott> Quite.
16:48:57 <Vorpal> oerjan, what website would that be?
16:49:06 <kallisti> .....
16:49:11 <elliott> google.com
16:49:11 <oerjan> Vorpal: do i look like i want to doom humanity?
16:49:12 <kallisti> NICE TRY.
16:49:17 <Vorpal> oerjan, yes
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:49:57 <kallisti> wat
16:50:05 <Vorpal> kallisti, do you know what website this is?
16:50:09 <kallisti> no
16:50:09 <elliott> no
16:50:11 <elliott> kallisti knows nothing
16:50:13 <kallisti> I bet i could find it though
16:50:13 <Vorpal> aww
16:50:15 <kallisti> quickly.
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:02 <kallisti> http://sourcereal.com/
16:53:04 <oerjan> elliott: maybe i can find room for you on my glorious spaceship
16:53:09 <elliott> kallisti: dammit
16:53:11 <elliott> we're all doomed now.
16:53:23 <Vorpal> oh I heard that mentioned some time ago. *shrug*
16:53:27 <elliott> lmao
16:53:34 <elliott> lmaooooooooo
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:38 <Vorpal> :P
16:53:52 <kallisti> the best part of the website
16:53:53 <kallisti> is
16:53:54 <Vorpal> it definitely doesn't seem to be related to what elliott said at all
16:53:56 <kallisti> ..actually I can't decide
16:53:59 <kallisti> I like the table though
16:54:22 <Vorpal> kallisti, yes it quite nice
16:54:26 <Vorpal> it is*
16:55:46 <elliott> kallisti: it's a chart, not a table!
16:55:47 <elliott> sheesh
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:22 * kallisti is a Gecko-like user agent.
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:41 <Vorpal> heh
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.
16:59:12 <Vorpal> right
16:59:30 <kallisti> yes
16:59:33 <kallisti> inded
16:59:51 <Vorpal> /^kal/s/e/ee/
17:00:04 <kallisti> wat
17:00:14 <Vorpal> kallisti, that is a plain sed expression
17:00:21 <Vorpal> what is the problem?
17:00:23 <kallisti> i don't grok sed.
17:00:28 <kallisti> I accept only perl.
17:00:36 <Vorpal> kallisti, on line starting with "kal" replace e with ee
17:00:41 <Vorpal> so <kallisti> inded
17:00:45 <kallisti> oh okay
17:00:48 <Vorpal> would become <kallisti> indeed
17:00:51 <kallisti> I see.
17:00:54 <kallisti> but no
17:00:56 <kallisti> it's inded
17:00:57 <Vorpal> kallisti, anyway I don't grok perl
17:01:00 <kallisti> sorry your regex is meaningful
17:01:06 <kallisti> less
17:01:08 <kallisti> meaningfulness
17:01:10 <kallisti> +l
17:01:12 <kallisti> ...
17:01:12 <kallisti> :)
17:01:15 <Vorpal> it is indeed
17:01:19 <Vorpal> :P
17:01:23 <kallisti> yes it is meaningfulless
17:01:24 <oerjan> lessfulmess
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:57 <Vorpal> not meaningfulless
17:01:58 <elliott> <Vorpal> so <kallisti> inded
17:02:00 <elliott> <Vorpal> would become <kallisti> indeed
17:02:03 <elliott> this is incorrect
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:18 <elliott> kallisti: uh
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:22 <Vorpal> elliott, it doesn
17:02:23 <elliott> ages ago
17:02:25 <Vorpal> doesn't* show them
17:02:27 <kallisti> elliott: oh.
17:02:31 <elliott> and implied he'd known about it for ages
17:02:34 <kallisti> elliott: I see.
17:02:49 <elliott> Vorpal: your statement was still incorrect
17:02:58 <Vorpal> elliott, how so?
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:09 <kallisti> elliott, master of tautology
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:10 <kallisti> Vorpal: cultural bias
17:05:31 <kallisti> gtb2 swedeen wiit your <>fullessness
17:05:31 <Vorpal> kallisti, definitely
17:05:39 <elliott> Vorpal: you are incorrect.
17:05:47 <Vorpal> elliott, I am not
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:14 <Vorpal> or anything like that
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:06:47 <Vorpal> nope
17:08:40 <kallisti> llklllkllklklkllklklllllkllklllllllkllllkllklllklkllklklkllllkklklklklklklklklllkkklkllklklkklllklklklk
17:08:46 <kallisti> challenge: make this into an esolang
17:08:54 <kallisti> er
17:08:56 <kallisti> an example program
17:08:57 <kallisti> rather
17:09:02 <kallisti> in an esolang
17:09:05 <kallisti> of your design
17:09:06 <Vorpal> easy
17:09:14 <Vorpal> kallisti, l and k are nop instructions
17:09:22 <kallisti> challenge: make it not shitty
17:09:26 <kallisti> gogogogo
17:09:28 <Vorpal> kallisti, tricky
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:11 <oerjan> elliott: oh right.
17:10:11 <elliott> hmm
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:10:26 <Vorpal> still shitty
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 <kallisti> oerjan: I njoted this aswel
17:11:52 <Vorpal> I think it just goes off into negative z right away
17:12:05 <Vorpal> or perhaps positive z
17:12:08 <oerjan> `log [z]zo.*sourcereal
17:12:10 <Vorpal> not completely sure
17:12:40 <HackEgo> No output.
17:12:49 <oerjan> ARGH, NO EVIDENCE
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:40 <elliott> updated howso
17:18:46 <kallisti> I don't know
17:18:54 * elliott already whois'd it ages ago
17:19:07 <kallisti> you clever dog.
17:20:43 <ais523> so, what is this sour cereal site?
17:21:02 <kallisti> THE BEST
17:21:24 <kallisti> it is a site with helpful information about sour cereal
17:21:35 <kallisti> also other cereals
17:21:40 <kallisti> such as cereal
17:21:55 <Vorpal> so ;5are on?
17:22:00 <Vorpal> colours are on*
17:22:05 <kallisti> yes
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:20 <Vorpal> test
17:22:26 <fizzie> Vorpal: It's an experiment. So far it has led to just one rainbow.
17:22:31 <Vorpal> fizzie, ah
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:44 <elliott> hi
17:22:49 <elliott> im giong to talk like this from now on
17:22:52 <Vorpal> well elliott found it
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 <elliott> Yes, it's comma.
17:23:04 <ais523> Vorpal: ^[[40m to ^[[47m
17:23:05 <Vorpal> test
17:23:07 <Vorpal> yes
17:23:07 <elliott> 9,9sup
17:23:09 <Vorpal> test
17:23:09 <elliott> oop
17:23:10 <elliott> s
17:23:11 <elliott> sup
17:23:12 <Vorpal> test
17:23:14 <ais523> and ^[[49m to go back to the default
17:23:20 <Vorpal> ais523, no for irc :P
17:23:24 * oerjan runs screaming under a rock
17:23:26 <Vorpal> ais523, not for terminal
17:23:28 <elliott> The GREEN SUN.
17:23:32 <elliott> Yay, I gots it right.
17:23:35 <Vorpal> oerjan, heh
17:23:37 <ais523> elliott: ah you OK?
17:23:43 <elliott> ais523: Ah I OK.
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:41 * elliott only wants it for 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:04 <Vorpal> indeed
17:25:30 <fizzie> Hey, how do I configure my client to use a specified color by default for all messages.
17:25:34 <kallisti> DON'T FORGET UNDERLINE
17:25:38 <elliott> TEST
17:25:42 <Vorpal> kallisti, oh right
17:25:43 <elliott> This will show as italic to ais523.
17:25:48 <kallisti> fizzie: /help quit
17:25:51 <elliott> kallisti: What code's that again?
17:25:54 <elliott> kallisti: */quit help
17:25:58 <ais523> elliott: indeed
17:26:03 <Vorpal> test
17:26:04 <kallisti> elliott: I don't actually know but in irssi it's C-_
17:26:04 <Vorpal> test
17:26:06 <Vorpal> test
17:26:07 <Vorpal> ah
17:26:10 <ais523> and this shows as italic to me, but probably not anyone else
17:26:13 <elliott> hi
17:26:14 <Vorpal> http://google.com
17:26:15 <Vorpal> heh
17:26:18 <elliott> lol
17:26:21 <elliott> that's uncanny
17:26:22 <ais523> underline like this?
17:26:29 <elliott> `addquote <Vorpal> http://google.com
17:26:32 <HackEgo> 777) .18.<.Vorpal.>.. .2.http://google.com
17:26:35 <elliott> aw :(
17:26:36 -!- incomprehensibly has joined.
17:26:37 <elliott> that was quotable!
17:26:40 <elliott> `delquote 777
17:26:42 <Vorpal> elliott, it was
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:26:58 <elliott> heh
17:27:02 <Vorpal> hah
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:26 <kallisti> tasteful colors are good
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:38 <Vorpal> grey
17:27:55 <kallisti> some colors are the worst colors ever invented
17:27:57 <kallisti> oops
17:28:02 <kallisti> some colors are the worst colors ever invented
17:28:03 <Vorpal> kallisti, teal?
17:28:09 <Vorpal> err, light teal?
17:28:09 <kallisti> no bright fucking cyan
17:28:13 <kallisti> my least favorite color.
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:34 <kallisti> no
17:28:44 <ais523> aww :(
17:28:47 <kallisti> my text is like my soul
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:43 <elliott> test
17:29:49 <kallisti> elliott: well yes, but... that's not the point.
17:29:50 <ais523> 6test?
17:29:51 <elliott>
17:29:53 <Vorpal> elliott, light grey on white?
17:29:53 <kallisti> the point is that it's hard to read
17:29:54 <elliott>
17:30:03 <elliott> kallisti: not for me
17:30:05 <Vorpal> that was no text at all
17:30:06 <ais523> hey, no fair sending empty messages
17:30:11 <elliott> they're not empty
17:30:11 <ais523> because Freenode doesn't let me
17:30:14 <elliott> they contain a single control character
17:30:17 <elliott>
17:30:17 <ais523> ah, I see
17:30:21 <Vorpal> ooh time for...
17:30:21 <kallisti> elliott: that's because you either have a) youthful eyes b) a non-sensible background color
17:30:25 <elliott> kallisti: b
17:30:30 <elliott> but also a
17:30:37 <Vorpal> -e ASCII BELL!
17:30:39 <Vorpal> err
17:30:40 <elliott> wow
17:30:41 <elliott> that
17:30:42 <elliott> that worked
17:30:43 <kallisti> lol
17:30:44 <elliott> how
17:30:48 <elliott> that
17:30:49 <Vorpal> elliott, it didn't
17:30:52 <elliott> actually made my pc speaker beep Vorpal
17:30:54 <elliott> seriously
17:30:55 <Vorpal> elliott, it did?
17:30:57 <Vorpal> lol
17:30:58 <elliott> well
17:30:58 <elliott> try it again
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:12 <elliott>
17:31:13 <Vorpal> <Vorpal> -e ASCII BELL!
17:31:14 <elliott> yep
17:31:15 <elliott> it works
17:31:16 <kallisti> I have system alert turned off like any sane person.
17:31:17 <elliott> on xchat
17:31:18 <Vorpal> why
17:31:19 <Vorpal> the fuck
17:31:21 <elliott>
17:31:22 <ais523> kallisti: background colors lead to a flamewar over AceHAck
17:31:23 <elliott> aw
17:31:24 <elliott> only one per line
17:31:31 <elliott>
17:31:31 <elliott>
17:31:31 <elliott>
17:31:31 <elliott>
17:31:31 <elliott>
17:31:33 <elliott> beautiful
17:31:33 <elliott> ok
17:31:35 <Vorpal> elliott, it doesn't beep me
17:31:36 <elliott> i'lls top now
17:31:38 <ais523> which I've potentially fixed via an option
17:31:40 <Vorpal> just fyi
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:31:53 <elliott> ais523: none
17:31:55 <kallisti> hahahahahaha nickping sounds
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:06 <kallisti> also nickcoloring.
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:01 <elliott> what colour am i
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:05 <Vorpal> elliott, blue
17:33:08 <ais523> elliott: purple
17:33:16 <elliott> wwhy
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:38 <Vorpal> ais523, white
17:33:46 <ais523> so your own comments are grey on white? seriously?
17:33:51 <Vorpal> ais523, dark grey
17:33:52 <kallisti> hi
17:33:56 <Vorpal> ais523, it is almost default xchat
17:34:07 <ais523> %AACTION test%A
17:34:12 <ais523> hmm
17:34:14 <Vorpal> ais523, nope
17:34:18 <ais523> % letter often means control-letter on this client
17:34:19 <Vorpal> you want \001
17:34:22 <Vorpal> ah
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:33 <Vorpal> right
17:34:34 <ais523> I was just wondering if my client would translate that into one
17:35:01 * oerjan tests
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:10 <kallisti> > text "\EXT3hi"
17:36:11 <lambdabot> <no location info>:
17:36:11 <lambdabot> lexical error in string/character literal at chara...
17:36:23 <elliott> fizzie: Brainbow.
17:36:33 <fizzie> You brainbower.
17:36:46 <Vorpal> elliott, watch out for the zombies then
17:36:48 <fizzie> Sounds a brony term.
17:36:48 <ais523> hmm, I am almost convinced there's a website out there somewhere that does rainbow-coloured phpBB code
17:36:57 <kallisti> > text "\ETX3hi"
17:36:58 <lambdabot> 3hi
17:37:00 <kallisti> :(
17:37:06 <kallisti> it's like Cale KNOWS
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:15 <kallisti> I was very well-liked.
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:27 <elliott> ...
17:38:32 <elliott> well that stealth beep backfired
17:38:42 <Vorpal> elliott, heh
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:08 <kallisti> > text '\b'
17:39:09 <lambdabot> Couldn't match expected type `[GHC.Types.Char]'
17:39:09 <lambdabot> against inferred ty...
17:39:14 <kallisti> > text "\b"
17:39:17 <Vorpal> least someone spam them with it
17:39:23 <kallisti> > text "hi\b"
17:39:23 <lambdabot> hi
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:30 <fungot> I'm so blue
17:40:37 <elliott> Vorpal: i know that
17:40:37 <Vorpal> heh
17:40:41 <kallisti> > text "hi\a"
17:40:42 <lambdabot> hi
17:40:54 <elliott> fizzie: Careful, you'll attract plasmoids.
17:41:06 <Vorpal> elliott, eh?
17:41:13 -!- incomprehensibly has quit (Quit: Leaving.).
17:41:17 <Vorpal> this likely looks horrible?
17:41:19 <Vorpal> yes
17:41:41 <Vorpal> is that red on orange?
17:41:43 <Vorpal> I think it is
17:41:44 <elliott> beautiful
17:41:56 <Vorpal> 4,8 anyway
17:42:55 <Vorpal> elliott, THIS MESSAGE IS OF GREAT IMPORTANCE!!!
17:43:01 <Vorpal> ouch
17:43:23 <elliott> fizzie must be loving this experiment.
17:43:32 <Vorpal> come on it is for novelty still
17:43:46 <elliott> More like LOLVELTY.
17:43:50 <Vorpal> it is going to pass
17:44:01 <Vorpal> anyway red,bold,underline is horrible
17:44:35 <kallisti> How could I possibly make things worse
17:44:43 <kallisti> hm
17:44:54 <Vorpal> bbl food
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:39 <elliott> beautiful
17:45:40 <ais523> just bold random letters, and also capitalize random letters
17:45:44 <elliott> do links work like that
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:05 <elliott> ais523: fail
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:00 <kallisti> no
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:30 <elliott> god bless libertarians
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:51:47 <kallisti> Christmas themed.
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:53 <iconmaster> testing with the ^K9Green Sun
17:52:59 <kallisti> good job. go forth and conquer.
17:53:01 <iconmaster> gah powsh silly thing
17:53:03 <kallisti> and get banned in a lot of channels.
17:53:05 <elliott> <elliott> The GREEN SUN.
17:53:07 <elliott> WAY AHEAD OF YOU MAN
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:35 <elliott> ais523: OK, go on
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:08 <iconmaster> there?
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:34 <elliott> do you mean
17:54:37 <kallisti> ಠ_ಠ
17:54:42 <elliott> C = insert X between A and B which gives the resulting line {C,C}?
17:54:43 <ais523> elliott: right, sorry
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:30 <elliott> ais523: wait, stop
17:55:31 <elliott> changes it where?
17:55:33 <elliott> globally?
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:53 <elliott> *that
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:00 <elliott> is that possible?
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:17 <elliott> OK, fair enough
17:56:20 <fizzie> ^def rainbow bf +++>>>>,[<<<<.>[->+>+<<]>>-[-[-[-[-[-[-[<[-]>[-]]]]]]]]<[-<+>>+<]<+>>++++++++++++++++++++++++++++++++++++++++++++++++++.[-]>.,]
17:56:20 <fungot> Defined.
17:56:24 <fizzie> save
17:56:26 <fizzie> ^save
17:56:26 <fungot> OK.
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:43 <ais523> no
17:56:55 <ais523> if you just do insertions, it's {a,a}, {b,b}, {c,c}, …
17:56:58 <elliott> ah, right
17:57:08 <elliott> I suppose my problem is that I have no idea what the tuple is supposed to mean
17:57:10 <elliott> what does it 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:39 <iconmaster> woah
17:57:41 <kallisti> ^rainbow WHAT HAVE YOU DONE
17:57:41 <fungot> WHAT HAVE YOU DONE
17:57:51 <fizzie> I done good.
17:57:56 <elliott> It's not very rainbewy.
17:57:57 <ais523> the important insight is that you care about different things when checking after or before a line
17:58:01 <kallisti> I'm agree
17:58:01 <elliott> Well, I suppose it's the best you can do.
17:58:03 <elliott> We need IRC256.
17:58:07 <kallisti> with fizzle and tellot
17:58:12 <elliott> ais523: hmm, OK
17:58:13 <fizzie> It doesn't do numbers larger than 9, that's a problem too.
17:58:14 <kallisti> both
17:58:18 <kallisti> time as same it
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:20 <iconmaster> ...
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:00 <iconmaster> E...
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:35 <elliott> iconmaster: confirmed
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:01:56 <kallisti> iconmaster: which client?
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:17 <ais523> elliott: hmm, right
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:39 <iconmaster> Bersirc
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:44 <Vorpal> I never heard of it
18:02:57 <iconmaster> I picked it from the top of wikipedia's irc client list arbitrarily
18:03:05 <kallisti> good choice
18:03:10 <iconmaster> It was the first free windows client
18:03:14 -!- incomprehensibly has joined.
18:03:22 <iconmaster> i wasnt picky
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:03:48 <kallisti> and come out on top.
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:20 <ais523> elliott: indeed
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:45 <elliott> *<<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:17 <elliott> (sometimes)
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:02 <ais523> haha
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:00 <ais523> yes, I think
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:02 <ais523> haha
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:00 <elliott> That's pretty rainbewy.
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:23 <fungot> Defined.
18:14:26 <fizzie> ^save
18:14:26 <fungot> OK.
18:14:27 <elliott> fizzie: You should add input to ^def ul things, have we mentioned? :p
18:14:28 <fizzie> For posteriority.
18:14:32 <fizzie> You have.
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 <ais523> ^rainbow2
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:39 <elliott> :-|
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:20:57 <elliott> fizzie: ,/..?
18:21:02 <elliott> Oh.
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:19 <kallisti> :):):):):>PK::;
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:48 <elliott> ais523: I don't see why
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:25 <elliott> and yes, I did
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 <ais523> and so on
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:13 <elliott> ais523: nah
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:26 <fungot> Defined.
18:26:29 <fizzie> ^save
18:26:29 <fungot> OK.
18:26:33 <elliott> fizzie: Ah.
18:26:34 <fizzie> Well, it's nicely #esoteric-specific now.
18:26:36 <ais523> elliott: right
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:04 <elliott> Oh, right.
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:27:52 <kallisti> ..
18:27:55 <elliott> ais523: even invalid code
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:35 <ais523> "it" = ?
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:31:49 <elliott> kallisti: no
18:32:02 <elliott> kallisti: your algorithm looks like it sucks though
18:32:29 <ais523> elliott: ah, right
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:30 <elliott> and (d) elegant :P
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:38 <ais523> hmm, OK
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:35:34 <ais523> indeed
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:42:49 <elliott> hmm, 100 over 5.3
18:43:55 * oerjan wonders what elliott's numbers mean
18:44:51 <elliott> oerjan: sourcereal units
18:44:58 <oerjan> aha
18:45:45 <elliott> I have to eat that many sour cereals in that many hours.
18:45:51 <elliott> Cerelae.
18:46:28 <oerjan> how nice
18:49:35 <oerjan> cerebella
18:51:17 <elliott> yes.
18:54:10 <kallisti> elliott: John Zorn
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:55:14 <oerjan> very succinct
18:56:05 <oerjan> kthx the language
18:56:07 <elliott> ais523: talking to yourself
18:57:26 <oerjan> kwantum theoretiska xenoprogrammerand
18:59:16 <elliott> ais523: q.e.zepto
19:03:38 <kallisti> ais523: obviously you don't appreciate the wonderfulness of words.pl
19:03:46 <kallisti> `words --eng-gb 25
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:37 <kallisti> DEAL WITH IT.
19:04:38 <ais523> which is good, it means it's fitting the language pretty well
19:04:47 <ais523> although "kvonober"? seriously?
19:04:52 <kallisti> best word.
19:05:01 <kallisti> you don't appreciate the beauty of non-existent words.
19:05:14 <kallisti> diciplik is the best.
19:05:19 <ais523> it's more, words in British English tend not to start with kv
19:05:43 <kallisti> foolish knave
19:05:49 -!- oerjan has set topic: magi matio plakestic pawn jugliabita anked nium posin winita | http://codu.org/logs/_esoteric/.
19:06:28 <kallisti> `words --eng-us 25
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:49 <kallisti> boobleritutsca
19:06:59 <kallisti> you can tell it's obviously american english.
19:07:08 <kallisti> like serichly.
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:25 <Mathnerd314> ban me please
19:07:28 <Mathnerd314> a;;;;klf;;dfjjjjkzjk.dvjkvkljvz;zvjk;z
19:07:29 <boobleritutsca> hi
19:07:33 <kallisti> Mathnerd314: why so monbaste?
19:07:34 <Mathnerd314> vzjkvzkvjvklvzfj;jzfv;fv
19:07:36 <Mathnerd314> vvzvz;lvkfjkzfvk;jvvf
19:07:37 <boobleritutsca> what are you doing
19:07:38 <Mathnerd314> 'fvvfvzfvfkl;vjzfvf
19:07:40 <Mathnerd314> zvfzvvj;jkvzllj;vzv;vd
19:07:42 <Mathnerd314> vvkljl;fjkl;ad;dkajdf
19:07:42 <boobleritutsca> :D
19:07:45 <Mathnerd314> It's my new programming language
19:07:48 <Mathnerd314> I'm trying it out
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:22 <Mathnerd314> it works on humans...
19:08:29 <boobleritutsca> oerjan: nooo
19:08:41 <Mathnerd314> ssddddsdsdsdsdsdsddssdsdsddsssdsdsddssssssdsdsssdsdsdsddsdsdssdsddsdsdssddssddsdssddsdsdssdsddsdsdsdssddssdsddssddssdsddsdsdssddsdssddsdsdsdsdsdssddsdsdsdsdssddsdsdsdsdssddsddsds
19:08:42 <boobleritutsca> don't give in to the temptation.
19:08:42 <Mathnerd314> sdsdsddddddddddddddddddddsdssd
19:08:44 <boobleritutsca> +q instead of +b
19:08:46 <Mathnerd314> boobleritutsca: find me!
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:11 <boobleritutsca> hi
19:09:19 <Mathnerd314> so are you female?
19:09:25 <boobleritutsca> totally
19:09:34 <Mathnerd314> then let's get together
19:09:47 <boobleritutsca> my memory is rusty, but i seem to recall you being less obviously stupid last time you were here
19:09:47 <Mathnerd314> I'm in Colorado Springs, Colorado, 80907
19:09:49 <boobleritutsca> are you lament
19:10:01 <Mathnerd314> nope. Allan Gardner is my name
19:10:17 <Mathnerd314> I think I have to prepare the world for the next revolution
19:10:35 <boobleritutsca> hmm, you're usingt the same isp
19:10:49 <Mathnerd314> seriosuly?
19:10:56 <Mathnerd314> maybe Ineed to find them
19:10:58 <Mathnerd314> *him
19:11:07 <oerjan> but Mathnerd314 has been here for ages
19:11:07 <boobleritutsca> no i mean
19:11:10 <boobleritutsca> as you were the last time you were here
19:11:12 <boobleritutsca> also, are you drunk
19:11:18 <coppro> fnord
19:11:21 <Mathnerd314> yes, drunk and high and immortal
19:11:25 <boobleritutsca> and stupid
19:11:35 <Mathnerd314> yeah... you get one choice
19:11:35 -!- iconmaster[1] has joined.
19:11:42 <Mathnerd314> *not immortal
19:11:55 <Mathnerd314> I chose intelligence
19:12:07 <boobleritutsca> Mathnerd314: you got ripped off
19:12:08 <Mathnerd314> and the world to me is a cold and forbidding pplace
19:12:13 <Mathnerd314> yeah
19:12:18 <boobleritutsca> coppro: are you responsible for this
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:47 <Mathnerd314> hint: it's me
19:12:53 <boobleritutsca> `quote Mathnerd314
19:12:56 <HackEgo> 134) <Mathnerd314> Gregor-P: I don't think lambda calculus is powerful enough
19:13:01 <kallisti> lol
19:13:14 <ais523> `quote
19:13:15 <ais523> `quote
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:17 <ais523> `quote
19:13:18 <ais523> `quote
19:13:20 <ais523> `quote
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:13:41 <boobleritutsca> rip HackEgo
19:13:42 <boobleritutsca> killed by overwork
19:13:58 <kallisti> `quote Mathnerd314
19:14:01 <kallisti> `quote Mathnerd314
19:14:02 <kallisti> `quote Mathnerd314
19:14:03 <boobleritutsca> `quote returns all results
19:14:05 <boobleritutsca> you idiot
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:35 <kallisti> boobleritutsca: ha
19:14:37 <kallisti> I remember that one.
19:14:37 <Mathnerd314> that's what I'm doing and it's working
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> No output.
19:14:56 <HackEgo> 134) <Mathnerd314> Gregor-P: I don't think lambda calculus is powerful enough
19:14:57 <iconmaster[1]> `quote iconmaster
19:15:00 <HackEgo> No output.
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:10 <ais523> I like 289
19:15:16 <Mathnerd314> so I made the universe.
19:15:16 <ais523> boobleritutsca: opinion?
19:15:21 <Mathnerd314> it takes care of me
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:15:51 <boobleritutsca> 669 or 419 if you must i guess :P
19:15:57 <boobleritutsca> Mathnerd314: how boobler are you
19:16:07 <Mathnerd314> very, but not quite perfect
19:16:12 <boobleritutsca> beep
19:16:15 <boobleritutsca> beep beep beep
19:16:16 <kallisti> `words --eng-us --eng-gb --canadian 25
19:16:16 <iconmaster> `quote
19:16:19 <boobleritutsca> ^rainbo2
19:16:20 <boobleritutsca> ^rainbow2
19:16:20 <fungot> ...too much output!
19:16:23 <boobleritutsca> ^rainbow2
19:16:23 <fizzie> ais523: It's also a cheat. (The second comment is stolen.)
19:16:23 <boobleritutsca> ^rainbow2
19:16:23 <fungot> ...too much output!
19:16:23 <boobleritutsca> ^rainbow2
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:27 <boobleritutsca> yay two rainbows adjacently
19:16:36 <Mathnerd314> fungot: excellent output
19:16:36 <fungot> Mathnerd314: you! take! we find! and leene and the masamune!?
19:16:37 <ais523> fizzie: who cares
19:16:41 <ais523> although thanks for owning up
19:16:48 <boobleritutsca> fizzie: you will be executed
19:16:51 <ais523> `delquote 419
19:40:15 -!- esowiki has joined.
19:40:16 -!- glogbot has joined.
19:40:17 <boobleritutsca> ais523: I'll even talk about my language and/or sg
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:39 <boobleritutsca> ais523: that's why it'd be a ragepat
19:40:40 <Gregor> lol
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:40:56 <TheLittleOne> how many quotes are there?
19:40:58 <boobleritutsca> ais523: are you deliberately misreading me?
19:41:00 <boobleritutsca> TheLittleOne: 777
19:41:04 <boobleritutsca> `qc
19:41:05 <TheLittleOne> got it
19:41:08 <HackEgo> 777 quotes
19:41:10 -!- ais523 has quit (Quit: what about this for a ragepart?).
19:41:10 <Gregor> Good lawd, all these newbzers.
19:41:11 <TheLittleOne> where is 777?
19:41:15 <boobleritutsca> `quote 777
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:25 <boobleritutsca> Gregor: no, exactly one newbzer
19:41:30 <boobleritutsca> who is also not a newbzer
19:41:37 <boobleritutsca> but someone coming back drunk or something
19:41:38 <Gregor> Ah.
19:41:43 <TheLittleOne> boobleritutsca: I don't want that. I want to read the 777 other quotes
19:41:50 <boobleritutsca> `pastequotes
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:41:56 <boobleritutsca> by doing
19:41:57 <boobleritutsca> `quote 1
19:41:58 <boobleritutsca> `quote 2
19:41:58 <boobleritutsca> `quote 3
19:41:59 <boobleritutsca> etc.
19:42:00 <HackEgo> 1) <Aftran> I used computational linguistics to kill her.
19:42:18 <TheLittleOne> `quote 2
19:42:21 <HackEgo> 2) <Slereah> EgoBot just opened a chat session with me to say "bork bork bork"
19:42:22 <kallisti> loool
19:42:25 <TheLittleOne> `quote 3
19:42:27 <TheLittleOne> `quote 4
19:42:29 <TheLittleOne> `quote 5
19:42:31 <TheLittleOne> `quote 6
19:42:33 <TheLittleOne> `quote 7
19:42:34 <Gregor> Oh god why
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:37 <boobleritutsca> oerjan: this is what we refer to as "entrapment".
19:42:42 <boobleritutsca> oerjan: you may now reap the spoils
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:02 <boobleritutsca> Gregor: i like how HackEgo is really slow
19:43:12 <boobleritutsca> `quote 419
19:43:14 <Gregor> boobleritutsca: So does your mom.
19:43:17 <TheLittleOne> `quote 8
19:43:18 <boobleritutsca> Gregor: tru
19:43:19 <TheLittleOne> `quote 9
19:43:20 <TheLittleOne> `quote 10
19:43:22 <TheLittleOne> `quote 11
19:43:23 <TheLittleOne> `quote 12
19:43:25 <TheLittleOne> `quote 13
19:43:26 <HackEgo> 419) <elliott> It's a Toy Story character, you uncultured fuck.
19:43:27 <TheLittleOne> `quote 14
19:43:29 <TheLittleOne> `quote 15
19:43:31 <TheLittleOne> `quote 16
19:43:32 <TheLittleOne> `quote 17
19:43:33 <boobleritutsca> oerjan: cough.
19:43:35 <TheLittleOne> `quote 18
19:43:36 <TheLittleOne> `quote 19
19:43:37 <Gregor> >_<
19:43:38 <TheLittleOne> `quote 20
19:43:39 <boobleritutsca> fizzie: SOME SPOILS NEED REAPING HERE
19:43:40 <TheLittleOne> `quote 21
19:43:41 <TheLittleOne> `quote 22
19:43:43 <TheLittleOne> `quote 23
19:43:45 <TheLittleOne> `quote 24
19:43:47 <TheLittleOne> `quote 25
19:43:49 <TheLittleOne> `quote 26
19:43:51 <TheLittleOne> `quote 27
19:43:52 <Gregor> I'm about to disco hackego X_X
19:44:14 <TheLittleOne> `quote 28
19:44:14 <TheLittleOne> `quote 29
19:44:14 <TheLittleOne> `quote 30
19:44:14 <boobleritutsca> Gregor: noooo
19:44:14 <TheLittleOne> `quote 31
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:14 <TheLittleOne> Gregor: 10 minutes? :-)
19:44:29 <kallisti> boobleritutsca: we should make hackego not slow
19:44:40 <boobleritutsca> kallisti: i did
19:44:44 <boobleritutsca> Gregor wanted me to test the changes MYSELF.
19:44:54 <TheLittleOne> boobleritutsca: let me test.
19:44:58 <boobleritutsca> TheLittleOne: ok go ahead
19:45:02 <boobleritutsca> to test just spam the channel
19:45:03 <boobleritutsca> with anything
19:45:07 <boobleritutsca> and we can measuer HackEgo's reaction time
19:45:08 <boobleritutsca> remotely
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:33 <boobleritutsca> by committee of 1
19:54:34 -!- esowiki has joined.
19:54:34 -!- HackEgo has joined.
19:54:54 <kallisti> !perl print "fizzie: \a\n";
19:55:00 <Gregor> I will kill you all.
19:55:01 <kallisti> oh
19:55:05 <kallisti> Gregor: hi
19:55:07 <kallisti> <3
19:55:22 <ais523> Gregor: aww, why?
19:55:28 <Gregor> For laffs?
19:55:43 <kallisti> `words --swedish --eng-all 25
19:56:01 <boobleritutsca> http://www.cl.cam.ac.uk/teaching/1011/ConceptsPL/ <-- plankakul!
19:56:04 <boobleritutsca> *kalkul
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:25 <boobleritutsca> it obviously wasn't
19:56:31 <Gregor> boobleritutsca: Is this name a `words name?
19:56:35 <boobleritutsca> Gregor: yes
19:56:42 <oerjan> entrepmant, i said
19:56:56 <kallisti> lankwand
19:57:00 <kallisti> good word
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:58:10 <SimonDectro> Y'know who should really have ops?
19:58:12 <SimonDectro> Gregor.
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:34 <boobleritutsca> hey TheLittleOne, are you going to spam more numbers?
19:59:35 -!- iconmaster has quit (Ping timeout: 240 seconds).
19:59:43 * boobleritutsca asks the tough questions
19:59:45 <ais523> fizzie: I'd have kicked without banning if I were there at the time
20:00:07 <boobleritutsca> hmm, 80 over 4
20:01:17 <SimonDectro> Pre-offense kickbannery is the best.
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:26 <SimonDectro> Kickban.
20:01:41 <boobleritutsca> oerjan: who's talking about inaction?
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:37 <ais523> it isn't
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:18 <boobleritutsca> the arbitrary number?
20:03:31 <oerjan> 4.
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:41 <boobleritutsca> heh
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:05:37 <oerjan> curses!
20:06:21 -!- cheater has quit (Ping timeout: 255 seconds).
20:09:48 <boobleritutsca> TheLittleOne: hi
20:10:04 <kallisti> so basically
20:10:10 <kallisti> to remain on channel indefinitely
20:10:14 <kallisti> all TheLittleOne has to do
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:04 <oerjan> precisely! er wait...
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:07 <ais523> *questions
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:34 <boobleritutsca> kallisti: oh, no no, not you, you're just stupid
20:13:35 <SimonDectro> Let's ban jix.
20:13:38 <SimonDectro> He hasn't talked in FOREVER.
20:13:41 <boobleritutsca> SimonDectro: ++
20:13:41 <SimonDectro> Friggin' idler.
20:13:49 <ais523> or alternatively, a bag filled half with dicks, and half with, say, polynomials
20:13:50 <boobleritutsca> Also TeruFSX_.
20:13:52 <boobleritutsca> What is he hiding?
20:13:58 <boobleritutsca> ais523: that's my bag, sorry
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:14:58 <Ngevd> Hello
20:15:00 <ais523> oerjan: hmm, has clog ever posted?
20:15:01 <SimonDectro> Let's ban Ngevd.
20:15:04 <kallisti> there is literally no way to fit a person in your hand.
20:15:05 <Ngevd> Aaaah!
20:15:06 <ais523> s/oerjan/kallisti/
20:15:06 <boobleritutsca> SimonDectro: ++
20:15:08 <SimonDectro> What kind of person joins while we're talking about banning.
20:15:16 <boobleritutsca> Ngevd: quick, spam numbers
20:15:21 <boobleritutsca> it's the best way to avoid getting banned
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:27 <boobleritutsca> proven fact(TM)
20:15:29 <iconmaster> LIike 4, 4 is a good number
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:15:42 <SimonDectro> he used poor grammar.
20:15:43 <SimonDectro> Ban.
20:15:48 <boobleritutsca> i'm lament
20:15:50 <SimonDectro> Uh, ignore my lack of caps.
20:15:51 <boobleritutsca> SimonDectro is aardappel
20:15:57 <boobleritutsca> ais523 is iconmaster
20:16:01 <boobleritutsca> and kallisti is a dog
20:16:16 -!- zzo38 has joined.
20:16:16 <kallisti> what.
20:16:19 <ais523> boobleritutsca: actually, I'm callforjudgement
20:16:21 -!- ais523 has changed nick to callforjudgement.
20:16:22 <boobleritutsca> zzo38 is zzo38
20:16:37 <callforjudgement> boobleritutsca: to be fair, it's normally reasonably obvious whether any given person is zzo38 or not
20:16:42 <boobleritutsca> callforjudgement: yes, but callforjudgement is god
20:16:45 <iconmaster> Wait, I forgot who I am. WHOOPS
20:17:11 * kallisti is fungot, obviosuly
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:20 <iconmaster> (I'm LORD ENGLISH)
20:17:21 <callforjudgement> ^style
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:17:58 <callforjudgement> wait no, that's lord british
20:18:20 <iconmaster> ehh, he still can be killed by spacetime shenanigans
20:18:38 <iconmaster> I think the exact same rule applies
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:21 <callforjudgement> hmm, http://codex.ultimaaiera.com/wiki/Killing_Lord_British
20:19:25 <callforjudgement> that article is always fun to read
20:19:29 <callforjudgement> at least, both times I've read it
20:19:38 -!- cheater has joined.
20:19:57 <kallisti> cup
20:20:05 <iconmaster> IS THE BEST WORD
20:20:23 <kallisti> `words --help
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:46 <colloinkgravisom> kallisti: did you forget how to use your own program
20:20:48 <colloinkgravisom> oh god
20:20:56 <callforjudgement> iconmaster: incorrect
20:20:58 <callforjudgement> `quote unto
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:04 <callforjudgement> it's not on the list
20:21:33 <fizzie> Fear and Loathing in Forge of Virtue has some good points too.
20:21:35 * colloinkgravisom is Colloinkgravisom of Hexham
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:21:59 <colloinkgravisom> hmm, oh dear, 80 in 3.5
20:22:45 <callforjudgement> sadly, I thought that there was some glitch where he was killed using an AI race condition
20:22:47 <callforjudgement> but apparently not
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:21 <kallisti> er
20:23:22 <kallisti> --and
20:23:26 <kallisti> >_>
20:23:43 <iconmaster> How about an --all option
20:23:49 <colloinkgravisom> `words --finnish -o 40
20:23:52 <HackEgo> tyrmälleensanissämmellaanisevistaansaimmasta
20:23:55 <colloinkgravisom> fizzie:
20:23:56 <kallisti> iconmaster: that's a possibility yes.
20:24:17 <kallisti> `words --finnish -o 0 25
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:24:31 <kallisti> honestly I think...
20:24:34 <kallisti> -4 is pretty good.
20:25:16 <kallisti> unless finnish words are just obscenely long.
20:25:21 <kallisti> `words -o 0 25
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:42 <colloinkgravisom> hickeductiver
20:25:51 <kallisti> `words -d -o 0 25
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:11 <kallisti> 0 is pretty good actually.
20:26:26 <colloinkgravisom> xxxiv
20:26:27 <kallisti> of course to actually find the right target offset
20:26:43 <Ngevd> `words --help
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:48 <colloinkgravisom> `word 50
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:06 <Ngevd> ow
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:30 <iconmaster> `words --manx 5
20:27:33 <HackEgo> shespaard cooid eddyr shal snught
20:27:36 <zzo38> Why does everyone change their name
20:27:47 <colloinkgravisom> zzo38: capitalism
20:27:51 -!- iconmaster has changed nick to aniidonflamatoj.
20:27:55 <colloinkgravisom> another victim
20:28:00 -!- Ngevd has changed nick to marapreykhus.
20:28:03 <colloinkgravisom> rip
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:18 <colloinkgravisom> marapreykhus: that's a nicer nick than ngevd btw
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:36 <colloinkgravisom> `macro
20:28:42 <HackEgo> MG'S
20:28:43 <hustic> we're all sheeple after all
20:28:51 <hustic> `words -d -o 0 25
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:28:58 <colloinkgravisom> mg's
20:29:10 <colloinkgravisom> meagian and apowed are nice
20:29:14 <colloinkgravisom> as are seniservin, tarlson
20:29:15 <hustic> hm these results are less 0
20:29:18 <colloinkgravisom> good nicks guys!!
20:29:36 <hustic> WOW RANDOMNESS SURE IS RAAAAANDOM
20:29:49 <aniidonflamatoj> go words
20:29:51 <callforjudgement> hustic: doesn't that /imply/ that they're less than 3?
20:30:03 <hustic> what
20:30:05 <hustic> sure.
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:30:35 <aniidonflamatoj> I agree
20:30:43 <colloinkgravisom> #ubuntu
20:30:46 <aniidonflamatoj> I mean, I'm confusing myself
20:30:53 <marapreykhus> #ubuntu ++
20:30:59 <marapreykhus> Shall I?
20:31:02 <aniidonflamatoj> ok I'll join
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:38 <kallisti> -words --help
20:31:41 <kallisti> `words --help
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:51 <colloinkgravisom> `words --russian 10
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:32 <colloinkgravisom> rinnish
20:32:33 <HackEgo> parottelemmentu pädeht неумоло коэтов tumalen вловцы omnittona merkin kurler приваем
20:32:41 <colloinkgravisom> heymono
20:32:42 <zzo38> Ngevd: Comfuse people with what?
20:32:44 <marapreykhus> marapreykhus is going to be my nick for I while
20:32:52 <colloinkgravisom> zzo38: there is no ngevd here
20:33:12 <zzo38> elliott: Well, there is supposed to
20:33:23 <colloinkgravisom> :t random
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:09 <marapreykhus> `words -eng-gb 5
20:34:11 <HackEgo> Unknown option: e \ Unknown option: n \ Unknown option: g \ Unknown option: gb
20:34:13 <marapreykhus> `words --eng-gb 5
20:34:18 <HackEgo> elon incore and tur foxoa
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:39 <HackEgo> Killed
20:34:41 <kallisti> :(
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:34:51 <fizzie> E2BIG
20:35:07 <HackEgo> Killed
20:35:16 <marapreykhus> `words --italian 10
20:35:19 <HackEgo> fraggiritte appostrasse ammo sfiosizi avviasti svità piaccandichi manano rimodessasse delico
20:35:22 <iconmaster> yo fungot
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:28 <iconmaster> Never gets old.
20:35:30 <zzo38> Try running it on your own computer instead if that would help better
20:35:30 <marapreykhus> ^style
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 <marapreykhus> ^style ct
20:35:40 <fungot> Selected style: ct (Chrono Trigger game script)
20:35:40 <kallisti> zzo38: yes it would.
20:35:57 <iconmaster> ooooooh it has a homestuck setting
20:36:04 <iconmaster> ^style homestuck
20:36:04 <fungot> Selected style: homestuck (Homestuck pages 1901-4673)
20:36:09 <iconmaster> fungot!
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:11 <fungot> Not found.
20:36:30 <marapreykhus> ^style iwcs
20:36:30 <fungot> Selected style: iwcs (Irregular Webcomic scripts)
20:36:32 <marapreykhus> Fungot
20:36:40 <fizzie> Fungot cares about capital letters.
20:36:47 <marapreykhus> Fungot fungot
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:02 <marapreykhus> die fittest people of nigeria
20:37:06 <iconmaster> Fungot apparently likes nigeria
20:37:21 <iconmaster> ^style c64
20:37:21 <fungot> Selected style: c64 (C64 programming material)
20:37:25 <iconmaster> fungot
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 <iconmaster> ^style
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 <iconmaster> ^style nethack
20:38:17 <fungot> Selected style: nethack (NetHack 3.4.3 data.base, rumors.tru, rumors.fal)
20:38:17 <colloinkgravisom> fizzie: It's zzo38's series of games.
20:38:22 <iconmaster> fungot
20:38:22 <fungot> iconmaster: they say that a scroll of mail to mage of yendor/ level 35/ dungeon.
20:38:24 <colloinkgravisom> I support this call for a style of it.
20:38:47 <iconmaster> fungot is so fun
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 <iconmaster> ^style fungot
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:22 <iconmaster> huh that's cool
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:39:56 <kallisti> how do I measure that easily?
20:40:14 <callforjudgement> while it's running, you can measure it with a program like top
20:40:23 <callforjudgement> but it might be quite hard to catch it while it's running
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:36 <kallisti> I'll try though
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:01 <fizzie> `run free -m
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:27 <ais523> fizzie: well, OK
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:08 <iconmaster> ais523: very carefully
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:52 <kallisti> plus a little more.
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:40 <colloinkgravisom> hmm, 70 over 3
20:45:50 <ais523> fizzie: the builtin doesn't; I'm not sure if it can
20:45:55 <kallisti> 1047680maxresident)
20:45:58 <ais523> but right, /usr/bin/time is probably the right program to use
20:46:04 <kallisti> yes that worked
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:46:41 <colloinkgravisom> mebikilobyte
20:46:55 <fizzie> A mekibyte.
20:47:04 <ais523> so it allocates 1G altogether?
20:48:08 <kallisti> I... guess?
20:48:12 <kallisti> that seems unlikely.
20:48:23 <kallisti> since I don't notice it on my ram meter
20:48:25 <kallisti> other than a small spike
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:49:38 <fizzie> It's just very close.
20:50:17 <ais523> err, good point
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:53:02 <fizzie> Such "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:55:57 <fizzie> ASN.1.
20:56:04 <kallisti> that's... cool? and not needed.
20:56:37 <kallisti> as far as I know,
20:56:46 <kallisti> I don't think I can take advantage of a cyclic structure here.
20:56:57 <ais523> fizzie: hahaha
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:57:52 <colloinkgravisom> :) :) :)
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:20 <fizzie> SNMP?
20:59:38 <kallisti> actually since everything is strings I could get a pretty concise representation
20:59:44 <ais523> `acro 4
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
20:59:54 <kallisti> >
21:00:48 <kallisti> if I decide not to support variable grammage I could omit the tab
21:00:54 <colloinkgravisom> kallisti: my shity is great
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:09 <kallisti> I...
21:03:13 <kallisti> will have to learn things to do that.
21:03:22 <fizzie> Learn things, or use tools. :p
21:03:29 <kallisti> learning is better
21:03:31 <kallisti> but I am slow learn
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:05 <ais523> ah, hmm, AYIM
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:14:20 <kallisti> dude what if
21:14:25 <kallisti> markov chain
21:14:25 <kallisti> on
21:14:30 <kallisti> sound waves
21:14:32 <kallisti> in
21:14:33 <kallisti> music
21:15:21 -!- sebbu2 has joined.
21:15:25 <iconmaster> ooooooh good idea
21:15:29 <zzo38> kallisti: Try
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:05 <ais523> fizzie: hmm, indeed
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:20:29 <SimonDectro> Step one: hg-git
21:20:35 <SimonDectro> Step two: Never use git (directly) again
21:21:10 <kallisti> fizzie: help is sound stuff your thing?
21:21:12 <kallisti> what should I learn?
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:21:55 <kallisti> fizzie: well, hmmm...
21:21:58 <kallisti> fizzie: no I guess it's not.
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:28 <kallisti> I mean
21:25:32 <kallisti> my data is still discrete, rather.
21:25:37 <kallisti> because lolcomputer
21:25:58 <colloinkgravisom> bacaque
21:26:06 <colloinkgravisom> <kallisti> colloinkgravisom: what is your shit again?
21:26:10 <colloinkgravisom> what does htis even mean btw
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 <colloinkgravisom> fizzie: Is that what fungot does? :p
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:27 <kallisti> right.
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:28:50 <TheLittleOne> kallisti: I generate noise, do you want it?
21:28:56 <kallisti> no.
21:29:06 <colloinkgravisom> <Sgeo> I can't seem to figure out how to revert my code in git
21:29:06 <colloinkgravisom> <SimonDectro> Step one: hg-git
21:29:06 <colloinkgravisom> <SimonDectro> Step two: Never use git (directly) again
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:25 <kallisti> looool
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:29:53 <ais523> Sgeo: git help reset
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:04 <colloinkgravisom> Sgeo: did you see where i told you that
21:30:08 <colloinkgravisom> Sgeo: your capability thing is nonsense
21:30:10 <colloinkgravisom> and makes no sense
21:30:14 <ais523> alternatively, darcs help rollback, or the equivalent in sg that hasn't been named yet
21:30:16 <kallisti> fizzie: meh no
21:30:20 -!- Taneb has quit (Quit: Leaving).
21:30:35 <fizzie> (Aways a while.)
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:30:58 <kallisti> that's so vague.
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:27 <kallisti> and then frequency spectrum.
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:15 <colloinkgravisom> SimonDectro: Rebase.
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:12 <SimonDectro> It doesn't.
21:34:18 <SimonDectro> But rebasing sucks foot.
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:35 <colloinkgravisom> SimonDectro: http://randyfay.com/node/89
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:02 <colloinkgravisom> SimonDectro: (It's not the --force one, it's the one after.)
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:40 <colloinkgravisom> SimonDectro: Being designed, slowly :P
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:08 <colloinkgravisom> It's just a pain.
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:38:47 <colloinkgravisom> SimonDectro: Giving him hg would be an equal disaster :P
21:38:50 <colloinkgravisom> Giving him a computer, for that matter.
21:39:00 <colloinkgravisom> Can he do his work without electricity?
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:47 <SimonDectro> c:
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:39:58 <SimonDectro> u:
21:39:58 <SimonDectro> hg pull -v ; hg up -v
21:40:05 <kallisti> it will be most statistically significant noise of all time.
21:40:10 <kallisti> +the
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:45:48 <SimonDectro> And in github, that is important >_>
21:46:07 <colloinkgravisom> True.
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:46:35 <Sgeo> Ok
21:47:42 <kallisti> fizzie: http://en.wikipedia.org/wiki/Spectral_density_estimation
21:47:45 <kallisti> this looks relevant
21:48:16 -!- TheLittleOne has quit (Ping timeout: 240 seconds).
21:48:22 <monqy> rip
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:06 <SimonDectro> I'm gonna make my own VCS.
21:49:09 <SimonDectro> With blackjack and hookers.
21:49:09 <zzo38> Without exporting constructor.
21:49:13 <SimonDectro> Actually, screw the VCS.
21:49:13 <zzo38> That should work.
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:49:59 <kallisti> wooooo
21:50:05 <colloinkgravisom> zzo38: Right, sorry.
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:06 <colloinkgravisom> Sgeo: I fail to see the relevance.
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:40 <colloinkgravisom> zzo38: Yes.
21:57:45 <zzo38> It should be Functor/Applicative/Monad
21:57:52 <kallisti> http://en.wikipedia.org/wiki/Time-frequency_analysis
21:57:53 <kallisti> yesssss
21:57:58 <kallisti> wikipedia to the rescue.
21:58:15 <Sgeo> How does Generalized Newtype Deriving interact with Safe Haskell though?
21:58:31 <colloinkgravisom> What?
21:58:37 <colloinkgravisom> Generalised newtype deriving is just a time-saver.
21:58:42 <colloinkgravisom> I, again, fail to see the relevance.
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:08 <Sgeo> Hmm
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:34 <colloinkgravisom> Sgeo: WTF is wrong with liftCap :: IO a -> Cap a?
22:04:47 <Sgeo> colloinkgravisom, that defeats the entire purpose
22:05:14 <colloinkgravisom> Sgeo: Really? Because
22:05:14 <colloinkgravisom> instance IOtoCap (IO a) (Cap a) where
22:05:14 <colloinkgravisom> unsafeMakeFunCap = Cap
22:05:16 <colloinkgravisom> you already have it.
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 <colloinkgravisom> Sweet!!!
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:06:47 <colloinkgravisom> Sgeo: Fine then, make it IO a -> IO (Cap a), whatever.
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:16 * colloinkgravisom is even more done than he was the first time.
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:10:58 <colloinkgravisom> Sgeo: Yes, that is because you are inexperienced.
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:11:49 <colloinkgravisom> forkCap = makeCap (forkIO . runCap)
22:11:54 <colloinkgravisom> THAT WAS SO HARD!
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:50 <colloinkgravisom> But have fun!
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:38 <colloinkgravisom> Sgeo: In my opinion?
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:18 <monqy> bad
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:18:47 <kallisti> canFork <- forkCap; f canFork
22:19:08 <colloinkgravisom> canned forks
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:32 <colloinkgravisom> Sgeo: you can't. you don't want to.
22:19:38 <colloinkgravisom> tough, deal with it
22:19:51 <monqy> Sgeo: why would you want to do that....
22:20:02 <monqy> Sgeo: why
22:20:17 <colloinkgravisom> monqy: bCUZ ITS SUPER EASY NOW!!
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:22:33 <Sgeo> Oh, I see
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:25:16 <kallisti> because `words
22:25:24 <colloinkgravisom> Vorpal: I'm Colloinkgravisom of Hexham.
22:26:21 <SimonDectro> That doesn't narrow it down much.
22:26:24 <SimonDectro> That's like half the channel.
22:26:55 <kallisti> I wonder
22:26:59 <kallisti> if I go to sleep right now
22:27:01 <kallisti> how long I'll sleep
22:27:05 <colloinkgravisom> 3 minutes
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:10 <kallisti> ^rainbow :)
22:29:10 <fungot> :)
22:29:15 <colloinkgravisom> ^rainbow2
22:29:15 <fungot> ...too much output!
22:29:22 <colloinkgravisom> kallisti: btw the secret
22:29:24 <colloinkgravisom> to having the above happening
22:29:31 <colloinkgravisom> is to be sleep-deprived very carefully to set it up
22:29:40 <SimonDectro> ???
22:29:51 <kallisti> colloinkgravisom: oh yes I know what you mean
22:29:54 <kallisti> because I've done it before.
22:29:55 <SimonDectro> That rainbow wasn't very rainbic.
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:31:34 <colloinkgravisom> SimonDectro: Sure it was.
22:31:59 <colloinkgravisom> Also, 20 over 1.5.
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:26 <fungot> ...
22:33:33 <SimonDectro> Wow
22:33:40 <fizzie> Uh, well, um, right.
22:33:43 <fizzie> ^rainbow █████████████████████████
22:33:43 <fungot> ...
22:33:47 <colloinkgravisom> lool
22:33:54 <fizzie> How the how early is that "...".
22:33:59 <fizzie> ^rainbow ███████████████
22:33:59 <fungot>
22:34:03 <colloinkgravisom> lol
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:35 <colloinkgravisom> fizzie: Oh, _that's_ why it fails.
22:34:37 <colloinkgravisom> Byte-wise IO.
22:34:39 <iconmaster> ^rainbow ooooh pretty
22:34:39 <fungot> ooooh pretty
22:34:51 <iconmaster> ^rainbow fungot
22:34:51 <fungot> fungot
22:34:52 <kallisti> colloinkgravisom: no fuck you THERE ARE OTHER WAYS
22:35:11 <colloinkgravisom> kallisti: You'll come around eventually.
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:35:58 <colloinkgravisom> kallisti: Won't happen.
22:36:06 <colloinkgravisom> That kind of thing only works once, man.
22:36:10 <colloinkgravisom> My 10-step plan is Long Term Assurance.
22:36:14 <colloinkgravisom> LONGURANCE
22:36:21 <colloinkgravisom> `word 50
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:36:43 <colloinkgravisom> dinargewooites
22:36:48 <colloinkgravisom> `macro
22:36:53 <HackEgo> OYSTER'S
22:36:56 <colloinkgravisom> oyster's
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:19 <Vorpal> to catch up
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:39:41 <colloinkgravisom> pikhq: There are none.
22:39:42 <colloinkgravisom> BOLD.
22:40:09 <pikhq> Oh, there aren't any?
22:40:11 <pikhq> That's retarded.
22:40:14 <fizzie> There's the usual "multibyte characters of the current locale" functions, of course, but those aren't new.
22:40:14 <pikhq> Sorry, Retarded.
22:40:41 <zzo38> Make Unicode one of the possible locales then.
22:40:49 <pikhq> zzo38: It already is.
22:41:12 <colloinkgravisom> I doubt that.
22:41:16 <pikhq> Personally, I'm on en_US.UTF-8
22:41:18 <colloinkgravisom> UTF-8, maybe, but I doubt there's a Unicode locale.
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:42:12 <colloinkgravisom> DAMMIT SOMEBODY ACCEPT MY ANSWER
22:43:46 <colloinkgravisom> kallisti: Pls modify reality so that people accept my answers.
22:44:45 * colloinkgravisom is but a poor Colloinkgravisom.
22:44:56 <zzo38> What answers?
22:45:40 <colloinkgravisom> My sour cereal answers.
22:45:48 <colloinkgravisom> zzo38: Is this your website? http://sourcereal.com/
22:47:20 <zzo38> No
22:47:25 <pikhq> colloinkgravisom: Which answer?
22:47:36 <pikhq> That C11 is fundamentally broken?
22:51:32 <colloinkgravisom> pikhq: no
22:55:56 <colloinkgravisom> kallisti is a mouse.
22:58:41 <colloinkgravisom> 10 over 1
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:06:54 <colloinkgravisom> oerjan: who
23:06:57 <colloinkgravisom> who who who who who
23:06:57 <colloinkgravisom> who
23:07:50 <colloinkgravisom> WOW!!!
23:08:19 <oerjan> no, hu is the president
23:09:22 <colloinkgravisom> HELLO WELCOME TO AMERICA
23:11:15 <colloinkgravisom> HELLO GOODBYE FROM AMERICA
23:11:40 <colloinkgravisom> AMERICA
23:18:47 <colloinkgravisom> ffff. 10 over 0.7
23:19:12 <oerjan> the addiction is entering the ugly phase
23:19:35 <colloinkgravisom> maybe i can trade drugs for units
23:21:28 <colloinkgravisom> this is the worst thing ever
23:21:41 <colloinkgravisom> oerjan: YOU SHOULD UPVOTE M no that would be bad
23:21:43 <colloinkgravisom> bad and wrong
23:21:45 <colloinkgravisom> bad & wrong
23:22:12 * colloinkgravisom a small cry
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:24:43 <iconmaster> Mmmm, sour cereal
23:24:44 <colloinkgravisom> googling it produces basically no links so it's STEAHLTH
23:24:46 <colloinkgravisom> staehlth
23:24:49 <colloinkgravisom> wow, words are difficult
23:25:03 <iconmaster> (at first I though it meant "source real")
23:25:14 <colloinkgravisom> i think everybody thinks that :P
23:27:15 <iconmaster> This site is the best thing ever.
23:27:28 <colloinkgravisom> 10 over 0.55 :'(
23:27:29 * colloinkgravisom addict.
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:34:39 <colloinkgravisom> 10 over 0.433
23:36:14 -!- cheater has joined.
23:36:54 <colloinkgravisom> YES!
23:37:22 <monqy> !logs
23:38:18 <colloinkgravisom> monqy: hi
23:38:29 <monqy> hi
23:38:38 <colloinkgravisom> hi
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:40:05 <colloinkgravisom> oh is that actually how you found it
23:40:08 <colloinkgravisom> ok kallisti wins
23:49:32 <PiRSquaredAway> `log .*
23:50:04 <HackEgo> shuf: memory exhausted
23:51:39 -!- NihilistDandy has joined.
23:53:23 -!- PiRSquaredAway has changed nick to PiRSquared17.
←2011-12-25 2011-12-26 2011-12-27→ ↑2011 ↑all