00:00:10 What's hideous about conduits? 00:00:16 The huge number of operators that all amount to composition except with Random New Type #N are ugly 00:00:40 I think iterIO unifies enumerators with enumeratees? 00:00:56 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 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 And yes, I've used iterIO. 00:01:40 It's nicer but it's not quite nice. 00:01:58 It has a dependency on unix. Why? 00:03:03 I forget, probably socket-related 00:03:23 The zlib/ssl dependencies are more annoying; at least everyone already uses Unix 00:03:52 The conduit terminology stuff reminds me of equiv. concepts in iteratrees 00:03:56 iteratees 00:04:03 (Well, the enumerator rendition of such) 00:04:10 Something... based on iteratees... reminds you of iteratees? 00:04:12 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 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 Although it's not technically in the Hackage version. 00:22:03 -!- sebbu2 has changed nick to sebbu. 00:37:10 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 LESS HIERARCHY PLZ 00:56:56 -!- MDude has quit (Ping timeout: 240 seconds). 01:53:19 `words --finnish 01:53:33 vihkymieni 01:57:35 -!- MDude has joined. 01:58:16 `words --finnish 15 01:58:20 asenne syytyväke idenmuksen madaltangalla ulkitsemmistuviksessa maitappaimme ohjella sesi mutoakaamia salailemme sahavoksi biografistakusta euksissanne varjoittäkä sykieni 01:58:37 "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 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 Oh, post-dinner lethargy. 04:06:00 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 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 zzo38: Because nudging in a tilt is irrelevant 05:27:28 my first computer game was nintendo pinball 05:28:23 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 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 o.O at ball getting stuck during tilt penalty 05:32:13 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 Shouldn't require gamer intervention though 05:32:33 How about: Computer nudges the table 05:33:02 theres always "no tilt option" :P 05:33:28 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 by which i mean, what are the rules for tilting? can you get away with any tilts? 05:33:50 (The first option is common in flipperless pinball computer games.) 05:33:53 -!- Nisstyre has joined. 05:34:19 What does the pinball game that comes on Windows do? 05:34:44 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 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 having said this i suppose that not including a tilt option would be like castrating the game 05:36:10 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 (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 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 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 Do you have any changes to report? 06:26:42 -!- kmc has joined. 06:28:32 Do these criteria seem OK to you, or do you think of the things slightly different than this should be better? 06:29:53 Define "direct contradiction to reality" 06:33:16 Hmm. Have a Kindle now. 06:33:38 All I can think is: dammit e-ink monitors would be awesome if not for all the weaknesses of e-ink. 06:50:01 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 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 zzo38: In short, "proper religion" must be an exercise in doing nothing. 06:53:38 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 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 What I meant it to mean, includes that mythologies never cause it to fail these tests. 07:04:00 How about "The Earth is 6,000 years old"? Contradicts evidence we can find, but an individual may not realize this. 07:05:03 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 Yes. 07:05:40 Philosophy is complicated and has many disagreements and agreements and so on. 07:06:09 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 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 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 Obviously it would have to be the case, otherwise it is a direct contradiction to reality and therefore fails that criteria. 07:12:24 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 @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 Consider it noted. 07:23:59 pikhq: Chinese words consist of multiple characters right? 07:24:19 or well, they can, right? 07:24:39 Yes, they can, sometimes. I think. 07:25:37 -!- Nisstyre has quit (Ping timeout: 240 seconds). 07:26:41 But I don't know if it counts as a word 07:27:47 I'm just wondering what a "1-gram" is going to be in Chinese 07:38:01 That is difficult. 07:39:07 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 ah, okay, so this is the actual reason I didn't want to mess with Chinese. :P 07:40:02 ./words.pl --chinese 25 07:40:02 fo 换洗 船位 屡禁不止 痴情 con 硝 dea uz sel fig spher beni pre 累加 险地 轮机 轻 寝 獲 多種 史詩 圣上 res 辑 07:40:19 it took only a few seconds to read all of the data actually. I was surprised. 07:41:01 I don't really think it makes sense to randomly generate chinese-like "words" 07:41:24 kallisti: I think you are probably correct. 07:41:40 because each character is a unit of meaning. 07:42:05 what's the word. ideograph. 07:42:52 -!- Patashu has quit (Read error: Connection reset by peer). 07:43:24 Yes, it is ideograph 07:44:06 kallisti: A character corresponds to a morpheme, *typically*... 07:44:14 And, of course, a word is composed of one or more morphemes. 07:45:20 hm, should I leave latin alphabet stuff in this? 07:47:43 I feel that using 4-grams will basically result in a random chinese word /selector/ 07:47:52 because few chinese words are over 4 characters wide. 07:49:04 "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 " 07:51:16 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 hmmm yeah so this data contains some latin alphabet loan words 07:52:22 but the vast majority are chinese words, which are very small 07:52:52 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 because of the predominance of 2-3 character chinese script words. 07:53:27 THIS IS WHY I DON'T WANT TO DEAL WITH CHINESE. 07:53:47 `words --french 25 07:53:51 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 You'd probably have an easier time if you could somehow get a Pinyin data set. 07:54:33 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 hi 08:01:00 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 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 In both cases, fmap remains the same. 08:15:02 as the non-indexed version. 08:16:13 For (,) indexed monad: returnI = (,) id; joinI (x, (y, z)) = (y . x, z); 08:16:32 For (->) indexed comonad: extractI = ($ id); duplicateI f x y = f (y . x); 08:16:44 > '\ETX' 08:16:44 '\ETX' 08:16:49 > ['\ETX'] 08:16:50 "\ETX" 08:16:56 * Sgeo has a "fun" idea for a monad 08:16:58 > length "\ETX" 08:16:59 1 08:17:02 Remind me to implement it tomorrow 08:17:16 It's probably useless due to pervasive use of unsafePerformIO though 08:17:31 (Not in my code .. in useful libraries that would be rejected by Safe) 08:17:50 What is your idea? 08:17:58 Object-based capabilities 08:18:16 Give example? 08:18:22 E 08:18:31 (Ok, not a helpful example) 08:18:39 makeCap :: a -> IO (Cap a) 08:19:09 :t writeFile 08:19:09 FilePath -> String -> IO () 08:19:36 writeFileCap :: FilePath -> Cap (String -> IO ()) 08:19:42 Erm, that's wrong 08:19:57 writeFileCap :: FilePath -> IO (Cap (String -> IO ())) 08:20:50 main = do 08:20:57 What exactly does Cap mean? Is it a functor? 08:21:04 It's a monad. I think. 08:21:07 So yes 08:21:17 But what it represents is being allowed to do the action 08:21:50 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 myFileCap <- writeFileCap "somefilesomesuckercanwriteto.txt" 08:23:08 runCap (somethingThatWantsToWriteToAFile myFileCap) 08:23:23 The best way to understand if it is monad is to explain what join will mean. 08:24:23 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 I think 08:25:31 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 Yes 08:26:31 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 (Still not certain though) 08:27:09 I suppose that does make sense for join, but still I don't completely understand what it is going to do 08:27:21 (That is, what Cap is going to do, in general) 08:28:00 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 I'm still thinking through whether the meaning of Cap needs to be separated out per the original plan or not. 08:31:10 (Note that what I stated here is not the separated version) 08:33:02 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 Sgeo: Yes I realized that. 08:33:59 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 Still, something could just return 08:34:11 hmm? 08:34:45 Like, return (print "xyz") now gets a Cap (IO ()) I don't know what it is going to do, if anything 08:34:57 ...ohh 08:35:19 Hmm 08:35:29 * Sgeo will need to think this over a bit more, but this is embarrassing. 08:36:52 Instead, maybe you can use a permission table that includes the actions permitted 08:37:18 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 hmmm 08:38:19 did anyone else see green text? 08:38:44 I was pretty sure colors were not available. 08:38:50 I did 08:38:57 > text ("!addpenis " ++ (join $ zipWith (\x y -> '\ETX':x ++ [y]) (cycle ["4","7","8","9","12", "2","13"]) "AWESOME\SI")) 08:38:58 !addpenis 4A7W8E9S12O2M13E4 08:39:02 lol 08:39:07 nope 08:39:16 lambdabot doesn't permit it 08:40:24 -!- oerjan has joined. 08:40:26 oerjan: hi 08:40:44 'morning 08:41:12 >implying I can now do awful things like imply things like this. 08:41:16 but I won't 08:41:42 I only see the control codes, CTRL+C and 3hmmm 08:41:44 oerjan, I think I may be an idiot. 08:42:33 zzo38 pointed out that return breaks my pretty security monad. 08:43:02 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 Sgeo: Everyone is sometimes idiot, I think 08:43:40 Sgeo: hey don't start believing elliott here 08:43:43 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 bjølvstøver sounds like something you put on your feet, which naturally needs some warming up in this weather 08:44:47 mørkbilleken means "the dark-car game" 08:45:20 Maybe if the Cap includes an extra bit. return makes it be 0. makeCap caps have 1 08:45:25 (Well, False and True) 08:45:30 But then I violate the monad laws. 08:46:21 Maybe I should go back to separation 08:46:24 Sgeo: Yes I thought of that too and then realized that too 08:46:34 Cap vs CapMonad 08:47:02 Need a better name than CapMonad though 08:47:15 And still not certain if that fixes anything 08:47:25 Well, Cap would no longer be a monad, so that helps 08:47:52 But I think it's conceptually uglier. 08:48:27 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 Maybe you can have Cap (SecurityToken (IO ())) instead of Cap (IO ()) 08:48:50 zzo38, ooh, good idea, thanks! 08:51:26 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 functions are good capabilities. 08:53:05 * Sgeo shortens SecurityToken to Token 08:54:52 I think Tokens need to be a monoid 08:55:16 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 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 How do you define the Cap (String -> IOToken ())? 08:57:20 Sgeo: O, I didn't think of that 08:57:22 Sorry 08:58:11 callIOToken :: IOToken x -> Cap x; 08:58:33 usedTokens :: Cap (Token ) 08:58:46 Don't see a way to combine Tokens of different types 08:59:30 Hmm hmm hmm. Maybe I kind of do, actually. 09:00:37 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 But I think that may just be a type thing. 09:01:04 * Sgeo needs to think about it more. 09:01:52 returnToken :: x -> Cap (Token x); 09:03:24 makeCapFunc :: (x -> IO y) -> IO (Cap (x -> IOToken y)); 09:04:36 How would that work out for functions with more than one argument? Just uncurry them until they fit the mold? 09:04:49 Sgeo: Yes, that is what I was thinking of 09:06:45 Oh, you're that variable person. --> is that a bad thing? <-- well you seem a little shifty. 09:06:47 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 oerjan: ...... 09:07:58 I was going to ask if the type was legal, but I just misread newtype as type 09:07:59 why thank you. 09:08:01 -!- aloril has quit (Ping timeout: 252 seconds). 09:08:03 -!- Ngevd has joined. 09:08:18 Sgeo: Does this seem to work? 09:08:24 Hello!W 09:08:33 orld. 09:08:39 zzo38, I need to think about it 09:09:29 I still don't see how you'd, say, get putStrLn into that. 09:10:25 -!- aloril has joined. 09:11:02 Sgeo: you'd need some kind of Cap x -> IO x function. 09:12:19 kallisti, is that related to my current dilemma? 09:12:25 * Sgeo avoided saying something very very snarky 09:13:10 runCap (Cap x) = x; 09:13:24 It would have to be defined like that to avoid being a field of a record 09:13:52 This is assuming that security tokens aren't mixed in somewhere 09:16:06 Something that needs putStrLn capability could be passed (String -> Cap ()) as an argument I suppose 09:16:47 Oh, so your current Cap is basically taking the place of IOToken? 09:17:14 Sgeo: Yes I suppose that is my new idea. I kept changing it just like you have done so. 09:17:34 Hmm, actually, I think I like it. 09:17:36 Sgeo: yes, runCap would allow you to putStrLn and then run it later. 09:17:49 Sgeo: which was your current dilemma. 09:18:40 ...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 Could you get (String -> Cap ()) from makeCap? 09:18:56 Oh, hmm 09:19:31 putStrLnCap str = ... 09:19:33 no 09:19:47 (Erm, no, as in, my half-an-example is bad, not as in a no to your question) 09:20:10 f x = makeCap (putStrLn x) 09:20:23 ? 09:20:31 aka 09:20:33 kallisti: I don't think so. 09:20:36 oh 09:20:52 right 09:20:54 makeTypedCap :: t (IO x) -> IO (t (Cap x)); if you define a type wrapper what you need 09:21:14 That is, if t is some functor 09:21:21 I don't really understand the purpose of this thing so I'm probably not helping much. 09:21:50 So it would have to be: makeTypedCap :: Functor f => f (IO x) -> IO (f (Cap x)); 09:22:19 Not sure I want to have to define functors... but aren't functions functors? 09:22:25 yes 09:22:26 I don't know if it helps though 09:22:36 fmap is composition on functions 09:22:54 What does the functor instance look like? The first line, the instance ... where 09:23:05 fmap = (.) 09:23:13 instance Functor ((->) x) where { fmap = (.); } 09:23:34 zzo38, ty 09:23:52 fmap = (.); return = const; join f x = f x x; 09:24:18 zzo38, I think your makeTypedCap is exactly what is needed. 09:24:42 OK 09:25:10 makeTypedCap is a bad name though, I think, although I don't think it generalized to wrapping up a plain IO () 09:25:12 Although it might to change to a better name 09:25:24 So it can't be makeCap 09:25:33 makeValCap and makeFunCap? 09:25:46 mapCap :) 09:25:46 Sgeo: That could be it, I suppose. 09:26:07 Wait 09:26:19 Does makeFunCap work for 2 or more argument functions that return an IO? 09:26:32 Or will they have to be uncurried 09:26:47 it shouldn't matter, I'd think. 09:27:17 but, no it's only for one argument functions. 09:27:49 aka functions 09:28:20 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 What if we went back to the SecurityToken idea, but it was Cap (SecurityToken, a) 09:29:32 I don't know; I am going to sleep now 09:29:33 -!- zzo38 has quit (Remote host closed the connection). 09:29:33 I was pretty sure colors were not available. <-- they convinced fizzie to remove that channel flag 09:29:40 oerjan: fools 09:29:59 makeCap :: a -> IO (SecurityToken, a) 09:30:07 ops 09:30:14 makeCap :: a -> IO (Cap (SecurityToken, a)) 09:30:45 could it be possible to use Applicative to sate your desire for multi-argument functions? 09:31:55 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 what if someone uses unsafePerformIO and bypasses everything? 09:32:58 There's GHC stuff against that, I think 09:33:18 But then that also means can't use modules that use unsafePerformIO for acceptable things, I think 09:33:22 Need to look into that more. 09:33:37 Untrusted, Trustworthy, etc. 09:34:30 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 I guess, yes 09:35:06 where it can be run in IO from another function 09:35:38 I think Applicative might be useful here. 09:36:32 or something similar. 09:37:11 Sgeo: you can use modules with unsafePerformIO, but you must declare them trustable or what it was called 09:37:30 trustworthy? 09:37:38 yeah probably 09:37:56 :t liftIO 09:37:57 forall a (m :: * -> *). (MonadIO m) => IO a -> m a 09:38:57 Sgeo: what's the purpose of the security token? 09:39:35 kallisti, if Cap is a monad, I don't want return to be a nice convenient way of synthesizing arbitrary Caps 09:40:23 what 09:40:27 I don't see a particular reason to limit it to IO, either. 09:41:19 Cap will not be a monad transformer, nor a MonadIO, for reasons that should be obvious. 09:41:25 yes 09:41:57 perhaps makeCap :: Token -> a -> Cap a 09:42:11 runCap :: Token -> Cap a -> IO a 09:42:31 with no way to access the Token that was used to create a Cap 09:43:02 or... 09:43:04 no 09:43:09 runCap :: Token -> Cap a -> a 09:44:24 kallisti, so Cap is no longer a monad? 09:44:31 probably not. 09:44:38 but it could easily be Applicative. 09:44:40 * Sgeo wants at least using a Cap to be a monad 09:44:46 kallisti, uh, pure. 09:45:45 ah, yes. 09:45:53 so you may want two different types. 09:46:10 Which is, imo, somewhat ugly 09:46:26 either that or simply give it an <*> without a pure. 09:46:39 well, not really an <*> exactly 09:46:57 oh 09:47:43 @hoogle t (a -> b) -> a -> t b 09:47:43 Control.Applicative (<*>) :: Applicative f => f (a -> b) -> f a -> f b 09:47:43 Control.Monad ap :: Monad m => m (a -> b) -> m a -> m b 09:47:43 Control.Applicative (<**>) :: Applicative f => f a -> f (a -> b) -> f b 09:47:53 appCap :: Cap (a -> b) -> a -> Cap b 09:47:56 is what I had in mind. 09:48:47 I still want a monad. 09:49:13 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 okay... 09:49:49 so you want this thing, that's not a monad 09:49:52 to be a monad. have fun. 09:50:17 I can live with two separate types, one a monad and one not, I think 09:50:28 -!- ais523 has joined. 09:51:50 Sgeo: hmmmm, how about a rank-2 type? 09:51:58 like State. 09:52:05 $ 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 I... are you thinking of ST? 09:52:30 pity that seems to be GNU-specific 09:52:34 oh, yes. 09:52:38 anyone know a portable way to do that? (I'm guessing no) 09:53:17 kallisti, if I had a clue how to use them, that would probably help. 09:53:50 I should sleep 09:54:48 I should have an internet connection that doesn't suck. 09:55:36 Sgeo: hmm, I woke up pretty recently 09:58:08 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 xkcd :) 10:57:21 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 And now I am going to sleep. 11:00:29 And I like the image of forkCap that is currently running through my head. 11:01:26 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 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 Can't sleep, going to work 11:35:57 MultiParamTypeClasses without FunctionalDependencies? Is this madness? 11:42:27 * Sgeo pauses to rethink 11:42:53 (a -> IO b) (c -> (a -> IO b) 11:43:34 what 11:43:52 sometimes MPTCs make sense without fundeps 11:43:58 it depends on your use case 11:45:45 Or I could decide that I might have been mistaken in thinking that MPTCs helped me 11:49:28 Wait, no 11:49:29 GRR 11:50:24 -!- derdon has joined. 11:51:04 > fix error 11:51:05 "*Exception: *Exception: *Exception: *Exception: *Exception: *Exception: *E... 11:51:44 :t fix error 11:51:45 [Char] 11:52:51 :t error 11:52:52 forall a. [Char] -> a 11:53:16 heh 11:53:23 therefore _|_ = [Char] 11:53:24 now I'm trying to figure out how that fix error works 11:53:30 > error "test" + 4 11:53:31 *Exception: test 11:53:36 > error (error "test") 11:53:37 *Exception: test 11:53:38 fix works by being a logical fallacy. 11:53:48 ...or something. 11:54:17 > error (fix id) 11:54:20 mueval-core: Time limit exceeded 11:54:31 hmm, I don't get why fix error isn't an infinite loop 11:54:54 > error (fix error) 11:54:55 lazy evaluation? :P 11:54:55 *Exception: *Exception: *Exception: *Exception: *Exception: *Exception: *Ex... 11:55:05 OK, error (fix error) is not the same as (fix error) 11:55:11 this seems to defy the definition of fix 11:55:25 how is it different? 11:55:30 > fix error 11:55:31 "*Exception: *Exception: *Exception: *Exception: *Exception: *Exception: *E... 11:55:32 > error (fix error) 11:55:33 *Exception: *Exception: *Exception: *Exception: *Exception: *Exception: *Ex... 11:55:40 ...okay 11:55:44 ah I see. 11:55:46 error (fix error) is _|_; fix error is a string 11:55:54 oh yes 11:56:00 :t fix 11:56:01 forall a. (a -> a) -> a 11:56:04 :t error 11:56:05 forall a. [Char] -> a 11:56:07 therefore a = [Char] 11:56:19 so fix error returns a string. why? I don't know. 11:56:26 er well 11:56:27 I know why 11:56:29 but not how 11:56:32 it is implemented. 11:56:32 fix error obviously has a type that returns a string 11:56:40 I just don't get why it actually /does/ return a string, rather than erroring 11:56:53 > "hello" ++ fix error 11:56:54 "hello*Exception: *Exception: *Exception: *Exception: *Exception: *Exceptio... 11:57:04 oh, aha 11:57:05 that explains it 11:57:14 it does? 11:57:17 @src error 11:57:17 error s = throw (ErrorCall s) 11:57:19 it's calling show for a string, which prints a " before it even tries to work out what the string is 11:57:33 > repeat "*Exception: " 11:57:33 ["*Exception: ","*Exception: ","*Exception: ","*Exception: ","*Exception: "... 11:57:36 err 11:57:42 > "hello " ++ undefined 11:57:44 "hello *Exception: Prelude.undefined 11:57:44 > concat (repeat "*Exception: ") 11:57:45 "*Exception: *Exception: *Exception: *Exception: *Exception: *Exception: *E... 11:57:55 OK, so that's a string consisting of copies of the word "*Exception: " 11:57:59 > fix error 11:58:00 "*Exception: *Exception: *Exception: *Exception: *Exception: *Exception: *E... 11:58:12 and that isn't; that's having " printed by show for strings, and then an actual error happens 11:58:26 > (2::Expr) + fix error 11:58:26 Couldn't match expected type `SimpleReflect.Expr' 11:58:27 against inferred ... 11:58:36 oh, well yes.oh, yes it doesn't actually return the string. 11:58:38 > x + fix error 11:58:39 Couldn't match expected type `SimpleReflect.Expr' 11:58:39 against inferred ... 11:58:49 oh, right, fix error returns a string 11:58:52 > x + error (fix error) 11:58:53 x + *Exception: *Exception: *Exception: *Exception: *Exception: *Exception:... 11:58:55 fix error is a string 11:58:59 copumpkin: indeed 11:59:02 kallisti: does /that/ explain it? 11:59:03 * Sgeo decides that he may in fact need functional dependencies 11:59:10 > take 5 $ fix error 11:59:11 "*Exception: *Exception: *Exception: *Exception: *Exception: *Exception: *E... 11:59:20 but isn't actually a string 11:59:22 the point is that due to laziness, it's printing the " or the x + before it even starts evaluating the error 11:59:28 yes... 11:59:39 I figured that out a while ago 11:59:40 and then forgot 11:59:41 about it. 12:02:22 -!- monqy has quit (Quit: hello). 12:04:14 :t ErrorCall 12:04:14 Not in scope: data constructor `ErrorCall' 12:06:02 I wonder how many programmers don't like Haskell because it doesn't have "good exception handling" 12:06:04 If what I'm writing compiles, I'll mindboggle that I actually figured it out 12:07:11 :t catch 12:07:11 forall a. IO a -> (IOError -> IO a) -> IO a 12:07:39 > catch (error "bad") (\e -> fix error) 12:07:40 Couldn't match expected type `GHC.Types.IO a' 12:07:40 against inferred type... 12:07:51 > catch (error "bad") (\e -> return $ fix error) 12:07:52 12:07:58 problem solved. 12:10:13 I feel uneasy that one of my key components looks like (SomeClass a b) => a -> b 12:11:01 roll around, you'll be alright. 12:11:30 I am obviously horrible at naming arguments 12:11:39 unsafeMakeFunCap a = \a' -> unsafeMakeFunCap (a a') 12:11:48 I have two comments above that explaining the meaning of a and a' 12:13:35 * Sgeo changes 12:14:26 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 short variable names are pretty common for very generic Haskell code. 12:14:52 oerjan: yep, I figured it out in the end 12:14:57 kallisti, when the types of the arguments are hard to read for someone new to MPTC and Fundeps... 12:15:12 btw, this sort of thing is why I fear Anarchy might be uncomputable without restrictions 12:16:40 Needed to add FlexibleInstances, and now it works 12:16:52 But I don't quite understand why I need FlexibleInstances 12:16:59 So I feel like I'm really losing 12:18:23 I wonder how many programmers don't like Haskell because it doesn't have "good exception handling" <-- it doesn't? 12:18:51 MakeFunCapClass 12:18:56 What should I call this instead? 12:19:42 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 s/programming/programmer/ 12:20:28 kallisti: well, it depends on what you use exceptions /for/ 12:21:19 kallisti: i browsed that ResourceT blog post from reddit and noticed that their ST instances are inferior for precisely this reason. 12:21:54 which makes me wonder, why _shouldn't_ you be able to catch exceptions in ST. or perhaps a subset of them. 12:22:08 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 *Capabilties> makeCap (putStrLn "Hi") >>= \c -> runCap c 12:22:08 Hi 12:22:22 oerjan: yes I think ST could be improved on in a number of ways. 12:22:35 Just realized, I still need to make Cap a monad 12:22:50 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 i guess the problem is that you cannot guarantee that exceptions respect the ST boundary - either way. 12:24:22 Wait, my instances make no sense 12:24:26 oerjan: well, couldn't you catch the exceptions in runST and then error there? or is that what would happen anyway? 12:25:14 basically at a runST convert the ST exceptions into exceptions that can be handled from IO. 12:25:54 :t throw 12:25:55 Not in scope: `throw' 12:26:02 @hoogle throw 12:26:02 Control.Exception.Base throw :: Exception e => e -> a 12:26:03 Control.Exception throw :: Exception e => e -> a 12:26:03 Control.OldException throw :: Exception e => e -> a 12:26:27 oerjan: or I guess I should ask: is there any reason exceptions need to respect the ST boundary? 12:26:40 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 ah, indeed. 12:27:41 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 but that's a problem of IO in general. 12:27:59 the difference is that it's accepted in IO because the total result is not required to be pure. 12:29:48 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 kallisti: oh btw unsafeIOToST exists iirc 12:30:21 yes 12:30:30 but that's... unsafe. 12:30:45 but a capability system could possibly be implemented with that. 12:31:26 that was the idea 12:31:38 ah 12:32:06 http://hpaste.org/55731 my code as it currently exists 12:32:24 of course if you delve into ghc internals, ST and IO have isomorphic implementations once you remove all the newtype wrapping 12:33:06 they just use different ways of ensuring users can never fake a useful s state parameter 12:33:23 @src IO 12:33:23 Source not found. It can only be attributed to human error. 12:33:37 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 *+ -----### 12:34:10 kallisti, wait, where did ST come from? 12:34:28 Sgeo: I was discussing allowing IO capabilities to be passed to ST. 12:34:34 so that you can control what kinds of side-effects can occur. 12:34:39 Ah 12:35:03 kallisti: it would probably be an idea to newtype-wrap that ST version, too 12:35:07 not related to what you're doing, though inspired it. 12:35:35 oerjan: hmmm, but then you have to wrap everything that ST already has implemented for it. 12:35:41 oh right 12:35:53 but... you might have to do that. 12:36:01 because runST is /not/ what you want. 12:36:06 you want ST a -> IO a 12:36:19 er 12:36:21 well in that case, why not just wrap IO 12:36:22 *Capabilties> makeCap (putStrLn) >>= \c -> runCap (c "Hi") 12:36:22 Hi 12:36:23 not ST a 12:36:29 ST s a or whatever 12:36:37 oerjan: oh, yes... 12:37:31 Sgeo: is that what you're doing basically? 12:37:37 i assume wrapping IO into your restricted type is a main intended method of using the Safe extension. 12:37:57 kallisti, well, my Cap is not connected to ST in any way, it's its own monad, but yeah, I guess 12:38:17 is it basically a wrapper over IO? Because that's the conclusion oerjan came to. 12:38:27 Yeah 12:38:33 EUREKA! 12:38:35 :) 12:38:47 String -> IO () becomes String -> Cap () 12:39:05 i'm careful with my eurekas, the one time i tried to use one my proof had a stupid error. 12:39:36 Anyways, what's undecidable about my instances? 12:39:38 Sgeo: but uh... where is the security. 12:39:54 anybody can use makeCap 12:40:08 kallisti, they need to be in the IO monad to use makeCap 12:40:14 THIS IS WHY YOU NEED MAKECAP TO RETURN A IO(String -> -- oh okay 12:40:23 Sgeo: that's not what your above code seemed to suggest. 12:40:44 oh okay 12:40:47 I misread it. 12:40:48 The result of makeCap is wrapped in an IO 12:40:52 right. 12:42:58 If I hide MakeFunCapClass, are my functions still usable? Can correct type signatures still be written? 12:43:59 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 Illegal instance declaration for `MakeFunCapClass 12:44:44 (c -> a) (c -> b)' 12:44:44 (the Coverage Condition fails for one of the functional dependencies; 12:44:44 Use -XUndecidableInstances to permit this) 12:44:54 Sgeo: WHEN IN DOUBT, USE UNDECIDABLEINSTANCES HAHAHAHAHA 12:45:56 Sgeo: hm ok make that simplistic but incomprehensible ;P 12:46:12 (i'm sure the coverage condition is written up somewhere) 12:49:26 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 anyone here follow yogscast? 12:51:36 and so ghc is not smart enough to prove that looking this up will always halt. 12:51:58 psh, ghc lives in fear. 12:53:02 kallisti: well for all i know there _might_ be a way to add other instances to give a loop from that. 12:53:52 psh, ghc should have no fear. 12:54:26 it should think of compile-time as just another runtime. 12:54:34 you can turn the fear off with -XUndecidableInstances -XOverlappingInstances -XIncoherentInstances -XUnspeakablyEvilInstances 12:57:34 I need sleep now 12:57:54 slep is for the week 12:58:48 A fun test: Make a capability for makeCap 12:59:16 Proceed to wreck havoc 12:59:17 * oerjan recalls the VMS setpriv privilege 13:01:11 I do wish it was easier to make forkCap though 13:01:18 I mean, I know how to do it I think 13:01:20 But still 13:01:47 deathCap 13:01:56 for cutie 13:02:21 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 Is there an IdentityT monad by any chance? 13:07:19 No. No more coding. Sleep time 13:08:38 Sgeo: pretty obviously possible 13:08:46 @hoogle IdentityT 13:08:47 Control.Monad.Trans.Identity IdentityT :: m a -> IdentityT m a 13:08:47 Control.Monad.Trans.Identity newtype IdentityT m a 13:08:47 Control.Monad.Trans.Identity mapIdentityT :: (m a -> n b) -> IdentityT m a -> IdentityT n b 13:09:04 oerjan, I asked because I'm way too tired to figure out how to write bind for a trivial newtype 13:09:13 I think this means I'm an idiot. 13:09:14 Night., 13:09:29 (Or at least, too tired to think straight right now) 13:09:32 Night 13:10:40 @tell Sgeo well i have a hunch that you need a bit of self-esteem more than you need intelligence. 13:10:40 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 Hello! 13:19:08 hi 13:19:13 @ping 13:19:13 pong 13:19:29 god ettermiddag 13:22:06 ...I can't watch yogscast play magicka. 13:22:09 they're so 13:22:10 bad 13:23:33 Ottermidday. 13:24:28 OH YES THEY FIGURED OUT HOW TO MAKE WALLS, GOOD JOB. 13:24:55 that would be good against the evil yeti that picks you up and kills you instantly. 13:26:00 they keep using wow-like terms such as "tank" and "kite" 13:26:03 THESE DON'T APPLY IN THIS GAME 13:26:07 aaaaah 13:26:11 must. stop. watching 13:26:12 * kallisti stops. 13:26:50 makeCap makeCap types 13:26:50 Sgeo: You have 1 new message. '/msg lambdabot @messages' to read it. 13:28:47 also if you set yourself on fire the yetis won't pick you up... 13:29:05 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 I should put this on github or something, probably 13:33:30 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 forkCap = makeCap forkIO -- security hole 13:35:52 Maybe running makeCap on all the arguments automatically? 13:36:33 Or unsafeMakeFunCap, anyway 13:40:37 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 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 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 ...okay. so don't do that. 13:41:53 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 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 :t forkIO 13:43:07 Not in scope: `forkIO' 13:43:10 @hoogle forkIO 13:43:10 Control.Concurrent forkIO :: IO () -> IO ThreadId 13:43:11 GHC.Conc.Sync forkIO :: IO () -> IO ThreadId 13:43:11 GHC.Conc forkIO :: IO () -> IO ThreadId 13:43:15 ah it is () 13:43:18 I thought it was a 13:45:44 I think I can make a safer makeCap, assuming that OverlappingInstances works the way I assume it does 13:46:30 ...if I do that, there's no way to do makeCap makeCap 13:47:05 Is makeCap id a hole? 13:47:41 I think it is 13:48:04 (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 Hmm 13:53:44 UndecidableInstances. I wonder what makeCap printf is 13:54:34 I think it would be nicer if you could somehow make an Applicable. 13:56:24 kallisti, Cap is a monad, therefore it is an Applicable 13:56:44 Unless you mean something else 13:57:27 Synaptic is refusing to open :( 14:01:13 -!- Ngevd has joined. 14:01:53 * Sgeo installs giggle 14:02:57 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 git-gui is bloody annoying 14:13:40 @hoogle A -> A 14:13:40 Prelude id :: a -> a 14:13:40 Data.Function id :: a -> a 14:13:40 GHC.Exts breakpoint :: a -> a 14:13:52 Here we go https://github.com/Sgeo/haskell-capabilities 14:15:29 > fix significand 0.5 14:15:30 No instance for (GHC.Float.RealFloat (t -> a)) 14:15:30 arising from a use of `e_... 14:19:18 > lazy undefined 14:19:18 Not in scope: `lazy' 14:20:20 -!- Ngevd has quit (Ping timeout: 255 seconds). 14:21:35 -!- Ngevd has joined. 14:21:40 I should use until more 14:21:44 :t until 14:21:44 forall a. (a -> Bool) -> (a -> a) -> a -> a 14:22:45 * Sgeo goes to test makeCap printf 14:22:45 > iterate (until ((==0).(`mod` 2)) (+1)) 0 14:22:46 [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 ...bad example. :P 14:23:39 Well, that did not work. 14:24:25 -!- azaq23 has joined. 14:25:30 !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 ​\ /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 Ok, fixed that bug, it is in fact a vararg oddity 14:28:03 darn, the result ends up the wrong type 14:30:48 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 > () + () 14:31:14 No instance for (GHC.Num.Num ()) 14:31:14 arising from a use of `GHC.Num.+' at If I add an instance that makes makeCap forkIO work smoothly, that will block fun stuff such as makeCap makeCap 14:32:43 I don't know what to do :( 14:33:04 Maybe two functions, one that does one one that does the other? 14:33:29 and the id method looks very suspicious, anyway 14:34:03 Mine, or the thing you're actually working on? 14:34:09 the latter 14:40:08 -- | Identity function. 14:40:08 id :: a -> a 14:40:08 id x = x 14:40:18 I don't get why GHC.Base randomly has these HUGE SPACES like that. 14:40:31 on some functions but not others, with no apparently helpfulness in organizing layout. 14:40:49 So that there's room to make a more complicated 'id' if necessary, later on. 14:40:59 ...lol? 14:41:07 good point. 14:41:20 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 thus also the Prelude hiding 14:41:45 oerjan: um, okay? 14:42:02 oh 14:42:05 coincidence. 14:42:11 okay 14:42:12 that i happened to mention GHC.base id 14:42:18 while you were talking about Category id. 14:42:27 NO WAI 14:42:46 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 it's complicated. 14:46:52 ah okay 14:47:05 so you're like me except you choose to think about it more. 14:47:24 i don't know 14:47:30 EXCELLENT 14:47:50 not knowing is the other half of the battle. 14:50:13 I think I've asked this before, but I don't remember the answer: 14:50:22 why is there a <<< in Control.Category? 14:50:52 backwards compatibility 14:51:04 ah 14:51:09 also symmetry, i take 14:51:30 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 >>> and <<< used to be Arrow functions 14:51:44 ....I don't know why you would want that though. 14:51:46 oerjan: ah 14:52:23 indeed, especially since (Control.Category..) is a generalization of (Prelude..) 14:52:48 -!- pikhq_ has joined. 14:53:01 "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 . ha. ha. ha ha. ha ha ha 14:53:21 ^ha 14:53:32 I'm just amused at your assumption that ashley is a female name, there 14:53:32 ...now what 14:53:35 the name exists in both genders 14:53:38 ^show 14:53:38 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 oh yes this ashley is actually a male 14:54:05 ...i forgot to ask fizzie to save :( 14:54:09 weird. I didn't know that was a gender neutral name. 14:54:27 fungot: Y U NO SAVE COMMANDS AUTOMATICALLY 14:54:27 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 Night 14:55:09 Oh noest. 14:55:22 http://semantic.org/hnop/nop/Control/Nop.hs 14:55:25 .... 14:56:00 ^def ha ul ((ha)(ha))(~:^:(. )*S( )~**a~^!a*~:^):^ 14:56:01 Defined. 14:56:05 ^save 14:56:05 OK. 14:56:09 yay! 14:56:09 ^ha 14:56:09 ha. ha. ha ha. ha ha ha. ha ha ha ha ha. ha ha ha ha ha ha ha ha. ha ha ha ha ha ha ha ha ha ha ha ha ha. ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha. ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha 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 kallisti: why is there a whole module for that? 14:57:02 that's what I was wondering. 14:57:25 there's even test cases 14:57:46 that check to ensure it really does do nothing? 14:58:11 http://semantic.org/hnop/nop/test/TestNoOp.hs 14:58:12 yes. 14:58:18 you can never be sure. 14:58:26 meh, it doesn't really 14:58:26 http://semantic.org/hnop/nop/test/TestNoOp.ref 14:58:29 here's the reference output 14:58:32 to ensure correct results. 14:58:41 just checks to ensure it doesn't error out or produce output that would be caught by the test 14:58:47 and a makefile: http://semantic.org/hnop/nop/test/Makefile 14:59:00 it's also a cabal package. 14:59:25 though it's not on hackge. 14:59:28 it just has a .cabal file 14:59:34 hmm, now we need an esolang where no-ops are really hard to write (albeit possible) 14:59:38 Malbolge only sort-of ocunts 14:59:40 *counts 14:59:56 aha but hnop is. 15:00:00 fis@eris:~$ cabal list hnop 15:00:00 * hnop Latest version available: 0.1 15:00:04 Yes. 15:00:22 this is hnop: http://semantic.org/hnop/hnop/Main.hs 15:00:28 * kallisti just sudo cabal install'd it 15:00:44 this is a big argument for just writing functions by hand rather than importing the appropriate module 15:00:50 "return ()" is pretty short 15:01:02 and more polymorphic than the original, in fact 15:01:26 -!- elliott has joined. 15:01:28 06:21:52: 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 elliott: You have 1 new message. '/msg lambdabot @messages' to read it. 15:01:35 personally I like religions that secret torture on its adherents 15:01:37 $ sudo cp /home/adam/.cabal/bin/hnop /usr/local/bin/hnop 15:01:44 $ hnop 15:01:44 kallisti: bad idea 15:01:59 ? 15:02:04 doing that is a bad idea. 15:02:11 are you suggesting hnop will suddenly stop doing nothing if I do that? 15:02:30 I don't know or care what hnop is, I'm just telling you that's a bad idea in general. 15:02:46 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 my guess is a) you could overwrite something b) the binary could be sensitive to its location 15:04:55 08:18:39: makeCap :: a -> IO (Cap a) 15:04:55 08:19:57: writeFileCap :: FilePath -> IO (Cap (String -> IO ())) 15:05:01 Sgeo: This is the point where you realise that Cap a is the same thing as a. 15:05:12 Which is sort of, you know, the entire point of object-capability systems 15:05:16 s/$/./ 15:07:22 08:35:29: * Sgeo will need to think this over a bit more, but this is embarrassing. 15:07:25 Yes, it really is. 15:08:03 08:43:17: Sgeo: Everyone is sometimes idiot, I think 15:08:04 Some people more often than others. 15:08:37 08:48:34: Maybe you can have Cap (SecurityToken (IO ())) instead of Cap (IO ()) 15:08:37 08:48:50: zzo38, ooh, good idea, thanks! 15:08:39 * elliott facepalm 15:08:47 Sgeo: Congratulations, now you have Identity (Identity (IO ())) 15:09:42 -!- incomprehensibly has joined. 15:11:42 09:49:42: okay... 15:11:43 09:49:49: so you want this thing, that's not a monad 15:11:43 09:49:52: to be a monad. have fun. 15:11:52 kallisti: You get the Rare Moment of Sanity in a Sea of Fools Award(tm0. 15:11:54 *) 15:12:36 10:57:21: 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 You're all enablers. 15:13:38 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 IT DOESN'T YOU'RE BEING AN IDIOT 15:14:25 11:55:46: error (fix error) is _|_; fix error is a string 15:14:28 ais523: you have misunderstood 15:14:36 elliott: I figure it eventually 15:14:40 before kallisti does, in fact 15:14:46 an amazing feat. 15:15:06 ais523: error :: a -> String; fix :: (a -> a) -> a 15:15:10 I like how elliott logs in and corrects everyone's past errors even if they already have corrected them. 15:15:11 in fix error, error :: String -> String 15:15:13 so fix error :: String 15:15:20 err 15:15:26 ais523: error :: String -> a; fix :: (a -> a) -> a 15:15:26 elliott: also, this implies that there's two possible ways to implement printString 15:15:26 ofc 15:15:32 if it calculated the length first, the " wouldn't happen 15:15:39 basically fix f = f (fix f) fails if f is polymorphic, duh 15:15:44 ais523: there is no printString 15:15:47 and putStr does not calculate length 15:15:57 elliott: indeed, lambdabot made that clear 15:16:02 although what is really relevant here is show, not putStr 15:16:16 show s = "\"" ++ escape s ++ "\"" 15:16:21 so the error happens after the " is produced 15:16:23 elliott: CORRECTING PEOPLE'S ERRORS WHICH HAVE ALREADY BEEN CORRECTED IS A BANNABLE OFFENSE. oh wait... 15:16:26 elliott: not really, due to laziness 15:16:29 no 15:16:32 show is relevant here 15:16:34 show is the thing that produces the quote 15:16:41 and lambdabot won't even putStr in that GHC process 15:16:45 which it runs separately 15:16:49 elliott: well, what lambdabot uses to output the string is relevant 15:16:51 well, it might, but it's not the putStr to IRC, and is irrelevant anyway 15:16:53 ais523: nope 15:16:59 well 15:17:01 yes and no 15:17:05 the fact that it interleaves the error stream is releavnt 15:17:06 *relevant 15:17:06 well, what lambdabot uses to /force/ the string is relevant 15:17:10 but all haskell programs do that 15:17:20 anyway, the reason all the errors is printed is because error is lazy 15:17:24 > error undefined 15:17:25 *Exception: *Exception: Prelude.undefined 15:17:28 the undefined only gets forced in the exception handler 15:17:32 as it tries to print out the exception 15:17:40 so that just keeps happening forever 15:17:44 I figured that much, eventually 15:17:45 but lambdabot only takes the first few hundred characters 15:17:51 well now you've re-figured it! 15:18:00 oerjan: NOBODY CORRECTED SGEO 15:18:09 elliott: lambdabot outputs strings while they're being forced; that's what's relevant here 15:18:16 it doesn't calculate the entire string first and then output it 15:18:20 if it did, you wouldn't get the " 15:18:20 -!- Vorpal has joined. 15:18:25 ais523: err, because that's not a thing you can do 15:18:29 you don't "calculate the string" 15:18:33 each cell of a list is lazy 15:18:37 elliott: it definitely is a thing you can do, you're in IO 15:18:41 you would have to deliberately walk the list doing nothing, and then print out the string 15:18:42 to achieve that 15:18:47 right 15:18:54 ais523: being in IO is irreleavnt 15:18:56 irrelevant 15:18:57 deepseq is pure 15:19:01 but that to me seems to be the easiest way to implement sometihng like putStr 15:19:02 it's also irrelevant, but it is pure 15:19:10 @src putStr 15:19:10 putStr s = hPutStr stdout s 15:19:13 @src hPutStr 15:19:13 Source not found. :( 15:19:15 sigh 15:19:22 putStr "" = return (); putStr (c:s) = putChar c >> putStr s 15:19:31 if you think adding a pointless deepseq somehow simplifies that, you're insane 15:19:34 elliott: ah, OK, so it's going via printchar rather than, say, puts 15:19:51 if it marshalled it to a C string it'd have to force the whole thing, yes 15:19:56 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 but that's not really "calculating the whole string", that's just an artifact of (char *) being strict 15:20:09 (which is correct, to give the correct lazy behaviour) 15:20:14 ais523: err, syscalls are irrelevant 15:20:16 ais523: it's called buffering 15:20:27 ah, right 15:20:29 GHCi and other interactive environments turn off buffering, ofc 15:20:30 except hSetBuffering also exists 15:20:37 ais523: yeees? 15:20:42 that flicks a bit in the RTS 15:20:48 which changes the behaviour of putChar, presumably 15:20:51 elliott: which impleis to me strongly that it's libc that's doing the buffering, not ghc 15:21:00 err, seriously? 15:21:06 that's insane, why would you think that? 15:21:07 in fact, I actually have evidence that it's libc that does the buffering 15:21:16 it probably does, but hSetBuffering is in no way evidence for it 15:21:17 as there's absolutely no reason why ghc would use a differently-sized buffer on Linux and Darwin 15:21:38 (I was debugging someone else's Haskell code recently; the apparent bug was due to stdout buffering) 15:21:55 actually, no, if what I recall about GHC'S IO system is correct it does _not_ use libc buffering 15:22:02 hmm 15:22:03 but I'm not certain 15:22:14 anyway, I don't see how hSetBuffering is relevant 15:22:20 you could even implement the buffering with haskell code 15:22:40 elliott: you could, indeed 15:23:00 it depends on whether you implemented it inside or outside the exception handler, I guess 15:23:47 ais523: err... 15:23:49 what? 15:24:09 elliott: if the exception happens while the buffering code is still trying to calculate the buffer 15:24:12 it's not going to output the " 15:24:14 12:21:54: which makes me wonder, why _shouldn't_ you be able to catch exceptions in ST. or perhaps a subset of them. 15:24:21 unless the exception code goes through the same buffer itself 15:24:29 oerjan: runST (catch (error "a" ++ error "b") return) 15:24:44 ais523: I, um, no, you're wrong 15:24:53 ais523: the buffering code just has to append to a (char *) on putChar 15:24:55 elliott: O KAY 15:24:58 and flush it when it's too big 15:25:01 it doesn't even know about the rest of the string 15:25:09 oerjan: what? that's the exact reason exceptions are in IO to start with 15:25:10 oerjan: nondeterminism 15:25:11 elliott: oh, I thought it was using some sort of Haskell list as the buffer 15:25:26 ais523: it could do that, too 15:25:33 ais523: cons to the list on putChar, reverse + print it when it's too big 15:25:44 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 so it'd be pointless and slow :) 15:25:52 indeed 15:26:04 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 also, hmm, wouldn't output the ", because reverse would force the error before it forced the " 15:26:16 fizzie: yes, that seems plausible 15:26:20 ais523: um putChar obviously has to be strict 15:26:27 ais523: wait 15:26:29 ais523: that's irrelevant 15:26:33 ais523: reverse doesn't force any of the list heads, duh 15:26:46 elliott: but error isn't pretending to be a char, but a string 15:26:49 * elliott gives up 15:26:50 so it has to force the length 15:27:33 > fix ((:[]).error) 15:27:34 "*Exception: *Exception: *Exception: *Exception: *Exception: *Exception: *E... 15:27:51 heh 15:27:54 > putStr ("\"" ++ error "test") 15:27:56 15:28:04 !haskell putStr ("\"" ++ error "test") 15:28:09 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 ​*** Exception: test \ \ /tmp/runghcXXXX836.hs:1:1: \ Parse error: naked expression at top level 15:28:09 i don't know what !haskell's buffering is like 15:28:13 !haskell fix error 15:28:18 ​\ /tmp/runghcXXXX899.hs:1:1: \ Parse error: naked expression at top level 15:28:18 wtf, Gregor broke it again 15:28:22 !haskell main = fix error 15:28:27 ​\ /tmp/runghcXXXX962.hs:1:8: Not in scope: `fix' 15:28:31 >_< 15:28:35 !haskell import Data.Function; main = fix error 15:28:36 EgoBot: I take it lambdabot doesn't allow you to run arbitrary IO actions? 15:28:40 ​\ /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 *elliott: 15:28:43 fml 15:28:49 elliott: nah, !haskell is just anti-nudist 15:28:54 !haskell import Data.Function; import Control.Exception; main = evaluate $ fix error 15:28:57 !haskell main = putStr (fix error) 15:29:01 ​\ /tmp/runghcXXXX1153.hs:1:16: Not in scope: `fix' 15:29:04 oh, I forgot the import 15:29:12 !haskell import Data.Function; main = putStr (fix error) 15:29:19 EgoBot's I/O is broken 15:29:29 also, why do ghc error messages have leading newline? 15:29:31 *newlines? 15:29:31 Prelude> putStr ("\"" ++ error "test") 15:29:31 "*** Exception: test 15:29:35 there's your answer 15:30:06 so putStr forces the first character of the string before the second, or the string length 15:30:11 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 !haskell 2+2 15:30:30 4 15:30:47 oerjan: oh, the theory's that it can distinguish a parse error from a deliberate exception? 15:30:50 *it can't 15:30:51 12:53:02: kallisti: well for all i know there _might_ be a way to add other instances to give a loop from that. 15:30:59 oerjan: uh the coverage condition is basically complaining that your fundeps are borked 15:31:10 and aha 15:32:03 13:10:40: @tell Sgeo well i have a hunch that you need a bit of self-esteem more than you need intelligence. 15:32:06 elliott: erm concluding that the dependency transfers from SomeInstance a b to SomeInstance (c -> a) (c -> b) seems safe to me 15:32:08 oerjan: don't look now, but itidus21 is still around 15:32:28 elliott: i also have a hunch that you are not helping anyone's self-esteem. 15:32:44 oerjan: are you? :) 15:33:11 13:31:36: I should put this on github or something, probably 15:33:11 IT'S BROKEN!!!!!!!!!!!!!!!!!!!p:"ckw)(u as)_eoa{$}p#}${p|"aD; DL PSADJK SEP56 15:33:28 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 instance Monad Cap where 15:34:30 return = Cap . return 15:34:30 x >>= f = error "Tomorrow" 15:34:30 good monad 15:34:44 heh 15:35:01 ais523: the parse error happens after the distinction is done, on a second compilation path 15:35:47 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 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 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 fizzie, quite accurate too 15:36:47 fizzie, and which comic? 15:36:57 Vorpal: http://penny-arcade.com/comic/2003/02/28 15:37:13 "Quite accurate" -- yes, fear my dark feast. 15:37:24 fizzie, heh 15:37:41 elliott is the evil monster that raids the village daily. 15:38:32 15:00:44: this is a big argument for just writing functions by hand rather than importing the appropriate module 15:38:45 elliott: at least when they're simple 15:38:47 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 elliott: heh 15:39:22 I'm not sure I agree with that viewpoint 15:39:26 just, hnop is a big argument for it 15:39:33 (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 My god I am tired 15:40:03 ais523, hnop? 15:40:13 Vorpal: read scrollback 15:40:15 or logs 15:40:15 fizzie, well okay 15:40:21 I just carefully unwrapped a chocolate coin and tried to eat the wrapper 15:40:23 ais523, logs I guess 15:40:32 the problem with you is that you force every conversation to happen at least twice 15:40:33 fizzie, what about plain zlib then? 15:41:07 Ngevd: just deposit the rest http::/xkcd.com/ 15:41:11 er 15:41:18 *Ngevd: just deposit the rest http://xkcd.com/ 15:41:37 haha, Firefox had xkcd as its first history search result for "x" 15:41:39 oerjan, nah, I'm hungry, and I don't know where I could find one of those machiens 15:41:53 even though I rarely visit it, it's probably the most commonly visited result for me that starts with x 15:42:32 the problem with you is that you force every conversation to happen at least twice 15:42:47 ais523: as a logreader I'm offended! 15:42:54 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 I was aiming at Vorpal 15:43:02 Vorpal forces it to happen at least twice /non-automatically/ 15:44:11 eh? 15:44:16 ais523, I don't log read 15:44:19 * oerjan facepalm 15:44:21 so doubtful I would have noticed 15:44:22 let's paste this conversation to Vorpal so he understands it 15:44:30 the problem with you is that you force every conversation to happen at least twice 15:44:31 I'm not really interested 15:44:33 ais523: as a logreader I'm offended! 15:44:35 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 busy doing other stuff 15:44:37 I was aiming at Vorpal 15:44:39 Vorpal forces it to happen at least twice /non-automatically/ 15:44:43 eh? 15:44:43 ais523, I don't log read 15:44:43 * oerjan facepalm 15:44:45 so doubtful I would have noticed 15:44:47 I'm not really interested 15:44:49 busy doing other stuff 15:44:52 Vorpal: there, now you're up to date 15:44:52 oerjan: you need quite a big facepalm for that 15:44:56 elliott, .... 15:44:59 elliott, .... 15:45:01 Vorpal: hth 15:45:06 * oerjan realizes _after_ typing /me facepalm that he had just physically facepalmed 15:45:11 elliott: but now your quote has to quote itself 15:45:22 because if Vorpal's response to the communication is part of it, so is that quote 15:45:22 > fix (" " ++) 15:45:24 " oerjan: I physically facepalmed as well. while giggling. 15:45:26 ais523: done 15:46:05 hmm, I should try out the effects package 15:46:07 eff is cool 15:46:12 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 fizzie: [note that I'm guessing the context here 15:46:45 ] I've seen a CD player that could play data files 15:46:50 on data CDs 15:46:53 Vorpal: You can just burn a data CD with FLAC/OGG/MP3 nowadays if you have a modern enough CD player. 15:46:55 and decoded a range of formats 15:46:57 ais523: Yes. 15:47:05 fizzie, oh? 15:47:10 fizzie, well mine is kind of old 15:47:14 so doubtful 15:47:16 fizzie: Can't do what? Decode FLAC? 15:47:30 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 elliott: 2011-12-26 17:40:04 ( Vorpal) fizzie, what about plain zlib then? 15:47:48 elliott: Can't un-gzip. 15:47:48 But it'll probably be USB sticks with MP3s on them. :( 15:48:00 Deewiant: Thanks, but I need conversations repeated at least thrice to understand them 15:48:06 elliott: 2011-12-26 17:40:04 ( Vorpal) fizzie, what about plain zlib then? 15:48:13 Deewiant: Eh? 15:48:21 elliott: That's thrice 15:48:23 elliott: That's thrice 15:48:24 elliott: That's thrice 15:48:26 (Actually I hope the next big music format is there not being a physical music format.) 15:48:31 Deewiant: Repeated at least thrice, not peated at least thrice. 15:48:35 I mean, uh, eh? 15:48:47 Meh 15:49:02 fizzie, anyway, I think fitting all of Mozart's work on one CD instead of 50 or so would be awesome 15:49:04 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 ouch 15:49:53 Vorpal: But it comes with a poster, too. 15:49:57 fizzie: for the sort of people who buy $2000 HDMI cables? 15:49:59 fizzie, :D 15:50:29 ais523: For the sort of people who buy the collector's edition with the 10" lead figurine of a dragon. 15:50:38 ais523: at least FLAC is actually different to MP3s 15:50:42 ais523, I know someone who brought a $2000 ethernet cable. 15:50:52 admittedly, not perceptibly, as long as the MP3 is of sufficiently high bitrate 15:50:57 ais523, but it was okay. It was a huge roll of uncut installation cable 15:51:33 OK, /that/ was weird, Evolution just interpreted the success message it got after logging into Yahoo! Mail as an error message 15:51:41 fizzie, until they took an arrow in the knee that is 15:51:48 then tried to log in again, and got an error message saying you can't log in while already logged in 15:52:01 Vorpal: die 15:52:12 elliott: the $2000 HDMI cables are not the same as cheaper ones either 15:52:17 ais523: hmm, does Agora have contests this decade? 15:52:18 elliott, :P 15:52:23 it's doubtful that the differences have any effect on audio quality 15:52:24 elliott: yes 15:52:32 but there's only one in existence, and it's kind-of dormant atm, also holiday 15:52:38 elliott, why do you hate the arrow in the knee meme? 15:52:45 contests aren't a special case of contracts atm, btw, but something else 15:52:47 but they do exist 15:53:06 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 elliott, fair enough 15:53:41 you know shit is serious when the bulleted lists are nested. 15:53:44 elliott, it is kind of amusing if you played the game. 15:53:51 kallisti, :D 15:53:54 "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 ...ugh, is someone defending arrow in the knee? 15:54:04 kallisti: Vorpal 15:54:05 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 elliott: it was a sort of rhetorical question. :P 15:54:20 I wasn't defending it 15:54:23 kallisti: TROLOLOLOLOLOLOLOL U MAD BROTHER??? forever alone 15:54:27 but yes, it gets old quickly 15:54:30 I hate myself. 15:54:35 * elliott cries. 15:54:36 fizzie, several km iirc 15:54:43 km of ethernet? :D 15:54:52 fizzie, he works professionally with network installation stuff 15:54:57 They should measure Ethernets in Londons. 15:55:05 3 London roll of Ethernet (collapses; forms black hole). 15:55:37 fizzie, anyway it was about 10 years ago 15:55:40 elliott: >implying over 9000 fffffuuuuu inb4 chris hansen 15:55:48 fizzie, price might differ these days? 15:55:50 I don't know 15:56:00 elliott: one day it will be posible to hold an entire conversation in only memes. 15:56:17 English sentences will be formed by concatenating memes. 15:56:20 I have no idea what anyone is talking about 15:56:37 kallisti: I see you haven't talked to anyone who frequents /b/ in the last five years. 15:56:47 elliott: their methods are still imperfect. 15:56:59 occasionally they have to use original phrases to express themselves. 15:57:10 They're still capable? 15:57:20 kallisti: Augh, I just saw your response now looking up. 15:57:20 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 That's quite a bit of cable. 15:57:26 I need peril-sensitive sunglasses. 15:57:47 elliott, I see what you did there 15:57:51 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 `addquote [...] 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 heh 15:58:11 hmm, what is the least valuable solid, by volume? 15:58:13 776) [...] 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 ais523: cheese 15:58:35 I doubt it 15:58:37 elliott, have you seen what some cheese cost? 15:58:51 elliott: you just inadvertently used a starcraft 2 term. (cheese) 15:59:08 kallisti: it's 15:59:09 or well, a general SC term. 15:59:09 ais523, some sort of plastic? 15:59:11 also an english language term 15:59:14 elliott: nope. 15:59:14 ais523: If you're willing to accept a mixture of crap, people will pay you to haul theirs away. 15:59:28 elliott: unpsosible 15:59:33 fizzie: A mixture of crap? Different fragrances and blends of faeces? 15:59:37 kallisti: talking about cheesing in that context is a general computer gaming concept 15:59:47 ais523: oh it is? i was unaware. 15:59:47 elliott: hmm, I think I meant to buy 15:59:55 ais523, "cheesing"? 15:59:56 buying excrement is actually reasonably expensive 15:59:58 Vorpal: yes 15:59:59 ais523: i think sc2 takes it to a different level though. 16:00:04 ais523, what does it mean 16:00:06 kallisti: it takes everything to a different level 16:00:26 ais523: why do you know this 16:00:26 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 ais523, ah, so a strategy game term then? 16:00:40 ais523: re feaces 16:00:40 elliott: I know at least one sc2 player in real life 16:00:42 faces 16:00:43 and I watch a lotof games 16:00:43 ais523: no 16:00:46 the poop part 16:00:50 oh, TV shows 16:01:00 there are tv shows about buying poop 16:01:03 ok 16:01:04 people end up buying it as fertilizer now and again 16:01:19 so the TV shows aren't about buying poop, but it comes up 16:01:55 Well, I mean, you can buy scrap metal, but that's not exactly a single solid. 16:02:07 E.g. here's one add if you want to buy 15 tons of hard discs. 16:02:14 I guess you could use cheese in the context of other multiplayer games 16:02:18 These are all "price on request", so I can't provide prices. 16:02:23 or maybe single-player games for "cheap" tricks. 16:02:25 But I'm sure you could dig out some data from there. 16:02:57 kallisti: it works in single-player games too, normally referring to AI deficiencies 16:03:14 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 ais523, AI deficiencies is standard in single player games 16:03:48 sure there are exception, chess games for example 16:03:52 kallisti: all sc2 players who are even remotely good gather information 16:04:03 Vorpal: nah, there are chess games with good AIs but they're the exception, not the rule 16:04:06 even I scout, and I'm not good at all. :P 16:04:59 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 solved problem 16:05:51 irrelevant. 16:05:56 kallisti, and I can beat it if I get to do the first turn 16:06:18 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 Vorpal: eh, a cheese move if you ask me. 16:06:25 kallisti, heh 16:06:38 FUCK YOUR PERFECT INFORMATION GAMES. 16:06:42 Vorpal: how do you win tic-tac-toe against a perfect player? 16:06:54 perfectly. 16:06:56 ais523, by taking the first turn and doing perfect play? 16:07:08 ais523, it is always the first player who wins if both play perfectly 16:07:10 Vorpal: that leads to a draw in tic-tac-toe? 16:07:20 hm does it? Maybe I misremember then 16:07:23 yes it does. 16:07:27 right 16:07:37 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 how expensive is ice? 16:08:01 hmm, dirt is thus actually quite expensive 16:08:08 Vorpal: depends on where you live I guess. 16:08:12 thus, I hereforth ban people from using the phrase "dirt cheap" 16:08:17 kallisti, south pole 16:08:17 A cubic yard is quite a lot of dirt. 16:08:32 Vorpal: undefined. no one sells ice there. 16:08:37 fizzie, how long is a yard now again? 16:08:51 kallisti, north Sweden then? 16:08:53 Vorpal: a little less than a metre 16:08:56 ah 16:09:07 Vorpal: TRICK QUESTION SWEDES ARE MADE OOF CIE 16:09:14 the brits have very small yards 16:09:15 ^ha 16:09:15 ha. ha. ha ha. ha ha ha. ha ha ha ha ha. ha ha ha ha ha ha ha ha. ha ha ha ha ha ha ha ha ha ha ha ha ha. ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha. ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha ha 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 a metre's approximately 39 inches; a yard is 36 16:09:36 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 This is not Minecraft, though. 16:10:02 lol @ people not knowing what a yard is intuitively. 16:10:05 Vorpal: TRICK QUESTION SWEDES ARE MADE OOF CIE <-- good thing we are worth more than our weight in ice then 16:10:11 fizzie, :P 16:10:12 kallisti: are you American? 16:10:15 yes. 16:10:19 the word's hardly used as a measurement in most of the world 16:10:27 being British, I know people who are old enough to remember what yards are 16:10:31 kallisti, indeed. Sweden uses the metric system 16:10:33 I know. I WASN'T BEING SERIOUS. 16:10:33 yardly used 16:10:35 and the measurement is used on road signs occasionally 16:10:39 sheesh 16:10:43 but it doesn't come up in regular conversation 16:10:50 ais523, unless you play golf 16:10:52 * Vorpal punches oerjan 16:10:53 (whereas miles are used all the time on road signs) 16:11:01 Ngevd: but I don't play golf 16:11:02 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 hmm, dirt is thus actually quite expensive 16:11:06 FSVO expensive 16:11:08 ow 16:11:08 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 ais523, then it doesn't 16:11:14 ais523, and that is not a Scandinavian mile either I assume? 16:11:18 ais523, which is 10 km 16:11:21 ais523: http://farm4.static.flickr.com/3125/2778009865_4cc9b6c99e.jpg 16:11:21 Vorpal: 1618m 16:11:25 ais523, right 16:11:33 or possibly 1619, I forget the last digit 16:11:50 ais523, road signs here use km, but in conversation people often use miles (10 km) 16:11:53 1609 16:11:54 `frink 1 mile -> km 16:11:57 ais523: I'm relatively well-accustomed to yards 16:11:57 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 ais523: they're not that uncommon 16:12:03 s/buil/bulk/ 16:12:06 25146/15625 (exactly 1.609344) 16:12:12 1.6 ~ 10 16:12:37 elliott: lol 16:12:53 I.. noticed that. 16:13:05 I thought "there's no way that's the ratio my speedometer uses" 16:13:13 fizzie: Birmingham City Council ran out of sand/salt mixture a couple of years ago 16:14:02 it can get in short supply during winter 16:14:13 fizzie: i occasionally hear people proposing towing icebergs to the persian gulf or so 16:14:18 Bye! 16:14:23 *read about 16:14:25 -!- Ngevd has quit (Quit: no more internet anymore). 16:14:27 Concrete costs $70/cubic yard, delivered. 16:14:32 oerjan, I heard about that too 16:14:44 kallisti: did topatoco send you toy money too 16:14:50 elliott: no... 16:14:55 why would they do that. 16:15:09 fizzie, so what about gravel? 16:15:23 kallisti: well 16:15:30 my package came with $1000 in toy money 16:15:30 so 16:15:34 yeah 16:15:42 ais523: Recycled sawdust/shavings at $7.85/cubic yard. 16:16:03 ..how did this become a conversation about the costs of various construction materials. 16:16:04 fizzie, that is kind of cheap 16:16:06 (And topsoil at $9.75 from the same place.) 16:16:27 kallisti: something went asymptotically wrong, i think 16:16:29 kallisti: ais523 wanted to know what the cheapest solid is 16:16:30 anyway 16:16:35 does anyone want a 1000 dollar note of toy money 16:16:38 also, I find it strange that this is being discussed in dollars. don't you guys have your own currencies? 16:16:50 kallisti, sure, SEK 16:16:53 or EUR 16:16:56 or GPB 16:16:57 err 16:16:58 kallisti: It's easiest to find prices in $s in the webs. 16:16:58 dollars are rather more universal for buying things like materials in bulk 16:16:58 GBP 16:17:16 what is the Chinese currency called? 16:17:17 also, everyone knows how much dollars are worth 16:17:22 oh, okay. 16:17:22 nobody knows how much euros are worth :P 16:17:26 Vorpal: renminbi 16:17:34 I guess it was so convenient for me that I didn't pay much attention to it. 16:17:35 oerjan, I never heard of that before, are you sure? 16:17:44 Vorpal: yuan is the base unit 16:17:46 Vorpal: colloquially "yuan" 16:17:48 elliott, ah 16:17:49 Vorpal: You have to pay like $50/cy for gravel-with-no-dirt-in-it. 16:17:51 right 16:17:59 fizzie, that much? heh 16:18:06 I'm guessing the cheapest solid is..... 16:18:09 fizzie: But it's so ugly! 16:18:37 packaging peanuts. 16:18:38 elliott, :D 16:18:42 how much are those? 16:18:43 elliott, just switch texture pack 16:18:53 elliott, currently I'm using one where it looks like concrete blocks 16:18:56 that's probably not the cheapest solid. 16:19:03 Vorpal: I make gravel deliberately ugly because it sounds ugly to step on and it acts ugly. 16:19:09 It is the Enemy, it must look like sin. 16:19:17 ah 16:19:32 anyway I'm guessing syrofoam is pretty cheap. 16:19:39 +t 16:19:48 kallisti, syrofoamt? 16:19:50 ;P 16:20:04 yes. 16:20:08 good eye. 16:20:10 right 16:20:19 I rather doubt synthetic styrofoam is cheaper than muck. 16:21:04 define "muck" 16:21:11 elliott: by volume? 16:21:21 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 Also, I mean crap. 16:21:32 As in what fizzie was talking about. :p 16:21:43 "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 Nice. 16:21:54 hmmm a 6"x12" sheet of aluminum is $3. "0.32 thickness" whatever that means. measured by gauge maybe? 16:22:02 elliott, ouch 16:22:03 that's incredibly cheap compared to everything mentioned so far. 16:22:12 considering it that's sold in thin sheets. 16:22:18 er 16:22:21 so yeah 16:22:27 if it were A BLOCK 16:22:30 it would be cheap. 16:22:38 kallisti: Do you want my toy money. 16:22:41 no it wouldn't 16:22:47 elliott: no. 16:22:55 Vorpal: if it magically became a block at the same price 16:22:55 that's incredibly cheap compared to everything mentioned so far. 16:22:56 is what I meant 16:22:56 ais523: Recycled sawdust/shavings at $7.85/cubic yard. 16:23:02 i am rather sceptical 16:23:09 elliott: I judged too quickly. : 16:23:11 : 16:23:32 [[ 16:23:33 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 submitted 11 hours ago by IggySmiles 16:23:33 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 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 hmmm does plaster count as a solid? 16:23:37 ]] 16:23:41 god bless redditors, living in gameless poverty for FREEDOM 16:23:47 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 it's almost as bad as the holocaust :'( 16:24:16 fizzie: I don't see why ais523 doesn't count that as $-8/cy. 16:24:19 fizzie: shipping companies buy it to ship things. also people shipping stuff from their home I imagine. 16:24:28 I mean, lots of people have styrofoam, you can easily put up an offer to accept it for that price. 16:24:52 kallisti: Yes, but everyone wants to get rid of it, so it's easier to find the latter. 16:24:57 Certainly people do buy it. 16:25:07 I wonder what the density of plaster is. 16:25:12 a 25 pound tub is $3 16:25:23 er 16:25:30 I CAN'T READ 16:25:38 an ounce tub is $3 16:26:07 ah wait here's a unit of volume. 16:26:11 half a gallon is $8 16:26:44 kallisti, how many cubic yards are half a gallon? 16:27:03 anyway I doubt it is solid if it sold in those units 16:27:09 elliott: operate the frink machine. 16:27:13 operator. 16:27:19 `frink half gallon -> cubic yard 16:27:26 elliott: thank you, operator. 16:27:30 77/31104 (approx. 0.002475565843621399) 16:27:37 lol 16:27:43 I'm bad at this game. 16:27:47 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 `frink litre -> cubic metre 16:27:54 I don't know about the rigid sort of styrofoam. 16:28:00 s/froam/foam/ 16:28:00 1/1000 (exactly 0.001) 16:28:08 `frink american spelling -> british spelling 16:28:19 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 piece of shit converter. 16:28:24 kallisti, you need simple conversion ratios like 1/1000 (exactly 0.001) 16:28:26 froam 16:28:37 `frink litre -> dm³ 16:28:44 Vorpal: Simple in decimal, maybe. 16:28:46 Unknown symbol "dmB3" \ Warning: undefined symbol "dmB3". \ Unconvertable expression: \ 1/1000 (exactly 0.001) m^3 (volume) -> dmB3 (undefined symbol) 16:28:49 elliott, well yes 16:28:51 `frink litre -> dm^3 16:28:59 1 16:29:08 elliott, now that is simple in all bases :P 16:29:29 elliott, anyway human calculation is built on decimal 16:29:42 Vorpal: CULTURE BIAS 16:29:46 UNCULTURED FUCK 16:29:53 elliott, anyway western human calculation is built on decimal 16:29:56 there we go 16:30:05 NOT JUST WESTERN YOU UNCULTURED FUCK. 16:30:08 yes I know about base 60 for the Babylonians and so on 16:30:16 NO YOU SUCK UGH 16:30:23 not pedantic enough 16:30:27 need more correctness 16:30:40 be more correct 16:30:40 kallisti, sure, but western is, I didn't say anything about the other ones in the last statement 16:31:22 kallisti, anyway aren't you american? You guys are /all/ cultural bias. 16:31:36 no your statements must be assertions about the entire universe where the negation is always implied to be false. 16:32:29 doesn't /every/ statement imply its negation to be false? 16:32:37 ais523: paraconsistent logic, man! 16:32:38 unless it's sarcastic or similar? 16:32:43 using stereotypes to demonstrate cultural bias. beautiful. 16:32:54 kallisti, indeed 16:33:03 I am the most political correct entity of all. 16:33:10 people bow down to my culturelessness. 16:33:23 ha. yes. 16:33:37 -!- MSleep has changed nick to MDude. 16:33:38 life is good as politically correct overlord 16:34:18 C++-1x is not finalised yet is it? 16:34:33 anyway I'm going to go eat some lunch. happy kwanzaa guys! 16:34:40 C++11 was finalised months before C11. 16:34:51 elliott, how embarrassing 16:34:53 Vorpal: C++11 i.e. ISO/IEC 14882:2011 was published in September 16:34:58 Deewiant, right 16:36:46 "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 because astronauts 16:39:02 Hmm, 110 over 7.5. 16:39:02 the top rated answer is basically gibberish to me. 16:41:04 this must be how you get upvotes on mathoverflow 16:41:14 kallisti: hint, it's "math", not "stack" 16:41:23 pack as much theoretical nonsense into every sentence as possible. 16:41:54 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 kallisti: you *are* kidding, right? 16:42:13 about the last thing i said? yes. 16:42:26 but yes the top rated answer is gibberish to me. 16:42:31 fizzie, wasn't the saw dust cheapest so far? 16:42:37 http://www.google.co.uk/search?sourceid=chrome&ie=UTF-8&q=cheapest+solid I DON'T WANT WOOD FLOORING 16:43:03 elliott, heh 16:43:04 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 elliott, try wolfram alpha 16:43:39 "(data not available)" 16:43:41 "top 0.17% this month" omg I'm in the monthly rankings now :DDDDDDDDDd 16:44:04 fizzie, how boring 16:44:08 elliott: pretty soom yollb ecome amfous 16:44:22 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 kallisti: don't worry, it's 90% gibberish to me too 16:44:35 elliott, for what? 16:44:55 Vorpal: ? 16:44:57 oerjan: what, you don't know about the Geometry of Iterated Loop Spaces? 16:45:01 "top 0.17% this month" omg I'm in the monthly rankings now :DDDDDDDDDd 16:45:04 elliott, that 16:45:05 kallisti: shockingly, no 16:45:15 Vorpal: Units. 16:45:39 elliott, what website I meant 16:45:52 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 maybe he just made up a bunch of stuff. 16:46:08 Vorpal: The website from which units are measured. 16:46:11 maybe it's conespearacy 16:46:23 elliott, give me the url to it please 16:46:42 kallisti: i assume that question is _for_ category theorists, who would know about such things. 16:47:07 Vorpal: Why? 16:47:13 elliott, why not? 16:47:22 elliott, because you are a kind person? 16:47:39 elliott: because you believe in the benefit of sharing 16:47:47 kallisti, that too 16:48:07 We've already established I'm evil! 16:48:14 because mutual selflessness creates a sense of community? 16:48:17 15:35:56: 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 BECAUSE MORALS ETC 16:48:38 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 Vorpal: i think elliott might want to keep you away from that website, for the good of humanity. 16:48:55 Quite. 16:48:57 oerjan, what website would that be? 16:49:06 ..... 16:49:11 google.com 16:49:11 Vorpal: do i look like i want to doom humanity? 16:49:12 NICE TRY. 16:49:17 oerjan, yes 16:49:23 oerjan, I guess I could log read for it 16:49:29 ok, so i do, but not in _quite_ such a painful way. 16:49:49 oerjan, what if I promise to not become active on it? 16:49:57 wat 16:50:05 kallisti, do you know what website this is? 16:50:09 no 16:50:09 no 16:50:11 kallisti knows nothing 16:50:13 I bet i could find it though 16:50:13 aww 16:50:15 quickly. 16:50:26 kallisti, well I don't know what to search for exactly 16:51:30 oerjan, anyway come on, you can tell me, I won't tell anyone, nor use this info for anything 16:51:33 i mean, pushing a black hole into the earth is so much cleaner and quicker. 16:52:01 I could probably just log read for it, but that would take time 16:52:03 hm i guess "pushing" is the wrong word, you can only use gravity to pull it 16:52:03 oerjan: pls don't kill me btw 16:52:59 Vorpal: okay fine I'll spare you. 16:53:00 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 http://sourcereal.com/ 16:53:04 elliott: maybe i can find room for you on my glorious spaceship 16:53:09 kallisti: dammit 16:53:11 we're all doomed now. 16:53:23 oh I heard that mentioned some time ago. *shrug* 16:53:27 lmao 16:53:34 lmaooooooooo 16:53:38 elliott, yes I realise it isn't that 16:53:38 now Vorpal will kill the world with sour cereal 16:53:38 :P 16:53:52 the best part of the website 16:53:53 is 16:53:54 it definitely doesn't seem to be related to what elliott said at all 16:53:56 ..actually I can't decide 16:53:59 I like the table though 16:54:22 kallisti, yes it quite nice 16:54:26 it is* 16:55:46 kallisti: it's a chart, not a table! 16:55:47 sheesh 16:55:49 oerjan, anyway I can tell you I would not use the knowledge of that site for anything. :P 16:56:09 elliott: invalid element in line elliott in elliott.html 16:56:22 kallisti: it says chart on the page, twice 16:56:27 * elliott _really_ wants to know who owns sourcereal.com 16:56:39 HTML SUPERCEDES ENGLISH COMPREHENSION 16:57:07 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 kallisti, what is your user agent string? 16:58:34 "Mozilla/5.0 Windows Linux AppleWebKit Safari Gecko-like Chrome KHTML kallisti is t3h l33tz0r35t" 16:58:41 heh 16:58:57 actually it's that thing that gregor linked. 16:59:06 where he grepped through his server log and mashed up a bunch of useragents. 16:59:12 right 16:59:30 yes 16:59:33 inded 16:59:51 /^kal/s/e/ee/ 17:00:04 wat 17:00:14 kallisti, that is a plain sed expression 17:00:21 what is the problem? 17:00:23 i don't grok sed. 17:00:28 I accept only perl. 17:00:36 kallisti, on line starting with "kal" replace e with ee 17:00:41 so inded 17:00:45 oh okay 17:00:48 would become indeed 17:00:51 I see. 17:00:54 but no 17:00:56 it's inded 17:00:57 kallisti, anyway I don't grok perl 17:01:00 sorry your regex is meaningful 17:01:06 less 17:01:08 meaningfulness 17:01:10 +l 17:01:12 ... 17:01:12 :) 17:01:15 it is indeed 17:01:19 :P 17:01:23 yes it is meaningfulless 17:01:24 lessfulmess 17:01:54 kallisti, anyway it is meaningfulness 17:01:56 kallisti, on line starting with "kal" replace e with ee 17:01:57 not meaningfulless 17:01:58 so inded 17:02:00 would become indeed 17:02:03 this is incorrect 17:02:12 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 kallisti: uh 17:02:19 elliott, not at all, my client adds the <> when copying 17:02:22 monqy linked sour cereal first 17:02:22 elliott, it doesn 17:02:23 ages ago 17:02:25 doesn't* show them 17:02:27 elliott: oh. 17:02:31 and implied he'd known about it for ages 17:02:34 elliott: I see. 17:02:49 Vorpal: your statement was still incorrect 17:02:58 elliott, how so? 17:03:25 Vorpal: because inded 17:03:28 would not become indeed. 17:03:39 elliott, what would happen instead? 17:04:09 elliott, master of tautology 17:04:22 Vorpal: it would become inded. 17:04:28 "your statement is incorrect because the thing you said it would do is not what it does" 17:04:28 because inded does not start with kal. 17:04:45 elliott, oh but it does since <> are not shown in my irc client 17:05:10 Vorpal: cultural bias 17:05:31 gtb2 swedeen wiit your <>fullessness 17:05:31 kallisti, definitely 17:05:39 Vorpal: you are incorrect. 17:05:47 elliott, I am not 17:06:03 elliott, the expression applied to the line I saw in my irc client 17:06:10 NOT to the actual data sent from the server 17:06:14 or anything like that 17:06:25 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 < elliott> kallisti knows nothing <-- Can anyone truly know anything? 17:06:47 nope 17:08:40 llklllkllklklkllklklllllkllklllllllkllllkllklllklkllklklkllllkklklklklklklklklllkkklkllklklkklllklklklk 17:08:46 challenge: make this into an esolang 17:08:54 er 17:08:56 an example program 17:08:57 rather 17:09:02 in an esolang 17:09:05 of your design 17:09:06 easy 17:09:14 kallisti, l and k are nop instructions 17:09:22 challenge: make it not shitty 17:09:26 gogogogo 17:09:28 kallisti, tricky 17:09:47 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 oerjan: he already does. his only has one line of scrollback. 17:10:09 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 elliott: oh right. 17:10:11 hmm 17:10:16 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 kallisti, "llklllkllklklkllklklllllkllklllllll" is defined to print "Hello, " and "kllllkllklllklkllklklkllllkklklklklklklklklllkkklkllklklkklllklklklk" to print "World!" 17:10:26 still shitty 17:11:30 * oerjan notes that sourcereal.com reminds him of zzo38 17:11:35 kallisti, it is actually valid trefunge 17:11:41 doesn't do anything interesting 17:11:52 oerjan: I njoted this aswel 17:11:52 I think it just goes off into negative z right away 17:12:05 or perhaps positive z 17:12:08 `log [z]zo.*sourcereal 17:12:10 not completely sure 17:12:40 No output. 17:12:49 ARGH, NO EVIDENCE 17:16:01 oerjan, it obviously isn't zzo who made it 17:16:25 oerjan, why? gopher://sourcereal.com/ doesn't work 17:16:36 elliott: http://sprunge.us/iZJe 17:16:38 ...you have a point there. 17:16:51 oerjan, and the design is too advanced for his style as well 17:17:35 elliott: saddly, it expires in 2013 17:17:46 but was apparently updated yesterday? 17:18:40 updated howso 17:18:46 I don't know 17:18:54 * elliott already whois'd it ages ago 17:19:07 you clever dog. 17:20:43 so, what is this sour cereal site? 17:21:02 THE BEST 17:21:24 it is a site with helpful information about sour cereal 17:21:35 also other cereals 17:21:40 such as cereal 17:21:55 so ;5are on? 17:22:00 colours are on* 17:22:05 yes 17:22:09 dammit I forgot syntax for bg colour 17:22:17 now we can be obnoxious with no penalty. 17:22:20 test 17:22:26 Vorpal: It's an experiment. So far it has led to just one rainbow. 17:22:31 fizzie, ah 17:22:39 fizzie, what is the syntax for bg colour? 17:22:42 kallisti: And the "Half a bowl", which may be a cereal. 17:22:44 hi 17:22:49 im giong to talk like this from now on 17:22:52 well elliott found it 17:22:58 fizzie: It's a rather long-running experiment by now :P 17:23:00 Isn't it just with comma? I forget. 17:23:04 Yes, it's comma. 17:23:04 Vorpal: ^[[40m to ^[[47m 17:23:05 test 17:23:07 yes 17:23:07 9,9sup 17:23:09 test 17:23:09 oop 17:23:10 s 17:23:11 sup 17:23:12 test 17:23:14 and ^[[49m to go back to the default 17:23:20 ais523, no for irc :P 17:23:24 * oerjan runs screaming under a rock 17:23:26 ais523, not for terminal 17:23:28 The GREEN SUN. 17:23:32 Yay, I gots it right. 17:23:35 oerjan, heh 17:23:37 elliott: ah you OK? 17:23:43 ais523: Ah I OK. 17:24:04 oerjan, well there it is then 17:24:09 elliott: I sort of forgot to disable it when the stipulated hour had gone. 17:24:14 the only useful one is bold IMO 17:24:14 -!- incomprehensibly has quit (Quit: Leaving.). 17:24:28 oerjan, there should be a way to block colours but allow bold 17:24:41 * elliott only wants it for bold. 17:24:45 And occasional fun-rainbows, I suppose. 17:24:48 HELLO EVERYONE THIS IS MY EXCELLENT MESSAGE ABOUT THE BENEFITS OF GOOD COLOR CHOICES 17:24:58 I don't think anyone is stupid enough to actually use colours for non-novelty purposes in here. 17:25:04 indeed 17:25:30 Hey, how do I configure my client to use a specified color by default for all messages. 17:25:34 DON'T FORGET UNDERLINE 17:25:38 TEST 17:25:42 kallisti, oh right 17:25:43 This will show as italic to ais523. 17:25:48 fizzie: /help quit 17:25:51 kallisti: What code's that again? 17:25:54 kallisti: */quit help 17:25:58 elliott: indeed 17:26:03 test 17:26:04 elliott: I don't actually know but in irssi it's C-_ 17:26:04 test 17:26:06 test 17:26:07 ah 17:26:10 and this shows as italic to me, but probably not anyone else 17:26:13 hi 17:26:14 http://google.com 17:26:15 heh 17:26:18 lol 17:26:21 that's uncanny 17:26:22 underline like this? 17:26:29 `addquote http://google.com 17:26:32 777) .18.<.Vorpal.>.. .2.http://google.com 17:26:35 aw :( 17:26:36 -!- incomprehensibly has joined. 17:26:37 that was quotable! 17:26:40 `delquote 777 17:26:42 elliott, it was 17:26:44 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 ​*poof* .18.<.Vorpal.>.. .2.http://google.com 17:26:55 and /also/ filters out colour codes in what's sent, but not underlines 17:26:56 ais523: mine shows them as normal text, and underlined on hover 17:26:58 heh 17:27:02 hah 17:27:07 the result is, that Vorpal's comment is indistinguishable from if it had been unformatted 17:27:10 ais523: mine shows them as normal text, and underlined on hover <-- same 17:27:21 ais523, well it was a blue underlined link 17:27:26 tasteful colors are good 17:27:29 Vorpal: I guessed from context 17:27:37 kallisti, that is the default colour of my own lines :P 17:27:38 grey 17:27:55 some colors are the worst colors ever invented 17:27:57 oops 17:28:02 some colors are the worst colors ever invented 17:28:03 kallisti, teal? 17:28:09 err, light teal? 17:28:09 no bright fucking cyan 17:28:13 my least favorite color. 17:28:15 kallisti, light teal here 17:28:17 kallisti: I like cyan! 17:28:30 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 no 17:28:44 aww :( 17:28:47 my text is like my soul 17:28:49 ais523, I think cyan is awesome because of printing 17:28:53 elliott: oh, I had sgthoughts 17:29:08 my text is like my soul <-- mudane? 17:29:11 I was thinking about one of my potential solutions to solve the deletions problem 17:29:24 and it not only solves both deletions and moves, but it also makes everything more orthogonal 17:29:25 Also now I can be Doc Scratch (at least for people with sensible default background colors) 17:29:26 ais523: i had sgthoughts too, but they were all parodies of yours 17:29:33 because it removes SOF and EOF too as explicit symbols 17:29:38 kallisti: that's black not white 17:29:41 ais523, I like how sgthoughts is one word 17:29:43 test 17:29:49 elliott: well yes, but... that's not the point. 17:29:50 6test? 17:29:51 17:29:53 elliott, light grey on white? 17:29:53 the point is that it's hard to read 17:29:54 17:30:03 kallisti: not for me 17:30:05 that was no text at all 17:30:06 hey, no fair sending empty messages 17:30:11 they're not empty 17:30:11 because Freenode doesn't let me 17:30:14 they contain a single control character 17:30:17 17:30:17 ah, I see 17:30:21 ooh time for... 17:30:21 elliott: that's because you either have a) youthful eyes b) a non-sensible background color 17:30:25 kallisti: b 17:30:30 but also a 17:30:37 -e ASCII BELL! 17:30:39 err 17:30:40 wow 17:30:41 that 17:30:42 that worked 17:30:43 lol 17:30:44 how 17:30:48 that 17:30:49 elliott, it didn't 17:30:52 actually made my pc speaker beep Vorpal 17:30:54 seriously 17:30:55 elliott, it did? 17:30:57 lol 17:30:58 well 17:30:58 try it again 17:31:03 elliott, I did /exec -o echo -e 'ASCII BELL!\007' 17:31:10 but why the fuck was -e pasted into there 17:31:12 17:31:13 -e ASCII BELL! 17:31:14 yep 17:31:15 it works 17:31:16 I have system alert turned off like any sane person. 17:31:17 on xchat 17:31:18 why 17:31:19 the fuck 17:31:21 17:31:22 kallisti: background colors lead to a flamewar over AceHAck 17:31:23 aw 17:31:24 only one per line 17:31:31 17:31:31 17:31:31 17:31:31 17:31:31 17:31:33 beautiful 17:31:33 ok 17:31:35 elliott, it doesn't beep me 17:31:36 i'lls top now 17:31:38 which I've potentially fixed via an option 17:31:40 just fyi 17:31:41 Vorpal: do you have pcspkr loaded 17:31:47 elliott: what sound does your client make in response to a nickping? 17:31:50 elliott, nope and xchat is set to not beep at all 17:31:53 ais523: none 17:31:55 hahahahahaha nickping sounds 17:32:02 IIRC, it leads to a PC speaker beep in Freenode webclient on Firefox on Scientific Linux 17:32:02 another thing that unsane people do. 17:32:06 also nickcoloring. 17:32:22 clearly the most sensible thing to do is irssi with mostly default settings. 17:32:24 nick colouring is horrible 17:32:33 Vorpal: oh, I never bothered to turn it off 17:32:39 because irssi is THE CLIENT OF THE FUTURE 17:32:44 kallisti, I just use grey for self, blue for other, red for other highlighting me 17:32:45 although it's not very good at picking unique colours (e.g. elliott and kallisti have the same colour right now) 17:33:01 what colour am i 17:33:04 Vorpal: I do pink for self, white for other, red for highlight, but on the actual message, not on the nick 17:33:05 elliott, blue 17:33:08 elliott: purple 17:33:16 wwhy 17:33:21 ok that's the first and last time i'm doing that 17:33:23 ais523, on whole line except for the blue case where I have black text 17:33:34 Vorpal: what colour's the background? 17:33:38 ais523, white 17:33:46 so your own comments are grey on white? seriously? 17:33:51 ais523, dark grey 17:33:52 hi 17:33:56 ais523, it is almost default xchat 17:34:07 %AACTION test%A 17:34:12 hmm 17:34:14 ais523, nope 17:34:18 % letter often means control-letter on this client 17:34:19 you want \001 17:34:22 ah 17:34:23 but not for control-A, it seems 17:34:28 Vorpal: I know how to do a CTCP 17:34:33 right 17:34:34 I was just wondering if my client would translate that into one 17:35:01 * oerjan tests 17:35:08 oerjan: that is a valid CTCP 17:35:12 abcde fuck it this is boring 17:35:41 fizzie: Also I don't think "rainbow" is quite the right word for my initial colour spew. 17:36:06 Well, "broken rainbow". 17:36:10 > text "\EXT3hi" 17:36:11 : 17:36:11 lexical error in string/character literal at chara... 17:36:23 fizzie: Brainbow. 17:36:33 You brainbower. 17:36:46 elliott, watch out for the zombies then 17:36:48 Sounds a brony term. 17:36:48 hmm, I am almost convinced there's a website out there somewhere that does rainbow-coloured phpBB code 17:36:57 > text "\ETX3hi" 17:36:58 3hi 17:37:00 :( 17:37:06 it's like Cale KNOWS 17:37:29 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 I was very well-liked. 17:38:25 sh: -c: line 0: unexpected EOF while looking for matching `'' 17:38:25 sh: -c: line 1: syntax error: unexpected end of file 17:38:27 ... 17:38:32 well that stealth beep backfired 17:38:42 elliott, heh 17:38:56 elliott, anyway I believe colour blocking does not block ascii bells 17:39:07 so people probably should filter it out in their clients 17:39:08 > text '\b' 17:39:09 Couldn't match expected type `[GHC.Types.Char]' 17:39:09 against inferred ty... 17:39:14 > text "\b" 17:39:17 least someone spam them with it 17:39:23 > text "hi\b" 17:39:23 hi 17:39:55 I'm guessing lambdabot filters it. 17:39:57 elliott, btw bell is \007 17:40:29 ^bf +++.,[.,]!2I'm so blue 17:40:30 I'm so blue 17:40:37 Vorpal: i know that 17:40:37 heh 17:40:41 > text "hi\a" 17:40:42 hi 17:40:54 fizzie: Careful, you'll attract plasmoids. 17:41:06 elliott, eh? 17:41:13 -!- incomprehensibly has quit (Quit: Leaving.). 17:41:17 this likely looks horrible? 17:41:19 yes 17:41:41 is that red on orange? 17:41:43 I think it is 17:41:44 beautiful 17:41:56 4,8 anyway 17:42:55 elliott, THIS MESSAGE IS OF GREAT IMPORTANCE!!! 17:43:01 ouch 17:43:23 fizzie must be loving this experiment. 17:43:32 come on it is for novelty still 17:43:46 More like LOLVELTY. 17:43:50 it is going to pass 17:44:01 anyway red,bold,underline is horrible 17:44:35 How could I possibly make things worse 17:44:43 hm 17:44:54 bbl food 17:44:56 Your computer must've given up partway through. 17:45:02 How could I possibly make things worse 17:45:08 I accidentally typed a clear code. 17:45:39 beautiful 17:45:40 just bold random letters, and also capitalize random letters 17:45:44 do links work like that 17:45:50 hmm, perhaps I'll need a script to do that 17:46:00 elliott: http://test.%Bexample%B.com 17:46:05 ais523: fail 17:46:13 oh, hmm, my client doesn't interpret bolding inside a link? 17:46:23 even more confusing, it's decided that what I /did/ write is a link to http: 17:46:41 and when I clicked on it, Firefox told me that "http:///" is an invalid address 17:46:57 conclusion: that line really badly confuses Konversation 17:47:42 I think green would be a pleasant color to use all the time. 17:47:49 This convergence rate sucks. 17:47:50 but not if everyone is using custom colors all the time 17:48:27 kallisti: -Are you sure adopting a personal typing style is a good idea?- 17:48:32 kallisti: -You might come to regret it quickly.- 17:49:00 no 17:49:42 note that I'm still blocking colours 17:49:51 and thus, am still having problems following the conversation 17:50:03 "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 "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 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 -elliott: talking like The Baron only works if you do it properly- 17:50:10 -but indeed, it truly is scary- 17:50:12 ^ this is actually serious 17:50:30 god bless libertarians 17:50:35 elliott: do you agree with it? 17:50:52 ais523: what do /you/ think? 17:51:06 How could I possibly make things worse 17:51:07 elliott: probably no, but it's hard to tell over the Internet 17:51:47 Christmas themed. 17:52:03 ais523: I, er, invite you to assume I'm not terrible and/or idiotic whenever the question comes up 17:52:18 ais523: anyway, tell me sgthoughts, I wasn't able to come up with any solutions myself 17:52:23 but that would be prejudiced! 17:52:26 although the non-solutions i came up with were entertaining 17:52:44 oh cool I just learned that text colous is in fact a thing and something I can do 17:52:53 testing with the ^K9Green Sun 17:52:59 good job. go forth and conquer. 17:53:01 gah powsh silly thing 17:53:03 and get banned in a lot of channels. 17:53:05 The GREEN SUN. 17:53:07 WAY AHEAD OF YOU MAN 17:53:10 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 Aw, it didn't copy the: colours. 17:53:18 which are the hashes of two changes 17:53:35 ais523: OK, go on 17:53:49 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 there? 17:54:18 iconmaster: Yes, appropriately retina-burning. 17:54:22 then you have "insert X between A and B" which gives the resulting line {X,X} and changes no other hashes 17:54:28 whew my irc client won't allow me to ctrl+anything 17:54:33 ais523: err, X is a string, not a hash 17:54:34 do you mean 17:54:37 ಠ_ಠ 17:54:42 C = insert X between A and B which gives the resulting line {C,C}? 17:54:43 elliott: right, sorry 17:54:44 (sees this emoticon a lot recently) 17:54:48 that's exactly what I meant 17:55:21 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 ais523: wait, stop 17:55:31 changes it where? 17:55:33 globally? 17:55:43 elliott: no, just changes the hashes in the representation of the file 17:55:50 as in, the state of the file is a set of lines, and two hashes for each line 17:55:51 ais523: globally to taht file, I mean 17:55:53 *that 17:55:55 ^bf +++>>>>,[<<<<.>[->+>+<<]>>-[-[-[-[-[-[-[<[-]>[-]]]]]]]]<[-<+>>+<]<+>>++++++++++++++++++++++++++++++++++++++++++++++++++.[-]>.,]!it is time for computer-assisted rainbows 17:55:55 it is time for computer-assisted rainbows 17:55:58 ais523: what if multiple entries have those hashes? 17:55:59 those lines only appear once in that file? 17:56:00 is that possible? 17:56:16 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 OK, fair enough 17:56:20 ^def rainbow bf +++>>>>,[<<<<.>[->+>+<<]>>-[-[-[-[-[-[-[<[-]>[-]]]]]]]]<[-<+>>+<]<+>>++++++++++++++++++++++++++++++++++++++++++++++++++.[-]>.,] 17:56:20 Defined. 17:56:24 save 17:56:26 ^save 17:56:26 OK. 17:56:30 ais523: is it correct to say that if you just look at the hashes, a file always follows the structure: 17:56:37 {a,b}, {b,c}, {c,d}, {d,e}, ... 17:56:43 no 17:56:55 if you just do insertions, it's {a,a}, {b,b}, {c,c}, … 17:56:58 ah, right 17:57:08 I suppose my problem is that I have no idea what the tuple is supposed to mean 17:57:10 what does it mean? 17:57:34 i wonder what a color value of 17 would do 17:57:36 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 woah 17:57:41 ^rainbow WHAT HAVE YOU DONE 17:57:41 WHAT HAVE YOU DONE 17:57:51 I done good. 17:57:56 It's not very rainbewy. 17:57:57 the important insight is that you care about different things when checking after or before a line 17:58:01 I'm agree 17:58:01 Well, I suppose it's the best you can do. 17:58:03 We need IRC256. 17:58:07 with fizzle and tellot 17:58:12 ais523: hmm, OK 17:58:13 It doesn't do numbers larger than 9, that's a problem too. 17:58:14 both 17:58:18 time as same it 17:58:19 I couldn't be bothered to multi-digit. 17:59:00 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 And I skipped 1 too, because no black lights here, so it's just 2..9. 17:59:30 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 ^bf +++>>>>,[<<<<>[->+>+<<]>>-[-[-[-[-[-[-[<[-]>[-]]]]]]]]<[-<+>>+<]<+>>++++++++++++++++++++++++++++++++++++++++++++++++++.[-]>.,]!looks like this if you drop the ^C 17:59:31 2l3o4o5k6s7 8l9i2k3e4 5t6h7i8s9 2i3f4 5y6o7u8 9d2r3o4p5 6t7h8e9 2^3C 17:59:57 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 but you don't want ABEF -> AXBEF to conflict with that 18:00:20 ... 18:00:22 thus, whether the deletion affects the identity of B depends on if you mean "before B" or "after B" 18:00:41 ais523: hmm, that's too many letters for me to follow today, but I'll agree on faith 18:01:00 E... 18:01:13 I have this sinking feeling my IRC client sucks 18:01:14 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 iconmaster: confirmed 18:01:49 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 iconmaster: which client? 18:02:01 ais523: hmm, (A to B) and (A and B) need notation 18:02:08 to make these descriptions legible 18:02:17 elliott: hmm, right 18:02:29 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 Bersirc 18:02:40 kallisti: exception: infinite loop 18:02:40 -iconmaster- VERSION Bersirc v2.2.14 on Windows [ http://www.bersirc.org/ - Open Source IRC ] 18:02:44 I never heard of it 18:02:57 I picked it from the top of wikipedia's irc client list arbitrarily 18:03:05 good choice 18:03:10 It was the first free windows client 18:03:14 -!- incomprehensibly has joined. 18:03:22 i wasnt picky 18:03:41 one must always be picky about ones software 18:03:46 so that you can have flamewars about it later 18:03:48 and come out on top. 18:04:07 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 rChange -> RangeStart, EOF :: DirChange -> RangeEnd into just a single function by unifying Range{Start,End} 18:04:20 elliott: indeed 18:04:21 I'm not sure that simplifies things, though, as they're still handled differently by the algorithms 18:04:28 because one is the beginning and one the end 18:04:43 kallisti: exception: infinite loop 18:04:45 *<> 18:04:46 elliott: well, the point is that beginnings and ends are always handled differently from each other under this system 18:04:56 ais523: right, so they ought to be different types! 18:04:57 elliott: err, what? what language did you think that was? 18:05:07 elliott: I have no problem with that at all 18:05:09 it's no big win to unify two types that mean different things, that's actually a loss :) 18:05:16 ais523: GHC prints <> on infinite loops 18:05:17 (sometimes) 18:05:29 I was thinking as I was working on this, "these are different types" 18:05:54 OTOH, because Anarchy, I saw no problem with two unrelated types sharing the same constructors :) 18:07:18 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 ais523: i'm somewhat disappointed that we don't need to develop my terrible ideas to have a solution now 18:08:02 haha 18:08:06 iconmaster: also don't use windows 18:08:15 ais523: they were so terrible :( 18:08:19 elliott: anyway, this does absolutely nothing with respect to conflict resolution 18:08:26 it doesn't hinder it in any way, nor help it in any way 18:08:36 OTOH, your latest plan for conflict resolution, I think actually works 18:08:46 a good sign is that it was pretty similar to mine, just with different terminology 18:08:51 ais523: the metachange ones? 18:09:00 yes, I think 18:09:03 I forget the details of it 18:09:10 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 but I doubt throwing everything out and starting afresh would help 18:09:33 it's too small for that to do anything 18:09:41 elliott: I think this change of mine makes it /more/ beautiful 18:09:50 because there's a sudden lack of special cases 18:10:44 ais523: genius to understand its simplicity, etc. 18:11:02 haha 18:11:14 I think it'd be reasonably easy to convey with diagrams 18:11:17 just I'm no good at drawing 18:12:02 shuffling my music is always fun.. 18:12:37 10573 songs. I don't even think I've listened to everything yet. 18:13:13 ^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 ################################################################################################ ...too much output! 18:13:22 It just doesn't go very rainbowy with those colours. 18:13:25 No matter how one arranges them. 18:13:41 -!- incomprehensibly has quit (Quit: Leaving.). 18:14:00 That's pretty rainbewy. 18:14:14 Well, it does go blue-green-yellow-red, sorta. 18:14:23 ^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 Defined. 18:14:26 ^save 18:14:26 OK. 18:14:27 fizzie: You should add input to ^def ul things, have we mentioned? :p 18:14:28 For posteriority. 18:14:32 You have. 18:14:57 Although you'd need more than just "push it on the stack" to do a rainbow. :( 18:15:03 A cons list of church numerals would work, though. 18:17:11 ^rainbow2 18:17:11 ################################################################################################ ...too much output! 18:17:42 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 fizzie: You should use full block instead of #. 18:18:36 ^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 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 :-| 18:18:41 nah, use background colors too, and use a half block 18:18:46 and wow, escaping fail 18:19:06 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 Well, it's easier here, since there's no interactive IO. 18:19:52 elliott: my current plan for input is to have a notional "input token" value, that can't meaningfully be executed 18:20:20 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 input tokens are opaque and carry two pieces of information: a character, and a counter that starts at -1/EOF 18:20:57 fizzie: ,/..? 18:21:02 Oh. 18:21:15 I don't see why ^bf . would have problems, either. 18:21:37 Well, not in itself, no, just that if you expect a single . is enough to write a single character. 18:21:37 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 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 although that doesn't allow for not receiving input 18:22:01 and only allows output as a reaction to input 18:22:07 it's not specified whether copying a token with : causes the old and new copies to share or not 18:22:19 ais523: because then you just extend how a program in the language is /evaluated/, not the language itself 18:22:25 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 as in, the semantics can be implemented in a pure way, but also implemented with, say, a single mutable integer 18:22:51 so they map nicely onto a huge range of languages 18:22:52 ais523: well, that's not a difficult constraint... 18:22:54 which is the point of Underlambda 18:23:00 elliott: err, easily implemented 18:23:03 mine works in even things without getchar()/putchar() 18:23:10 they even work for Unlambda, and you know how bad Unlambda's I/O is 18:23:10 although it loses streaming IO 18:24:19 :):):):):>PK::; 18:24:24 ^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 █-█-█-█-█-█-█-█-█-█-█-█-█-█-█-█-█-█-█-█-█-█-█-█-█-█-█-█-█-█-█-█-█-█-█-█-█-█-█-█-█-█-█-█-█-█-█-█-█-█-█ ...too much output! 18:24:25 streaming IO is sort-of required, btw 18:24:27 ^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 ████████████████████████████████████████████████████████████ ...too much output! 18:24:48 ais523: I don't see why 18:24:54 ais523: any language with streaming IO can be implemented without streaming IO 18:24:57 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 elliott: oh, I thought you meant interleaving input and output 18:25:16 ais523: hmph, why not just define operations for turning the TOS from object<->serialisation and back? 18:25:22 there's no need to tie that restrictively to IO 18:25:25 and yes, I did 18:25:27 elliott: I was wondering about that 18:25:30 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 but basically because then you need to define strings 18:25:42 and character set representation 18:25:44 and so on 18:25:44 fizzie: But how did that mess up all the previous outputs? 18:25:46 And it works on-channel but not in-query due to different PRIVMSG parameter length. 18:26:01 As for your version, it was missing the ^C in the first () in the program. 18:26:13 ais523: nah 18:26:19 ais523: no more than you have to define for IO in the first place 18:26:26 ^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 Defined. 18:26:29 ^save 18:26:29 OK. 18:26:33 fizzie: Ah. 18:26:34 Well, it's nicely #esoteric-specific now. 18:26:36 elliott: right 18:26:46 fizzie: #esoteric-specific howso? 18:26:50 Well, #esoteric and other channels/nicks with names of suitable lengths. 18:27:02 hmm, it'd be theoretically neat, but sadly practically useless, for serialization IO to be the only IO 18:27:04 Oh, right. 18:27:30 elliott: hi how do I make this faster http://sprunge.us/EHcT 18:27:34 ais523: you could solve it by making sure you can pick apart any string of code fully into characters :) 18:27:43 kallisti: It needs more tail recursion and seq side effects. 18:27:52 .. 18:27:55 ais523: even invalid code 18:28:07 elliott: actually tail recursion is slower. SHOCKING. 18:28:07 err, I don't know what you mean 18:28:48 ais523: as in, make serialisation IO fully general by making any sequence of bytes a valid serialisation 18:29:02 that deserialises to something that it's possible to decompose into the character codes that make it up 18:29:19 elliott: oh, I wasn't going to define the serialization format 18:29:49 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 (but two programs compiled with the same compiler needn't be able to read each other's serializations) 18:30:22 ais523: well, right, you can't do it then :) 18:30:35 "it" = ? 18:30:42 sorry, I'm tired and having problems parsing what people say 18:30:46 elliott: I'm assuming you're hard at work analyzing my code and providing advice on this important matter. 18:31:48 ais523: what I said about making serialisation IO fully-general 18:31:49 kallisti: no 18:32:02 kallisti: your algorithm looks like it sucks though 18:32:29 elliott: ah, right 18:32:43 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 being elegant is somewhere behind that 18:33:15 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 and (d) elegant :P 18:33:46 it's just that characters are inelegant :( 18:34:20 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 hmm, OK 18:34:41 (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 I think derla actually does UTF-8, at the moment, but that makes a lot of sense 18:35:15 ideally, you'd do it with bits, but that would be a pain to implement in almost everything 18:35:34 indeed 18:36:29 (the great thing about UTF-8 is that it's trivial to decode and encode in /any/ language) 18:36:35 well, more or less any, anyway 18:37:16 if you don't have bitwise ops, it's awkward 18:37:30 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 probably not all that eso, though 18:41:19 although, likely more eso than Haskell 18:42:49 hmm, 100 over 5.3 18:43:55 * oerjan wonders what elliott's numbers mean 18:44:51 oerjan: sourcereal units 18:44:58 aha 18:45:45 I have to eat that many sour cereals in that many hours. 18:45:51 Cerelae. 18:46:28 how nice 18:49:35 cerebella 18:51:17 yes. 18:54:10 elliott: John Zorn 18:54:23 ais523: convince me not to make a language, thx 18:54:31 elliott: make a language, kthx 18:54:41 elliott: bluha thorwn aosinh 18:54:52 (in other words, what's the point in a language nobody else understands?) 18:55:14 very succinct 18:56:05 kthx the language 18:56:07 ais523: talking to yourself 18:57:26 kwantum theoretiska xenoprogrammerand 18:59:16 ais523: q.e.zepto 19:03:38 ais523: obviously you don't appreciate the wonderfulness of words.pl 19:03:46 `words --eng-gb 25 19:03:52 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 pawn, graph, loan, dire, bah, mark, milled 19:04:28 qutie a lot of real ones there 19:04:37 DEAL WITH IT. 19:04:38 which is good, it means it's fitting the language pretty well 19:04:47 although "kvonober"? seriously? 19:04:52 best word. 19:05:01 you don't appreciate the beauty of non-existent words. 19:05:14 diciplik is the best. 19:05:19 it's more, words in British English tend not to start with kv 19:05:43 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 `words --eng-us 25 19:06:32 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 boobleritutsca 19:06:59 you can tell it's obviously american english. 19:07:08 like serichly. 19:07:10 -!- elliott has changed nick to boobleritutsca. 19:07:11 -!- Mathnerd314 has joined. 19:07:20 aaaaaaasdfhafhadhldsfhjalsfllllllljsdflhjksdbnz,xnxnzc,hxjkkkzvcz3q893ccccccbt 19:07:25 boobleritutsca would be a nice children's book character 19:07:25 ban me please 19:07:28 a;;;;klf;;dfjjjjkzjk.dvjkvkljvz;zvjk;z 19:07:29 hi 19:07:33 Mathnerd314: why so monbaste? 19:07:34 vzjkvzkvjvklvzfj;jzfv;fv 19:07:36 vvzvz;lvkfjkzfvk;jvvf 19:07:37 what are you doing 19:07:38 'fvvfvzfvfkl;vjzfvf 19:07:40 zvfzvvj;jkvzllj;vzv;vd 19:07:42 vvkljl;fjkl;ad;dkajdf 19:07:42 :D 19:07:45 It's my new programming language 19:07:48 I'm trying it out 19:07:49 perhaps an exuberant witch of sorts 19:08:09 sdsdsdsdsdsdsdsdsdsdsdsdsdsdsddsddsdsdsdsdsdsdsdsdsdsdsdsdssdsdsdsdsdsdsdsdsdsdsdsdssdsddsdsdssdsddssdsddsdsdsdsdsdsdsdsdsdsdsdsddsdsdsdsdsdssdsdsdsdsdsdsdsddsdsdsddsdsdsdsdsdsdsdsddsdsdsdddddddsdsddsdddsdsdssddsds 19:08:17 dsdsssdsdsddssdsddsdssdsdsdsdsdsdsdsdsdssdsddsdsdsdsddssdsdsdsdsdds 19:08:20 -!- ChanServ has set channel mode: +o oerjan. 19:08:22 it works on humans... 19:08:29 oerjan: nooo 19:08:41 ssddddsdsdsdsdsdsddssdsdsddsssdsdsddssssssdsdsssdsdsdsddsdsdssdsddsdsdssddssddsdssddsdsdssdsddsdsdsdssddssdsddssddssdsddsdsdssddsdssddsdsdsdsdsdssddsdsdsdsdssddsdsdsdsdssddsddsds 19:08:42 don't give in to the temptation. 19:08:42 sdsdsddddddddddddddddddddsdssd 19:08:44 +q instead of +b 19:08:46 boobleritutsca: find me! 19:08:53 boobleritutsca: PLEASE NO INTERRUPT PROGRAMMING 19:09:00 dsddssdsddsdssddsdsdssdsdsdsddsdsdssdsddsdsdsdsdssdsdsddsdsdsdssddsdsdssddsdsdsdsdsdsdsdsdsdsdsdsdsdsdsdsdsdsdsdsdsdsdsdsdsdsdsdssddsdsdsdsdssdsddsdsdsdsdsdsdsds 19:09:07 dsdsssssssssssssssssssssssssssssssssssssaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaasssssssssssssssssssssssssssssssddddddddddddddddddddddddfffffffffffffffffffffffffffff 19:09:08 -!- oerjan has set channel mode: -o oerjan. 19:09:11 hi 19:09:19 so are you female? 19:09:25 totally 19:09:34 then let's get together 19:09:47 my memory is rusty, but i seem to recall you being less obviously stupid last time you were here 19:09:47 I'm in Colorado Springs, Colorado, 80907 19:09:49 are you lament 19:10:01 nope. Allan Gardner is my name 19:10:17 I think I have to prepare the world for the next revolution 19:10:35 hmm, you're usingt the same isp 19:10:49 seriosuly? 19:10:56 maybe Ineed to find them 19:10:58 *him 19:11:07 but Mathnerd314 has been here for ages 19:11:07 no i mean 19:11:10 as you were the last time you were here 19:11:12 also, are you drunk 19:11:18 fnord 19:11:21 yes, drunk and high and immortal 19:11:25 and stupid 19:11:35 yeah... you get one choice 19:11:35 -!- iconmaster[1] has joined. 19:11:42 *not immortal 19:11:55 I chose intelligence 19:12:07 Mathnerd314: you got ripped off 19:12:08 and the world to me is a cold and forbidding pplace 19:12:13 yeah 19:12:18 coppro: are you responsible for this 19:12:19 -!- Nisstyre has quit (Remote host closed the connection). 19:12:19 yeah definitely ripped off 19:12:23 boobleritutsca: I wish 19:12:43 boobleritutsca: find the person responsible! 19:12:47 hint: it's me 19:12:53 `quote Mathnerd314 19:12:56 134) Gregor-P: I don't think lambda calculus is powerful enough 19:13:01 lol 19:13:14 `quote 19:13:15 `quote 19:13:17 669) (Of Minecraft:) 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 `quote 19:13:18 `quote 19:13:20 `quote 19:13:23 332) and then there's the slightly annoying one where suddenly, i start rolling forward and i can't stop like i can be having some great sex dream or whatever and then suddenly "oh god not this again" (i go "not this again" but not necessarily realize it's a dream) 19:13:27 173) It's like mathematicians, where the next step up from "trivial" is "open research question". "Nope... No...This problem can't be done AT ALL. This one--maybe, but only with two yaks and a sherpa. ..." 19:13:41 rip HackEgo 19:13:42 killed by overwork 19:13:58 `quote Mathnerd314 19:14:01 `quote Mathnerd314 19:14:02 `quote Mathnerd314 19:14:03 `quote returns all results 19:14:05 you idiot 19:14:06 134) Gregor-P: I don't think lambda calculus is powerful enough 19:14:10 134) Gregor-P: I don't think lambda calculus is powerful enough 19:14:16 dsdsdsdsdsdsddsdsddssddsdssdsdsddsdssssssssssssssssssssssssddddddddddddddddddssssssssssssssddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd 19:14:19 289) gah, who'd have thought removing concurrency from algol could be so difficult 19:14:20 419) It's a Toy Story character, you uncultured fuck. 19:14:35 boobleritutsca: ha 19:14:37 I remember that one. 19:14:37 that's what I'm doing and it's working 19:14:40 the fizzie quote is the best one there 19:14:47 -!- iconmaster has quit (Ping timeout: 268 seconds). 19:14:50 Mathnerd314: what inspired you to bless us with your presence again 19:14:56 No output. 19:14:56 134) Gregor-P: I don't think lambda calculus is powerful enough 19:14:57 `quote iconmaster 19:15:00 No output. 19:15:03 boobleritutsca: so I'm dumb as fuck, I wanted someone to fuck 19:15:04 332 is interesting but not really funny; 669 is unfunny; and I don't really get 419 19:15:10 I like 289 19:15:16 so I made the universe. 19:15:16 boobleritutsca: opinion? 19:15:21 it takes care of me 19:15:39 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 669 or 419 if you must i guess :P 19:15:57 Mathnerd314: how boobler are you 19:16:07 very, but not quite perfect 19:16:12 beep 19:16:15 beep beep beep 19:16:16 `words --eng-us --eng-gb --canadian 25 19:16:16 `quote 19:16:19 ^rainbo2 19:16:20 ^rainbow2 19:16:20 ████████████████████████████████████████████████████████████ ...too much output! 19:16:23 ^rainbow2 19:16:23 ais523: It's also a cheat. (The second comment is stolen.) 19:16:23 ^rainbow2 19:16:23 ████████████████████████████████████████████████████████████ ...too much output! 19:16:23 ^rainbow2 19:16:23 ████████████████████████████████████████████████████████████ ...too much output! 19:16:23 ████████████████████████████████████████████████████████████ ...too much output! 19:16:23 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 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 yay two rainbows adjacently 19:16:36 fungot: excellent output 19:16:36 Mathnerd314: you! take! we find! and leene and the masamune!? 19:16:37 fizzie: who cares 19:16:41 although thanks for owning up 19:16:48 fizzie: you will be executed 19:16:51 `delquote 419 19:40:15 -!- esowiki has joined. 19:40:16 -!- glogbot has joined. 19:40:17 ais523: I'll even talk about my language and/or sg 19:40:19 predicting ais523 ragepat in 10, 9.9, ... 19:40:20 -!- esowiki has joined. 19:40:21 -!- esowiki has joined. 19:40:29 oerjan: hmm, I'm too tired to really ragepart properly 19:40:30 ais523: Yes, I saw that, although I have no idea why it happened ... 19:40:30 `addquote `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 ais523: that's why it'd be a ragepat 19:40:40 lol 19:40:51 it'd have to be a really lame ragepart 19:40:54 777) `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 how many quotes are there? 19:40:58 ais523: are you deliberately misreading me? 19:41:00 TheLittleOne: 777 19:41:04 `qc 19:41:05 got it 19:41:08 777 quotes 19:41:10 -!- ais523 has quit (Quit: what about this for a ragepart?). 19:41:10 Good lawd, all these newbzers. 19:41:11 where is 777? 19:41:15 `quote 777 19:41:17 boobleritutsca: I could have been more obscure by saying like "jynweythek" or something. 19:41:20 TheLittleOne: also, you can delete them with `delquote 19:41:22 as a hipster it's good to be obscure. 19:41:22 777) `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 Gregor: no, exactly one newbzer 19:41:30 who is also not a newbzer 19:41:37 but someone coming back drunk or something 19:41:38 Ah. 19:41:43 boobleritutsca: I don't want that. I want to read the 777 other quotes 19:41:50 `pastequotes 19:41:53 http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.11437 19:41:55 TheLittleOne: but i suggest you read them in-channel for the best experience 19:41:56 by doing 19:41:57 `quote 1 19:41:58 `quote 2 19:41:58 `quote 3 19:41:59 etc. 19:42:00 1) I used computational linguistics to kill her. 19:42:18 `quote 2 19:42:21 2) EgoBot just opened a chat session with me to say "bork bork bork" 19:42:22 loool 19:42:25 `quote 3 19:42:27 `quote 4 19:42:29 `quote 5 19:42:31 `quote 6 19:42:33 `quote 7 19:42:34 Oh god why 19:42:35 3) Hmmm... My fingers and tongue seem to be as quick as ever, but my lips have definitely weakened... More practice is in order. 19:42:36 5) GKennethR: he should be told that you should always ask someone before killing them. 19:42:37 oerjan: this is what we refer to as "entrapment". 19:42:42 oerjan: you may now reap the spoils 19:42:55 7) what, you mean that wasn't your real name? Gosh, I guess it is. I never realized that. 19:43:02 Gregor: i like how HackEgo is really slow 19:43:12 `quote 419 19:43:14 boobleritutsca: So does your mom. 19:43:17 `quote 8 19:43:18 Gregor: tru 19:43:19 `quote 9 19:43:20 `quote 10 19:43:22 `quote 11 19:43:23 `quote 12 19:43:25 `quote 13 19:43:26 419) It's a Toy Story character, you uncultured fuck. 19:43:27 `quote 14 19:43:29 `quote 15 19:43:31 `quote 16 19:43:32 `quote 17 19:43:33 oerjan: cough. 19:43:35 `quote 18 19:43:36 `quote 19 19:43:37 >_< 19:43:38 `quote 20 19:43:39 fizzie: SOME SPOILS NEED REAPING HERE 19:43:40 `quote 21 19:43:41 `quote 22 19:43:43 `quote 23 19:43:45 `quote 24 19:43:47 `quote 25 19:43:49 `quote 26 19:43:51 `quote 27 19:43:52 I'm about to disco hackego X_X 19:44:14 `quote 28 19:44:14 `quote 29 19:44:14 `quote 30 19:44:14 Gregor: noooo 19:44:14 `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 Gregor: 10 minutes? :-) 19:44:29 boobleritutsca: we should make hackego not slow 19:44:40 kallisti: i did 19:44:44 Gregor wanted me to test the changes MYSELF. 19:44:54 boobleritutsca: let me test. 19:44:58 TheLittleOne: ok go ahead 19:45:02 to test just spam the channel 19:45:03 with anything 19:45:07 and we can measuer HackEgo's reaction time 19:45:08 remotely 19:45:20 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 dfkl;jfklfjfkldsas;dfjkj;dfjjjjkafdjkdfdj;sdddddjdfjafjkjddkvn.zxcmcncvmnvm.ncmvnmvvvnmvzn 19:46:16 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 by committee of 1 19:54:34 -!- esowiki has joined. 19:54:34 -!- HackEgo has joined. 19:54:54 !perl print "fizzie: \a\n"; 19:55:00 I will kill you all. 19:55:01 oh 19:55:05 Gregor: hi 19:55:07 <3 19:55:22 Gregor: aww, why? 19:55:28 For laffs? 19:55:43 `words --swedish --eng-all 25 19:56:01 http://www.cl.cam.ac.uk/teaching/1011/ConceptsPL/ <-- plankakul! 19:56:04 *kalkul 19:56:07 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 hmm, TheLittleOne should have been mercy kicked while the numbers were coming out 19:56:19 as I'd have assumed it was a misfiring pastescript 19:56:22 and kicked them to avoid spam 19:56:25 it obviously wasn't 19:56:31 boobleritutsca: Is this name a `words name? 19:56:35 Gregor: yes 19:56:42 entrepmant, i said 19:56:56 lankwand 19:57:00 good word 19:57:03 What is happening here? 19:57:08 boobleritutsca: meh my assumptions are sometimes based on wishful thinking and convenience 19:57:20 fizzie: TheLittleOne is probably non-sober and was previously spamming extensively to multiple complaints 19:57:22 fizzie: I just came back myself, but there's some feeling that TheLittleOne should be kicked/banned 19:57:29 I'm whining at oerjan for being active but refusing to do anything 19:57:30 boobleritutsca: In that case, 19:57:32 -!- Gregor has changed nick to SimonDectro. 19:57:32 and I'm trying to figure out if they should be or not 19:58:10 (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 Y'know who should really have ops? 19:58:12 Gregor. 19:59:08 * kallisti thinks kallisti would be a pretty good op. 19:59:22 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 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 fizzie: I'd have kicked without banning if I were there at the time 20:00:07 hmm, 80 over 4 20:01:17 Pre-offense kickbannery is the best. 20:01:24 boobleritutsca: that's a little slow convergence 20:01:25 I feel that boobleritutsca may, at some point in the future, do something bad. 20:01:26 Kickban. 20:01:41 oerjan: who's talking about inaction? 20:01:45 SimonDectro: plausible premise 20:01:55 Oh if only IRC ran on Feather, then you could pre-offense kickban retroactively. :/ 20:02:06 fizzie: it'd require all its users to run on Feather too 20:02:26 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 it isn't 20:02:50 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 but even it is limited in what it can accomplish 20:03:18 the arbitrary number? 20:03:31 4. 20:03:33 basically, the arbitrary number is a finite number, which initially has a smallish arbitrary value 20:03:48 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 /but/, any time the arbitrary number's precise value becomes relevant, it is retroactively increased 20:04:17 so, say, it compares greater than anything you might try to compare it to 20:04:41 heh 20:04:43 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 oerjan: if you do that in something that isn't immune to arbitrariness, you get an infinite loop 20:05:28 this is Feather's usual response to a time paradox, incidentally 20:05:37 curses! 20:06:21 -!- cheater has quit (Ping timeout: 255 seconds). 20:09:48 TheLittleOne: hi 20:10:04 so basically 20:10:10 to remain on channel indefinitely 20:10:14 all TheLittleOne has to do 20:10:21 is go silent when ops are active 20:10:24 and then spam when they're gone 20:10:36 and when they come back it will be too late to ban him because it's not effective anymore. :P 20:11:04 precisely! er wait... 20:11:09 Oh, I think each spam session lowers the post-offense ban threshold. 20:11:32 The algorithms are probably documented somewhere. 20:11:34 what about lurking indefinitely? that's typically an easy way to remain on a channel 20:11:52 ...that wasn't really the poiont 20:11:57 there are plenty of ways to remain on a channel 20:11:59 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 those scoundrels, clearly lurking indefinitely should be a bannable offense 20:12:05 and ask them questinos 20:12:07 *questions 20:12:24 people who need to think before talking to us are not worthy 20:12:24 such as: not spamming it. not being a bag of dicks. not doing stupid things or fighting with people. 20:12:36 51 people, I smell some lurking going on. 20:12:39 kallisti: hmm, those don't seem to get you banned here much 20:12:46 questinos, like questions but moving at close to light speed, or possibly even slightly over 20:13:18 boobleritutsca: come on. I don't /fight/ with people, you fucking twat. :) 20:13:32 kallisti: what about someone who is half a bag of dicks? 20:13:33 oerjan: I think FTL questinos are technically called rumourinos. 20:13:34 kallisti: oh, no no, not you, you're just stupid 20:13:35 Let's ban jix. 20:13:38 He hasn't talked in FOREVER. 20:13:41 SimonDectro: ++ 20:13:41 Friggin' idler. 20:13:49 or alternatively, a bag filled half with dicks, and half with, say, polynomials 20:13:50 Also TeruFSX_. 20:13:52 What is he hiding? 20:13:58 ais523: that's my bag, sorry 20:14:01 boobleritutsca: I hear he's a pinkocommie. 20:14:23 ais523: I'm sorry I can't expand further upon already ridiculous concepts and still provide meaningful answers. 20:14:37 kallisti: so are we all 20:14:38 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 a handful of people is exactly zero people. 20:14:58 Hello 20:15:00 oerjan: hmm, has clog ever posted? 20:15:01 Let's ban Ngevd. 20:15:04 there is literally no way to fit a person in your hand. 20:15:05 Aaaah! 20:15:06 s/oerjan/kallisti/ 20:15:06 SimonDectro: ++ 20:15:08 What kind of person joins while we're talking about banning. 20:15:16 Ngevd: quick, spam numbers 20:15:21 it's the best way to avoid getting banned 20:15:24 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 proven fact(TM) 20:15:29 LIike 4, 4 is a good number 20:15:30 Who are these evil ban-happy people whom I have never hear of!? 20:15:40 Ngevd: you might want to read recent logs 20:15:42 he used poor grammar. 20:15:43 Ban. 20:15:48 i'm lament 20:15:50 Uh, ignore my lack of caps. 20:15:51 SimonDectro is aardappel 20:15:57 ais523 is iconmaster 20:16:01 and kallisti is a dog 20:16:16 -!- zzo38 has joined. 20:16:16 what. 20:16:19 boobleritutsca: actually, I'm callforjudgement 20:16:21 -!- ais523 has changed nick to callforjudgement. 20:16:22 zzo38 is zzo38 20:16:37 boobleritutsca: to be fair, it's normally reasonably obvious whether any given person is zzo38 or not 20:16:42 callforjudgement: yes, but callforjudgement is god 20:16:45 Wait, I forgot who I am. WHOOPS 20:17:11 * kallisti is fungot, obviosuly 20:17:11 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 (I'm LORD ENGLISH) 20:17:21 ^style 20:17:21 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 iconmaster: doesn't that mean we have to kill you in an implausible way, despite it being impossible? 20:17:58 wait no, that's lord british 20:18:20 ehh, he still can be killed by spacetime shenanigans 20:18:38 I think the exact same rule applies 20:19:00 `words --eng-all --spanish --french --swedish --finnish --catalan --eng-fiction 25 20:19:10 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 hmm, http://codex.ultimaaiera.com/wiki/Killing_Lord_British 20:19:25 that article is always fun to read 20:19:29 at least, both times I've read it 20:19:38 -!- cheater has joined. 20:19:57 cup 20:20:05 IS THE BEST WORD 20:20:23 `words --help 20:20:26 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 `words --eng-all --spanish --french --swedish --finnish --catalan --eng-fiction --polish --norwegian --eng-gb 25 20:20:46 kallisti: did you forget how to use your own program 20:20:48 oh god 20:20:56 iconmaster: incorrect 20:20:58 `quote unto 20:20:59 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 colloinkgravisom: no I just need to consult the list sometimes. 20:21:02 121) like, just like I'd mark "Bob knob hobs deathly poop violation EXCREMENT unto;" as English alise: that's great filler ais523: well it contains all the important words in the english language... \ 338) 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 it's not on the list 20:21:33 Fear and Loathing in Forge of Virtue has some good points too. 20:21:35 * colloinkgravisom is Colloinkgravisom of Hexham 20:21:54 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 hmm, oh dear, 80 in 3.5 20:22:45 sadly, I thought that there was some glitch where he was killed using an AI race condition 20:22:47 but apparently not 20:23:00 unless that's the Ultima Online case and they've got the reasoning incomplete in the article 20:23:01 colloinkgravisom: other incredible innovations include an {--intersect, --or} option which will basically multiply instead of add when combining datasets. 20:23:21 er 20:23:22 --and 20:23:26 >_> 20:23:43 How about an --all option 20:23:49 `words --finnish -o 40 20:23:52 tyrmälleensanissämmellaanisevistaansaimmasta 20:23:55 fizzie: 20:23:56 iconmaster: that's a possibility yes. 20:24:17 `words --finnish -o 0 25 20:24:20 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 honestly I think... 20:24:34 -4 is pretty good. 20:25:16 unless finnish words are just obscenely long. 20:25:21 `words -o 0 25 20:25:26 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 hickeductiver 20:25:51 `words -d -o 0 25 20:25:56 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 0 is pretty good actually. 20:26:26 xxxiv 20:26:27 of course to actually find the right target offset 20:26:43 `words --help 20:26:46 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 I should actually like... run large tests and collect data on them. 20:26:48 `word 50 20:26:52 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 ow 20:27:07 colloinkgravisom: It does not make the sense, though again starts with a real word - "tyrmälleen", 'for eir jail cell'. 20:27:30 `words --manx 5 20:27:33 shespaard cooid eddyr shal snught 20:27:36 Why does everyone change their name 20:27:47 zzo38: capitalism 20:27:51 -!- iconmaster has changed nick to aniidonflamatoj. 20:27:55 another victim 20:28:00 -!- Ngevd has changed nick to marapreykhus. 20:28:03 rip 20:28:09 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 marapreykhus: that's a nicer nick than ngevd btw 20:28:22 most people, if they see a lot of people change their names, they don't want to be left out 20:28:36 `macro 20:28:42 MG'S 20:28:43 we're all sheeple after all 20:28:51 `words -d -o 0 25 20:28:56 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 mg's 20:29:10 meagian and apowed are nice 20:29:14 as are seniservin, tarlson 20:29:15 hm these results are less 0 20:29:18 good nicks guys!! 20:29:36 WOW RANDOMNESS SURE IS RAAAAANDOM 20:29:49 go words 20:29:51 hustic: doesn't that /imply/ that they're less than 3? 20:30:03 what 20:30:05 sure. 20:30:11 except that's not what I meant. 20:30:14 I suggest we all enter an arbitrary channel and confuse them 20:30:35 I agree 20:30:43 #ubuntu 20:30:46 I mean, I'm confusing myself 20:30:53 #ubuntu ++ 20:30:59 Shall I? 20:31:02 ok I'll join 20:31:03 -!- hustic has changed nick to kallisti. 20:31:19 `words --swedish --finnish --norwegian --polish 25 20:31:23 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 -words --help 20:31:41 `words --help 20:31:45 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 `words --russian 10 20:31:57 ​реже хетти spr декательны селем кальво сова напрутинкторада икопчата предние 20:32:20 -!- aniidonflamatoj has changed nick to iconmaster. 20:32:21 reksennildningeneraputroll: living proof that nick length limits must be abolished 20:32:28 `words --russian --finnish 10 20:32:32 rinnish 20:32:33 parottelemmentu pädeht неумоло коэтов tumalen вловцы omnittona merkin kurler приваем 20:32:41 heymono 20:32:42 Ngevd: Comfuse people with what? 20:32:44 marapreykhus is going to be my nick for I while 20:32:52 zzo38: there is no ngevd here 20:33:12 elliott: Well, there is supposed to 20:33:23 :t random 20:33:24 forall g a. (Random a, RandomGen g) => g -> (a, g) 20:33:36 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 `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 Option he is ambiguous (hebrew, help) \ Killed 20:34:09 `words -eng-gb 5 20:34:11 Unknown option: e \ Unknown option: n \ Unknown option: g \ Unknown option: gb 20:34:13 `words --eng-gb 5 20:34:18 elon incore and tur foxoa 20:34:22 `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 Killed 20:34:41 :( 20:34:51 `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 E2BIG 20:35:07 Killed 20:35:16 `words --italian 10 20:35:19 fraggiritte appostrasse ammo sfiosizi avviasti svità piaccandichi manano rimodessasse delico 20:35:22 yo fungot 20:35:22 iconmaster: i see. you know, i really care... a time portal? what in the...! ozzie's stumped! everything's been destroyed! 20:35:28 Never gets old. 20:35:30 Try running it on your own computer instead if that would help better 20:35:30 ^style 20:35:30 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 ^style ct 20:35:40 Selected style: ct (Chrono Trigger game script) 20:35:40 zzo38: yes it would. 20:35:57 ooooooh it has a homestuck setting 20:36:04 ^style homestuck 20:36:04 Selected style: homestuck (Homestuck pages 1901-4673) 20:36:09 fungot! 20:36:10 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 ^style superasciimzxtown 20:36:11 Not found. 20:36:30 ^style iwcs 20:36:30 Selected style: iwcs (Irregular Webcomic scripts) 20:36:32 Fungot 20:36:40 Fungot cares about capital letters. 20:36:47 Fungot fungot 20:36:48 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 die fittest people of nigeria 20:37:06 Fungot apparently likes nigeria 20:37:21 ^style c64 20:37:21 Selected style: c64 (C64 programming material) 20:37:25 fungot 20:37:25 fungot: Have you been answering those nigerian emails again? 20:37:25 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 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 `addquote [...] we choose only die fittest people of nigeria [...] 20:37:31 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 778) [...] we choose only die fittest people of nigeria [...] 20:37:40 Do Super ASCII MZX Town style 20:37:53 I don't even know what that is. 20:38:06 ^style 20:38:06 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 ^style nethack 20:38:17 Selected style: nethack (NetHack 3.4.3 data.base, rumors.tru, rumors.fal) 20:38:17 fizzie: It's zzo38's series of games. 20:38:22 fungot 20:38:22 iconmaster: they say that a scroll of mail to mage of yendor/ level 35/ dungeon. 20:38:24 I support this call for a style of it. 20:38:47 fungot is so fun 20:38:48 iconmaster: they say that a dwarf to let you into a locked shop. " i should have been born to these things. 20:39:00 ^style fungot 20:39:00 Selected style: fungot (What I've said myself) 20:39:01 Specically, of MegaZeux games. I made other computer games it isn't part of that series however 20:39:22 huh that's cool 20:39:23 yes the combination of all latin alphabet languages selecting one word runs in 1.95 seconds on my computer 20:39:40 kallisti: How much of the precious memory does it use? 20:39:53 And I have made some other MegaZeux games in past, they don't in this series either 20:39:56 how do I measure that easily? 20:40:14 while it's running, you can measure it with a program like top 20:40:23 but it might be quite hard to catch it while it's running 20:40:26 I doubt it would be very perceptible 20:40:31 since it's only going to be around for 2 seconds 20:40:36 I'll try though 20:40:44 if it only takes 2 seconds, though, it probably isn't using excessive amounts of memory 20:40:51 I think filling memory takes more than 2 seconds on a modern system 20:41:01 `run free -m 20:41:04 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 Maybe you need ptrace to stop it from terminating 20:41:17 Allocating 245 megabytes doesn't, though. 20:41:25 -!- marapreykhus has changed nick to Taneb. 20:41:30 NOW NOBODY WILL KNOW 20:42:27 fizzie: well, OK 20:42:35 I'm assuming you're touching every byte, not just touching every page 20:42:47 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 Turning on the television at the same time as the radio stopped the radio from exploding, though. 20:43:35 how does something explode multiple times? 20:43:43 (unless it's a Voltorb or similar?) 20:43:57 ais523, zzo38 savespams his dreams 20:43:59 ais523: I don't know! It is just a dream 20:44:07 So it can do things that are impossible 20:44:08 ais523: very carefully 20:44:27 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 plus a little more. 20:44:53 Perl structures are quite big compared to the on-disk representation, though. 20:45:03 "/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 Don't know if the bash builtin 'time' can do it too. 20:45:40 hmm, 70 over 3 20:45:50 fizzie: the builtin doesn't; I'm not sure if it can 20:45:55 1047680maxresident) 20:45:58 but right, /usr/bin/time is probably the right program to use 20:46:04 yes that worked 20:46:05 kallisti: hmm, one mebisomething 20:46:14 do you know what units that's in? 20:46:21 I would guess kilobytes. 20:46:33 "M Maximum resident set size of the process during its lifetime, in Kilobytes." 20:46:41 mebikilobyte 20:46:55 A mekibyte. 20:47:04 so it allocates 1G altogether? 20:48:08 I... guess? 20:48:12 that seems unlikely. 20:48:23 since I don't notice it on my ram meter 20:48:25 other than a small spike 20:48:36 I just think that the mebikilobyte is a really suspiciously round number, there 20:49:10 It's not an exact mekibyte. 20:49:26 That would be 1048576. 20:49:38 It's just very close. 20:50:17 err, good point 20:50:48 perl data structures sure are fat. 20:50:52 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 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 Such "angery". 20:54:26 How is fungot style data? Possibly you could add some more 20:54:29 maybe I should stop and rewrite it in Haskell before I add too many features. :P 20:54:48 kallisti: I got a genuine out of memory from Perl once 20:55:10 regenerate the data in like... JSON or something. What's a good format. 20:55:11 I probably shouldn't have tried to solve a TSP variant with an unpruned breadth-first search 20:55:23 kallisti: JSON or YAML 20:55:37 JSON is probably a better choice. 20:55:45 more compact, no need to human-edit. 20:55:55 YAML can represent cyclic structures 20:55:57 ASN.1. 20:56:04 that's... cool? and not needed. 20:56:37 as far as I know, 20:56:46 I don't think I can take advantage of a cyclic structure here. 20:56:57 fizzie: hahaha 20:57:07 ais523: What? It's a standard! 20:57:25 fizzie: that's part of the reason I was laughing 20:57:33 kallisti: write your own if you want memory-and-space-efficiency 20:57:40 it's one of those standards that nobody follows 20:57:48 and may not even have any impls yet 20:57:51 of course my n-gram software has to deal with _real_ datasets so I can't use JSON or anything :) 20:57:52 :) :) :) 20:58:00 colloinkgravisom: I think JSON would be reasonable, and would require me to code less which is always good. 20:58:28 colloinkgravisom: what is your shit again? 20:58:40 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 SNMP? 20:59:38 actually since everything is strings I could get a pretty concise representation 20:59:44 `acro 4 20:59:47 ​/home/hackbot/hackbot.hg/multibot_cmds/lib/limits: line 5: exec: acro: not found 20:59:51 keydatadata... > 21:00:48 if I decide not to support variable grammage I could omit the tab 21:00:54 kallisti: my shity is great 21:01:02 since the key is always a fixed length in that case. 21:01:18 but I think variable grams are good because different gram sizes could work better with different languages. 21:01:30 for example I think 2-grams would be best for chinese. 21:01:42 a... 1-order markov model, yes. 21:01:43 Gopher menu format has no tab after the first field because the first field is fixed 21:02:56 for languages with a longer average word length than English 5-gram might be good. 21:03:00 You should do variable-gram length models within a language, and Kneser-Ney smoothed backoff. Certainly worth it for nonsense-generation. 21:03:09 I... 21:03:13 will have to learn things to do that. 21:03:22 Learn things, or use tools. :p 21:03:29 learning is better 21:03:31 but I am slow learn 21:04:19 I'm pleased with what I have right now, currently. it works quite well. 21:05:09 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 but maybe in the same general area of interest. 21:05:33 but preferably not dealing with markov chains. 21:06:55 SRILM's tools can generate stuff from fungot's models, which I think is quite nifty. 21:06:56 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 [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 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 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 (Okay, the .arpa file is one step before the actual in-bot format, but anyway.) 21:12:42 I've had that anmaster no not markov one before 21:12:52 It happens quite often in this style. 21:13:39 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 ah, hmm, AYIM 21:14:11 fizzie: have you got the achievement called Gregor yet? 21:14:18 ais523: No, but I wondered if it's related. 21:14:20 dude what if 21:14:25 markov chain 21:14:25 on 21:14:30 sound waves 21:14:32 in 21:14:33 music 21:15:21 -!- sebbu2 has joined. 21:15:25 ooooooh good idea 21:15:29 kallisti: Try 21:15:44 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 kallisto o not markov kallisti no not markov 21:16:09 fizzie: hmm, I don't remember that there is an achievement by that name 21:16:17 (I use binary AYIM, not Steam) 21:16:21 I'm thinking I'll want to apply a sort of "fuzzy" data collecting thing. 21:16:25 hmm… AYIM's OK, but gets a bit bland towards the end 21:16:33 or hmmm... frequency spectrum analysis? 21:16:40 the difficulty curve is mostly well-designed, but also peaks rather annoyingly high 21:16:56 there's two ways I could go about 21:17:12 the dumb time-domain way, or the time/frequency domain complicatedness that would be way more difficult. 21:17:46 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 fizzie: hmm, indeed 21:18:08 ais523: I'm thinking it's just a slight code-tweak of Surfer. 21:18:21 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 except via when you get an achievement 21:18:48 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 I've just assumed the person is sort-of as tall as a regular dude. 21:19:39 I can't seem to figure out how to revert my code in git 21:20:29 Step one: hg-git 21:20:35 Step two: Never use git (directly) again 21:21:10 fizzie: help is sound stuff your thing? 21:21:12 what should I learn? 21:21:24 * Sgeo guesses that SimonDectro is Gregor? 21:21:28 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 fizzie: well, hmmm... 21:21:58 fizzie: no I guess it's not. 21:22:09 if I treat it the same way I treat grams. 21:22:21 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 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 Your per-time-instance "data points" are multivariate and continuous, though, so it's not quite similar to model them. 21:23:53 As opposed to discrete, that is. 21:24:37 Instead of "k" you have a N/2-sample vector of real numbers, where N is your FFT size. 21:24:57 right, but that's still discrete units... 21:25:10 -!- cheater has joined. 21:25:28 I mean 21:25:32 my data is still discrete, rather. 21:25:37 because lolcomputer 21:25:58 bacaque 21:26:06 colloinkgravisom: what is your shit again? 21:26:10 what does htis even mean btw 21:26:18 colloinkgravisom: what is your markov chain thing. 21:26:42 -!- pikhq has quit (Read error: Operation timed out). 21:26:49 You should do variable-gram length models within a language, and Kneser-Ney smoothed backoff. Certainly worth it for nonsense-generation. 21:26:52 fizzie: Is that what fungot does? :p 21:26:52 colloinkgravisom: that is just a value of type " airbus is a big fan of avril....but this song " there 21:27:01 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 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 fizzie: oh right, I was thinking I could do some "fuzziness" there. 21:28:10 fizzie: basically the magnitude of a frequency component adds smaller values to magnitudes around it in a nice curve shape. 21:28:18 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 right. 21:28:30 You've got multiple instruments doing their own things and so on. 21:28:32 I'd end up with noise most likely. 21:28:50 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 kallisti: I generate noise, do you want it? 21:28:56 no. 21:29:06 I can't seem to figure out how to revert my code in git 21:29:06 Step one: hg-git 21:29:06 Step two: Never use git (directly) again 21:29:17 As opposed to 128 instruments generating a single frequency, and playing their whole own thing without caring about their neighbours. 21:29:25 looool 21:29:26 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 fizzie: this sounds incredibly complicated. 21:29:53 Sgeo: git help reset 21:30:02 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 Sgeo: did you see where i told you that 21:30:08 Sgeo: your capability thing is nonsense 21:30:10 and makes no sense 21:30:14 alternatively, darcs help rollback, or the equivalent in sg that hasn't been named yet 21:30:16 fizzie: meh no 21:30:20 -!- Taneb has quit (Quit: Leaving). 21:30:35 (Aways a while.) 21:30:54 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 that's so vague. 21:31:59 I think to get anything meaningful you'd have to analyze the signal from many viewpoints. 21:32:18 I think you'd need some kind of rhythm analysis. 21:32:27 and then frequency spectrum. 21:32:59 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 SimonDectro: Rebase. 21:33:16 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 Whether you like rebasing or not, it's a fundamental part of the git workflow. 21:33:35 OK, I think hg has rebase these days, but I somewhat doubt it works properly with hg-git. 21:34:12 It doesn't. 21:34:18 But rebasing sucks foot. 21:34:18 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 (Also, it can PULL rebases, it just can't PUSH them) 21:34:34 fizzie: I think you could analyze the rhythms of different frequency bands to get a number of "instruments" 21:34:42 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 but yes it would be very very complicated 21:34:50 That's why people who use git (rather than pretending it's hg) don't use the merge workflow. 21:35:08 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 SimonDectro: http://randyfay.com/node/89 21:35:57 fizzie: another important thing to do would be to analyze tempo so that you can keep timing coherent as you generate. 21:36:02 SimonDectro: (It's not the --force one, it's the one after.) 21:36:03 perhaps with some room for variance 21:36:42 you'd need to analyze a lot of different variables in order to generate any kind of sensible patterns. 21:37:10 colloinkgravisom: My brain. My braaaain. Where the hell is scape🐐? 21:37:40 SimonDectro: Being designed, slowly :P 21:37:53 fizzie: anyway if you can point me to any kind of useful reading material I'd appreciate it. 21:38:06 Anyway, git is not really totally unworkable, as long as you don't pretend it's another VCS. 21:38:08 It's just a pain. 21:38:18 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 Giving git to him would be a disaster beyond my comprehension. 21:38:47 SimonDectro: Giving him hg would be an equal disaster :P 21:38:50 Giving him a computer, for that matter. 21:39:00 Can he do his work without electricity? 21:39:01 fizzie: ah I see what you were saying with the hamming window I think. 21:39:32 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 kallisti: Anyway, my n-gram stuff is for SERIOUS models, models that take up a terabyte. 21:39:46 colloinkgravisom: Lines from a Makefile we share: 21:39:47 c: 21:39:48 hg pull -v -u; hg commit -v -m ok; hg push -v 21:39:56 colloinkgravisom: just wait until I begin my AWESOME NOISE GENERATOR 21:39:58 u: 21:39:58 hg pull -v ; hg up -v 21:40:05 it will be most statistically significant noise of all time. 21:40:10 +the 21:40:13 colloinkgravisom: We don't let him touch code any more. 21:41:21 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 colloinkgravisom, I didn't see 21:43:21 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 SimonDectro: FSVO important, you're not meant to do that at all usually. 21:45:11 SimonDectro: Anyway, I'd still consider an hg lens onto a git world as being inherently misleading :P 21:45:29 I consider the git world as inherently misleading *shrugs* 21:45:48 And in github, that is important >_> 21:46:07 True. 21:46:16 colloinkgravisom, the point is that, ideally, any means to manufacture a Cap from an IO requires access to IO 21:46:26 Sgeo: I'm typing an explanation of exactly why it's pointless and/or useless now. 21:46:35 Ok 21:47:42 fizzie: http://en.wikipedia.org/wiki/Spectral_density_estimation 21:47:45 this looks relevant 21:48:16 -!- TheLittleOne has quit (Ping timeout: 240 seconds). 21:48:22 rip 21:48:46 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 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 al and exports SafeIO (but NOT its constructor) and runSafeIO, which is marked Trustworthy. 21:48:49 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 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 I'm gonna make my own VCS. 21:49:09 With blackjack and hookers. 21:49:09 Without exporting constructor. 21:49:13 Actually, screw the VCS. 21:49:13 That should work. 21:49:52 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 http://en.wikipedia.org/wiki/Short-time_Fourier_transform 21:49:59 wooooo 21:50:05 zzo38: Right, sorry. 21:50:48 How is Cap not just a way to prevent importing standard IO functions? 21:50:55 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 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 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 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 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 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 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 colloinkgravisom, the error "Tomorrow" is because I managed to brainfart on how to make a trivial monad wrapper 21:52:37 So that you ensure the fixed "return :: x -> IO x" 21:53:47 Do you think this idea will work perfectly? 21:54:00 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 The point is that you can't wrap something in the wrapper without access to IO 21:54:56 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 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, the error "Tomorrow" is because I managed to brainfart on how to make a trivial monad wrapper 21:57:06 Sgeo: I fail to see the relevance. 21:57:27 Can you use GeneralizedNewtypeDeriving? 21:57:38 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 zzo38: Yes. 21:57:45 It should be Functor/Applicative/Monad 21:57:52 http://en.wikipedia.org/wiki/Time-frequency_analysis 21:57:53 yesssss 21:57:58 wikipedia to the rescue. 21:58:15 How does Generalized Newtype Deriving interact with Safe Haskell though? 21:58:31 What? 21:58:37 Generalised newtype deriving is just a time-saver. 21:58:42 I, again, fail to see the relevance. 21:59:17 http://hackage.haskell.org/trac/ghc/ticket/5498 21:59:18 time that can spent writing safe code! 21:59:21 It's disabled in Safe Haskell 21:59:42 Sgeo: Then just write the instance manually. 21:59:56 Really, you don't necessarily need to be *fancy* there. STFT is cheap and easy. 22:00:45 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 Sgeo: Oh, well that's just a bug. But your module is presuambly Trustworthy, so it doesn't matter. 22:01:20 The module can automatically be marked safe 22:01:21 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 In honor of Purdue's contributions to computer science, I shall from now on only use RCS. 22:01:34 colloinkgravisom, I don't think I can replace it 22:01:49 Sgeo: I think this way will work isn't it? 22:02:15 zzo38, does it require uncurrying for, say, f a b :: Int -> Int -> IO ()? 22:03:08 Hmm 22:03:31 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 Sgeo: WTF is wrong with liftCap :: IO a -> Cap a? 22:04:47 colloinkgravisom, that defeats the entire purpose 22:05:14 Sgeo: Really? Because 22:05:14 instance IOtoCap (IO a) (Cap a) where 22:05:14 unsafeMakeFunCap = Cap 22:05:16 you already have it. 22:05:31 colloinkgravisom, unsafeMakeFunCap is hidden, as is Cap 22:05:33 That is why you need to hide the constructor. 22:05:35 Or at least, it should be 22:06:15 Sgeo: So there's literally no way to use it, and you just defined some dead code for no reason? 22:06:17 Sweet!!! 22:06:17 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 colloinkgravisom, it's used by makeCap 22:06:47 Sgeo: Fine then, make it IO a -> IO (Cap a), whatever. 22:07:13 Actually that doesn't work, basically your entire structure is fucked. 22:07:27 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 If you're going to use Safe Haskell you might as well use it as it's intended to be used. 22:07:59 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 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 *Capabilties> makeCap (\a b -> putStrLn (a ++ b)) >>= \c -> runCap $ (c "Hi" "Bye") 22:10:46 zzo38: makeLIO seems reasonable enough, but exporting the constructor from an unsafe module is more reasonable still. 22:10:50 colloinkgravisom, I'm going to probably add more typeclass shenanigans 22:10:58 Sgeo: Yes, that is because you are inexperienced. 22:11:03 There is a reason you're not meant to do these kinds of things. 22:11:21 I will let you fuck up and learn yourself, since clearly telling you doesn't do anything... 22:11:26 So that forkCap = makeCap forkIO :: Cap () -> Cap ThreadId, rather than IO () -> Cap ThreadId 22:11:48 Although this is not strictly speaking needed, it would make it easier 22:11:49 forkCap = makeCap (forkIO . runCap) 22:11:54 THAT WAS SO HARD! 22:12:07 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 Thank GOD we have Sgeo's typeclass shenanigans to break inference and give complicated type errors and ... 22:13:38 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 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 But have fun! 22:14:57 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 Overlapping Instances is a bad thing in your opinion, I take it?: 22:15:38 Sgeo: In my opinion? 22:15:47 Sgeo: It's one of the few extensions everyone can agree probably shouldn't even exist. 22:15:59 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 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 kallisti, I don't see the way to write it without the typeclass 22:17:06 But what I have is currently survivable without the Overlapping Instances, but I was planning on adding Overlapping Instances 22:17:13 Either way, the typeclass is still there 22:17:18 bad 22:17:23 remove it and use a brain 22:17:50 forkCap = makeCap (forkIO . runCap) 22:17:51 (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 Sgeo: Your dedication to trying to make this terrible idea become a reality is as impressive as it is misguided. 22:18:47 canFork <- forkCap; f canFork 22:19:08 canned forks 22:19:20 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 immersed in fork fluid 22:19:32 Sgeo: you can't. you don't want to. 22:19:38 tough, deal with it 22:19:51 Sgeo: why would you want to do that.... 22:20:02 Sgeo: why 22:20:17 monqy: bCUZ ITS SUPER EASY NOW!! 22:20:52 It means I get a makeCap that doesn't require uncurrying 22:21:05 -!- cheater has joined. 22:21:21 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 Oh, I see 22:24:35 colloinkgravisom, nice nick 22:24:40 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 colloinkgravisom, but why instead of elliott? 22:25:16 because `words 22:25:24 Vorpal: I'm Colloinkgravisom of Hexham. 22:26:21 That doesn't narrow it down much. 22:26:24 That's like half the channel. 22:26:55 I wonder 22:26:59 if I go to sleep right now 22:27:01 how long I'll sleep 22:27:05 3 minutes 22:27:28 probably like 4 hours, just because my brain tries to undermine all of my conscious attempts to fix my sleeping habits. 22:28:22 kallisti: do what i've started doing, get tired at night and then wake up well-rested in the morning 22:28:37 I don't know if I can endure until the night.. 22:29:10 ^rainbow :) 22:29:10 :) 22:29:15 ^rainbow2 22:29:15 ████████████████████████████████████████████████████████████ ...too much output! 22:29:22 kallisti: btw the secret 22:29:24 to having the above happening 22:29:31 is to be sleep-deprived very carefully to set it up 22:29:40 ??? 22:29:51 colloinkgravisom: oh yes I know what you mean 22:29:54 because I've done it before. 22:29:55 That rainbow wasn't very rainbic. 22:30:36 colloinkgravisom: so I think if I wake like 2 or 3 hours before I go to sleep 22:30:39 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 then tomorrow, I will be tired by reasonable hours. 22:30:52 kallisti: then you will wake up the next morning and magic happens 22:31:21 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 SimonDectro: Sure it was. 22:31:59 Also, 20 over 1.5. 22:32:48 colloinkgravisom: I woke up at 10 pm last night and it's currently 5:30 pm. 22:33:22 SimonDectro: It's more rainbic than... 22:33:25 ^rainbow █████████████████████████████████ 22:33:26 ███████████████████████ ... 22:33:33 Wow 22:33:40 Uh, well, um, right. 22:33:43 ^rainbow █████████████████████████ 22:33:43 ███████████████████████ ... 22:33:47 lool 22:33:54 How the how early is that "...". 22:33:59 ^rainbow ███████████████ 22:33:59 ███████████████ 22:34:03 lol 22:34:04 colloinkgravisom: I woke up at 10 pm last night and it's currently 5:30 pm. 22:34:11 Oh, right, it does every byte separately. 22:34:20 Well, yes. It is more rainbic than that. 22:34:26 ^rainbow ######################## 22:34:26 ######################## 22:34:26 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 fizzie: Oh, _that's_ why it fails. 22:34:37 Byte-wise IO. 22:34:39 ^rainbow ooooh pretty 22:34:39 ooooh pretty 22:34:51 ^rainbow fungot 22:34:51 fungot 22:34:52 colloinkgravisom: no fuck you THERE ARE OTHER WAYS 22:35:11 kallisti: You'll come around eventually. 22:35:12 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 kallisti: Won't happen. 22:36:06 That kind of thing only works once, man. 22:36:10 My 10-step plan is Long Term Assurance. 22:36:14 LONGURANCE 22:36:21 `word 50 22:36:25 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 dinargewooites 22:36:48 `macro 22:36:53 OYSTER'S 22:36:56 oyster's 22:37:10 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 just have to wait for gcc 22:37:19 to catch up 22:37:38 Vorpal: It doesn't provide any UTF-8 functions, so I'm not sure why you picked that excuse. 22:38:13 Vorpal: It's not like cfunge is likely to contain any UTF-8 literals. 22:38:25 The UTF-8 function support is all on libc. 22:38:37 I give even odds of musl being the first one to handle it. 22:39:38 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 pikhq: There are none. 22:39:42 BOLD. 22:40:09 Oh, there aren't any? 22:40:11 That's retarded. 22:40:14 There's the usual "multibyte characters of the current locale" functions, of course, but those aren't new. 22:40:14 Sorry, Retarded. 22:40:41 Make Unicode one of the possible locales then. 22:40:49 zzo38: It already is. 22:41:12 I doubt that. 22:41:16 Personally, I'm on en_US.UTF-8 22:41:18 UTF-8, maybe, but I doubt there's a Unicode locale. 22:41:28 The only thing in 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 colloinkgravisom: Well. Yeah, there's no such thing as a "Unicode locale". 22:41:40 The closest you could get would be a C.UTF-8 type thing. 22:41:52 There's also no standard locale except "C", still. 22:42:12 DAMMIT SOMEBODY ACCEPT MY ANSWER 22:43:46 kallisti: Pls modify reality so that people accept my answers. 22:44:45 * colloinkgravisom is but a poor Colloinkgravisom. 22:44:56 What answers? 22:45:40 My sour cereal answers. 22:45:48 zzo38: Is this your website? http://sourcereal.com/ 22:47:20 No 22:47:25 colloinkgravisom: Which answer? 22:47:36 That C11 is fundamentally broken? 22:51:32 pikhq: no 22:55:56 kallisti is a mouse. 22:58:41 10 over 1 23:02:27 -!- PiRSquaredAway has joined. 23:04:24 IT SUCKS TO BE MADE OF DEATH :-( --chinese philosopher horatio 23:04:58 colloinkgravisom: i think you must be confusied 23:06:54 oerjan: who 23:06:57 who who who who who 23:06:57 who 23:07:50 WOW!!! 23:08:19 no, hu is the president 23:09:22 HELLO WELCOME TO AMERICA 23:11:15 HELLO GOODBYE FROM AMERICA 23:11:40 AMERICA 23:18:47 ffff. 10 over 0.7 23:19:12 the addiction is entering the ugly phase 23:19:35 maybe i can trade drugs for units 23:21:28 this is the worst thing ever 23:21:41 oerjan: YOU SHOULD UPVOTE M no that would be bad 23:21:43 bad and wrong 23:21:45 bad & wrong 23:22:12 * colloinkgravisom a small cry 23:23:47 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 iconmaster: ask monqy, he's the one who gave us the gift of sour cereal 23:24:43 Mmmm, sour cereal 23:24:44 googling it produces basically no links so it's STEAHLTH 23:24:46 staehlth 23:24:49 wow, words are difficult 23:25:03 (at first I though it meant "source real") 23:25:14 i think everybody thinks that :P 23:27:15 This site is the best thing ever. 23:27:28 10 over 0.55 :'( 23:27:29 * colloinkgravisom addict. 23:27:41 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 10 over 0.433 23:36:14 -!- cheater has joined. 23:36:54 YES! 23:37:22 !logs 23:38:18 monqy: hi 23:38:29 hi 23:38:38 hi 23:38:43 i myself forgot exactly how i found sourcereal 23:39:25 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 oh is that actually how you found it 23:40:08 ok kallisti wins 23:49:32 `log .* 23:50:04 shuf: memory exhausted 23:51:39 -!- NihilistDandy has joined. 23:53:23 -!- PiRSquaredAway has changed nick to PiRSquared17.